多行文字1
mdbtxt2型
前往安全地带

Hypercalc-不会溢出的计算器

Hypercalc公司是一个开源解释计算器程序计算非常大的数字(例如您的电话号码因子的幂世界总产值)没有溢出。

它使用水平指数格式;就这样吧可以远远超出公元前,直流电,伊斯兰教/最大值,数学软件枫树,所有这些都使用bigint库例如,Hypercalc公司可以告诉你128481024大于888888.

在此处获取perl源代码

使用超计算器从浏览器

目录

概述:版本和功能

背景:避免溢出

Perl超计算

Kenny TM~Chan编写的HyperCalc JavaScript

处理大量数字时的非直觉结果


概述:版本和功能

有三种表现形式Hypercalc公司:

的所有版本Hypercalc公司使用类似于的内部表示水平诱导.

Perl和JavaScript版本提供了命令历史记录(输入和结果替换,如马克西玛). 其他功能不同于跟随:

特征 Perl语言Hypercalc公司 超计算器JavaScript脚本
用户定义的变量
用户定义的函数(使用BASIC)
重用输入和输出表达式(命令历史记录)
与所有硬件兼容 (使用网络浏览器)
最大精度300位数16位数
完全可编程
不确定性(例如:100(4)+20(3)= 120(7) )
Base-60输入和输出(示例:1:20:32 + 5:39 = 1:26:11)

Perl和JavaScript版本在自由(libre)GPL许可证,但无担保或支持。


背景:避免溢出

的主要优势Hypercalc公司它不会“溢出”:对于大数字来说,它的射程远大于手持计算器、手机计算器应用程序、数字库等gmp公司,或类似数学软件数学软件以下是一个简短的比较(更多在我的浮点格式第页):

名称 最大值
早期的科学计算器(例如。TI SR-50公司)19749.99×1099
IEEE 754二进制64 19851.80×10308
高级科学计算器(例如TI-89)20世纪90年代9.99×10999
PARI/GP公司 19854.3×102525222
数学软件 19881.44×10323228010
枫树 19801.0×102147483646
GMP库(假设“long”是64位)1991101.777×1020
马克西玛 1982≈ 101010000000000= 10↑↑4
Hypercalc公司 199810↑↑(1010)

我开始探索非常大的数字,例如265536在早期20世纪70年代使用德州仪器SR-50计算器,并且必须手动取对数,提取小数部分,计算尾数等。我自己做的BIGNUM库在里面Apple II的汇编语言,以及在以后的机器上的汇编语言。这样的方法受到计算机内存的限制(在我的“大数字”页上将其称为2类限制).

我一直想要一个便携式计算器,可以计算我的大数问题,以及棕榈 飞行员第一个真正实现这一目标的设备。我创建了汉王手写输入法1998年10月的HyperCalc,并在大约一周内使其工作。

我的飞行员的屏幕破裂了,我可以看到平台不会持续太久。更重要的是,我想能够复制在我的网络上工作时,将数字和结果粘贴到其他文件页。所以我创造了更强大的Perl语言中的版本1999年夏天。我在1999年晚些时候,增加了扩展精度(高达295位)2005年末的BASIC解释器,2007年末的base-60格式,2011年不确定性计算等。

2004年,Kenny TM~陈,当时是元朗商会中学(元朗商會中學) 在里面香港,成立Hypercalc公司并实施了JavaScript版本.简要介绍此版本在它自己的部分如下所示。


Hypercalc公司Perl语言

Perl版本是最新、功能最强的版本。这个源代码在这里.

下面是一个交互会话示例:

