Implementing the Transcendental Functions in Ivy
4 months ago
- #programming
- #mathematics
- #Go
- 作者在2014年开始编写Ivy(一种Go语言实现的伪APL语言)作为消遣
- 经过多年发展,Ivy已具备设计浮点数打印算法等功能
- Go标准库中的高精度浮点数实现带来了数学挑战,迫使作者重新拾起生疏的数学技能
- Ivy采用ASCII符号和精确算术(大整数与精确有理数),使其适用于密码学工作
- 得益于Hana Kim和David Crawshaw的贡献,Ivy成为首个用Go编写的移动应用程序
- APL语言模型包含单目(一元)和双目(二元)运算符,采用从右到左求值且无运算符优先级
- Ivy支持动态类型转换,可在整数、分数、标量、向量和矩阵间灵活切换
- 作者通过泰勒级数和恒等式实现了高精度超越函数(正弦、余弦、指数)
- 反正切函数(atan)的实现尤其困难,需要创造性运用收敛恒等式
- 利用精确算术和log(2)等高精度常数,实现了对数和任意幂运算
- 采用Lanczos和Spouge近似法实现了伽马函数,经过大量努力达到超高精度
- 经Causley改进的Spouge近似法可通过参数调优,实现超过50位数的精度