对称级别索引算法(替代浮点)有什么好处?

时间:2015-03-20 00:54:43

标签: math floating-point numbers

现在几乎每个人都使用floating point算术。该系统本质上是范围和精度之间的权衡,允许人们表示非常小或非常大的数字。但是,还有其他方法可以做到这一点。

我最近发现的其中一种方式称为symmetric level-index arithmetic。这是一个涉及一种电力塔的复杂系统,我在不同的地方看到了系统的一些零星的软件实现。

该系统与传统浮点运算相比有哪些优点和缺点?不能通过例如增加指数的基数来复制吗? (从而进一步降低精度,但增加范围)

1 个答案:

答案 0 :(得分:7)

对称,级别索引算术(SLIA)非常擅长表示巨大的数字。例如,它可以很容易地将googol 10^100表示为4.5268756157751或googolplex 10^(10^100)表示为5.5272678974304。您可以轻松地继续使用tetration链。这与浮点数学形成鲜明对比,浮点数学遇到的指数本身就是高阶数。

但是,浮点数确实具有固定的乘法(百分比)精度。值ulp(x)/x其中ulpx与下一个最接近的可表示数字之间的距离,由相对较低的值= 2^(-bits of precision)绑定。另一方面,SILA不保证这种效果。假设您存储的SILA表示位定点(因为您可能会在您的级别上有某些上限),您的索引值中会有一些固定的ulp。要使用SILA的示例,请采用示例SILA = 3.14159; x = e^(e^(e^.14159)))。要查找ulp(x),我们可以使用导数规则来传播不确定性,使用ulp(index)作为索引中的不确定性(.14159)。 ulp(x) = e^(e^(e^.14159)))*e^(e^.14159))*e^.14159*ulp(index)ulp(x)/x = e^(e^.14159))*e^.14159*ulp(index)。这种模式一般都有,并且由于ne^n之间存在巨大的乘法差异,我忽略了除ulp(x)/x ~ ln(x)*index*(ulp(index)/index)之外的第一个词。这显然是一个比浮点表示更高的错误级别。

增加表示基础会增加范围。但是,真正的问题是你希望你的数字有多大?物理学中最大的数字之一,the Poincare recurrence time(参见this article的值),可以很容易地用标准SLIA表示为8.2。较大的数字,例如Graham's number,无法在任何基础SLIA中有效表达,塔的数量太大。基础e非常方便,因为它不需要任何修正因子。