(FPCore (x y z)
:precision binary64
(+ x (/ (exp (* y (log (/ y (+ z y))))) y)))
↓
(FPCore (x y z)
:precision binary64
(if (<= y -5.8e+37)
(+ x (/ (exp (- z)) y))
(if (<= y 1.35e-37) (+ x (/ 1.0 y)) (+ x (/ 1.0 (* y (exp z)))))))
double code(double x, double y, double z) {
return x + (exp((y * log((y / (z + y))))) / y);
}
↓
double code(double x, double y, double z) {
double tmp;
if (y <= -5.8e+37) {
tmp = x + (exp(-z) / y);
} else if (y <= 1.35e-37) {
tmp = x + (1.0 / y);
} else {
tmp = x + (1.0 / (y * exp(z)));
}
return tmp;
}
real(8) function code(x, y, z)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
code = x + (exp((y * log((y / (z + y))))) / y)
end function
↓
real(8) function code(x, y, z)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8) :: tmp
if (y <= (-5.8d+37)) then
tmp = x + (exp(-z) / y)
else if (y <= 1.35d-37) then
tmp = x + (1.0d0 / y)
else
tmp = x + (1.0d0 / (y * exp(z)))
end if
code = tmp
end function
public static double code(double x, double y, double z) {
return x + (Math.exp((y * Math.log((y / (z + y))))) / y);
}
↓
public static double code(double x, double y, double z) {
double tmp;
if (y <= -5.8e+37) {
tmp = x + (Math.exp(-z) / y);
} else if (y <= 1.35e-37) {
tmp = x + (1.0 / y);
} else {
tmp = x + (1.0 / (y * Math.exp(z)));
}
return tmp;
}
def code(x, y, z):
return x + (math.exp((y * math.log((y / (z + y))))) / y)
↓
def code(x, y, z):
tmp = 0
if y <= -5.8e+37:
tmp = x + (math.exp(-z) / y)
elif y <= 1.35e-37:
tmp = x + (1.0 / y)
else:
tmp = x + (1.0 / (y * math.exp(z)))
return tmp
function code(x, y, z)
return Float64(x + Float64(exp(Float64(y * log(Float64(y / Float64(z + y))))) / y))
end
↓
function code(x, y, z)
tmp = 0.0
if (y <= -5.8e+37)
tmp = Float64(x + Float64(exp(Float64(-z)) / y));
elseif (y <= 1.35e-37)
tmp = Float64(x + Float64(1.0 / y));
else
tmp = Float64(x + Float64(1.0 / Float64(y * exp(z))));
end
return tmp
end
function tmp = code(x, y, z)
tmp = x + (exp((y * log((y / (z + y))))) / y);
end
↓
function tmp_2 = code(x, y, z)
tmp = 0.0;
if (y <= -5.8e+37)
tmp = x + (exp(-z) / y);
elseif (y <= 1.35e-37)
tmp = x + (1.0 / y);
else
tmp = x + (1.0 / (y * exp(z)));
end
tmp_2 = tmp;
end
(+.f64 x (/.f64 (pow.f64 (/.f64 y (+.f64 y z)) y) y)): 0 points increase in error, 0 points decrease in error
(+.f64 x (/.f64 (pow.f64 (/.f64 y (Rewrite<= +-commutative_binary64 (+.f64 z y))) y) y)): 0 points increase in error, 0 points decrease in error
(+.f64 x (/.f64 (Rewrite=> sqr-pow_binary64 (*.f64 (pow.f64 (/.f64 y (+.f64 z y)) (/.f64 y 2)) (pow.f64 (/.f64 y (+.f64 z y)) (/.f64 y 2)))) y)): 1 points increase in error, 0 points decrease in error
(+.f64 x (/.f64 (Rewrite<= sqr-pow_binary64 (pow.f64 (/.f64 y (+.f64 z y)) y)) y)): 0 points increase in error, 1 points decrease in error
(+.f64 x (/.f64 (Rewrite<= exp-to-pow_binary64 (exp.f64 (*.f64 (log.f64 (/.f64 y (+.f64 z y))) y))) y)): 1 points increase in error, 0 points decrease in error
(+.f64 x (/.f64 (exp.f64 (Rewrite<= *-commutative_binary64 (*.f64 y (log.f64 (/.f64 y (+.f64 z y)))))) y)): 0 points increase in error, 0 points decrease in error
(+.f64 x (/.f64 (pow.f64 (/.f64 y (+.f64 y z)) y) y)): 0 points increase in error, 0 points decrease in error
(+.f64 x (/.f64 (pow.f64 (/.f64 y (Rewrite<= +-commutative_binary64 (+.f64 z y))) y) y)): 0 points increase in error, 0 points decrease in error
(+.f64 x (/.f64 (Rewrite=> sqr-pow_binary64 (*.f64 (pow.f64 (/.f64 y (+.f64 z y)) (/.f64 y 2)) (pow.f64 (/.f64 y (+.f64 z y)) (/.f64 y 2)))) y)): 1 points increase in error, 0 points decrease in error
(+.f64 x (/.f64 (Rewrite<= sqr-pow_binary64 (pow.f64 (/.f64 y (+.f64 z y)) y)) y)): 0 points increase in error, 1 points decrease in error
(+.f64 x (/.f64 (Rewrite<= exp-to-pow_binary64 (exp.f64 (*.f64 (log.f64 (/.f64 y (+.f64 z y))) y))) y)): 1 points increase in error, 0 points decrease in error
(+.f64 x (/.f64 (exp.f64 (Rewrite<= *-commutative_binary64 (*.f64 y (log.f64 (/.f64 y (+.f64 z y)))))) y)): 0 points increase in error, 0 points decrease in error
(+.f64 x (/.f64 (pow.f64 (/.f64 y (+.f64 y z)) y) y)): 0 points increase in error, 0 points decrease in error
(+.f64 x (/.f64 (pow.f64 (/.f64 y (Rewrite<= +-commutative_binary64 (+.f64 z y))) y) y)): 0 points increase in error, 0 points decrease in error
(+.f64 x (/.f64 (Rewrite=> sqr-pow_binary64 (*.f64 (pow.f64 (/.f64 y (+.f64 z y)) (/.f64 y 2)) (pow.f64 (/.f64 y (+.f64 z y)) (/.f64 y 2)))) y)): 1 points increase in error, 0 points decrease in error
(+.f64 x (/.f64 (Rewrite<= sqr-pow_binary64 (pow.f64 (/.f64 y (+.f64 z y)) y)) y)): 0 points increase in error, 1 points decrease in error
(+.f64 x (/.f64 (Rewrite<= exp-to-pow_binary64 (exp.f64 (*.f64 (log.f64 (/.f64 y (+.f64 z y))) y))) y)): 1 points increase in error, 0 points decrease in error
(+.f64 x (/.f64 (exp.f64 (Rewrite<= *-commutative_binary64 (*.f64 y (log.f64 (/.f64 y (+.f64 z y)))))) y)): 0 points increase in error, 0 points decrease in error
herbie shell --seed 2022300
(FPCore (x y z)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, G"
:precision binary64
:herbie-target
(if (< (/ y (+ z y)) 7.11541576e-315) (+ x (/ (exp (/ -1.0 z)) y)) (+ x (/ (exp (log (pow (/ y (+ y z)) y))) y)))
(+ x (/ (exp (* y (log (/ y (+ z y))))) y)))