Quadratic Solver

From CodeCodex

Revision as of 13:49, 25 June 2008 by Nostromo (Talk | contribs)

<highlightsyntax language="PHP"> // Quadratic Solver for PHP by Gazza 2004-03-21 // Useage: for 3x^2 + 4x + 5 = 0, use quadratic(3, 4, 5, 'root1') and quadratic(3, 4, 5, 'root2'), // or simply just quadratic(3, 4, 5, 'both'). // The $root argument doesn't define which value it will be in relation to the other - I could // easily have called them John and Jane, instead of 1st and 2nd. // function quadratic($a, $b, $c, $root) { $precision = 3; // Change this value for a different decimal places rounding.

$bsmfac = $b*$b-4*$a*$c; if ($bsmfac < 0) { // Accounts for complex roots. $plusminusone = " + "; $plusminustwo = " - "; $bsmfac *=-1; $complex=(sqrt($bsmfac)/(2*$a)); if ($a < 0){ //if negative imaginary term, tidies appearance. $plusminustwo = " + "; $plusminusone = " - "; $complex *= -1; } // End if ($a < 0) $lambdaone = round(-$b/(2*$a), $precision).$plusminusone.round($complex, $precision).'i'; $lambdatwo = round(-$b/(2*$a), $precision).$plusminustwo.round($complex, $precision).'i'; } // End if ($bsmfac < 0)

else if ($bsmfac == 0) { // Simplifies if b^2 = 4ac (real roots). $lambdaone = round(-$b/(2*$a), $precision); $lambdatwo = round(-$b/(2*$a), $precision); } // End else if (bsmfac == 0)

else { // Finds real roots when b^2 != 4ac. $lambdaone = (-$b+sqrt($bsmfac))/(2*$a); $lambdaone = round($lambdaone, $precision); $lambdatwo = (-$b-sqrt($bsmfac))/(2*$a); $lambdatwo = round($lambdatwo, $precision); } // End else

// Return what is asked for. if ($root == 'root1') {return $lambdaone;} if ($root == 'root2') {return $lambdatwo;} if ($root == 'both') {return $lambdaone. ' and ' .$lambdatwo;} } // End function </highlightsyntax>