Heim Backend-Entwicklung C++ Wie kann ich Gleitkomma-Rundungsmodi in C- und x86-Assembly effizient steuern?

Wie kann ich Gleitkomma-Rundungsmodi in C- und x86-Assembly effizient steuern?

Nov 27, 2024 pm 12:41 PM

How Can I Efficiently Control Floating-Point Rounding Modes in C and x86 Assembly?

Effizientes Ändern der Gleitkommarundung in C und x86-Assembly

IEEE 754-Gleitkommazahlen bieten verschiedene Rundungsmodi, wie z. Null, positive Unendlichkeit und negative Unendlichkeit. Das Ändern des Rundungsmodus ermöglicht eine präzise Kontrolle über die dezimale Darstellung der Ergebnisse.

C-Lösung

Die C-Standardbibliothek bietet eine tragbare Lösung zum Ändern von Rundungsmodi durch fesetround( ) Funktion:

#include <fenv.h>
#pragma STDC FENV_ACCESS ON

int main() {
  // Save the original rounding mode
  int originalRounding = fegetround();

  // Set the desired rounding mode (e.g., to zero)
  fesetround(FE_TOWARDZERO);

  // Perform operations with the adjusted rounding mode

  // Restore the original rounding mode
  fesetround(originalRounding);

  return 0;
}
Nach dem Login kopieren

x86-Montagelösung

Für Auf Plattformen ohne C99-Unterstützung kann x86-Assembly verwendet werden, um sowohl die x87-Einheit als auch die SSE-Rundungsmodi zu ändern:

; x87 unit
fldcw [new rounding mode] ; e.g., FNINIT to nearest

; SSE
ldmxcsr [new rounding mode] ; e.g., MXCSR_RND_NEAREST
Nach dem Login kopieren

Microsoft Visual C

MSVC bietet die Nicht- Standardfunktion _controlfp() für diesen Zweck:

#include <math.h>

int main() {
  // Save the original rounding mode
  unsigned int originalRounding = _controlfp(0, 0);

  // Set the desired rounding mode (e.g., to zero)
  _controlfp(_RC_CHOP, _MCW_RC);

  // Perform operations with the adjusted rounding mode

  // Restore the original rounding mode
  _controlfp(originalRounding, _MCW_RC);

  return 0;
}
Nach dem Login kopieren

Rundungsmodus-Decoder Klingeln

Rounding Mode C Name MSVC Name
Nearest FE_TONEAREST _RC_NEAR
Zero FE_TOWARDZERO _RC_CHOP
Infinity FE_UPWARD _RC_UP
-Infinity FE_DOWNWARD _RC_DOWN

Das obige ist der detaillierte Inhalt vonWie kann ich Gleitkomma-Rundungsmodi in C- und x86-Assembly effizient steuern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte Mar 03, 2025 pm 05:53 PM

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Mar 03, 2025 pm 05:52 PM

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

GULC: C -Bibliothek von Grund auf neu gebaut GULC: C -Bibliothek von Grund auf neu gebaut Mar 03, 2025 pm 05:46 PM

GULC: C -Bibliothek von Grund auf neu gebaut

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Mar 03, 2025 pm 05:53 PM

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Mar 12, 2025 pm 04:50 PM

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

eindeutiger Gebrauch und Phrasenfreigabe eindeutiger Gebrauch und Phrasenfreigabe Mar 03, 2025 pm 05:51 PM

eindeutiger Gebrauch und Phrasenfreigabe

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Mar 03, 2025 pm 05:51 PM

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Mar 12, 2025 pm 04:52 PM

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?

See all articles