function [x] = quadratic(a,b,c); % [x] = quadratic(a,b,c); x = zeros(2,1); if isreal([a b c]) % this required since in matlab sign(0) == 0 if b ~= 0 q = -.5*(b + sign(b)*sqrt(b*b - 4*a*c)); else q = -sqrt(-a*c); end else % stability trickeroo if real(conj(b)*sqrt(b*b - 4*a*c)) >= 0 q = -.5*(b + sqrt(b*b - 4*a*c)); else q = -.5*(b - sqrt(b*b - 4*a*c)); end end x(1) = q/a; x(2) = c/q; return;