Average Error: 2.0 → 1.3
Time: 22.4s
Precision: 64
\[\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\]
\[\frac{\frac{{\left(\frac{1}{a}\right)}^{1}}{e^{\left(b - \log z \cdot y\right) - \log a \cdot t}} \cdot x}{y}\]
\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}
\frac{\frac{{\left(\frac{1}{a}\right)}^{1}}{e^{\left(b - \log z \cdot y\right) - \log a \cdot t}} \cdot x}{y}
double f(double x, double y, double z, double t, double a, double b) {
        double r523473 = x;
        double r523474 = y;
        double r523475 = z;
        double r523476 = log(r523475);
        double r523477 = r523474 * r523476;
        double r523478 = t;
        double r523479 = 1.0;
        double r523480 = r523478 - r523479;
        double r523481 = a;
        double r523482 = log(r523481);
        double r523483 = r523480 * r523482;
        double r523484 = r523477 + r523483;
        double r523485 = b;
        double r523486 = r523484 - r523485;
        double r523487 = exp(r523486);
        double r523488 = r523473 * r523487;
        double r523489 = r523488 / r523474;
        return r523489;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r523490 = 1.0;
        double r523491 = a;
        double r523492 = r523490 / r523491;
        double r523493 = 1.0;
        double r523494 = pow(r523492, r523493);
        double r523495 = b;
        double r523496 = z;
        double r523497 = log(r523496);
        double r523498 = y;
        double r523499 = r523497 * r523498;
        double r523500 = r523495 - r523499;
        double r523501 = log(r523491);
        double r523502 = t;
        double r523503 = r523501 * r523502;
        double r523504 = r523500 - r523503;
        double r523505 = exp(r523504);
        double r523506 = r523494 / r523505;
        double r523507 = x;
        double r523508 = r523506 * r523507;
        double r523509 = r523508 / r523498;
        return r523509;
}

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.0
Target11.2
Herbie1.3
\[\begin{array}{l} \mathbf{if}\;t \lt -0.88458485041274715:\\ \;\;\;\;\frac{x \cdot \frac{{a}^{\left(t - 1\right)}}{y}}{\left(b + 1\right) - y \cdot \log z}\\ \mathbf{elif}\;t \lt 852031.22883740731:\\ \;\;\;\;\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.0

    \[\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\]
  2. Taylor expanded around inf 2.0

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

    \[\leadsto \frac{x \cdot \color{blue}{\frac{{\left(\frac{1}{a}\right)}^{1}}{e^{\left(b - \log z \cdot y\right) - \log a \cdot t}}}}{y}\]
  4. Taylor expanded around inf 1.3

    \[\leadsto \frac{x \cdot \frac{{\left(\frac{1}{a}\right)}^{1}}{e^{\left(b - \color{blue}{-1 \cdot \left(y \cdot \log \left(\frac{1}{z}\right)\right)}\right) - \log a \cdot t}}}{y}\]
  5. Simplified1.3

    \[\leadsto \frac{x \cdot \frac{{\left(\frac{1}{a}\right)}^{1}}{e^{\left(b - \color{blue}{\left(-\left(-\log z\right) \cdot y\right)}\right) - \log a \cdot t}}}{y}\]
  6. Final simplification1.3

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

Reproduce

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

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

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