function r = quad_gleichung(b)

% verschiedene M"oglichkeiten der L"osung einer quadratischen
% Gleichung mit den Nullstelle
% Aufruf r = quad_gleichung(b)
% x_1 = 1
% x_2 = b

x(1) = 1;
x(2) = b;

% schlecht konditionierter Algorithmus
p = -(x(1)+x(2));
q = x(1)*x(2);
a = -p/2.0;
d = sqrt(a^2-q);
y(1) = a+d;
y(2) = a-d;
r = abs(b-y(2))/b;
s = sprintf('schlecht konditionierter Algorithmus: %g, %g  relativer Fehler %g',...
               y(1),y(2),r);
disp(s);

% gut konditionierter Algorithmus
y(2) = q/y(1);
r = abs(b-y(2))/b;
s = sprintf('gut konditionierter Algorithmus: %g, %g  relativer Fehler %g',...
               y(1),y(2),r);
disp(s);

% matlab
z=roots([1,p,q]);
s = sprintf('Matlab routine: %g, %g',z(1),z(2));
disp(s);

