% Angewandte Numerik 1, SoSe 2022 % Uebungsblatt 01, Aufgabe 03: Wert einer Gleitpunktdarstellung % % Testprogramm fuer die Funktion [d, v, t] = flp(b, m, n, x) % % Letzte Aenderung: 22.04.2022 %% Initialisierung clearvars; close all; clc; fprintf('\n'); fprintf('Angewandte Numerik 1, Sommersemester 2022\n'); fprintf('Uebungsblatt 1, Aufgabe 3d: 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 m = 8; % Laenge der Mantisse n = 3; % Laenge des Exponenten x = 27.375; % zu konvertierende Zahl dSoll = [1 1 0 1 1 0 1 1]; % Mantisse vSoll = [1 0 1]; % Exponent tSoll = 1; % Vorzeichen Exponent case 2 % Testfall 2 b = 8; % Basis m = 8; % Laenge der Mantisse n = 3; % Laenge des Exponenten x = 27.375; % zu konvertierende Zahl dSoll = [3 3 3 0 0 0 0 0]; % Mantisse vSoll = [0 0 2]; % Exponent tSoll = 1; % Vorzeichen Exponent case 3 % Testfall 3 b = 2; % Basis m = 10; % Laenge der Mantisse n = 3; % Laenge des Exponenten x = 9.140625; % zu konvertierende Zahl dSoll = [1 0 0 1 0 0 1 0 0 1]; % Mantisse vSoll = [1 0 0]; % Exponent tSoll = 1; % Vorzeichen Exponent case 4 % Testfall 4 b = 8; % Basis m = 5; % Laenge der Mantisse n = 3; % Laenge des Exponenten x = 9.140625; % zu konvertierende Zahl dSoll = [1 1 1 1 0]; % Mantisse vSoll = [0 0 2]; % Exponent tSoll = 1; % Vorzeichen Exponent case 5 % Testfall 5 b = 2; % Basis m = 3; % Laenge der Mantisse n = 2; % Laenge des Exponenten x = 0.375; % zu konvertierende Zahl dSoll = [1 1 0]; % Mantisse vSoll = [0 1]; % Exponent tSoll = -1; % Vorzeichen Exponent case 6 % Testfall 6 b = 8; % Basis m = 5; % Laenge der Mantisse n = 2; % Laenge des Exponenten x = 0.0157470703125; % zu konvertierende Zahl dSoll = [1 0 0 4 0]; % Mantisse vSoll = [0 1]; % Exponent tSoll = -1; % Vorzeichen Exponent case 7 % Testfall 7 b = 2; % Basis m = 3; % Laenge der Mantisse n = 3; % Laenge des Exponenten x = 0.0625; % zu konvertierende Zahl dSoll = [1 0 0]; % Mantisse vSoll = [0 1 1]; % Exponent tSoll = -1; % Vorzeichen Exponent otherwise break; % keine Testfaelle mehr vorhanden end %% Testfall durchfuehren und Ergebnis ausgeben [d, v, t] = flp(b, m, n, x); spezString = 'Testfall %d: %s.\n'; if max(abs([d - dSoll, v - vSoll, t - tSoll])) == 0 fprintf(spezString, testfall, 'Bestanden'); else fprintf(2, spezString, testfall, 'Fehlgeschlagen'); end end