EOS Math Api - C

Math C API

定义使用更高抽象的基本数学运算.

函数

  •  

    void multeq_i128 (uint128_t self, const uint128_t other)

     

    • 乘以两个128位无符号位整数。 如果指针无效,则抛出异常。
  •  

    void diveq_i128 (uint128_t self, const uint128_t other)

     

    • 将两个128位无符号位整数相除,并在无效指针时引发异常.
  •  

    uint64_t double_add (uint64_t a, uint64_t b)

     

    • double类型之间相加。
  •  

    uint64_t double_mult (uint64_t a, uint64_t b)

     

    • double类型之间相乘
  •  

    uint64_t double_div (uint64_t a, uint64_t b)

     

    • double类型之间相除
  •  

    uint32_t double_lt (uint64_t a, uint64_t b)

     

    • double类型小于比较。
  •  

    uint32_t double_eq (uint64_t a, uint64_t b)

     

    • double类型相等比较。
  •  

    uint32_t double_gt (uint64_t a, uint64_t b)

     

    • double类型大于比较。
  •  

    uint64_t double_to_i64 (uint64_t a)

     

    • 将double转换为64位无符号整数。
  •  

    uint64_t i64_to_double (uint64_t a)

     

    • 将64位无符号整数转换为double(解释为64位无符号整数)。

详细描述

函数说明

  •  

    diveq_i128()

     

    void diveq_i128 (uint128_t * self, const uint128_t * other )

    将两个128位无符号整数相除,并将该值分配给第一个参数。如果orther值为0,它会抛出异常。
    
    • 参数
      • self 指向分子的指针。它将被替换为结果
      • other 指向分母的指针   

例子:

uint128_t self(100);
uint128_t other(100);
diveq_i128(&self, &other);
printi128(self); // Output: 1
  •  

    double_add()

     

    uint64_t double_add( uint64_t a, uint64_t b)

    获得两个double之间的加法结果,解析为64位无符号整数此函数首先将两个输入重新解码为双精度(50个十进制数字精度),将它们相加,然后reinterpret_cast将结果重新解析为64位无符号整数。
    
    • 参数
      • a 双精度解释为64位无符号整数
      • b 双精度解释为64位无符号整数
    • 返回
      • reinterpret_cast将相加得到的64位无符号整数的结果     

例子:

uint64_t a = double_div( i64_to_double(5), i64_to_double(10) );
uint64_t b = double_div( i64_to_double(5), i64_to_double(2) );
uint64_t res = double_add( a, b );
printd(res); // Output: 3
  • double_div()

    > uint64_t double_div(uint64_t a, uint64_t b )
    得到两个双精度解的结果,解释为64位无符号整数该函数首先将两个输入重新解码为双精度(50位十进制数字精度),用分母分隔分子,然后将结果重新解释为64位无符号整数。 如果b为零(在reinterpret_cast加倍后)将引发错误.
    
    • 参数
      • a 双分子解释为64位无符号整数
      • b 双分母被解释为64位无符号整数
    • 返回
      • 相除的结果reinterpret_cast转换为64位无符号整数     例子:
uint64_t a = double_div( i64_to_double(10), i64_to_double(100) );
printd(a); // Output: 0.1
  • double_eq()

    > uint32_t double_eq(uint64_t a, uint64_t b )
    获取两个double之间的相等检查结果在进行相等检查之前,此函数将首先重新解释两个输入以重复(50位十进制数字精度)
    
    • 参数
      • a 双精度解析为64位无符号整数
      • b 双精度解析为64位无符号整数
    • 返回
      • 如果第一个输入等于第二个输入,则为1,否则为0     例子:
int64_t a = double_div( i64_to_double(10), i64_to_double(10) );
uint64_t b = double_div( i64_to_double(5), i64_to_double(2) );
uint64_t res = double_eq( a, b );
printi(res); // Output: 0
  • double_gt()

    > uint32_t double_gt(uint64_t a, uint64_t b )
    两个双精度进行大于比较获得大的一个,此函数首先将两个输入重新解释为双精度(50个十进制数精度)。
    
    • 参数
      • a 双精度解析为64位无符号整数
      • b 双精度解析为64位无符号整数
    • 返回
      • 如果第一个输入大于于第二个输入,则为1,否则为0     例子:
uint64_t a = double_div( i64_to_double(10), i64_to_double(10) );
uint64_t b = double_div( i64_to_double(5), i64_to_double(2) );
uint64_t res = double_gt( a, b );
printi(res); // Output: 0
  • double_lt()

    > uint32_t double_lt(uint64_t a, uint64_t b )
    获得两个双精度小于比较的结果,该函数首先将两个输入重新解码为双精度(50个十进制数字精度)。
    
    • 参数
      • a 双精度解析为64位无符号整数
      • b 双精度解析为64位无符号整数
    • 返回
      • 如果第一个输入小于于第二个输入,则为1,否则为0      例子:
