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 -123702675580259303424:\\
\;\;\;\;\left(0.06929105992918889456166908757950295694172 \cdot y + \frac{y}{z} \cdot 0.07512208616047560960637952121032867580652\right) + x\\
\mathbf{elif}\;z \le 0.02992000358306671353725292306080518756062:\\
\;\;\;\;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 r18007923 = x;
double r18007924 = y;
double r18007925 = z;
double r18007926 = 0.0692910599291889;
double r18007927 = r18007925 * r18007926;
double r18007928 = 0.4917317610505968;
double r18007929 = r18007927 + r18007928;
double r18007930 = r18007929 * r18007925;
double r18007931 = 0.279195317918525;
double r18007932 = r18007930 + r18007931;
double r18007933 = r18007924 * r18007932;
double r18007934 = 6.012459259764103;
double r18007935 = r18007925 + r18007934;
double r18007936 = r18007935 * r18007925;
double r18007937 = 3.350343815022304;
double r18007938 = r18007936 + r18007937;
double r18007939 = r18007933 / r18007938;
double r18007940 = r18007923 + r18007939;
return r18007940;
}
double f(double x, double y, double z) {
double r18007941 = z;
double r18007942 = -1.237026755802593e+20;
bool r18007943 = r18007941 <= r18007942;
double r18007944 = 0.0692910599291889;
double r18007945 = y;
double r18007946 = r18007944 * r18007945;
double r18007947 = r18007945 / r18007941;
double r18007948 = 0.07512208616047561;
double r18007949 = r18007947 * r18007948;
double r18007950 = r18007946 + r18007949;
double r18007951 = x;
double r18007952 = r18007950 + r18007951;
double r18007953 = 0.029920003583066714;
bool r18007954 = r18007941 <= r18007953;
double r18007955 = r18007941 * r18007944;
double r18007956 = 0.4917317610505968;
double r18007957 = r18007955 + r18007956;
double r18007958 = r18007941 * r18007957;
double r18007959 = 0.279195317918525;
double r18007960 = r18007958 + r18007959;
double r18007961 = 3.350343815022304;
double r18007962 = 6.012459259764103;
double r18007963 = r18007962 + r18007941;
double r18007964 = r18007963 * r18007941;
double r18007965 = r18007961 + r18007964;
double r18007966 = r18007960 / r18007965;
double r18007967 = r18007945 * r18007966;
double r18007968 = r18007951 + r18007967;
double r18007969 = r18007954 ? r18007968 : r18007952;
double r18007970 = r18007943 ? r18007952 : r18007969;
return r18007970;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 20.0 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if z < -1.237026755802593e+20 or 0.029920003583066714 < z Initial program 41.4
Taylor expanded around inf 0.3
if -1.237026755802593e+20 < z < 0.029920003583066714Initial program 0.2
rmApplied *-un-lft-identity0.2
Applied times-frac0.1
Simplified0.1
Final simplification0.2
herbie shell --seed 2019179
(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))))