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