Average Error: 2.0 → 2.4
Time: 30.7s
Precision: 64
\[\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\]
\[\begin{array}{l} \mathbf{if}\;b \le -0.01453486137960070465058315392070653615519 \lor \neg \left(b \le -1.935658811926314331032579532956646040497 \cdot 10^{-77}\right):\\ \;\;\;\;\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\\ \mathbf{else}:\\ \;\;\;\;x \cdot \frac{{z}^{y} \cdot \frac{{a}^{\left(t - 1\right)}}{e^{b}}}{y}\\ \end{array}\]
\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}
\begin{array}{l}
\mathbf{if}\;b \le -0.01453486137960070465058315392070653615519 \lor \neg \left(b \le -1.935658811926314331032579532956646040497 \cdot 10^{-77}\right):\\
\;\;\;\;\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\\

\mathbf{else}:\\
\;\;\;\;x \cdot \frac{{z}^{y} \cdot \frac{{a}^{\left(t - 1\right)}}{e^{b}}}{y}\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r370573 = x;
        double r370574 = y;
        double r370575 = z;
        double r370576 = log(r370575);
        double r370577 = r370574 * r370576;
        double r370578 = t;
        double r370579 = 1.0;
        double r370580 = r370578 - r370579;
        double r370581 = a;
        double r370582 = log(r370581);
        double r370583 = r370580 * r370582;
        double r370584 = r370577 + r370583;
        double r370585 = b;
        double r370586 = r370584 - r370585;
        double r370587 = exp(r370586);
        double r370588 = r370573 * r370587;
        double r370589 = r370588 / r370574;
        return r370589;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r370590 = b;
        double r370591 = -0.014534861379600705;
        bool r370592 = r370590 <= r370591;
        double r370593 = -1.9356588119263143e-77;
        bool r370594 = r370590 <= r370593;
        double r370595 = !r370594;
        bool r370596 = r370592 || r370595;
        double r370597 = x;
        double r370598 = y;
        double r370599 = z;
        double r370600 = log(r370599);
        double r370601 = r370598 * r370600;
        double r370602 = t;
        double r370603 = 1.0;
        double r370604 = r370602 - r370603;
        double r370605 = a;
        double r370606 = log(r370605);
        double r370607 = r370604 * r370606;
        double r370608 = r370601 + r370607;
        double r370609 = r370608 - r370590;
        double r370610 = exp(r370609);
        double r370611 = r370597 * r370610;
        double r370612 = r370611 / r370598;
        double r370613 = pow(r370599, r370598);
        double r370614 = pow(r370605, r370604);
        double r370615 = exp(r370590);
        double r370616 = r370614 / r370615;
        double r370617 = r370613 * r370616;
        double r370618 = r370617 / r370598;
        double r370619 = r370597 * r370618;
        double r370620 = r370596 ? r370612 : r370619;
        return r370620;
}

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
Herbie2.4
\[\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. Split input into 2 regimes
  2. if b < -0.014534861379600705 or -1.9356588119263143e-77 < b

    1. Initial program 1.8

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

    if -0.014534861379600705 < b < -1.9356588119263143e-77

    1. Initial program 4.6

      \[\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity4.6

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

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

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

      \[\leadsto x \cdot \color{blue}{\frac{{z}^{y} \cdot \frac{{a}^{\left(t - 1\right)}}{e^{b}}}{y}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification2.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -0.01453486137960070465058315392070653615519 \lor \neg \left(b \le -1.935658811926314331032579532956646040497 \cdot 10^{-77}\right):\\ \;\;\;\;\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\\ \mathbf{else}:\\ \;\;\;\;x \cdot \frac{{z}^{y} \cdot \frac{{a}^{\left(t - 1\right)}}{e^{b}}}{y}\\ \end{array}\]

Reproduce

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