Hypercalc-不会溢出的计算器
Hypercalc公司是一个开源解释计算器程序计算非常大的数字(例如您的电话号码因子的幂世界总产值)没有溢出。
它使用水平指数格式;就这样吧可以远远超出公元前,直流电,伊斯兰教/最大值,数学软件和枫树,所有这些都使用bigint库例如,Hypercalc公司可以告诉你128481024大于888888.
在此处获取perl源代码
或
使用超计算器从浏览器
目录
概述:版本和功能
背景:避免溢出
Perl超计算
Kenny TM~Chan编写的HyperCalc JavaScript
处理大量数字时的非直觉结果
概述:版本和功能
有三种表现形式Hypercalc公司:
- 这个Perl语言终端/控制台的版本(因为Perl规则!)在UNIX、Linux、Mac OS和Cygwin系统中。源代码在这里
的所有版本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公司) | 1974 | 9.99×1099
|
IEEE 754二进制64
| 1985 | 1.80×10308
| 高级科学计算器(例如TI-89) | 20世纪90年代 | 9.99×10999
|
PARI/GP公司 | 1985 | 4.3×102525222
|
数学软件 | 1988 | 1.44×10323228010
|
枫树 | 1980 | 1.0×102147483646
|
GMP库(假设“long”是64位) | 1991 | 101.777×1020
|
马克西玛 | 1982 | ≈ 101010000000000= 10↑↑4 |
Hypercalc公司 | 1998 | 10↑↑(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类数字我的大数部分页。
此页面是用“令人尴尬的可读性”标记语言编写的右侧TF,上次更新时间为2020年11月12日。 第27条