我最近遇到了一个问题,可以通过取模除法轻松解决,但输入是浮点数:
给定一个周期性函数(例如
sin
)和一个只能在周期范围内计算它的计算机函数(例如 [-π, π]),创建一个可以处理任何输入的函数。
"显而易见"的解决方案类似于:
#include <cmath>
float sin(float x){
return limited_sin((x + M_PI) % (2 *M_PI) - M_PI);
}
为什么这不起作用?我收到了这个错误:
error: invalid operands of types double and double to binary operator %
有趣的是,在Python中它确实能工作:
def sin(x):
return limited_sin((x + math.pi) % (2 * math.pi) - math.pi)
sin(x)
实际上需要进行一个非常困难的超越论参数化过程,它不能通过有限近似π来完成。 - R.. GitHub STOP HELPING ICEfmod
函数很可能是教师想要的内容。 - Dennis Zickefoose