Average Error: 4.1 → 1.8
Time: 1.3m
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}{\mathsf{fma}\left(y, e^{\mathsf{fma}\left(c - b, \frac{5}{6} + \left(a - \frac{\frac{2}{t}}{3}\right), \frac{\sqrt{t + a}}{\frac{t}{z}}\right) \cdot 2}, x\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}{\mathsf{fma}\left(y, e^{\mathsf{fma}\left(c - b, \frac{5}{6} + \left(a - \frac{\frac{2}{t}}{3}\right), \frac{\sqrt{t + a}}{\frac{t}{z}}\right) \cdot 2}, x\right)}
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r20604908 = x;
        double r20604909 = y;
        double r20604910 = 2.0;
        double r20604911 = z;
        double r20604912 = t;
        double r20604913 = a;
        double r20604914 = r20604912 + r20604913;
        double r20604915 = sqrt(r20604914);
        double r20604916 = r20604911 * r20604915;
        double r20604917 = r20604916 / r20604912;
        double r20604918 = b;
        double r20604919 = c;
        double r20604920 = r20604918 - r20604919;
        double r20604921 = 5.0;
        double r20604922 = 6.0;
        double r20604923 = r20604921 / r20604922;
        double r20604924 = r20604913 + r20604923;
        double r20604925 = 3.0;
        double r20604926 = r20604912 * r20604925;
        double r20604927 = r20604910 / r20604926;
        double r20604928 = r20604924 - r20604927;
        double r20604929 = r20604920 * r20604928;
        double r20604930 = r20604917 - r20604929;
        double r20604931 = r20604910 * r20604930;
        double r20604932 = exp(r20604931);
        double r20604933 = r20604909 * r20604932;
        double r20604934 = r20604908 + r20604933;
        double r20604935 = r20604908 / r20604934;
        return r20604935;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r20604936 = x;
        double r20604937 = y;
        double r20604938 = c;
        double r20604939 = b;
        double r20604940 = r20604938 - r20604939;
        double r20604941 = 5.0;
        double r20604942 = 6.0;
        double r20604943 = r20604941 / r20604942;
        double r20604944 = a;
        double r20604945 = 2.0;
        double r20604946 = t;
        double r20604947 = r20604945 / r20604946;
        double r20604948 = 3.0;
        double r20604949 = r20604947 / r20604948;
        double r20604950 = r20604944 - r20604949;
        double r20604951 = r20604943 + r20604950;
        double r20604952 = r20604946 + r20604944;
        double r20604953 = sqrt(r20604952);
        double r20604954 = z;
        double r20604955 = r20604946 / r20604954;
        double r20604956 = r20604953 / r20604955;
        double r20604957 = fma(r20604940, r20604951, r20604956);
        double r20604958 = r20604957 * r20604945;
        double r20604959 = exp(r20604958);
        double r20604960 = fma(r20604937, r20604959, r20604936);
        double r20604961 = r20604936 / r20604960;
        return r20604961;
}

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

Original4.1
Target3.1
Herbie1.8
\[\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 4.1

    \[\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. Simplified1.8

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

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

Reproduce

herbie shell --seed 2019200 +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)))))))))))