function [xsol, delta] = eqdeg2b( a, b, c )
% funzione per equazioni di secondo grado
%
%	a *x^2 + b *x + c = 0
%
%   soluzione alternativa per evitare gli errori di cancellazione

if nargin < 3 || isempty(c)
	c = 0;
end
if nargin < 2 || isempty(b)
	b = -1;
end
if nargin < 1 || isempty(a)
	a = 1;
end

if a==0
    error('Il coefficiente del termine di seocndo grado e'' nullo');
end

% calcolo discriminante

delta = b^2 - 4*a*c;

q = -(1/2) * (b + sqrt(delta)*sign(b) );


% segno di delta
sgndlt = sign(delta)

switch sgndlt

case 1 
fprintf('\n L''equazione presenta due soluzioni reali e distinte.\n')
xp = q/a;
xm = c/q;
xsol = [ xm xp ];

case -1 
fprintf('\nL''equazione presenta due soluzioni complesse coniugate.\n')
xsol = [ ];

case 0
fprintf('\nL''equazione presenta due soluzioni reali e coincidenti\n')
xp = q/a;
xm = c/q;
xsol = [ xm xp ];

end


