\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 r473108 = x;
double r473109 = y;
double r473110 = 2.0;
double r473111 = z;
double r473112 = t;
double r473113 = a;
double r473114 = r473112 + r473113;
double r473115 = sqrt(r473114);
double r473116 = r473111 * r473115;
double r473117 = r473116 / r473112;
double r473118 = b;
double r473119 = c;
double r473120 = r473118 - r473119;
double r473121 = 5.0;
double r473122 = 6.0;
double r473123 = r473121 / r473122;
double r473124 = r473113 + r473123;
double r473125 = 3.0;
double r473126 = r473112 * r473125;
double r473127 = r473110 / r473126;
double r473128 = r473124 - r473127;
double r473129 = r473120 * r473128;
double r473130 = r473117 - r473129;
double r473131 = r473110 * r473130;
double r473132 = exp(r473131);
double r473133 = r473109 * r473132;
double r473134 = r473108 + r473133;
double r473135 = r473108 / r473134;
return r473135;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r473136 = t;
double r473137 = -4.3353613956256024e-281;
bool r473138 = r473136 <= r473137;
double r473139 = 2.7731803138233924e-105;
bool r473140 = r473136 <= r473139;
double r473141 = !r473140;
bool r473142 = r473138 || r473141;
double r473143 = x;
double r473144 = y;
double r473145 = 2.0;
double r473146 = z;
double r473147 = a;
double r473148 = r473136 + r473147;
double r473149 = sqrt(r473148);
double r473150 = r473146 * r473149;
double r473151 = r473150 / r473136;
double r473152 = b;
double r473153 = c;
double r473154 = r473152 - r473153;
double r473155 = 5.0;
double r473156 = 6.0;
double r473157 = r473155 / r473156;
double r473158 = r473147 + r473157;
double r473159 = 3.0;
double r473160 = r473136 * r473159;
double r473161 = r473145 / r473160;
double r473162 = 3.0;
double r473163 = pow(r473161, r473162);
double r473164 = cbrt(r473163);
double r473165 = r473158 - r473164;
double r473166 = r473154 * r473165;
double r473167 = r473151 - r473166;
double r473168 = r473145 * r473167;
double r473169 = exp(r473168);
double r473170 = r473144 * r473169;
double r473171 = r473143 + r473170;
double r473172 = r473143 / r473171;
double r473173 = r473147 - r473157;
double r473174 = r473173 * r473160;
double r473175 = r473150 * r473174;
double r473176 = r473147 * r473147;
double r473177 = r473157 * r473157;
double r473178 = r473176 - r473177;
double r473179 = r473178 * r473160;
double r473180 = r473173 * r473145;
double r473181 = r473179 - r473180;
double r473182 = r473154 * r473181;
double r473183 = r473136 * r473182;
double r473184 = r473175 - r473183;
double r473185 = r473136 * r473174;
double r473186 = r473184 / r473185;
double r473187 = r473145 * r473186;
double r473188 = exp(r473187);
double r473189 = r473144 * r473188;
double r473190 = r473143 + r473189;
double r473191 = r473143 / r473190;
double r473192 = r473142 ? r473172 : r473191;
return r473192;
}




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)))))))))))