我正在为 MIPS 的 Fortran 变体编写一个编译器,作为大学的作业。
在那种语言中,幂运算符是内置的,就像 Python 一样,你可以说 a ** b 就完成了。
所以,在某些时候,我必须为 pow 函数编写程序集。
当然, pow(int x, int y) 很简单,因为 pow(float x, int y) 很简单,但是当指数为浮点数时会发生什么?我如何计算给定我的指令集只能给我加法、减法、乘法和除法?
我想到了泰勒级数,但我怎么能实现呢?我不太确定。
假设我在一个固定点 (x0, y0) 周围取三阶泰勒多项式,那么对于远离 (x0, y0) 的点来说,这种近似不是真的很糟糕吗?
我需要一种简单易行的方法来做到这一点,因为那是一个玩具编译器,而不是具有实际用例的科学编译器,它没有优化等。
此外,我真的不知道当底数是负数并且指数是分数时应该做什么,比如说 1/2,结果是复数(语言支持复数)。
所以,请给我你的视线。提前致谢。