% Angewandte Numerik 1, SoSe 2022
% Uebungsblatt 01, Aufgabe 03: Wert einer Gleitpunktdarstellung
%
% Testprogramm fuer die Funktion x = value(b, d, v, t)
%
% Letzte Aenderung: 22.04.2022



%% Initialisierung

clearvars;
close all;
clc;

tol = 1e-14;                  % Geforderte Genauigkeit der Berechnungen

fprintf('\n');
fprintf('Angewandte Numerik 1, Sommersemester 2022\n');
fprintf('Uebungsblatt 1, Aufgabe 3b: Gleitpunkt-Darstellung\n');
fprintf('\n');



%% Definition und Durchfuehrung der Testfaelle

testfall = 0;
while true                          % alle Testfaelle untersuchen
    testfall = testfall + 1;        % naechster Testfall
    
    
    %% alle Testfaelle definieren
    
    switch testfall
        case 1                      % Testfall 1
            b = 2;                      % Basis
            d = [1 0 1 0 0 1 0 0];      % Mantisse
            v = [0 0 1 0 0];            % Exponent
            t = 1;                      % Vorzeichen Exponent
            x = 10.25;                  % Wert der Zahl
        case 2                      % Testfall 2
            b = 2;                      % Basis
            d = [1 0 1];                % Mantisse
            v = [0 0 1];                % Exponent
            t = -1;                     % Vorzeichen Exponent
            x = 0.3125;                 % Wert der Zahl
        case 3                      % Testfall 3
            b = 8;                      % Basis
            d = [7 5 0];                % Mantisse
            v = [0 0 1];                % Exponent
            t = -1;                     % Vorzeichen Exponent
            x = 0.119140625;            % Wert der Zahl
        otherwise
            break;                  % keine Testfaelle mehr vorhanden
    end
    
    
    %% Testfall durchfuehren und Ergebnis ausgeben
    
    spezString = 'Testfall %d: %s.\n';
    if abs(x - value(b,d,v,t)) < tol
        fprintf(spezString, testfall, 'Bestanden');
    else
        fprintf(2, spezString, testfall, 'Fehlgeschlagen');
    end
    
end