(FPCore (x y z t) :precision binary64 (* (/ (- x y) (- z y)) t))
↓
(FPCore (x y z t)
:precision binary64
(let* ((t_1 (/ (- y x) (/ (- y z) t))) (t_2 (/ t (- 1.0 (/ z y)))))
(if (<= y -6.6395987094230575e+131)
t_2
(if (<= y -1e-190)
t_1
(if (<= y 1e-150)
(* t (/ (- x y) z))
(if (<= y 2.663055089225907e+113)
t_1
(if (<= y 1.0854625007987907e+142)
t_2
(if (<= y 7.319036850923115e+179)
t_1
(* t (- 1.0 (/ x y)))))))))))
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
code = ((x - y) / (z - y)) * t
end function
↓
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_1 = (y - x) / ((y - z) / t)
t_2 = t / (1.0d0 - (z / y))
if (y <= (-6.6395987094230575d+131)) then
tmp = t_2
else if (y <= (-1d-190)) then
tmp = t_1
else if (y <= 1d-150) then
tmp = t * ((x - y) / z)
else if (y <= 2.663055089225907d+113) then
tmp = t_1
else if (y <= 1.0854625007987907d+142) then
tmp = t_2
else if (y <= 7.319036850923115d+179) then
tmp = t_1
else
tmp = t * (1.0d0 - (x / y))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
return ((x - y) / (z - y)) * t;
}
↓
public static double code(double x, double y, double z, double t) {
double t_1 = (y - x) / ((y - z) / t);
double t_2 = t / (1.0 - (z / y));
double tmp;
if (y <= -6.6395987094230575e+131) {
tmp = t_2;
} else if (y <= -1e-190) {
tmp = t_1;
} else if (y <= 1e-150) {
tmp = t * ((x - y) / z);
} else if (y <= 2.663055089225907e+113) {
tmp = t_1;
} else if (y <= 1.0854625007987907e+142) {
tmp = t_2;
} else if (y <= 7.319036850923115e+179) {
tmp = t_1;
} else {
tmp = t * (1.0 - (x / y));
}
return tmp;
}
def code(x, y, z, t):
return ((x - y) / (z - y)) * t
↓
def code(x, y, z, t):
t_1 = (y - x) / ((y - z) / t)
t_2 = t / (1.0 - (z / y))
tmp = 0
if y <= -6.6395987094230575e+131:
tmp = t_2
elif y <= -1e-190:
tmp = t_1
elif y <= 1e-150:
tmp = t * ((x - y) / z)
elif y <= 2.663055089225907e+113:
tmp = t_1
elif y <= 1.0854625007987907e+142:
tmp = t_2
elif y <= 7.319036850923115e+179:
tmp = t_1
else:
tmp = t * (1.0 - (x / y))
return tmp
function code(x, y, z, t)
return Float64(Float64(Float64(x - y) / Float64(z - y)) * t)
end
if -6.6395987094230575e131 < y < -1e-190 or 1.00000000000000001e-150 < y < 2.663055089225907e113 or 1.08546250079879065e142 < y < 7.31903685092311492e179
herbie shell --seed 2022228
(FPCore (x y z t)
:name "Numeric.Signal.Multichannel:$cput from hsignal-0.2.7.1"
:precision binary64
:herbie-target
(/ t (/ (- z y) (- x y)))
(* (/ (- x y) (- z y)) t))