Average Error: 3.9 → 3.2
Time: 28.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}{e^{2.0 \cdot \log \left(e^{\frac{z}{\frac{t}{\sqrt{a + t}}} - \left(b - c\right) \cdot \left(\left(a - \frac{\frac{2.0}{t}}{3.0}\right) + \frac{5.0}{6.0}\right)}\right)} \cdot y + x}\]
\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}{e^{2.0 \cdot \log \left(e^{\frac{z}{\frac{t}{\sqrt{a + t}}} - \left(b - c\right) \cdot \left(\left(a - \frac{\frac{2.0}{t}}{3.0}\right) + \frac{5.0}{6.0}\right)}\right)} \cdot y + x}
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r21832990 = x;
        double r21832991 = y;
        double r21832992 = 2.0;
        double r21832993 = z;
        double r21832994 = t;
        double r21832995 = a;
        double r21832996 = r21832994 + r21832995;
        double r21832997 = sqrt(r21832996);
        double r21832998 = r21832993 * r21832997;
        double r21832999 = r21832998 / r21832994;
        double r21833000 = b;
        double r21833001 = c;
        double r21833002 = r21833000 - r21833001;
        double r21833003 = 5.0;
        double r21833004 = 6.0;
        double r21833005 = r21833003 / r21833004;
        double r21833006 = r21832995 + r21833005;
        double r21833007 = 3.0;
        double r21833008 = r21832994 * r21833007;
        double r21833009 = r21832992 / r21833008;
        double r21833010 = r21833006 - r21833009;
        double r21833011 = r21833002 * r21833010;
        double r21833012 = r21832999 - r21833011;
        double r21833013 = r21832992 * r21833012;
        double r21833014 = exp(r21833013);
        double r21833015 = r21832991 * r21833014;
        double r21833016 = r21832990 + r21833015;
        double r21833017 = r21832990 / r21833016;
        return r21833017;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r21833018 = x;
        double r21833019 = 2.0;
        double r21833020 = z;
        double r21833021 = t;
        double r21833022 = a;
        double r21833023 = r21833022 + r21833021;
        double r21833024 = sqrt(r21833023);
        double r21833025 = r21833021 / r21833024;
        double r21833026 = r21833020 / r21833025;
        double r21833027 = b;
        double r21833028 = c;
        double r21833029 = r21833027 - r21833028;
        double r21833030 = r21833019 / r21833021;
        double r21833031 = 3.0;
        double r21833032 = r21833030 / r21833031;
        double r21833033 = r21833022 - r21833032;
        double r21833034 = 5.0;
        double r21833035 = 6.0;
        double r21833036 = r21833034 / r21833035;
        double r21833037 = r21833033 + r21833036;
        double r21833038 = r21833029 * r21833037;
        double r21833039 = r21833026 - r21833038;
        double r21833040 = exp(r21833039);
        double r21833041 = log(r21833040);
        double r21833042 = r21833019 * r21833041;
        double r21833043 = exp(r21833042);
        double r21833044 = y;
        double r21833045 = r21833043 * r21833044;
        double r21833046 = r21833045 + r21833018;
        double r21833047 = r21833018 / r21833046;
        return r21833047;
}

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original3.9
Target2.9
Herbie3.2
\[\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.9

    \[\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. Using strategy rm
  3. Applied add-log-exp8.4

    \[\leadsto \frac{x}{x + y \cdot e^{2.0 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \color{blue}{\log \left(e^{\left(b - c\right) \cdot \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{t \cdot 3.0}\right)}\right)}\right)}}\]
  4. Applied add-log-exp16.7

    \[\leadsto \frac{x}{x + y \cdot e^{2.0 \cdot \left(\color{blue}{\log \left(e^{\frac{z \cdot \sqrt{t + a}}{t}}\right)} - \log \left(e^{\left(b - c\right) \cdot \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{t \cdot 3.0}\right)}\right)\right)}}\]
  5. Applied diff-log16.7

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

    \[\leadsto \frac{x}{x + y \cdot e^{2.0 \cdot \log \color{blue}{\left(e^{\frac{z}{\frac{t}{\sqrt{t + a}}} - \left(\frac{5.0}{6.0} + \left(a - \frac{\frac{2.0}{t}}{3.0}\right)\right) \cdot \left(b - c\right)}\right)}}}\]
  7. Final simplification3.2

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

Reproduce

herbie shell --seed 2019165 
(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)))))))))))