Average Error: 3.6 → 1.6
Time: 17.2s
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 r17719093 = x;
        double r17719094 = y;
        double r17719095 = 2.0;
        double r17719096 = z;
        double r17719097 = t;
        double r17719098 = a;
        double r17719099 = r17719097 + r17719098;
        double r17719100 = sqrt(r17719099);
        double r17719101 = r17719096 * r17719100;
        double r17719102 = r17719101 / r17719097;
        double r17719103 = b;
        double r17719104 = c;
        double r17719105 = r17719103 - r17719104;
        double r17719106 = 5.0;
        double r17719107 = 6.0;
        double r17719108 = r17719106 / r17719107;
        double r17719109 = r17719098 + r17719108;
        double r17719110 = 3.0;
        double r17719111 = r17719097 * r17719110;
        double r17719112 = r17719095 / r17719111;
        double r17719113 = r17719109 - r17719112;
        double r17719114 = r17719105 * r17719113;
        double r17719115 = r17719102 - r17719114;
        double r17719116 = r17719095 * r17719115;
        double r17719117 = exp(r17719116);
        double r17719118 = r17719094 * r17719117;
        double r17719119 = r17719093 + r17719118;
        double r17719120 = r17719093 / r17719119;
        return r17719120;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r17719121 = x;
        double r17719122 = y;
        double r17719123 = 2.0;
        double r17719124 = c;
        double r17719125 = b;
        double r17719126 = r17719124 - r17719125;
        double r17719127 = 5.0;
        double r17719128 = 6.0;
        double r17719129 = r17719127 / r17719128;
        double r17719130 = t;
        double r17719131 = r17719123 / r17719130;
        double r17719132 = 3.0;
        double r17719133 = r17719131 / r17719132;
        double r17719134 = a;
        double r17719135 = r17719133 - r17719134;
        double r17719136 = r17719129 - r17719135;
        double r17719137 = r17719134 + r17719130;
        double r17719138 = sqrt(r17719137);
        double r17719139 = z;
        double r17719140 = r17719130 / r17719139;
        double r17719141 = r17719138 / r17719140;
        double r17719142 = fma(r17719126, r17719136, r17719141);
        double r17719143 = r17719123 * r17719142;
        double r17719144 = exp(r17719143);
        double r17719145 = fma(r17719122, r17719144, r17719121);
        double r17719146 = r17719121 / r17719145;
        return r17719146;
}

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