## 常春藤:从消遣到高精度数学 出于对一个有趣项目的需求,作者用Go语言创建了常春藤,一种伪APL语言,它意外地演变成了一个用于高级数学计算的工具。尽管最初比其他APL衍生语言弱,但常春藤采用精确算术(大整数和有理数)被证明出奇有用,甚至被用于移动应用程序。 Go语言库中高精度浮点数的出现带来了新的挑战,促使作者深入研究如何以扩展精度计算超越函数,如正弦和余弦。现有的算法不足以满足需求,作者不得不重新审视和完善数学概念。 常春藤的实现利用了泰勒级数和参数归约等技术,最终采用了Spouge近似(由Causley改进)来计算Gamma函数。这涉及到复杂的系数计算,由常春藤的基于数组的结构高效地处理。尽管承认存在不完美之处以及优化参数方面仍然存在疑问,作者还是取得了令人印象深刻的精度——Gamma函数超过48位小数——展示了常春藤进行高精度数学运算的能力。这个项目源于对有趣编码练习的渴望,最终推动了语言所能达到的极限。
这个轶事突显了与遗留系统合作的令人沮丧的现实,以及向后兼容性的令人惊讶的怪癖。作者的任务是在IBM System 370的黑白调试器中添加颜色,于是开始寻找相关的文档——在一堆文档中找到一本实体文件夹。
搜索揭示了一种囤积信息的职场文化(特别是同事马修对手册的保护态度),这种文化源于害怕成为找不到所需资源的人。最终,文档被找到,显示`WRTERM`宏*确实*支持颜色,但只有黑色(默认)或红色——而且仅当终端配备了罕见的“双色带”时。
这个故事说明,看似简单的改进可能会受到几十年来的设计选择和早期计算硬件的限制,同时还要应对在互联网时代之前获取信息的实际挑战。