x + y \cdot \frac{z - t}{a - t}\begin{array}{l}
\mathbf{if}\;y \cdot \frac{z - t}{a - t} \le 1.0946169865901032 \cdot 10^{304}:\\
\;\;\;\;x + y \cdot \frac{z - t}{a - t}\\
\mathbf{else}:\\
\;\;\;\;x + {\left(\frac{y \cdot \left(z - t\right)}{a - t}\right)}^{1}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r632325 = x;
double r632326 = y;
double r632327 = z;
double r632328 = t;
double r632329 = r632327 - r632328;
double r632330 = a;
double r632331 = r632330 - r632328;
double r632332 = r632329 / r632331;
double r632333 = r632326 * r632332;
double r632334 = r632325 + r632333;
return r632334;
}
double f(double x, double y, double z, double t, double a) {
double r632335 = y;
double r632336 = z;
double r632337 = t;
double r632338 = r632336 - r632337;
double r632339 = a;
double r632340 = r632339 - r632337;
double r632341 = r632338 / r632340;
double r632342 = r632335 * r632341;
double r632343 = 1.0946169865901032e+304;
bool r632344 = r632342 <= r632343;
double r632345 = x;
double r632346 = r632345 + r632342;
double r632347 = r632335 * r632338;
double r632348 = r632347 / r632340;
double r632349 = 1.0;
double r632350 = pow(r632348, r632349);
double r632351 = r632345 + r632350;
double r632352 = r632344 ? r632346 : r632351;
return r632352;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.4 |
|---|---|
| Target | 0.4 |
| Herbie | 0.9 |
if (* y (/ (- z t) (- a t))) < 1.0946169865901032e+304Initial program 0.8
if 1.0946169865901032e+304 < (* y (/ (- z t) (- a t))) Initial program 49.0
rmApplied *-un-lft-identity49.0
Applied add-cube-cbrt49.3
Applied times-frac49.3
Applied associate-*r*16.5
Simplified16.5
rmApplied pow116.5
Applied pow116.5
Applied pow116.5
Applied pow116.5
Applied pow-prod-down16.5
Applied pow-prod-down16.5
Applied pow-prod-down16.5
Simplified10.6
Final simplification0.9
herbie shell --seed 2020049
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(if (< y -8.508084860551241e-17) (+ x (* y (/ (- z t) (- a t)))) (if (< y 2.894426862792089e-49) (+ x (* (* y (- z t)) (/ 1 (- a t)))) (+ x (* y (/ (- z t) (- a t))))))
(+ x (* y (/ (- z t) (- a t)))))