用于python的一种数值类型,它将浮点存储在日志空间中以提高精度,允许正浮点和负浮点计算(算术和逻辑操作)
pylogfloat的Python项目详细描述
PylogFloat类
pylogfloat类转换 线性空间转换成对数空间并允许标准的算术和逻辑 在两个塔浮之间的线性空间中执行的操作。
在内部,floatf存储如下:
- |f|的(自然)日志存储为numpy.float64变量p
- f('-','+'或'0')的符号存储在变量(-1,+1,0)变量中,sign
通过分别存储sign,正浮点数和负浮点数都可以 存放在一个挂架上。注意,sign=0对应于 案例中的f =0。
算术运算符
实现了以下算术运算符:
+= -= *= /= + - * /
线性空间中的乘法和除法简单地变成加法 日志空间中的减法运算。为了实现线性空间加法, 使用了应用log1p函数的标准方法。一个 日志值使用log1p或exp1m的条件用法 减法,遵循m_chler,m.精确计算日志(1-exp(-) | a)由RMPFR包Cran评估,综合R档案 网络。
在执行以下操作时,将考虑内部变量sign。 算术运算。例如,在pylogfloat之间的乘法运算中a 和b,对应于正浮点数和负浮点数, 生成的pylogfloat分别为:
result.p = a.p + b.p result.sign = a.sign * b.sign
对其他运算符进行相应的处理(加减 变得更加投入)。
逻辑运算符
实现了以下算术运算符:
<= >= < >
在pylogfloatsa和b之间的逻辑操作中, 首先比较内部符号变量(-1<;0<;+1)。
如果a.sign == b.sign:
- a.sign == 0 <=> equality
- a.sign > 0, return a.p [operator] b.p
- a.sing <0, return !(a.p [operator] b.p)
其他功能
幂运算符(lplf**p,其中plf是pylogfloat,p是 float或int)被实现:
**= (equiv ipow(self, p)) ** (equiv pow(self, p))
PylogFloat的对数和指数都实现为 就地(例如ilog)和标准,返回 操作(例如log):
ilog(self) log(self iexp(self) exp(self)
除幂运算符外,所有函数和运算符都是 实现为仅与PylogFloats一起使用。电力运营商 总是有一个pylogfloat基变量和一个float或int幂 可变。
请注意,此操作仍在进行中
虽然包含了一个基本的测试文件,但是类仍然在很大程度上 未经测试。可能实现也可能不实现其他功能,例如 阶乘函数可能很有趣。在某些情况下, 参数自动转换为PylogFloats。