x + \frac{y \cdot \left(\left(z \cdot 0.06929105992918889456166908757950295694172 + 0.4917317610505967939715787906607147306204\right) \cdot z + 0.2791953179185249767080279070796677842736\right)}{\left(z + 6.012459259764103336465268512256443500519\right) \cdot z + 3.350343815022303939343828460550867021084}\begin{array}{l}
\mathbf{if}\;z \le -172446901772025375848918711117734366674900:\\
\;\;\;\;\left(0.06929105992918889456166908757950295694172 \cdot y + \frac{y}{z} \cdot 0.07512208616047560960637952121032867580652\right) + x\\
\mathbf{elif}\;z \le 38319471531.16735076904296875:\\
\;\;\;\;x + y \cdot \frac{z \cdot \left(z \cdot 0.06929105992918889456166908757950295694172 + 0.4917317610505967939715787906607147306204\right) + 0.2791953179185249767080279070796677842736}{3.350343815022303939343828460550867021084 + \left(6.012459259764103336465268512256443500519 + z\right) \cdot z}\\
\mathbf{else}:\\
\;\;\;\;\left(0.06929105992918889456166908757950295694172 \cdot y + \frac{y}{z} \cdot 0.07512208616047560960637952121032867580652\right) + x\\
\end{array}double f(double x, double y, double z) {
double r19480513 = x;
double r19480514 = y;
double r19480515 = z;
double r19480516 = 0.0692910599291889;
double r19480517 = r19480515 * r19480516;
double r19480518 = 0.4917317610505968;
double r19480519 = r19480517 + r19480518;
double r19480520 = r19480519 * r19480515;
double r19480521 = 0.279195317918525;
double r19480522 = r19480520 + r19480521;
double r19480523 = r19480514 * r19480522;
double r19480524 = 6.012459259764103;
double r19480525 = r19480515 + r19480524;
double r19480526 = r19480525 * r19480515;
double r19480527 = 3.350343815022304;
double r19480528 = r19480526 + r19480527;
double r19480529 = r19480523 / r19480528;
double r19480530 = r19480513 + r19480529;
return r19480530;
}
double f(double x, double y, double z) {
double r19480531 = z;
double r19480532 = -1.7244690177202538e+41;
bool r19480533 = r19480531 <= r19480532;
double r19480534 = 0.0692910599291889;
double r19480535 = y;
double r19480536 = r19480534 * r19480535;
double r19480537 = r19480535 / r19480531;
double r19480538 = 0.07512208616047561;
double r19480539 = r19480537 * r19480538;
double r19480540 = r19480536 + r19480539;
double r19480541 = x;
double r19480542 = r19480540 + r19480541;
double r19480543 = 38319471531.16735;
bool r19480544 = r19480531 <= r19480543;
double r19480545 = r19480531 * r19480534;
double r19480546 = 0.4917317610505968;
double r19480547 = r19480545 + r19480546;
double r19480548 = r19480531 * r19480547;
double r19480549 = 0.279195317918525;
double r19480550 = r19480548 + r19480549;
double r19480551 = 3.350343815022304;
double r19480552 = 6.012459259764103;
double r19480553 = r19480552 + r19480531;
double r19480554 = r19480553 * r19480531;
double r19480555 = r19480551 + r19480554;
double r19480556 = r19480550 / r19480555;
double r19480557 = r19480535 * r19480556;
double r19480558 = r19480541 + r19480557;
double r19480559 = r19480544 ? r19480558 : r19480542;
double r19480560 = r19480533 ? r19480542 : r19480559;
return r19480560;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 20.1 |
|---|---|
| Target | 0.2 |
| Herbie | 0.1 |
if z < -1.7244690177202538e+41 or 38319471531.16735 < z Initial program 43.0
Taylor expanded around inf 0.0
if -1.7244690177202538e+41 < z < 38319471531.16735Initial program 0.3
rmApplied *-un-lft-identity0.3
Applied times-frac0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019170
(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.0 (+ (* (+ 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))))