\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\begin{array}{l}
\mathbf{if}\;t \le -1.747646842184294811529008447013758285829 \cdot 10^{-63} \lor \neg \left(t \le 4.66119048674144283533835621815974643908 \cdot 10^{-116}\right):\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \frac{\frac{z \cdot \sqrt{t + a}}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right) - \sqrt[3]{t} \cdot \left(\left(b - c\right) \cdot \left(\left(a \cdot a - \frac{5}{6} \cdot \frac{5}{6}\right) \cdot \left(t \cdot 3\right) - \left(a - \frac{5}{6}\right) \cdot 2\right)\right)}{\sqrt[3]{t} \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right)}}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r1015789 = x;
double r1015790 = y;
double r1015791 = 2.0;
double r1015792 = z;
double r1015793 = t;
double r1015794 = a;
double r1015795 = r1015793 + r1015794;
double r1015796 = sqrt(r1015795);
double r1015797 = r1015792 * r1015796;
double r1015798 = r1015797 / r1015793;
double r1015799 = b;
double r1015800 = c;
double r1015801 = r1015799 - r1015800;
double r1015802 = 5.0;
double r1015803 = 6.0;
double r1015804 = r1015802 / r1015803;
double r1015805 = r1015794 + r1015804;
double r1015806 = 3.0;
double r1015807 = r1015793 * r1015806;
double r1015808 = r1015791 / r1015807;
double r1015809 = r1015805 - r1015808;
double r1015810 = r1015801 * r1015809;
double r1015811 = r1015798 - r1015810;
double r1015812 = r1015791 * r1015811;
double r1015813 = exp(r1015812);
double r1015814 = r1015790 * r1015813;
double r1015815 = r1015789 + r1015814;
double r1015816 = r1015789 / r1015815;
return r1015816;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r1015817 = t;
double r1015818 = -1.7476468421842948e-63;
bool r1015819 = r1015817 <= r1015818;
double r1015820 = 4.661190486741443e-116;
bool r1015821 = r1015817 <= r1015820;
double r1015822 = !r1015821;
bool r1015823 = r1015819 || r1015822;
double r1015824 = x;
double r1015825 = y;
double r1015826 = 2.0;
double r1015827 = z;
double r1015828 = cbrt(r1015817);
double r1015829 = r1015828 * r1015828;
double r1015830 = r1015827 / r1015829;
double r1015831 = a;
double r1015832 = r1015817 + r1015831;
double r1015833 = sqrt(r1015832);
double r1015834 = r1015833 / r1015828;
double r1015835 = r1015830 * r1015834;
double r1015836 = b;
double r1015837 = c;
double r1015838 = r1015836 - r1015837;
double r1015839 = 5.0;
double r1015840 = 6.0;
double r1015841 = r1015839 / r1015840;
double r1015842 = r1015831 + r1015841;
double r1015843 = 3.0;
double r1015844 = r1015817 * r1015843;
double r1015845 = r1015826 / r1015844;
double r1015846 = r1015842 - r1015845;
double r1015847 = r1015838 * r1015846;
double r1015848 = r1015835 - r1015847;
double r1015849 = r1015826 * r1015848;
double r1015850 = exp(r1015849);
double r1015851 = r1015825 * r1015850;
double r1015852 = r1015824 + r1015851;
double r1015853 = r1015824 / r1015852;
double r1015854 = r1015827 * r1015833;
double r1015855 = r1015854 / r1015829;
double r1015856 = r1015831 - r1015841;
double r1015857 = r1015856 * r1015844;
double r1015858 = r1015855 * r1015857;
double r1015859 = r1015831 * r1015831;
double r1015860 = r1015841 * r1015841;
double r1015861 = r1015859 - r1015860;
double r1015862 = r1015861 * r1015844;
double r1015863 = r1015856 * r1015826;
double r1015864 = r1015862 - r1015863;
double r1015865 = r1015838 * r1015864;
double r1015866 = r1015828 * r1015865;
double r1015867 = r1015858 - r1015866;
double r1015868 = r1015828 * r1015857;
double r1015869 = r1015867 / r1015868;
double r1015870 = r1015826 * r1015869;
double r1015871 = exp(r1015870);
double r1015872 = r1015825 * r1015871;
double r1015873 = r1015824 + r1015872;
double r1015874 = r1015824 / r1015873;
double r1015875 = r1015823 ? r1015853 : r1015874;
return r1015875;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 3.7 |
|---|---|
| Target | 2.8 |
| Herbie | 2.8 |
if t < -1.7476468421842948e-63 or 4.661190486741443e-116 < t Initial program 2.3
rmApplied add-cube-cbrt2.3
Applied times-frac0.5
if -1.7476468421842948e-63 < t < 4.661190486741443e-116Initial program 6.6
rmApplied add-cube-cbrt6.6
Applied times-frac6.8
rmApplied add-log-exp33.0
rmApplied flip-+34.8
Applied frac-sub34.8
Applied associate-*r/34.8
Applied associate-*r/34.8
Applied frac-sub33.9
Simplified7.3
Final simplification2.8
herbie shell --seed 2019303
(FPCore (x y z t a b c)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I"
:precision binary64
:herbie-target
(if (< t -2.1183266448915811e-50) (/ x (+ x (* y (exp (* 2 (- (+ (* a c) (* 0.83333333333333337 c)) (* a b))))))) (if (< t 5.19658877065154709e-123) (/ x (+ x (* y (exp (* 2 (/ (- (* (* z (sqrt (+ t a))) (* (* 3 t) (- a (/ 5 6)))) (* (- (* (+ (/ 5 6) a) (* 3 t)) 2) (* (- a (/ 5 6)) (* (- b c) t)))) (* (* (* t t) 3) (- a (/ 5 6))))))))) (/ x (+ x (* y (exp (* 2 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5 6)) (/ 2 (* t 3))))))))))))
(/ x (+ x (* y (exp (* 2 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5 6)) (/ 2 (* t 3)))))))))))