% Aufgabe:  Übungszettel 5, 3d
% Autor:    Matthias Bosewitz
% Tutorium: Jan-Henning Hansen, Mo 10-12
% Berechnet einige Zahlen

x = 0.356;          % x der Aufgabe übernehmen
y = 1.53;           % y der Aufgabe übernehmen
a = -0.621;         % -a der Aufgabe
b = -0.909;         % -b der Aufgabe

[sx ax ex] = convert2float(x, 10, 3);       % Zahlen in die Darstellung umwandeln
[sy ay ey] = convert2float(y, 10, 3);       % Das ist zwar für q=10 trivial, aber
[sa aa ea] = convert2float(a, 10, 3);       % wenn man das schon extra
[sb ab eb] = convert2float(b, 10, 3);       % programmiert hat sollte man
                                            % die Funktion ja wohl auch
                                            % dafür benutzen.

[s a e] = float_addition(sx,ax,ex,  sy,ay,ey,  10);         % x+y rechnen
sprintf('x+y == (-1)^%d * 0.%s * 10^%d', s, char(a+'0'), e) % Zahl ausgeben

% Ausgabe:   x+y == (-1)^0 * 0.188 * 10^1
% Analythisch korrekt:
sprintf('x+y = 1.886')                                      % 0.356 + 1.53 = 1.886

[s a e] = float_addition(s,a,e,  sa,aa,ea,  10);                % (x+y)-a     rechnen
sprintf('x+y-a == (-1)^%d * 0.%s * 10^%d', s, char(a+'0'), e)   % Zahl ausgeben
[s a e] = float_addition(s,a,e,  sb,ab,eb,  10);                % ((x+y)-a)-b rechnen
sprintf('x+y-a-b == (-1)^%d * 0.%s * 10^%d', s, char(a+'0'), e) % Zahl ausgeben

% Ausgabe:   x+y-a-b == (-1)^0 * 0.020 * 10^1
% Analythisch korrekt:
sprintf('x+y-a-b = 0.356')    % 1.886 - 0.621 - 0.909 = 0.356

% Wie zu erkennen ist das Ergebnis irrsinnig schlecht da sich die Fehler
% aufsummieren. Ein Gleichheitstest würde (selbst wenn die Zahl noch
% normalisiert würde) an den verschiedenen a scheitern (0.188 ~= 0.200).
% Gleichheitsabfragen mit Gleitkommazahlen können eben nicht funktionieren.
