squall/storm/big/Ops.hpp

63 lines
1.8 KiB
C++
Raw Normal View History

2023-01-23 22:10:24 -06:00
#ifndef STORM_BIG_OPS_HPP
#define STORM_BIG_OPS_HPP
#include "storm/big/BigBuffer.hpp"
2023-01-30 00:10:52 -06:00
#include "storm/big/BigStack.hpp"
2023-01-23 22:10:24 -06:00
#include <cstdint>
2023-01-31 22:17:51 -06:00
void Add(BigBuffer& a, const BigBuffer& b, uint32_t c);
2023-01-29 22:12:59 -06:00
void Add(BigBuffer& a, const BigBuffer& b, const BigBuffer& c);
2024-11-15 00:57:52 -08:00
void And(BigBuffer& a, const BigBuffer& b, const BigBuffer& c);
2023-01-31 22:34:05 -06:00
int32_t Compare(const BigBuffer& a, const BigBuffer& b);
2023-02-01 23:27:32 -06:00
void Div(BigBuffer& a, uint32_t* b, const BigBuffer& c, uint64_t d);
2023-02-03 16:57:14 -06:00
void Div(BigBuffer& a, BigBuffer& b, const BigBuffer& c, const BigBuffer& d, BigStack& stack);
2023-01-23 22:10:24 -06:00
uint32_t ExtractLowPart(uint64_t& value);
2023-02-03 00:43:20 -06:00
uint32_t ExtractLowPartLargeSum(uint64_t& value, uint64_t add);
2023-01-23 22:10:24 -06:00
uint32_t ExtractLowPartSx(uint64_t& value);
2023-01-29 20:37:09 -06:00
void FromBinary(BigBuffer& buffer, const void* value, uint32_t bytes);
2024-11-15 03:50:22 -08:00
void FromStr(BigBuffer& buffer, const char* str);
void FromUnsigned(BigBuffer& buffer, uint32_t value);
2023-02-01 22:13:56 -06:00
uint32_t HighBitPos(const BigBuffer& buffer);
2023-02-01 21:08:15 -06:00
2023-02-01 22:12:20 -06:00
void InsertLowPart(uint64_t& value, uint32_t low);
2023-01-23 22:10:24 -06:00
uint64_t MakeLarge(uint32_t low, uint32_t high);
2023-01-29 22:59:28 -06:00
void Mul(BigBuffer& a, const BigBuffer& b, uint64_t c);
2023-01-30 00:10:52 -06:00
void Mul(BigBuffer& a, const BigBuffer& b, const BigBuffer& c, BigStack& stack);
2023-02-04 14:46:03 -06:00
void MulMod(BigBuffer& a, const BigBuffer& b, const BigBuffer& c, const BigBuffer& d, BigStack& stack);
2023-02-05 16:36:38 -06:00
void PowMod(BigBuffer& a, const BigBuffer& b, const BigBuffer& c, const BigBuffer& d, BigStack& stack);
2023-01-31 22:07:33 -06:00
void SetOne(BigBuffer& buffer);
2023-01-31 12:17:51 -06:00
void SetZero(BigBuffer& buffer);
2023-02-03 16:20:07 -06:00
void Shl(BigBuffer& a, const BigBuffer& b, uint32_t shift);
2023-02-03 14:50:34 -06:00
void Shr(BigBuffer& a, const BigBuffer& b, uint32_t shift);
2023-02-03 08:15:06 -06:00
void Square(BigBuffer& a, const BigBuffer& b, BigStack& stack);
2023-02-01 21:29:16 -06:00
void Sub(BigBuffer& a, const BigBuffer& b, const BigBuffer& c);
2024-11-15 03:22:16 -08:00
void Sub(BigBuffer& a, const BigBuffer& b, uint32_t c);
void ToBinary(TSGrowableArray<uint8_t>& output, const BigBuffer& buffer);
2023-01-23 22:10:24 -06:00
#endif