\frac{\left(x - 2\right) \cdot \left(\left(\left(\left(x \cdot 4.16438922227999963610045597306452691555 + 78.69949241540000173245061887428164482117\right) \cdot x + 137.5194164160000127594685181975364685059\right) \cdot x + y\right) \cdot x + z\right)}{\left(\left(\left(x + 43.3400022514000013984514225739985704422\right) \cdot x + 263.5050747210000281484099105000495910645\right) \cdot x + 313.3992158940000081202015280723571777344\right) \cdot x + 47.06687660600000100430406746454536914825}\begin{array}{l}
\mathbf{if}\;x \le -1.786591216703896068551572017574746945351 \cdot 10^{47} \lor \neg \left(x \le 434573483061779594988159939851059200\right):\\
\;\;\;\;\left(\frac{y}{{x}^{2}} + 4.16438922227999963610045597306452691555 \cdot x\right) - 110.1139242984810948655649553984403610229\\
\mathbf{else}:\\
\;\;\;\;\frac{x - 2}{\sqrt{\left(\left(\left(x + 43.3400022514000013984514225739985704422\right) \cdot x + 263.5050747210000281484099105000495910645\right) \cdot x + 313.3992158940000081202015280723571777344\right) \cdot x + 47.06687660600000100430406746454536914825}} \cdot \frac{\left(\left(\left(x \cdot 4.16438922227999963610045597306452691555 + 78.69949241540000173245061887428164482117\right) \cdot x + 137.5194164160000127594685181975364685059\right) \cdot x + y\right) \cdot x + z}{\sqrt{\left(\left(\left(x + 43.3400022514000013984514225739985704422\right) \cdot x + 263.5050747210000281484099105000495910645\right) \cdot x + 313.3992158940000081202015280723571777344\right) \cdot x + 47.06687660600000100430406746454536914825}}\\
\end{array}double f(double x, double y, double z) {
double r324704 = x;
double r324705 = 2.0;
double r324706 = r324704 - r324705;
double r324707 = 4.16438922228;
double r324708 = r324704 * r324707;
double r324709 = 78.6994924154;
double r324710 = r324708 + r324709;
double r324711 = r324710 * r324704;
double r324712 = 137.519416416;
double r324713 = r324711 + r324712;
double r324714 = r324713 * r324704;
double r324715 = y;
double r324716 = r324714 + r324715;
double r324717 = r324716 * r324704;
double r324718 = z;
double r324719 = r324717 + r324718;
double r324720 = r324706 * r324719;
double r324721 = 43.3400022514;
double r324722 = r324704 + r324721;
double r324723 = r324722 * r324704;
double r324724 = 263.505074721;
double r324725 = r324723 + r324724;
double r324726 = r324725 * r324704;
double r324727 = 313.399215894;
double r324728 = r324726 + r324727;
double r324729 = r324728 * r324704;
double r324730 = 47.066876606;
double r324731 = r324729 + r324730;
double r324732 = r324720 / r324731;
return r324732;
}
double f(double x, double y, double z) {
double r324733 = x;
double r324734 = -1.786591216703896e+47;
bool r324735 = r324733 <= r324734;
double r324736 = 4.345734830617796e+35;
bool r324737 = r324733 <= r324736;
double r324738 = !r324737;
bool r324739 = r324735 || r324738;
double r324740 = y;
double r324741 = 2.0;
double r324742 = pow(r324733, r324741);
double r324743 = r324740 / r324742;
double r324744 = 4.16438922228;
double r324745 = r324744 * r324733;
double r324746 = r324743 + r324745;
double r324747 = 110.1139242984811;
double r324748 = r324746 - r324747;
double r324749 = 2.0;
double r324750 = r324733 - r324749;
double r324751 = 43.3400022514;
double r324752 = r324733 + r324751;
double r324753 = r324752 * r324733;
double r324754 = 263.505074721;
double r324755 = r324753 + r324754;
double r324756 = r324755 * r324733;
double r324757 = 313.399215894;
double r324758 = r324756 + r324757;
double r324759 = r324758 * r324733;
double r324760 = 47.066876606;
double r324761 = r324759 + r324760;
double r324762 = sqrt(r324761);
double r324763 = r324750 / r324762;
double r324764 = r324733 * r324744;
double r324765 = 78.6994924154;
double r324766 = r324764 + r324765;
double r324767 = r324766 * r324733;
double r324768 = 137.519416416;
double r324769 = r324767 + r324768;
double r324770 = r324769 * r324733;
double r324771 = r324770 + r324740;
double r324772 = r324771 * r324733;
double r324773 = z;
double r324774 = r324772 + r324773;
double r324775 = r324774 / r324762;
double r324776 = r324763 * r324775;
double r324777 = r324739 ? r324748 : r324776;
return r324777;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 26.5 |
|---|---|
| Target | 0.5 |
| Herbie | 0.9 |
if x < -1.786591216703896e+47 or 4.345734830617796e+35 < x Initial program 60.3
Taylor expanded around inf 0.9
if -1.786591216703896e+47 < x < 4.345734830617796e+35Initial program 1.2
rmApplied add-sqr-sqrt1.4
Applied times-frac1.0
Final simplification0.9
herbie shell --seed 2019235
(FPCore (x y z)
:name "Numeric.SpecFunctions:logGamma from math-functions-0.1.5.2, C"
:precision binary64
:herbie-target
(if (< x -3.3261287258700048e62) (- (+ (/ y (* x x)) (* 4.16438922227999964 x)) 110.11392429848109) (if (< x 9.4299917145546727e55) (* (/ (- x 2) 1) (/ (+ (* (+ (* (+ (* (+ (* x 4.16438922227999964) 78.6994924154000017) x) 137.51941641600001) x) y) x) z) (+ (* (+ (+ (* 263.50507472100003 x) (+ (* 43.3400022514000014 (* x x)) (* x (* x x)))) 313.399215894) x) 47.066876606000001))) (- (+ (/ y (* x x)) (* 4.16438922227999964 x)) 110.11392429848109)))
(/ (* (- x 2) (+ (* (+ (* (+ (* (+ (* x 4.16438922227999964) 78.6994924154000017) x) 137.51941641600001) x) y) x) z)) (+ (* (+ (* (+ (* (+ x 43.3400022514000014) x) 263.50507472100003) x) 313.399215894) x) 47.066876606000001)))