Drei-Bit-Mantisse, Basis 2,

⟹    Zahlentheorie_Leitseite

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

b = 2;

alle = 
      Table[Table[
            Table[Table[
                BaseForm[((1. /(b^1)) k + (1/(b^2)) i + (1/(b^3)) j) 
                      (b^e), b] /. e -> ee, {j, 0, b - 1}], {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[Table[((1. /(b^1)) k + (1/(b^2)) i + (1/(b^3)) j) 
                    (b^e) /. e -> ee, {j, 0, b - 1}], {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.5}];

Show[xAchse, Graphics[maschZahlen]];

Im Bereich einer Stelle im b-System liegen stets gleichviele Zahlen.

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

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

Do[{test = 1 + alled[[k]], 
        If[test - alled[[k]] < 0.025, , 
          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 11 Differenzen, die eigentlich nicht 0 sind, die aber unter der Maschinengenauigkeit liegen und daher als 0 angezeigt werden.

Minimaler relativer Abstand

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

relAbstaende = 
      Table[Table[ 
          Abs[(((alled[[j]] - alled[[k]]))/alled)[[k]]], {k, j + 1, 9}], {j, 2, 8}]

Min[relAbstaende // Flatten]

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

b = 2;

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

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

alleb = extra~Join~alleTeil2 // Flatten

Length[alleb]

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

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

alled = extrad~Join~alleTeil2d // Flatten

Length[alled]

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

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

Show[xAchse, Graphics[maschZahlen]];

Im Bereich einer Stelle im b-System liegen stets gleichviele Zahlen, nur der Bereich bis 0 ist mit ebensovielen Zahlen aufgefüllt.

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

kleinsteMaschZahl = {(b^(-1 - 3)), (2^(-4)) // N}

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

Also ist hier die kleinste (neue) Maschinenzahl selbst die Maschinengenauigkeit.

Table[
      Table[If[ 
          alled[[j]] - 
              alled[[k]] < 0.0625, 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 keine Differenzen, die eigentlich nicht 0 sind, die aber unter der Maschinengenauigkeit liegen und daher als 0 angezeigt werden.

Minimaler relativer Abstand

relAbstaende = Table[
              Table[ Abs[(((alled[[j]] - alled[[k]]))/alled)[[k]]], {k, j + 1, 20}], {j, 2, 19}] // 
            Flatten // Sort;

{Min[relAbstaende // Flatten], Max[relAbstaende // Flatten]}