(FPCore (a b c)
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))
↓
(FPCore (a b c)
:precision binary64
(let* ((t_0 (sqrt (+ (* b b) (* a (* c -4.0)))))
(t_1 (sqrt (- (* b b) (* a (* c 4.0))))))
(/
(if (!= (+ b t_0) 0.0)
(/ (* a (* -4.0 c)) (/ (- (- b) (+ b (+ t_1 t_1))) -2.0))
(- t_0 b))
(* a 2.0))))
double code(double a, double b, double c) {
return (-b + sqrt(((b * b) - ((4.0 * a) * c)))) / (2.0 * a);
}
↓
double code(double a, double b, double c) {
double t_0 = sqrt(((b * b) + (a * (c * -4.0))));
double t_1 = sqrt(((b * b) - (a * (c * 4.0))));
double tmp;
if ((b + t_0) != 0.0) {
tmp = (a * (-4.0 * c)) / ((-b - (b + (t_1 + t_1))) / -2.0);
} else {
tmp = t_0 - b;
}
return tmp / (a * 2.0);
}
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
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = sqrt(((b * b) + (a * (c * (-4.0d0)))))
t_1 = sqrt(((b * b) - (a * (c * 4.0d0))))
if ((b + t_0) /= 0.0d0) then
tmp = (a * ((-4.0d0) * c)) / ((-b - (b + (t_1 + t_1))) / (-2.0d0))
else
tmp = t_0 - b
end if
code = tmp / (a * 2.0d0)
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);
}
↓
public static double code(double a, double b, double c) {
double t_0 = Math.sqrt(((b * b) + (a * (c * -4.0))));
double t_1 = Math.sqrt(((b * b) - (a * (c * 4.0))));
double tmp;
if ((b + t_0) != 0.0) {
tmp = (a * (-4.0 * c)) / ((-b - (b + (t_1 + t_1))) / -2.0);
} else {
tmp = t_0 - b;
}
return tmp / (a * 2.0);
}
def code(a, b, c):
return (-b + math.sqrt(((b * b) - ((4.0 * a) * c)))) / (2.0 * a)
↓
def code(a, b, c):
t_0 = math.sqrt(((b * b) + (a * (c * -4.0))))
t_1 = math.sqrt(((b * b) - (a * (c * 4.0))))
tmp = 0
if (b + t_0) != 0.0:
tmp = (a * (-4.0 * c)) / ((-b - (b + (t_1 + t_1))) / -2.0)
else:
tmp = t_0 - b
return tmp / (a * 2.0)
function code(a, b, c)
return Float64(Float64(Float64(-b) + sqrt(Float64(Float64(b * b) - Float64(Float64(4.0 * a) * c)))) / Float64(2.0 * a))
end
↓
function code(a, b, c)
t_0 = sqrt(Float64(Float64(b * b) + Float64(a * Float64(c * -4.0))))
t_1 = sqrt(Float64(Float64(b * b) - Float64(a * Float64(c * 4.0))))
tmp = 0.0
if (Float64(b + t_0) != 0.0)
tmp = Float64(Float64(a * Float64(-4.0 * c)) / Float64(Float64(Float64(-b) - Float64(b + Float64(t_1 + t_1))) / -2.0));
else
tmp = Float64(t_0 - b);
end
return Float64(tmp / Float64(a * 2.0))
end
function tmp = code(a, b, c)
tmp = (-b + sqrt(((b * b) - ((4.0 * a) * c)))) / (2.0 * a);
end
↓
function tmp_2 = code(a, b, c)
t_0 = sqrt(((b * b) + (a * (c * -4.0))));
t_1 = sqrt(((b * b) - (a * (c * 4.0))));
tmp = 0.0;
if ((b + t_0) ~= 0.0)
tmp = (a * (-4.0 * c)) / ((-b - (b + (t_1 + t_1))) / -2.0);
else
tmp = t_0 - b;
end
tmp_2 = tmp / (a * 2.0);
end
herbie shell --seed 2023104
(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)))