2016-04-19 7 views
2

Ich möchte mit Intervallarithmetik in Rust spielen, und dazu muss ich den Rundungsmodus nach oben oder unten einstellen. Wie ich aus einer Suche verstehe, hat die Einstellung des Rundungsmodus Auswirkungen auf die Leistung. Daher möchte ich sie zur Kompilierzeit einstellen.Kann der Fließkomma-Rundungsmodus zur Kompilierzeit in Rust eingestellt werden?

+0

Wenn Sie wissen, wie, teilen Sie Ihr Wissen mit uns bitte. –

+0

http://www.gnu.org/software/libc/manual/html_node/Rounding.html könnte helfen. Es wird wahrscheinlich auf die Implementierung von C und C++ von gcc zutreffen. Keine Ahnung von Rust oder wie Clang C/C++ implementiert. Beachten Sie die Kommentare am Ende, sowie die Kommentare unter "Runde zum nächsten". – thurizas

+2

Relevant: http://stackoverflow.com/questions/28121957/how-do-i-specify-the-rounding-mode-for- floating-point-numbers – Veedrac

Antwort

3

Nicht zuverlässig, nein. Das Problem ist, dass das LLVM-Backend keine Unterstützung für das Modifizieren des Rundungsmodus bietet, obwohl es kürzlich some proposals to fix this gab, wird es wahrscheinlich in naher Zukunft nicht gelöst werden.

Sie könnten in der Lage sein, auf die C fesetround Funktion rufen (in fenv.h) zu Beginn des Programms, aber das Problem ist, dass bestimmte Optimierungen (zB konstante Faltung) würden bereits den Standardrundungsmodus ausgeführt wurden unter Verwendung von .

+0

ok. Ich sehe, vielleicht, wenn ich solch eine Optimierung designen kann und die Rundung mit einer Inline-Montage ändern kann, kann ich das Verhalten erreichen, das ich möchte. –

+0

Ich würde 'fesetround' aufrufen, anstatt Assembly zu verwenden: auf x86 gibt es tatsächlich 2 verschiedene Register, die Sie ändern müssen: MXCSR für SSE-Operationen und FPSCR für x87-Operationen. –

+0

Ja, ich muss die beiden Register ändern, aber jetzt stehe ich vor einem anderen Problem, das ich in diesem [post] (http://stackoverflow.com/questions/36789681/which-llvm-passes-are-responsible-for) adressiere - floating-point-optimizations) –

Verwandte Themen