Hypercalc根据GNU通用公共许可证,第2版,1991年6月。键入“help gpl”在Hypercalc提示下查看详细信息。  去吧——试着让我溢出来!__|_| . . ._ _ ._ _ ._ | _| | | | | ) (-` | ( ,-| | (~~7|~~'~~`~`~~-'mrob.com/hypercalc  输入表达式,或键入“help”以获取帮助。    C1=27^86!  R1=10^(3.4677786443013 x 10^130)  C2=刻度=50注意:对于所有小于23的值,阶乘只能给出31位数字准确性;对于小于136.032的值,它将给出更少的比请求的50位数字多。  C2=c1C1:27^86!C2:(27^86!)  R2=10^(3.467786443012627135848832197820460548430862081954 x 10^130)  C3类=

有大量内置帮助,可通过键入进行访问帮助Hypercalc公司提示。在初始的介绍性帮助页面之后,只需进入反复查看十个特定主题的帮助。


Kenny TM~Chan编写的HyperCalc JavaScript

要从web浏览器中使用“HyperCalc”,请转到此处:HyperCalc JavaScript。有PDF格式的详细手册:HyperCalc JavaScript手册


处理大量数字时的非直觉结果

如果你花点时间探索巨大数字的范围HyperCalc如果你能处理好,你可能会开始注意到一些自相矛盾的结果甚至可能开始认为计算器给出了错误的答案。

例如,尝试计算27的幂googolplex公司(a)googolplex是10的幂古戈尔而一个咕咕是10100). 尝试:

27^(10^(10^100))

Hypercalc公司给予:

10^(10 ^(1 x 10^100))

它似乎认为

27^(10^(10^100))=10^(10^(10^100))

这显然是错误的,而且看起来也不太好近似值。发生什么事?

让我们自己计算正确的答案。我们需要将答案表示为10的10次方,因为这是计算器使用的标准格式,我们看看它犯了多大的错误。所以,我们想计算

271010100

作为10次方幂的“塔”。第一步是表达27的10次幂,乘积在指数中,使用公式x个=10(对数(x).年):

271010100= 10(日志1027.1010100)

日志1027大约是1.43,所以我们有

271010100= 101.43.1010100

现在我们有一个10的基数,但指数仍然需要计算步骤是将乘积表示为下一个更高指数中的和;这次我们使用的公式是x.y=10(对数(x)+对数(y)):

101.43.1010100= 1010(日志101.43 + 10100)

日志101.43约为0.155,如果我们将其加到10100我们得到

1010(0.155+10100)= 10101000...000.155
           = 1010(1.000...000155.10100)

其中每个“…”的位置还有94个0。所以我们的最后的答案是:

271010100= 1010(1.000...000155.10100)

现在我们已经表示了27的值^googolplex公司足够精确看看计算器的错误,看看这个错误有多小!这个计算器需要至少有104位精度能够处理值“1.000…000155”-但它只有16位数字精度。这16位数字由1和第一个十五0’s-所以当计算器到达我们所在的步骤时将0.155添加到1.0.10100,它只是将答案四舍五入1.0×10100-并生成我们在执行计算:

10^(10 ^(1.00 x 10^100))=10101.00 × 10100

Palm的原始版本Hypercalc公司有一个类似计算器的显示,一个短而宽的矩形,有足够的空间显示一行文本大约有30或40个字符。考虑到这个有限的显示区域,甚至如果它有必要的104位精度,它就不会有可以在屏幕上打印整个104位数字,所以答案是显示看起来还是一样的。

更重要的是,无论我们试图显示多少数字,总有一个更大的数字是我们无法做到的能够处理。例如,Hypercalc公司需要略高于a百万要区分的精度数字

2710101000000从10开始10101000000

如果我们再加一个10向那座指数塔致敬,所有的希望避免舍入的方法丢失了!

有关此问题的更多信息,请参阅我对"电力塔悖论“,以及3类编号4类数字我的大数部分页。


Robert Munafo的主页美国焊接学会  ©1996-2024罗伯特·穆纳福。  关于  接触
本作品根据知识共享授权归属-非商业4.0国际许可。细节在这里.

此页面是用“令人尴尬的可读性”标记语言编写的右侧TF,上次更新时间为2020年11月12日。 第27条