Zitat Zitat von Mxt Beitrag anzeigen
Wie der Name des Schalters schon andeutet, wirkt er nur auf Konstanten.

In Standard C++ sollte bei sin, cos usw. eigentlich anhand der Parameter entschieden werden, was raus kommt
https://en.cppreference.com/w/cpp/numeric/math/sin

sinf ist nur eine zusätzliche Variante um float zu erzwingen.

Bei double rechnet der M4 ohne Verwendung der FPU. Das bedeutet auch deren Register bleiben unbenutzt. Optimaler Code auf den M4 macht was mit int und float gemischt und nutzt so die Prozessorregister optimal aus.
bei z.B. sin(x) ist es tatsächlich so, dass M0 und M3 immer die double Version verwenden, egal ob x double oder float ist. Analog bei exp() und sqrt() etc.
Das merkt man extrem deutlich bei den Laufzeiten: in diesen Fällen braucht man bei float x sogar 20% länger als bei double x.
Nur bei sinf() mit float x etc. sind die float-tests etwa 2x so schnell wie auf double.