(FPCore (x y z t a) :precision binary64 (+ x (/ (* y (- z t)) a)))
↓
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (/ (* y (- z t)) a)) (t_2 (- x (/ t (/ a y)))))
(if (<= t_1 -2e+305)
t_2
(if (<= t_1 -1e+139)
t_1
(if (<= t_1 5e-174)
(+ x (* y (/ z a)))
(if (<= t_1 5e-8)
t_2
(if (<= t_1 1e+71)
t_1
(if (<= t_1 5e+128) t_2 (if (<= t_1 2e+305) t_1 t_2)))))))))
double code(double x, double y, double z, double t, double a) {
return x + ((y * (z - t)) / a);
}
↓
double code(double x, double y, double z, double t, double a) {
double t_1 = (y * (z - t)) / a;
double t_2 = x - (t / (a / y));
double tmp;
if (t_1 <= -2e+305) {
tmp = t_2;
} else if (t_1 <= -1e+139) {
tmp = t_1;
} else if (t_1 <= 5e-174) {
tmp = x + (y * (z / a));
} else if (t_1 <= 5e-8) {
tmp = t_2;
} else if (t_1 <= 1e+71) {
tmp = t_1;
} else if (t_1 <= 5e+128) {
tmp = t_2;
} else if (t_1 <= 2e+305) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
real(8) function code(x, y, z, t, a)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
code = x + ((y * (z - t)) / a)
end function
↓
real(8) function code(x, y, z, t, a)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_1 = (y * (z - t)) / a
t_2 = x - (t / (a / y))
if (t_1 <= (-2d+305)) then
tmp = t_2
else if (t_1 <= (-1d+139)) then
tmp = t_1
else if (t_1 <= 5d-174) then
tmp = x + (y * (z / a))
else if (t_1 <= 5d-8) then
tmp = t_2
else if (t_1 <= 1d+71) then
tmp = t_1
else if (t_1 <= 5d+128) then
tmp = t_2
else if (t_1 <= 2d+305) then
tmp = t_1
else
tmp = t_2
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a) {
return x + ((y * (z - t)) / a);
}
↓
public static double code(double x, double y, double z, double t, double a) {
double t_1 = (y * (z - t)) / a;
double t_2 = x - (t / (a / y));
double tmp;
if (t_1 <= -2e+305) {
tmp = t_2;
} else if (t_1 <= -1e+139) {
tmp = t_1;
} else if (t_1 <= 5e-174) {
tmp = x + (y * (z / a));
} else if (t_1 <= 5e-8) {
tmp = t_2;
} else if (t_1 <= 1e+71) {
tmp = t_1;
} else if (t_1 <= 5e+128) {
tmp = t_2;
} else if (t_1 <= 2e+305) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
def code(x, y, z, t, a):
return x + ((y * (z - t)) / a)
if (/.f64 (*.f64 y (-.f64 z t)) a) < -1.9999999999999999e305 or 5.0000000000000002e-174 < (/.f64 (*.f64 y (-.f64 z t)) a) < 4.9999999999999998e-8 or 1e71 < (/.f64 (*.f64 y (-.f64 z t)) a) < 5e128 or 1.9999999999999999e305 < (/.f64 (*.f64 y (-.f64 z t)) a)
if -1.9999999999999999e305 < (/.f64 (*.f64 y (-.f64 z t)) a) < -1.00000000000000003e139 or 4.9999999999999998e-8 < (/.f64 (*.f64 y (-.f64 z t)) a) < 1e71 or 5e128 < (/.f64 (*.f64 y (-.f64 z t)) a) < 1.9999999999999999e305
herbie shell --seed 2022325
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, E"
:precision binary64
:herbie-target
(if (< y -1.0761266216389975e-10) (+ x (/ 1.0 (/ (/ a (- z t)) y))) (if (< y 2.894426862792089e-49) (+ x (/ (* y (- z t)) a)) (+ x (/ y (/ a (- z t))))))
(+ x (/ (* y (- z t)) a)))