Average Error: 3.8 → 2.7
Time: 7.3s
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 \left(\log \left(e^{\mathsf{fma}\left(z \cdot \sqrt{t + a}, \frac{1}{t}, -\left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right) \cdot \left(b - c\right)\right)}\right) + \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right) \cdot \left(\left(-\left(b - c\right)\right) + \left(b - c\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 \left(\log \left(e^{\mathsf{fma}\left(z \cdot \sqrt{t + a}, \frac{1}{t}, -\left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right) \cdot \left(b - c\right)\right)}\right) + \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right) \cdot \left(\left(-\left(b - c\right)\right) + \left(b - c\right)\right)\right)}}
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r350739 = x;
        double r350740 = y;
        double r350741 = 2.0;
        double r350742 = z;
        double r350743 = t;
        double r350744 = a;
        double r350745 = r350743 + r350744;
        double r350746 = sqrt(r350745);
        double r350747 = r350742 * r350746;
        double r350748 = r350747 / r350743;
        double r350749 = b;
        double r350750 = c;
        double r350751 = r350749 - r350750;
        double r350752 = 5.0;
        double r350753 = 6.0;
        double r350754 = r350752 / r350753;
        double r350755 = r350744 + r350754;
        double r350756 = 3.0;
        double r350757 = r350743 * r350756;
        double r350758 = r350741 / r350757;
        double r350759 = r350755 - r350758;
        double r350760 = r350751 * r350759;
        double r350761 = r350748 - r350760;
        double r350762 = r350741 * r350761;
        double r350763 = exp(r350762);
        double r350764 = r350740 * r350763;
        double r350765 = r350739 + r350764;
        double r350766 = r350739 / r350765;
        return r350766;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r350767 = x;
        double r350768 = y;
        double r350769 = 2.0;
        double r350770 = z;
        double r350771 = t;
        double r350772 = a;
        double r350773 = r350771 + r350772;
        double r350774 = sqrt(r350773);
        double r350775 = r350770 * r350774;
        double r350776 = 1.0;
        double r350777 = r350776 / r350771;
        double r350778 = 5.0;
        double r350779 = 6.0;
        double r350780 = r350778 / r350779;
        double r350781 = r350772 + r350780;
        double r350782 = 3.0;
        double r350783 = r350771 * r350782;
        double r350784 = r350769 / r350783;
        double r350785 = r350781 - r350784;
        double r350786 = b;
        double r350787 = c;
        double r350788 = r350786 - r350787;
        double r350789 = r350785 * r350788;
        double r350790 = -r350789;
        double r350791 = fma(r350775, r350777, r350790);
        double r350792 = exp(r350791);
        double r350793 = log(r350792);
        double r350794 = -r350788;
        double r350795 = r350794 + r350788;
        double r350796 = r350785 * r350795;
        double r350797 = r350793 + r350796;
        double r350798 = r350769 * r350797;
        double r350799 = exp(r350798);
        double r350800 = r350768 * r350799;
        double r350801 = r350767 + r350800;
        double r350802 = r350767 / r350801;
        return r350802;
}

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.7
\[\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 prod-diff22.5

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

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

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

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