\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 -4.33536139562560236 \cdot 10^{-281} \lor \neg \left(t \le 2.7731803138233924 \cdot 10^{-105}\right):\\
\;\;\;\;\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) - \sqrt[3]{{\left(\frac{2}{t \cdot 3}\right)}^{3}}\right)\right)}}\\
\mathbf{else}:\\
\;\;\;\;\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)}}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r425090 = x;
double r425091 = y;
double r425092 = 2.0;
double r425093 = z;
double r425094 = t;
double r425095 = a;
double r425096 = r425094 + r425095;
double r425097 = sqrt(r425096);
double r425098 = r425093 * r425097;
double r425099 = r425098 / r425094;
double r425100 = b;
double r425101 = c;
double r425102 = r425100 - r425101;
double r425103 = 5.0;
double r425104 = 6.0;
double r425105 = r425103 / r425104;
double r425106 = r425095 + r425105;
double r425107 = 3.0;
double r425108 = r425094 * r425107;
double r425109 = r425092 / r425108;
double r425110 = r425106 - r425109;
double r425111 = r425102 * r425110;
double r425112 = r425099 - r425111;
double r425113 = r425092 * r425112;
double r425114 = exp(r425113);
double r425115 = r425091 * r425114;
double r425116 = r425090 + r425115;
double r425117 = r425090 / r425116;
return r425117;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r425118 = t;
double r425119 = -4.3353613956256024e-281;
bool r425120 = r425118 <= r425119;
double r425121 = 2.7731803138233924e-105;
bool r425122 = r425118 <= r425121;
double r425123 = !r425122;
bool r425124 = r425120 || r425123;
double r425125 = x;
double r425126 = y;
double r425127 = 2.0;
double r425128 = z;
double r425129 = a;
double r425130 = r425118 + r425129;
double r425131 = sqrt(r425130);
double r425132 = r425128 * r425131;
double r425133 = r425132 / r425118;
double r425134 = b;
double r425135 = c;
double r425136 = r425134 - r425135;
double r425137 = 5.0;
double r425138 = 6.0;
double r425139 = r425137 / r425138;
double r425140 = r425129 + r425139;
double r425141 = 3.0;
double r425142 = r425118 * r425141;
double r425143 = r425127 / r425142;
double r425144 = 3.0;
double r425145 = pow(r425143, r425144);
double r425146 = cbrt(r425145);
double r425147 = r425140 - r425146;
double r425148 = r425136 * r425147;
double r425149 = r425133 - r425148;
double r425150 = r425127 * r425149;
double r425151 = exp(r425150);
double r425152 = r425126 * r425151;
double r425153 = r425125 + r425152;
double r425154 = r425125 / r425153;
double r425155 = r425129 - r425139;
double r425156 = r425155 * r425142;
double r425157 = r425132 * r425156;
double r425158 = r425129 * r425129;
double r425159 = r425139 * r425139;
double r425160 = r425158 - r425159;
double r425161 = r425160 * r425142;
double r425162 = r425155 * r425127;
double r425163 = r425161 - r425162;
double r425164 = r425136 * r425163;
double r425165 = r425118 * r425164;
double r425166 = r425157 - r425165;
double r425167 = r425118 * r425156;
double r425168 = r425166 / r425167;
double r425169 = r425127 * r425168;
double r425170 = exp(r425169);
double r425171 = r425126 * r425170;
double r425172 = r425125 + r425171;
double r425173 = r425125 / r425172;
double r425174 = r425124 ? r425154 : r425173;
return r425174;
}




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.0 |
|---|---|
| Target | 3.1 |
| Herbie | 5.3 |
if t < -4.3353613956256024e-281 or 2.7731803138233924e-105 < t Initial program 3.3
rmApplied add-cbrt-cube3.3
Applied add-cbrt-cube4.4
Applied cbrt-unprod4.4
Applied add-cbrt-cube4.4
Applied cbrt-undiv4.5
Simplified4.5
if -4.3353613956256024e-281 < t < 2.7731803138233924e-105Initial program 6.4
rmApplied flip-+10.2
Applied frac-sub10.2
Applied associate-*r/10.2
Applied frac-sub8.4
Final simplification5.3
herbie shell --seed 2020062
(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)))))))))))