최근에 모듈러스 나누기를 사용하여 쉽게 해결할 수 있는 문제 가 발생 했지만 입력은 부동 소수점이었습니다.
주기 함수 (예
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)
의 큰 값을x
실제로하는 것은 파이의 유한 근사에 의해 얻을 수없는 매우 어려운 초월 인수 환원 공정을 필요로한다.