\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -1.510233764806379 \cdot 10^{+78}:\\
\;\;\;\;\frac{x \cdot y}{\frac{a}{\frac{z \cdot z}{t}} \cdot \frac{1}{2} + -1}\\
\mathbf{elif}\;z \le 2.574280554580049 \cdot 10^{+79}:\\
\;\;\;\;\left(z \cdot \frac{1}{\sqrt{z \cdot z - t \cdot a}}\right) \cdot \left(x \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot y\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r28181658 = x;
double r28181659 = y;
double r28181660 = r28181658 * r28181659;
double r28181661 = z;
double r28181662 = r28181660 * r28181661;
double r28181663 = r28181661 * r28181661;
double r28181664 = t;
double r28181665 = a;
double r28181666 = r28181664 * r28181665;
double r28181667 = r28181663 - r28181666;
double r28181668 = sqrt(r28181667);
double r28181669 = r28181662 / r28181668;
return r28181669;
}
double f(double x, double y, double z, double t, double a) {
double r28181670 = z;
double r28181671 = -1.510233764806379e+78;
bool r28181672 = r28181670 <= r28181671;
double r28181673 = x;
double r28181674 = y;
double r28181675 = r28181673 * r28181674;
double r28181676 = a;
double r28181677 = r28181670 * r28181670;
double r28181678 = t;
double r28181679 = r28181677 / r28181678;
double r28181680 = r28181676 / r28181679;
double r28181681 = 0.5;
double r28181682 = r28181680 * r28181681;
double r28181683 = -1.0;
double r28181684 = r28181682 + r28181683;
double r28181685 = r28181675 / r28181684;
double r28181686 = 2.574280554580049e+79;
bool r28181687 = r28181670 <= r28181686;
double r28181688 = 1.0;
double r28181689 = r28181678 * r28181676;
double r28181690 = r28181677 - r28181689;
double r28181691 = sqrt(r28181690);
double r28181692 = r28181688 / r28181691;
double r28181693 = r28181670 * r28181692;
double r28181694 = r28181693 * r28181675;
double r28181695 = r28181687 ? r28181694 : r28181675;
double r28181696 = r28181672 ? r28181685 : r28181695;
return r28181696;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 23.9 |
|---|---|
| Target | 7.5 |
| Herbie | 6.3 |
if z < -1.510233764806379e+78Initial program 39.1
rmApplied associate-/l*36.9
Taylor expanded around -inf 6.2
Simplified2.6
if -1.510233764806379e+78 < z < 2.574280554580049e+79Initial program 10.8
rmApplied *-un-lft-identity10.8
Applied sqrt-prod10.8
Applied times-frac9.2
Simplified9.2
rmApplied div-inv9.3
if 2.574280554580049e+79 < z Initial program 40.1
Taylor expanded around inf 2.8
Final simplification6.3
herbie shell --seed 2019158
(FPCore (x y z t a)
:name "Statistics.Math.RootFinding:ridders from math-functions-0.1.5.2"
:herbie-target
(if (< z -3.1921305903852764e+46) (- (* y x)) (if (< z 5.976268120920894e+90) (/ (* x z) (/ (sqrt (- (* z z) (* a t))) y)) (* y x)))
(/ (* (* x y) z) (sqrt (- (* z z) (* t a)))))