\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 -2.3617424863871238 \cdot 10^{-92}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \left(c \cdot \left(a + 0.83333333333333337\right) - a \cdot b\right)}}\\
\mathbf{elif}\;t \le 9.2554044737280137 \cdot 10^{-17}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \frac{\left(z \cdot \sqrt{t + a}\right) \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right) - 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)}{t \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right)}}}\\
\mathbf{else}:\\
\;\;\;\;\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) - {\left({\left(\log \left(e^{\frac{\frac{2}{t}}{3}}\right)\right)}^{3}\right)}^{\frac{1}{3}}\right)\right)}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r480656 = x;
double r480657 = y;
double r480658 = 2.0;
double r480659 = z;
double r480660 = t;
double r480661 = a;
double r480662 = r480660 + r480661;
double r480663 = sqrt(r480662);
double r480664 = r480659 * r480663;
double r480665 = r480664 / r480660;
double r480666 = b;
double r480667 = c;
double r480668 = r480666 - r480667;
double r480669 = 5.0;
double r480670 = 6.0;
double r480671 = r480669 / r480670;
double r480672 = r480661 + r480671;
double r480673 = 3.0;
double r480674 = r480660 * r480673;
double r480675 = r480658 / r480674;
double r480676 = r480672 - r480675;
double r480677 = r480668 * r480676;
double r480678 = r480665 - r480677;
double r480679 = r480658 * r480678;
double r480680 = exp(r480679);
double r480681 = r480657 * r480680;
double r480682 = r480656 + r480681;
double r480683 = r480656 / r480682;
return r480683;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r480684 = t;
double r480685 = -2.3617424863871238e-92;
bool r480686 = r480684 <= r480685;
double r480687 = x;
double r480688 = y;
double r480689 = 2.0;
double r480690 = c;
double r480691 = a;
double r480692 = 0.8333333333333334;
double r480693 = r480691 + r480692;
double r480694 = r480690 * r480693;
double r480695 = b;
double r480696 = r480691 * r480695;
double r480697 = r480694 - r480696;
double r480698 = r480689 * r480697;
double r480699 = exp(r480698);
double r480700 = r480688 * r480699;
double r480701 = r480687 + r480700;
double r480702 = r480687 / r480701;
double r480703 = 9.255404473728014e-17;
bool r480704 = r480684 <= r480703;
double r480705 = z;
double r480706 = r480684 + r480691;
double r480707 = sqrt(r480706);
double r480708 = r480705 * r480707;
double r480709 = 5.0;
double r480710 = 6.0;
double r480711 = r480709 / r480710;
double r480712 = r480691 - r480711;
double r480713 = 3.0;
double r480714 = r480684 * r480713;
double r480715 = r480712 * r480714;
double r480716 = r480708 * r480715;
double r480717 = r480695 - r480690;
double r480718 = r480691 * r480691;
double r480719 = r480711 * r480711;
double r480720 = r480718 - r480719;
double r480721 = r480720 * r480714;
double r480722 = r480712 * r480689;
double r480723 = r480721 - r480722;
double r480724 = r480717 * r480723;
double r480725 = r480684 * r480724;
double r480726 = r480716 - r480725;
double r480727 = r480684 * r480715;
double r480728 = r480726 / r480727;
double r480729 = r480689 * r480728;
double r480730 = exp(r480729);
double r480731 = r480688 * r480730;
double r480732 = r480687 + r480731;
double r480733 = r480687 / r480732;
double r480734 = r480708 / r480684;
double r480735 = r480691 + r480711;
double r480736 = r480689 / r480684;
double r480737 = r480736 / r480713;
double r480738 = exp(r480737);
double r480739 = log(r480738);
double r480740 = 3.0;
double r480741 = pow(r480739, r480740);
double r480742 = 0.3333333333333333;
double r480743 = pow(r480741, r480742);
double r480744 = r480735 - r480743;
double r480745 = r480717 * r480744;
double r480746 = r480734 - r480745;
double r480747 = r480689 * r480746;
double r480748 = exp(r480747);
double r480749 = r480688 * r480748;
double r480750 = r480687 + r480749;
double r480751 = r480687 / r480750;
double r480752 = r480704 ? r480733 : r480751;
double r480753 = r480686 ? r480702 : r480752;
return r480753;
}




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 | 4.1 |
|---|---|
| Target | 3.3 |
| Herbie | 5.6 |
if t < -2.3617424863871238e-92Initial program 3.6
Taylor expanded around inf 8.8
Simplified8.8
if -2.3617424863871238e-92 < t < 9.255404473728014e-17Initial program 5.4
rmApplied flip-+8.1
Applied frac-sub8.1
Applied associate-*r/8.2
Applied frac-sub6.7
if 9.255404473728014e-17 < t Initial program 2.9
rmApplied add-cbrt-cube2.9
Applied add-cbrt-cube2.9
Applied cbrt-unprod2.9
Applied add-cbrt-cube2.9
Applied cbrt-undiv2.9
Simplified2.9
rmApplied pow1/32.9
rmApplied add-log-exp3.7
Simplified3.7
Final simplification5.6
herbie shell --seed 2020042
(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.118326644891581e-50) (/ x (+ x (* y (exp (* 2 (- (+ (* a c) (* 0.8333333333333334 c)) (* a b))))))) (if (< t 5.196588770651547e-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)))))))))))