x + \frac{y \cdot \left(\left(z \cdot 0.0692910599291889 + 0.4917317610505968\right) \cdot z + 0.279195317918525\right)}{\left(z + 6.012459259764103\right) \cdot z + 3.350343815022304}\begin{array}{l}
\mathbf{if}\;z \le -6.066154477353578 \cdot 10^{+45}:\\
\;\;\;\;\left(y \cdot 0.0692910599291889 + \left(\frac{y \cdot 0.07512208616047561}{z} - \frac{y \cdot 0.40462203869992125}{z \cdot z}\right)\right) + x\\
\mathbf{elif}\;z \le 566049.5164958073:\\
\;\;\;\;\frac{0.279195317918525 + \left(0.4917317610505968 + 0.0692910599291889 \cdot z\right) \cdot z}{z \cdot \left(6.012459259764103 + z\right) + 3.350343815022304} \cdot y + x\\
\mathbf{else}:\\
\;\;\;\;\left(y \cdot 0.0692910599291889 + \left(\frac{y \cdot 0.07512208616047561}{z} - \frac{y \cdot 0.40462203869992125}{z \cdot z}\right)\right) + x\\
\end{array}double f(double x, double y, double z) {
double r19532263 = x;
double r19532264 = y;
double r19532265 = z;
double r19532266 = 0.0692910599291889;
double r19532267 = r19532265 * r19532266;
double r19532268 = 0.4917317610505968;
double r19532269 = r19532267 + r19532268;
double r19532270 = r19532269 * r19532265;
double r19532271 = 0.279195317918525;
double r19532272 = r19532270 + r19532271;
double r19532273 = r19532264 * r19532272;
double r19532274 = 6.012459259764103;
double r19532275 = r19532265 + r19532274;
double r19532276 = r19532275 * r19532265;
double r19532277 = 3.350343815022304;
double r19532278 = r19532276 + r19532277;
double r19532279 = r19532273 / r19532278;
double r19532280 = r19532263 + r19532279;
return r19532280;
}
double f(double x, double y, double z) {
double r19532281 = z;
double r19532282 = -6.066154477353578e+45;
bool r19532283 = r19532281 <= r19532282;
double r19532284 = y;
double r19532285 = 0.0692910599291889;
double r19532286 = r19532284 * r19532285;
double r19532287 = 0.07512208616047561;
double r19532288 = r19532284 * r19532287;
double r19532289 = r19532288 / r19532281;
double r19532290 = 0.40462203869992125;
double r19532291 = r19532284 * r19532290;
double r19532292 = r19532281 * r19532281;
double r19532293 = r19532291 / r19532292;
double r19532294 = r19532289 - r19532293;
double r19532295 = r19532286 + r19532294;
double r19532296 = x;
double r19532297 = r19532295 + r19532296;
double r19532298 = 566049.5164958073;
bool r19532299 = r19532281 <= r19532298;
double r19532300 = 0.279195317918525;
double r19532301 = 0.4917317610505968;
double r19532302 = r19532285 * r19532281;
double r19532303 = r19532301 + r19532302;
double r19532304 = r19532303 * r19532281;
double r19532305 = r19532300 + r19532304;
double r19532306 = 6.012459259764103;
double r19532307 = r19532306 + r19532281;
double r19532308 = r19532281 * r19532307;
double r19532309 = 3.350343815022304;
double r19532310 = r19532308 + r19532309;
double r19532311 = r19532305 / r19532310;
double r19532312 = r19532311 * r19532284;
double r19532313 = r19532312 + r19532296;
double r19532314 = r19532299 ? r19532313 : r19532297;
double r19532315 = r19532283 ? r19532297 : r19532314;
return r19532315;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 19.8 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
if z < -6.066154477353578e+45 or 566049.5164958073 < z Initial program 42.1
rmApplied add-sqr-sqrt42.1
Applied times-frac34.4
Taylor expanded around inf 0.0
Simplified0.0
if -6.066154477353578e+45 < z < 566049.5164958073Initial program 0.5
rmApplied *-un-lft-identity0.5
Applied times-frac0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019162
(FPCore (x y z)
:name "Numeric.SpecFunctions:logGamma from math-functions-0.1.5.2, B"
:herbie-target
(if (< z -8120153.652456675) (- (* (+ (/ 0.07512208616047561 z) 0.0692910599291889) y) (- (/ (* 0.40462203869992125 y) (* z z)) x)) (if (< z 6.576118972787377e+20) (+ x (* (* y (+ (* (+ (* z 0.0692910599291889) 0.4917317610505968) z) 0.279195317918525)) (/ 1 (+ (* (+ z 6.012459259764103) z) 3.350343815022304)))) (- (* (+ (/ 0.07512208616047561 z) 0.0692910599291889) y) (- (/ (* 0.40462203869992125 y) (* z z)) x))))
(+ x (/ (* y (+ (* (+ (* z 0.0692910599291889) 0.4917317610505968) z) 0.279195317918525)) (+ (* (+ z 6.012459259764103) z) 3.350343815022304))))