Average Error: 3.8 → 2.6
Time: 8.1s
Precision: 64
\[\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)}}\]
\[\frac{x}{x + y \cdot e^{2 \cdot \log \left(e^{\mathsf{fma}\left(z \cdot \sqrt{t + a}, \frac{1}{t}, -\left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}\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) - \frac{2}{t \cdot 3}\right)\right)}}
\frac{x}{x + y \cdot e^{2 \cdot \log \left(e^{\mathsf{fma}\left(z \cdot \sqrt{t + a}, \frac{1}{t}, -\left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}\right)}}
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r398252 = x;
        double r398253 = y;
        double r398254 = 2.0;
        double r398255 = z;
        double r398256 = t;
        double r398257 = a;
        double r398258 = r398256 + r398257;
        double r398259 = sqrt(r398258);
        double r398260 = r398255 * r398259;
        double r398261 = r398260 / r398256;
        double r398262 = b;
        double r398263 = c;
        double r398264 = r398262 - r398263;
        double r398265 = 5.0;
        double r398266 = 6.0;
        double r398267 = r398265 / r398266;
        double r398268 = r398257 + r398267;
        double r398269 = 3.0;
        double r398270 = r398256 * r398269;
        double r398271 = r398254 / r398270;
        double r398272 = r398268 - r398271;
        double r398273 = r398264 * r398272;
        double r398274 = r398261 - r398273;
        double r398275 = r398254 * r398274;
        double r398276 = exp(r398275);
        double r398277 = r398253 * r398276;
        double r398278 = r398252 + r398277;
        double r398279 = r398252 / r398278;
        return r398279;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r398280 = x;
        double r398281 = y;
        double r398282 = 2.0;
        double r398283 = z;
        double r398284 = t;
        double r398285 = a;
        double r398286 = r398284 + r398285;
        double r398287 = sqrt(r398286);
        double r398288 = r398283 * r398287;
        double r398289 = 1.0;
        double r398290 = r398289 / r398284;
        double r398291 = b;
        double r398292 = c;
        double r398293 = r398291 - r398292;
        double r398294 = 5.0;
        double r398295 = 6.0;
        double r398296 = r398294 / r398295;
        double r398297 = r398285 + r398296;
        double r398298 = 3.0;
        double r398299 = r398284 * r398298;
        double r398300 = r398282 / r398299;
        double r398301 = r398297 - r398300;
        double r398302 = r398293 * r398301;
        double r398303 = -r398302;
        double r398304 = fma(r398288, r398290, r398303);
        double r398305 = exp(r398304);
        double r398306 = log(r398305);
        double r398307 = r398282 * r398306;
        double r398308 = exp(r398307);
        double r398309 = r398281 * r398308;
        double r398310 = r398280 + r398309;
        double r398311 = r398280 / r398310;
        return r398311;
}

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.8
Target3.1
Herbie2.6
\[\begin{array}{l} \mathbf{if}\;t \lt -2.118326644891581057561884576920117070548 \cdot 10^{-50}:\\ \;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \left(\left(a \cdot c + 0.8333333333333333703407674875052180141211 \cdot c\right) - a \cdot b\right)}}\\ \mathbf{elif}\;t \lt 5.196588770651547088010424937268931048836 \cdot 10^{-123}:\\ \;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \frac{\left(z \cdot \sqrt{t + a}\right) \cdot \left(\left(3 \cdot t\right) \cdot \left(a - \frac{5}{6}\right)\right) - \left(\left(\frac{5}{6} + a\right) \cdot \left(3 \cdot t\right) - 2\right) \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(\left(b - c\right) \cdot t\right)\right)}{\left(\left(t \cdot t\right) \cdot 3\right) \cdot \left(a - \frac{5}{6}\right)}}}\\ \mathbf{else}:\\ \;\;\;\;\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)}}\\ \end{array}\]

Derivation

  1. Initial program 3.8

    \[\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)}}\]
  2. Using strategy rm
  3. Applied div-inv3.8

    \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \left(\color{blue}{\left(z \cdot \sqrt{t + a}\right) \cdot \frac{1}{t}} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\]
  4. Applied fma-neg2.6

    \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \color{blue}{\mathsf{fma}\left(z \cdot \sqrt{t + a}, \frac{1}{t}, -\left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}}\]
  5. Using strategy rm
  6. Applied add-log-exp2.6

    \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \color{blue}{\log \left(e^{\mathsf{fma}\left(z \cdot \sqrt{t + a}, \frac{1}{t}, -\left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}\right)}}}\]
  7. Final simplification2.6

    \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \log \left(e^{\mathsf{fma}\left(z \cdot \sqrt{t + a}, \frac{1}{t}, -\left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}\right)}}\]

Reproduce

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