Average Error: 2.1 → 2.1
Time: 40.6s
Precision: 64
\[\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\]
\[\frac{x \cdot e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}{y}\]
\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}
\frac{x \cdot e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}{y}
double f(double x, double y, double z, double t, double a, double b) {
        double r357727 = x;
        double r357728 = y;
        double r357729 = z;
        double r357730 = log(r357729);
        double r357731 = r357728 * r357730;
        double r357732 = t;
        double r357733 = 1.0;
        double r357734 = r357732 - r357733;
        double r357735 = a;
        double r357736 = log(r357735);
        double r357737 = r357734 * r357736;
        double r357738 = r357731 + r357737;
        double r357739 = b;
        double r357740 = r357738 - r357739;
        double r357741 = exp(r357740);
        double r357742 = r357727 * r357741;
        double r357743 = r357742 / r357728;
        return r357743;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r357744 = x;
        double r357745 = a;
        double r357746 = log(r357745);
        double r357747 = t;
        double r357748 = 1.0;
        double r357749 = r357747 - r357748;
        double r357750 = r357746 * r357749;
        double r357751 = z;
        double r357752 = log(r357751);
        double r357753 = y;
        double r357754 = r357752 * r357753;
        double r357755 = r357750 + r357754;
        double r357756 = b;
        double r357757 = r357755 - r357756;
        double r357758 = exp(r357757);
        double r357759 = r357744 * r357758;
        double r357760 = r357759 / r357753;
        return r357760;
}

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original2.1
Target10.9
Herbie2.1
\[\begin{array}{l} \mathbf{if}\;t \lt -0.8845848504127471478852839936735108494759:\\ \;\;\;\;\frac{x \cdot \frac{{a}^{\left(t - 1\right)}}{y}}{\left(b + 1\right) - y \cdot \log z}\\ \mathbf{elif}\;t \lt 852031.228837407310493290424346923828125:\\ \;\;\;\;\frac{\frac{x}{y} \cdot {a}^{\left(t - 1\right)}}{e^{b - \log z \cdot y}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x \cdot \frac{{a}^{\left(t - 1\right)}}{y}}{\left(b + 1\right) - y \cdot \log z}\\ \end{array}\]

Derivation

  1. Initial program 2.1

    \[\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\]
  2. Final simplification2.1

    \[\leadsto \frac{x \cdot e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}{y}\]

Reproduce

herbie shell --seed 2019194 
(FPCore (x y z t a b)
  :name "Numeric.SpecFunctions:incompleteBetaWorker from math-functions-0.1.5.2, A"

  :herbie-target
  (if (< t -0.8845848504127471) (/ (* x (/ (pow a (- t 1.0)) y)) (- (+ b 1.0) (* y (log z)))) (if (< t 852031.2288374073) (/ (* (/ x y) (pow a (- t 1.0))) (exp (- b (* (log z) y)))) (/ (* x (/ (pow a (- t 1.0)) y)) (- (+ b 1.0) (* y (log z))))))

  (/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))