Das ist als Optimierung gedacht für solche Fälle
Code:
float x = 3.5f;
float y = x * 2.1; // f vergessen
Hier wird bei x * 2.1 zuerst das x von float nach double gewandelt, dann als double multipliziert und dann das Ergebnis wieder in float konvertiert.
Weil aber in typischem Arduino Code float und double häufig gemischt verwendet wird, weils auf den 8-Bittern eh das selbe ist, ist beim Teensy standardmäßig der Compilerschalter -fsingle-precision-constant gesetzt, der dazu führt, dass Fliesskommakonstanten als float interpretiert werden. Das macht den Code normalerweise schneller, weil man meist eh nur mit float rechnen will.
Wenn man explizit eine double Konstante braucht, kann man ja 2.1L schreiben, das ist dann zwar long double, aber das dürfte bei den kleinen Prozessoren auch double sein.
Ich bin mir nicht sicher, wie das die anderen getesteten Boards handhaben, muss man also die Dateien in der Arduino IDE erforschen ...
Ein weiterer Unterschied sind die Compilereinstellungen zur Optimierung. Ich bin mir ziemlich sicher die Arduino IDE optimiert beim Due den Code auf Größe, nicht auf Geschwindigkeit. Beim Teensy lässt sich das im Menu der Arduino IDE einstellen ...
Lesezeichen