Ich bin kürzlich auf ein Problem gestoßen, das mit der Modulteilung leicht gelöst werden konnte, aber die Eingabe war ein Float:
Erstellen Sie mit einer periodischen Funktion (z. B.
sin
) und einer Computerfunktion, die sie nur innerhalb des Periodenbereichs berechnen kann (z. B. [-π, π]), eine Funktion, die jede Eingabe verarbeiten kann.
Die "offensichtliche" Lösung ist so etwas wie:
#include <cmath>
float sin(float x){
return limited_sin((x + M_PI) % (2 *M_PI) - M_PI);
}
Warum funktioniert das nicht? Ich erhalte diesen Fehler:
error: invalid operands of types double and double to binary operator %
Interessanterweise funktioniert es in Python:
def sin(x):
return limited_sin((x + math.pi) % (2 * math.pi) - math.pi)
sin(x)
großer Werte vonx
erfordert tatsächlich einen sehr schwierigen Prozess zur Reduzierung transzendentaler Argumente, der mit keiner endlichen Näherung von pi auskommt.