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

Math 对称级别索引算法(浮点替代算法)有什么好处?,math,floating-point,numbers,Math,Floating Point,Numbers,现在几乎每个人都使用算术。该系统本质上是范围和准确性之间的折衷,允许人们表示非常小或非常大的数字。但是,还有其他方法可以做到这一点 正如我最近发现的,其中一种方法叫做。这是一个复杂的系统,涉及到一种电力塔,我在不同的地方看到了一些零星的系统软件实现 与传统的浮点算法相比,该系统有哪些优点和缺点?例如,不能通过增加指数的基数来复制它吗?(从而进一步降低了精度,但增加了范围)对称的水平索引算法(SLIA)非常擅长表示巨大的数字。例如,它可以很容易地将googol10^100表示为4.52687561

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

正如我最近发现的,其中一种方法叫做。这是一个复杂的系统,涉及到一种电力塔,我在不同的地方看到了一些零星的系统软件实现


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

对称的水平索引算法(SLIA)非常擅长表示巨大的数字。例如,它可以很容易地将googol
10^100
表示为4.5268756157751或googolplex
10^(10^100)
表示为5.5272678974304。你可以很容易地在四分之一链上继续这个过程。这与浮点数学形成了完全的对比,浮点数学在遇到自身高数量级的指数时就会崩溃

但是,浮点数确实具有固定的乘法(百分比)精度。值
ulp(x)/x
其中
ulp
x
和下一个最近的可表示数字之间的距离,由相对较低的值=
2^(-精度位)
限定。另一方面,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(索引),所以
ulp(x)/x=e^(e^.14159))*e^.14159*ulp(索引)
。这种模式在一般情况下是成立的,由于
n
e^n
之间存在巨大的乘法差异,我忽略了除第一项以外的所有项,得出结论认为
ulp(x)/x~ln(x)*index*(ulp(index)/index)
。这显然是一个比浮点表示更高级别的错误


增加表示的基数将增加范围。然而,真正的问题是你希望你的数字有多大?物理学中最大的数字之一(数值请参见)可以很容易地用标准SLIA表示为
8.2
。较大的数字,例如,不能在任何基础SLIA中有效地表示,塔的数量太多了。基本
e
非常方便,因为它不需要任何校正因子。

你是在暗示
epsilon=ulp(index)
,用
x=e^e^e^index
来表示,更精确的结果是
ulp(x)/x~ln(x)ulp(index)
,这与
ulp(x)/x=[ln(x)*index]*ulp(index)/index
相比更能说明问题,由于它显示了
x
index
之间的相对不确定性中的较大乘法因子,对吗?@EOL我刚刚将约定从
epsilon
更改为
ulp(index)
。我想这要清楚得多。谢谢你的建议!谢谢现在,“n和e^n之间的大量乘法差”与您给出的示例无关(两者之间只有大约3的因子),因为n非常接近于0,所以最好限定它。@EOL我明白了。好吧,如果
ln(n)
ln(ln(n))
之间的乘法差对于大量的数字来说很小,那么您可能不应该使用SLIA。当然,但我指的是您的示例,其中的差异很小。