/ / Wie kann man die Normalisierung rationaler Zahlen im Boost vermeiden? - C ++, Boost

Wie kann man die Normalisierung rationaler Zahlen im Boost vermeiden? - C ++, Boost

Ich verwende Boost.Rational 1.46. Nach seinen Dokumentation,

Die letzte fundamentale Operation ist das Normalisieren eines Rationalen. Diese Operation wird ausgeführt Wann immer ein Rational konstruiert und zugewiesen wird. Alle anderen Operationen sind darauf bedacht, die Rationals in einem normalisierten Zustand zu halten. Normalisierung kostet das Äquivalent von einem gcd und zwei Divisionen.

Für eine Anwendung mit intensiver Nutzung vonrelativ kleine rationale Werte (und daher kleine ganze Zahlen), ist die Normalisierung zu teuer, um die ganze Zeit zu tun. Gibt es eine Möglichkeit, dies zu vermeiden oder nur in bestimmten Momenten zu zwingen?

Antworten:

2 für die Antwort № 1

Die Invariante der Boost rationalen Zahlen istdass sie immer normalisiert sind (siehe Referenz in Ihrer Frage). Wenn Sie also unnormierte Rationalwerte verwenden möchten, können Sie die Boost-Implementierung nicht verwenden.