Average Error: 3.6 → 1.6
Time: 18.5s
Precision: 64
\[\frac{x}{x + y \cdot e^{2.0 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{t \cdot 3.0}\right)\right)}}\]
\[\frac{x}{\mathsf{fma}\left(y, e^{2.0 \cdot \mathsf{fma}\left(c - b, \frac{5.0}{6.0} - \left(\frac{\frac{2.0}{t}}{3.0} - a\right), \frac{\sqrt{a + t}}{\frac{t}{z}}\right)}, x\right)}\]
\frac{x}{x + y \cdot e^{2.0 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{t \cdot 3.0}\right)\right)}}
\frac{x}{\mathsf{fma}\left(y, e^{2.0 \cdot \mathsf{fma}\left(c - b, \frac{5.0}{6.0} - \left(\frac{\frac{2.0}{t}}{3.0} - a\right), \frac{\sqrt{a + t}}{\frac{t}{z}}\right)}, x\right)}
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r16510143 = x;
        double r16510144 = y;
        double r16510145 = 2.0;
        double r16510146 = z;
        double r16510147 = t;
        double r16510148 = a;
        double r16510149 = r16510147 + r16510148;
        double r16510150 = sqrt(r16510149);
        double r16510151 = r16510146 * r16510150;
        double r16510152 = r16510151 / r16510147;
        double r16510153 = b;
        double r16510154 = c;
        double r16510155 = r16510153 - r16510154;
        double r16510156 = 5.0;
        double r16510157 = 6.0;
        double r16510158 = r16510156 / r16510157;
        double r16510159 = r16510148 + r16510158;
        double r16510160 = 3.0;
        double r16510161 = r16510147 * r16510160;
        double r16510162 = r16510145 / r16510161;
        double r16510163 = r16510159 - r16510162;
        double r16510164 = r16510155 * r16510163;
        double r16510165 = r16510152 - r16510164;
        double r16510166 = r16510145 * r16510165;
        double r16510167 = exp(r16510166);
        double r16510168 = r16510144 * r16510167;
        double r16510169 = r16510143 + r16510168;
        double r16510170 = r16510143 / r16510169;
        return r16510170;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r16510171 = x;
        double r16510172 = y;
        double r16510173 = 2.0;
        double r16510174 = c;
        double r16510175 = b;
        double r16510176 = r16510174 - r16510175;
        double r16510177 = 5.0;
        double r16510178 = 6.0;
        double r16510179 = r16510177 / r16510178;
        double r16510180 = t;
        double r16510181 = r16510173 / r16510180;
        double r16510182 = 3.0;
        double r16510183 = r16510181 / r16510182;
        double r16510184 = a;
        double r16510185 = r16510183 - r16510184;
        double r16510186 = r16510179 - r16510185;
        double r16510187 = r16510184 + r16510180;
        double r16510188 = sqrt(r16510187);
        double r16510189 = z;
        double r16510190 = r16510180 / r16510189;
        double r16510191 = r16510188 / r16510190;
        double r16510192 = fma(r16510176, r16510186, r16510191);
        double r16510193 = r16510173 * r16510192;
        double r16510194 = exp(r16510193);
        double r16510195 = fma(r16510172, r16510194, r16510171);
        double r16510196 = r16510171 / r16510195;
        return r16510196;
}

Error

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

Target

Original3.6
Target3.1
Herbie1.6
\[\begin{array}{l} \mathbf{if}\;t \lt -2.118326644891581 \cdot 10^{-50}:\\ \;\;\;\;\frac{x}{x + y \cdot e^{2.0 \cdot \left(\left(a \cdot c + 0.8333333333333334 \cdot c\right) - a \cdot b\right)}}\\ \mathbf{elif}\;t \lt 5.196588770651547 \cdot 10^{-123}:\\ \;\;\;\;\frac{x}{x + y \cdot e^{2.0 \cdot \frac{\left(z \cdot \sqrt{t + a}\right) \cdot \left(\left(3.0 \cdot t\right) \cdot \left(a - \frac{5.0}{6.0}\right)\right) - \left(\left(\frac{5.0}{6.0} + a\right) \cdot \left(3.0 \cdot t\right) - 2.0\right) \cdot \left(\left(a - \frac{5.0}{6.0}\right) \cdot \left(\left(b - c\right) \cdot t\right)\right)}{\left(\left(t \cdot t\right) \cdot 3.0\right) \cdot \left(a - \frac{5.0}{6.0}\right)}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{x + y \cdot e^{2.0 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{t \cdot 3.0}\right)\right)}}\\ \end{array}\]

Derivation

  1. Initial program 3.6

    \[\frac{x}{x + y \cdot e^{2.0 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{t \cdot 3.0}\right)\right)}}\]
  2. Simplified1.6

    \[\leadsto \color{blue}{\frac{x}{\mathsf{fma}\left(y, e^{2.0 \cdot \mathsf{fma}\left(c - b, \frac{5.0}{6.0} - \left(\frac{\frac{2.0}{t}}{3.0} - a\right), \frac{\sqrt{a + t}}{\frac{t}{z}}\right)}, x\right)}}\]
  3. Final simplification1.6

    \[\leadsto \frac{x}{\mathsf{fma}\left(y, e^{2.0 \cdot \mathsf{fma}\left(c - b, \frac{5.0}{6.0} - \left(\frac{\frac{2.0}{t}}{3.0} - a\right), \frac{\sqrt{a + t}}{\frac{t}{z}}\right)}, x\right)}\]

Reproduce

herbie shell --seed 2019163 +o rules:numerics
(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)))))))))))