\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -4.360527887622532879859975400806262673533 \cdot 10^{74}:\\
\;\;\;\;x \cdot \left(-y\right)\\
\mathbf{elif}\;z \le 5.226961588256762913949303420447053290802 \cdot 10^{-171}:\\
\;\;\;\;\frac{x \cdot z}{\sqrt{{z}^{2} - a \cdot t}} \cdot y\\
\mathbf{elif}\;z \le 6.533659553749963211432099594569213138326 \cdot 10^{149}:\\
\;\;\;\;x \cdot \left(\frac{z}{\sqrt{z \cdot z - a \cdot t}} \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot y\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r256139 = x;
double r256140 = y;
double r256141 = r256139 * r256140;
double r256142 = z;
double r256143 = r256141 * r256142;
double r256144 = r256142 * r256142;
double r256145 = t;
double r256146 = a;
double r256147 = r256145 * r256146;
double r256148 = r256144 - r256147;
double r256149 = sqrt(r256148);
double r256150 = r256143 / r256149;
return r256150;
}
double f(double x, double y, double z, double t, double a) {
double r256151 = z;
double r256152 = -4.360527887622533e+74;
bool r256153 = r256151 <= r256152;
double r256154 = x;
double r256155 = y;
double r256156 = -r256155;
double r256157 = r256154 * r256156;
double r256158 = 5.226961588256763e-171;
bool r256159 = r256151 <= r256158;
double r256160 = r256154 * r256151;
double r256161 = 2.0;
double r256162 = pow(r256151, r256161);
double r256163 = a;
double r256164 = t;
double r256165 = r256163 * r256164;
double r256166 = r256162 - r256165;
double r256167 = sqrt(r256166);
double r256168 = r256160 / r256167;
double r256169 = r256168 * r256155;
double r256170 = 6.533659553749963e+149;
bool r256171 = r256151 <= r256170;
double r256172 = r256151 * r256151;
double r256173 = r256172 - r256165;
double r256174 = sqrt(r256173);
double r256175 = r256151 / r256174;
double r256176 = r256175 * r256155;
double r256177 = r256154 * r256176;
double r256178 = r256154 * r256155;
double r256179 = r256171 ? r256177 : r256178;
double r256180 = r256159 ? r256169 : r256179;
double r256181 = r256153 ? r256157 : r256180;
return r256181;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 25.7 |
|---|---|
| Target | 8.1 |
| Herbie | 6.5 |
if z < -4.360527887622533e+74Initial program 40.2
Simplified39.4
rmApplied div-inv39.5
Applied associate-*l*37.4
Simplified37.4
Taylor expanded around -inf 3.0
if -4.360527887622533e+74 < z < 5.226961588256763e-171Initial program 13.4
Simplified13.4
rmApplied add-sqr-sqrt13.4
Applied sqrt-prod13.5
Applied associate-/r*13.5
Simplified13.5
rmApplied *-un-lft-identity13.5
Applied sqrt-prod13.5
Applied sqrt-prod13.5
Applied *-un-lft-identity13.5
Applied sqrt-prod13.5
Applied sqrt-prod13.5
Applied times-frac13.5
Applied times-frac13.9
Applied associate-*l*12.9
Simplified12.4
if 5.226961588256763e-171 < z < 6.533659553749963e+149Initial program 9.3
Simplified9.1
rmApplied div-inv9.2
Applied associate-*l*5.7
Simplified5.6
rmApplied associate-*l*5.3
Simplified8.8
rmApplied *-un-lft-identity8.8
Applied sqrt-prod8.8
Applied times-frac5.3
Simplified5.3
if 6.533659553749963e+149 < z Initial program 53.7
Simplified53.2
rmApplied div-inv53.2
Applied associate-*l*53.1
Simplified53.1
rmApplied associate-*l*53.1
Simplified54.0
Taylor expanded around inf 1.5
Final simplification6.5
herbie shell --seed 2019174
(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)))))