二次方程式を関数として以下のように実装する。
/* 二次方程式 */ int WH_Algebra__solveQuadraticEquation (double tolerance, double a, double b, double c, double *OUT__x_0, double *OUT__x_1) /* 入力引数: tolerance は判別式に対するトレランス値 a は非ゼロのスカラーで、方程式の係数 b, c はスカラーで、方程式の係数 出力引数: OUT__x_0, OUT__x_1 はスカラーで、解 もし、戻り値が2なら、双方とも有効 もし、戻り値が1なら、OUT__x_0のみ有効 もし、戻り値が0なら、どれも無効 戻り値: 実根の数を返す。 */ { double d = b * b - 4 * a * c; if (fabs (d) < tolerance) { *OUT__x_0 = - b / (2 * a); return 1; } else if (d < 0.0) { return 0; } else { double q; if (0.0 < b) { q = -0.5 * (b + sqrt (d)); } else { q = -0.5 * (b - sqrt (d)); } *OUT__x_0 = q / a; *OUT__x_1 = c / q; return 2; } }