uint64_t a = double_div( i64_to_double(10), i64_to_double(10) );
uint64_t b = double_div( i64_to_double(5), i64_to_double(2) );
uint64_t res = double_lt( a, b );
printi(res); // Output: 1
  • double_mult()

    > uint64_t double_mult(uint64_t a, uint64_t b )
    获得两个double之间的乘法结果,解释为64位无符号整数此函数首先将两个输入重新解码为双精度(50位十进制精度),然后将它们相乘,然后reinterpret_cast将结果重新解析为64位无符号整数。
    
    • 参数
      • a 双精度解析为64位无符号整数
      • b 双精度解析为64位无符号整数
    • 返回
      • 相乘的结果reinterpret_cast转换为64位无符号整数     例子:
uint64_t a = double_div( i64_to_double(10), i64_to_double(10) );
uint64_t b = double_div( i64_to_double(5), i64_to_double(2) );
uint64_t res = double_mult( a, b );
printd(res); // Output: 2.5
  • double_to_i64()

    > uint64_t double_to_i64(uint64_t a )
    将double(解释为64位无符号整数)转换为64位无符号整数。 该函数首先将输入重新解码为双精度(50位十进制数字精度),然后将其转换为双精度,然后将其重新解码为64位无符号整数。
    
    • 参数
      • a 双精度解析为64位无符号整数
    • 返回 - 64位无符号整数转换结果     例子:
uint64_t a = double_div( i64_to_double(5), i64_to_double(2) );
uint64_t res = double_to_i64( a );
printi(res); // Output: 2
  • i64_to_double()

    > uint64_t i64_to_double(uint64_t a )
    将double(解释为64位无符号整数)转换为64位无符号整数。 该函数首先将输入重新解码为双精度(50位十进制数字精度),然后将其转换为双精度,然后将其重新解码为64位无符号整数。
    
    • 参数
      • a 双精度解析为64位无符号整数
    • 返回 - double类型转换结果   

例子:

uint64_t res = i64_to_double( 3 );
printd(res); // Output: 3

multeq_i128()

uint64_t multeq_i128(uint128_t * self, const uint128_t * other )

    将两个128位无符号整数相乘,并将该值赋给第一个参数。
  • 参数
    • self 指向要相乘的值的指针。它将被替换为结果
    • other 指向要相乘的值的指针。
  • 返回 - double类型转换结果   

例子:

uint128_t self(100);
uint128_t other(100);
multeq_i128(&self, &other);
printi128(self); // Output: 10000

Math CPP API

定义常用的数学函数和帮助器类型.

Fixed Point

定点变量的32,64,128,256位版本

Real number

带有基本操作符的实数数据类型。 封装double类Math C API.

struct eosio::uint128

封装了uint128整数并定义常见运算符重载的结构。

函数

void eosio::multeq (uint128_t& self, const uint128_t& other)

封装了multeq_i128 Math C API。

void eosio::diveq (uint128_t& self, const uint128_t& other)

封装了diveq_i128 Math C API。

template

eosio::min (const T& a, const T& b)

定义了类似std::min()函数。

template

eosio::max (const T& a, const T& b)

定义了类似std::max()函数。

 

diveq()

void eosio::diveq (uint128_t& self,const uint128_t& other) | inline

将两个128位无符号整数相除,并将该值赋给第一个参数。 如果other值为零,它将抛出异常。 封装了Math C API的diveq_i128
  • Parameters
    • self 分子. 它的值将被结果替代。
    • other 分母。 示例:
uint128_t self(100);
uint128_t other(100);
diveq(self, other);
std::cout << self; // Output: 1

max()

template<typename T > 
T eosio::max(const T& a,const T& b )

    获取最大值。
  • 参数
    • a 比较值
    • b 比较值
  • 返回 获取a和b中更大的一个. 如果相等返回a 示例:
uint128_t a(1);
uint128_t b(2);
std::cout << max(a, b); // Output: 2

min()

template 
T eosio::min(const T& a, const T& b)

获取更小的一个值
  • 参数
    • a 比较值
    • b 比较值
  • 返回 获取a和b中更小的一个. 如果相等返回a 示例:
uint128_t a(1);
uint128_t b(2);
std::cout << min(a, b); // Output: 1

multeq()

void eosio::multeq (uint128_t& self, const uint128_t& other ) inline

将两个128位无符号整数相乘,并将该值赋给第一个参数。 这是对multeq_i128 Math C API的封装.
  • 参数
    • self 相乘的值. 它的值将被结果替代。
    • other 相乘的值. 示例:
uint128_t self(100);
uint128_t other(100);
multeq(self, other);
std::cout << self; // Output: 10000
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值