Недавно я столкнулся с вопросом, который можно было легко решить с помощью модульного деления, но вход был float:
Для периодической функции (например,
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)