(FPCore (x y z t a) :precision binary64 (+ x (/ (* y (- z t)) (- z a))))
↓
(FPCore (x y z t a)
:precision binary64
(if (<= y -2e-286)
(+ x (/ y (/ (- z a) (- z t))))
(if (<= y 7.2e+40)
(+ x (/ (* y (- z t)) (- z a)))
(fma (/ y (- z a)) (- z t) x))))
double code(double x, double y, double z, double t, double a) {
return x + ((y * (z - t)) / (z - a));
}
↓
double code(double x, double y, double z, double t, double a) {
double tmp;
if (y <= -2e-286) {
tmp = x + (y / ((z - a) / (z - t)));
} else if (y <= 7.2e+40) {
tmp = x + ((y * (z - t)) / (z - a));
} else {
tmp = fma((y / (z - a)), (z - t), x);
}
return tmp;
}
function code(x, y, z, t, a)
return Float64(x + Float64(Float64(y * Float64(z - t)) / Float64(z - a)))
end
↓
function code(x, y, z, t, a)
tmp = 0.0
if (y <= -2e-286)
tmp = Float64(x + Float64(y / Float64(Float64(z - a) / Float64(z - t))));
elseif (y <= 7.2e+40)
tmp = Float64(x + Float64(Float64(y * Float64(z - t)) / Float64(z - a)));
else
tmp = fma(Float64(y / Float64(z - a)), Float64(z - t), x);
end
return tmp
end
herbie shell --seed 2022325
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, A"
:precision binary64
:herbie-target
(+ x (/ y (/ (- z a) (- z t))))
(+ x (/ (* y (- z t)) (- z a))))