Dann werfe ich mal das hier in den Raum:
Delphi-Quellcode:
type
TComplex =
record
real, imaginary: Double;
end;
TQuadraticSolution =
Array[0..1]
of TComplex;
implementation
function SolveQuadratic(a, b, c: Double): TQuadraticSolutiuon;
var
t, ti: Double;
begin
if iszero(b)
and iszero(c)
then
begin
Result[0].real := 0;
Result[0].imaginary := 0;
Result[1].real := 0;
Result[1].imaginary := 0;
exit;
end;
if iszero(a)
then
raise Exception.Create('
Coefficient a must not be zero!');
if b*b-4*a*c < 0
then
begin
t := -0.5 * b;
ti := -0.5 * sign(b) * sqrt(4*a*c-b*b));
Result[0].real := t/a;
Result[0].imaginary := ti/a;
Result[1].real := t/a;
Result[1].imaginary := -1 * ti/a;
end
else
begin
t := -0.5 * (b + sign(b) * sqrt(b*b-4*a*c));
Result[0].real := t/a;
Result[0].imaginary := 0;
Result[1].real := c/t;
Result[1].imaginary := 0;
end;
end;
Ich hab versucht, das ganze etwas an die numerische Berechnung anzupassen (
http://en.wikipedia.org/wiki/Quadrat...implementation )
Edit: kleine Korrektur - ist leider nicht ausprobiert