\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 -6.235874327363358100249014052036578048109 \cdot 10^{-226}:\\
\;\;\;\;\frac{x}{x + e^{\log \left(e^{\frac{z}{\frac{t}{\sqrt{t + a}}} - \left(b - c\right) \cdot \left(\frac{5}{6} + \left(a - \frac{2}{t \cdot 3}\right)\right)}\right) \cdot 2} \cdot y}\\
\mathbf{elif}\;t \le 3.340725403067544451185955686851105101177 \cdot 10^{-267}:\\
\;\;\;\;\frac{x}{x + e^{2 \cdot \frac{\left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right) \cdot \left(\sqrt{t + a} \cdot z\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)}{\left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right) \cdot t}} \cdot y}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{x + e^{\log \left(e^{\frac{z}{\frac{t}{\sqrt{t + a}}} - \left(b - c\right) \cdot \left(\frac{5}{6} + \left(a - \frac{2}{t \cdot 3}\right)\right)}\right) \cdot 2} \cdot y}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r20991114 = x;
double r20991115 = y;
double r20991116 = 2.0;
double r20991117 = z;
double r20991118 = t;
double r20991119 = a;
double r20991120 = r20991118 + r20991119;
double r20991121 = sqrt(r20991120);
double r20991122 = r20991117 * r20991121;
double r20991123 = r20991122 / r20991118;
double r20991124 = b;
double r20991125 = c;
double r20991126 = r20991124 - r20991125;
double r20991127 = 5.0;
double r20991128 = 6.0;
double r20991129 = r20991127 / r20991128;
double r20991130 = r20991119 + r20991129;
double r20991131 = 3.0;
double r20991132 = r20991118 * r20991131;
double r20991133 = r20991116 / r20991132;
double r20991134 = r20991130 - r20991133;
double r20991135 = r20991126 * r20991134;
double r20991136 = r20991123 - r20991135;
double r20991137 = r20991116 * r20991136;
double r20991138 = exp(r20991137);
double r20991139 = r20991115 * r20991138;
double r20991140 = r20991114 + r20991139;
double r20991141 = r20991114 / r20991140;
return r20991141;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r20991142 = t;
double r20991143 = -6.235874327363358e-226;
bool r20991144 = r20991142 <= r20991143;
double r20991145 = x;
double r20991146 = z;
double r20991147 = a;
double r20991148 = r20991142 + r20991147;
double r20991149 = sqrt(r20991148);
double r20991150 = r20991142 / r20991149;
double r20991151 = r20991146 / r20991150;
double r20991152 = b;
double r20991153 = c;
double r20991154 = r20991152 - r20991153;
double r20991155 = 5.0;
double r20991156 = 6.0;
double r20991157 = r20991155 / r20991156;
double r20991158 = 2.0;
double r20991159 = 3.0;
double r20991160 = r20991142 * r20991159;
double r20991161 = r20991158 / r20991160;
double r20991162 = r20991147 - r20991161;
double r20991163 = r20991157 + r20991162;
double r20991164 = r20991154 * r20991163;
double r20991165 = r20991151 - r20991164;
double r20991166 = exp(r20991165);
double r20991167 = log(r20991166);
double r20991168 = r20991167 * r20991158;
double r20991169 = exp(r20991168);
double r20991170 = y;
double r20991171 = r20991169 * r20991170;
double r20991172 = r20991145 + r20991171;
double r20991173 = r20991145 / r20991172;
double r20991174 = 3.3407254030675445e-267;
bool r20991175 = r20991142 <= r20991174;
double r20991176 = r20991147 - r20991157;
double r20991177 = r20991176 * r20991160;
double r20991178 = r20991149 * r20991146;
double r20991179 = r20991177 * r20991178;
double r20991180 = r20991147 * r20991147;
double r20991181 = r20991157 * r20991157;
double r20991182 = r20991180 - r20991181;
double r20991183 = r20991182 * r20991160;
double r20991184 = r20991176 * r20991158;
double r20991185 = r20991183 - r20991184;
double r20991186 = r20991154 * r20991185;
double r20991187 = r20991142 * r20991186;
double r20991188 = r20991179 - r20991187;
double r20991189 = r20991177 * r20991142;
double r20991190 = r20991188 / r20991189;
double r20991191 = r20991158 * r20991190;
double r20991192 = exp(r20991191);
double r20991193 = r20991192 * r20991170;
double r20991194 = r20991145 + r20991193;
double r20991195 = r20991145 / r20991194;
double r20991196 = r20991175 ? r20991195 : r20991173;
double r20991197 = r20991144 ? r20991173 : r20991196;
return r20991197;
}




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.3 |
| Herbie | 2.8 |
if t < -6.235874327363358e-226 or 3.3407254030675445e-267 < t Initial program 3.3
rmApplied add-cbrt-cube3.3
Applied add-cbrt-cube6.3
Applied cbrt-unprod6.3
Applied add-cbrt-cube6.3
Applied cbrt-undiv6.4
Simplified6.4
rmApplied add-log-exp8.9
Applied add-log-exp16.9
Applied diff-log16.9
Simplified2.0
if -6.235874327363358e-226 < t < 3.3407254030675445e-267Initial program 10.6
rmApplied flip-+14.0
Applied frac-sub14.0
Applied associate-*r/14.0
Applied frac-sub10.2
Final simplification2.8
herbie shell --seed 2019168
(FPCore (x y z t a b c)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I"
:herbie-target
(if (< t -2.118326644891581e-50) (/ x (+ x (* y (exp (* 2.0 (- (+ (* a c) (* 0.8333333333333334 c)) (* a b))))))) (if (< t 5.196588770651547e-123) (/ x (+ x (* y (exp (* 2.0 (/ (- (* (* z (sqrt (+ t a))) (* (* 3.0 t) (- a (/ 5.0 6.0)))) (* (- (* (+ (/ 5.0 6.0) a) (* 3.0 t)) 2.0) (* (- a (/ 5.0 6.0)) (* (- b c) t)))) (* (* (* t t) 3.0) (- a (/ 5.0 6.0))))))))) (/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0))))))))))))
(/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0)))))))))))