Zwei-Bit-Mantisse, Basis 2

⟹    Zahlentheorie_Leitseite    ⟹Numerik-Übersicht

Gleitpunkt-Zahlsystem Basis b, Mantissenlänge 2, Exponenten[-1,2], normalisiert

b = 2;

alle = 
      Table[Table[
            Table[BaseForm[((1. /(b^1)) k + (1/(b^2)) i) (b^e), b] /. 
                e -> ee, {i, 0, b - 1}], {k, 1, b - 1}] // 
          Flatten, {ee, -1, 2}]

alleb = {BaseForm[0, b]}~Join~alle // Flatten

Length[alleb]

alled = 
      Table[Table[
            Table[((1. /(b^1)) k + (1/(b^2)) i) (b^e) /. e -> ee, {i, 0, 
                b - 1}], {k, 1, b - 1}] // Flatten, {ee, -1, 
          2}]

alled = {0}~Join~alled // Flatten

Length[alled]

maschZahlen = 
        Table[Line[{{alled[[i]], 
                0}, {alled[[i]], 
                1}}], {i, 1, Length[alled]}];

xAchse = Plot[0, {x, 0, 3}];

Show[xAchse, Graphics[maschZahlen]];

kleinsteMaschZahl = {(2^(-2)), (2^(-2)) // N}

Teste die Maschinengenauigkeit ε als die kleinste Zahl, deren Additon zur 1 von der Maschine gemerkt wird.

Do[{test = 1 + alled[[k]], 
        If[test - alled[[k]] < 0.0625, , 
          Print[alled[[k]]]]}, {k, 1, 
        4}]

Also ist hier die kleinste Maschinenzahl selbst die Maschinengenauigkeit.

Table[
      Table[If[ 
          alled[[j]] - 
              alled[[k]] < 0.25, 0, 
          Round[(alled[[j]] - 
                    alled[[k]]) (10^2)]/
            (10. ^2)], {j, 1, 9}], {k, 1, 9}]

Die Hauptdiagonale und alles was darunter ist musste 0 werden. Es gibt aber noch 2 Differenzen, die eigentlich nicht 0 sind, die aber unter der Maschinengenauigkeit liegen und daher als 0 angezeigt werden.