[][src]Function pbrt::quadratic

pub fn quadratic(a: Float, b: Float, c: Float) -> Option<(Float, Float)>

Find roots of quadratic equation, if they exist.

Examples

From https://www.cliffsnotes.com/study-guides/algebra/algebra-i/quadratic-equations/solving-quadratic-equations

use pbrt::Float;
use pbrt::quadratic;
use pbrt::assert_almost_equal_options;

assert_eq!(quadratic(1., 1., 1.), None);
assert_eq!(quadratic(1., -6., -16.), Some((-2., 8.)));
assert_eq!(quadratic(1., 6., 5.), Some((-5., -1.)));
assert_eq!(quadratic(1., 0., -16.), Some((-4. ,4.)));
assert_eq!(quadratic(1., 6., 0.), Some((-6. ,0.)));
// This quadratic returns irrational numbers, so some care is taken to ensure the equality
// tests work out.
let three: Float = 3.;
assert_almost_equal_options(quadratic(1., 2., -2.),
    Some(((-1.-three.sqrt()), (-1.+three.sqrt()))));