(FPCore (a b c)
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))
↓
(FPCore (a b c)
:precision binary64
(+
(* -1.0 (/ c b))
(+
(* -0.25 (/ (* (pow b -7.0) (pow (* (* a a) (* c c)) 2.0)) (/ a 20.0)))
(+
(* -0.5 (* c (* (pow (/ 1.0 b) 5.0) (pow (* -2.0 (* c a)) 2.0))))
(* -0.25 (/ (* (pow (/ 1.0 b) 3.0) (* (* a a) (* 4.0 (* c c)))) a))))))
double code(double a, double b, double c) {
return (-b + sqrt(((b * b) - ((4.0 * a) * c)))) / (2.0 * a);
}
real(8) function code(a, b, c)
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c
code = (-b + sqrt(((b * b) - ((4.0d0 * a) * c)))) / (2.0d0 * a)
end function
↓
real(8) function code(a, b, c)
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c
code = ((-1.0d0) * (c / b)) + (((-0.25d0) * (((b ** (-7.0d0)) * (((a * a) * (c * c)) ** 2.0d0)) / (a / 20.0d0))) + (((-0.5d0) * (c * (((1.0d0 / b) ** 5.0d0) * (((-2.0d0) * (c * a)) ** 2.0d0)))) + ((-0.25d0) * ((((1.0d0 / b) ** 3.0d0) * ((a * a) * (4.0d0 * (c * c)))) / a))))
end function
public static double code(double a, double b, double c) {
return (-b + Math.sqrt(((b * b) - ((4.0 * a) * c)))) / (2.0 * a);
}
herbie shell --seed 2023010
(FPCore (a b c)
:name "Quadratic roots, wide range"
:precision binary64
:pre (and (and (and (< 4.930380657631324e-32 a) (< a 2.028240960365167e+31)) (and (< 4.930380657631324e-32 b) (< b 2.028240960365167e+31))) (and (< 4.930380657631324e-32 c) (< c 2.028240960365167e+31)))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))