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.
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]
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).
| Eigentum | Wert |
|---|---|
| Lagerung | 16 Byte |
| Layout | int64_t m (60-Bit-Mantisse mit Vorzeichen) + int8_t e (Exponent) |
| Wert | u = m * 2^e |
| Mantissennormalisierung | 2^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) |
| Typ | Größe | Bedeutung | Komponenten |
|---|---|---|---|
UNF | 16 Byte | Unum Float – der Basisskalar | Mantisse+Exponent |
UNC | 32 Byte | Komplexe Zahl | { re: UNF, im: UNF } |
UNB | 16+ Bytes | Großer Float (beliebige Präzision) | haufenweise gewachsene Mantisse |
UNI | 32 Byte | Intervallarithmetik | { lo: UNF, hi: UNF } |
UNQ | 64 Byte | Quaternion | { w, x, y, z: UNF } |
__int128 Größen mit
explizite Exponentenverfolgung. Es sind keine Gleitkommaanweisungen beteiligt.unf_conv.h, Konvertierung zwischen IEEE 754
doubleUndUNF. Alle anderen Codepfade sind
bitgenau und plattformübergreifend reproduzierbar.sin, cos,
exp, log Verwenden Sie Taylor-Reihen und Newton-Raphson
Verfeinerung, argumentreduziert für Genauigkeit.| Brauchen | Benutzen |
|---|---|
| Geschwindigkeit, ungefähre Dezimalzahlen OK | DOUBLE |
| Genaue Dezimalzahl für Geld (4 dp) | CURRENCY / CURRENCYX |
| Exakte Dezimalzahl, dynamischer Exponent, 34 Stellen | DECIMAL128 |
| Reproduzierbare bitgenaue Float-Berechnung, 19 Stellen | UNF |
| Beliebige Präzision (keine Begrenzung) | UNL |
| Intervallgrenzen mit Fehlerverfolgung | UNI |
| Quaternion / 3D-Rotation | UNQ |
Die UNF-Familie ist eine reine Header-Bibliothek der UNF-Familie:
unf.h - Kerntyp und Schirm inklusiveunf_arith.h - add, sub, mul, div, sqrtunf_compare.h - Gleichheit und Ordnungunf_conv.h - Konvertierung von IEEE 754 in UNF (die einzige Float-Grenze)unf_trig.h - Sin, Cos, Tan und Umkehrungenunf_exp.h - exp, log, powunf_const.h - pi, e, sqrt(2), ln(2)unf_mp.h - Multipräzisionshelfer für UNBTyp- und Variablenseiten sollen Breite, Vorzeichen, Initialisierung, Gültigkeitsbereich, Suffixregeln und x64-Layout dokumentieren. Beispiele sollen gespeicherten Wert, ausgelesenen Wert und Konvertierungs- oder Überlaufverhalten belegen.
Nennen Sie, ob Deklarationen #DIM ALL, AS-Klauseln, Suffixe oder ausdrückliche Sichtbarkeit benötigen. Trennen Sie lokalen, statischen, globalen und thread-lokalen Speicher.
Prüfen Sie Pointer-, Handle- und LONG-Annahmen beim Wechsel von 32-Bit-PB-Code zu PBXB64.
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.
LOCAL a AS UNF LOCAL b AS UNF a = 2.5 b = 4.0 PRINT a * b ' 10 (exact, no IEEE rounding)