Startseite › Datentypen › BASIC-Datentypen Hilfe zum PBXB64-Compiler

UNF-Familie - Wissenschaftliche numerische Typen

DerUNF Familie ist das wissenschaftliche Zahlensystem von PBXB64: exakte und erweiterte numerische Darstellungen, die auf reiner Ganzzahlarithmetik basieren. Im Gegensatz zu IEEE 754 Binary Floats vermeiden diese Typen versteckte Rundungen, indem sie verwenden Durchgehend Mantissen mit ganzzahliger Genauigkeit - Gleitkomma-Hardware wird berührt nur an der expliziten Konvertierungsgrenze.

Kategorie: BASIC-Datentypen

Beschreibung

DerUNF Familie ist das wissenschaftliche Zahlensystem von PBXB64: exakte und erweiterte numerische Darstellungen, die auf reiner Ganzzahlarithmetik basieren. Im Gegensatz zu IEEE 754 Binary Floats vermeiden diese Typen versteckte Rundungen, indem sie verwenden Durchgehend Mantissen mit ganzzahliger Genauigkeit - Gleitkomma-Hardware wird berührt nur an der expliziten Konvertierungsgrenze.

Typ: Datentypfamilie | Kategorie: Numerische Typen

PBXB64-Status: VERFÜGBAR (Wissenschaftslaufzeit)

PBXB64-Zertifizierung: [WISSENSCHAFTSSTUFE]

Der Basistyp: UNF (Unum Float)

UNF ist ein 16-Byte-Gleitkommatyp mit einem 60-Bit-Vorzeichen Mantisse und ein 8-Bit-Exponent mit Vorzeichen. Intern verwendet es pure __int128 Arithmetik - die einzige <math.h> Anrufe sind drinnen unf_conv.h (die explizite IEEE-zu-UNF-Grenze).

EigentumWert
Lagerung16 Byte
Layoutint64_t m (60-Bit-Mantisse mit Vorzeichen) + int8_t e (Exponent)
Wertu = m * 2^e
Mantissennormalisierung2^59 <= |m| < 2^60 (60 Bits an Bedeutung)
Exponentenbereich-128 .. +127
Dezimale Genauigkeit~19 signifikante Ziffern
Kleinstes Plus~ 1,3e-20
Größte endliche~ 1,8e+57
Besondere Werte+0, NaN (m = INT64_MIN), +Unendlich (e = INT8_MIN)

Familienmitglieder

TypGrößeBedeutungKomponenten
UNF16 ByteUnum Float – der BasisskalarMantisse+Exponent
UNC32 ByteKomplexe Zahl{ re: UNF, im: UNF }
UNB16+ BytesGroßer Float (beliebige Präzision)haufenweise gewachsene Mantisse
UNI32 ByteIntervallarithmetik{ lo: UNF, hi: UNF }
UNQ64 ByteQuaternion{ w, x, y, z: UNF }

Gestaltungsprinzipien

Wann sollte UNF im Vergleich zu anderen numerischen Typen verwendet werden?

BrauchenBenutzen
Geschwindigkeit, ungefähre Dezimalzahlen OKDOUBLE
Genaue Dezimalzahl für Geld (4 dp)CURRENCY / CURRENCYX
Exakte Dezimalzahl, dynamischer Exponent, 34 StellenDECIMAL128
Reproduzierbare bitgenaue Float-Berechnung, 19 StellenUNF
Beliebige Präzision (keine Begrenzung)UNL
Intervallgrenzen mit FehlerverfolgungUNI
Quaternion / 3D-RotationUNQ

Umsetzung

Die UNF-Familie ist eine reine Header-Bibliothek der UNF-Familie:

Typ- und Speicherprüfung

Typ- und Variablenseiten sollen Breite, Vorzeichen, Initialisierung, Gültigkeitsbereich, Suffixregeln und x64-Layout dokumentieren. Beispiele sollen gespeicherten Wert, ausgelesenen Wert und Konvertierungs- oder Überlaufverhalten belegen.

Deklarationsregeln

Nennen Sie, ob Deklarationen #DIM ALL, AS-Klauseln, Suffixe oder ausdrückliche Sichtbarkeit benötigen. Trennen Sie lokalen, statischen, globalen und thread-lokalen Speicher.

Migrationshinweise

Prüfen Sie Pointer-, Handle- und LONG-Annahmen beim Wechsel von 32-Bit-PB-Code zu PBXB64.

Umfangshinweise

Wenn eine Seite mehrere verwandte Formen gruppiert, sollte sie sagen, welche Form die Speicherbreite festlegt, welche nur die Deklarationssyntax ändert und welche nur historischen Charakter hat. Eine kleine Zuordnung von Familienbegriff zu den konkreten Typseiten macht die Seite beim Portieren deutlich nützlicher.

Beispiel

LOCAL a AS UNF
LOCAL b AS UNF
a = 2.5
b = 4.0
PRINT a * b      ' 10  (exact, no IEEE rounding)

Siehe auch