Average Error: 2.0 → 2.4
Time: 32.6s
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{{a}^{\left(t - 1\right)} \cdot {z}^{y}}{y \cdot e^{b}}\\ \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{{a}^{\left(t - 1\right)} \cdot {z}^{y}}{y \cdot e^{b}}\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r309054 = x;
        double r309055 = y;
        double r309056 = z;
        double r309057 = log(r309056);
        double r309058 = r309055 * r309057;
        double r309059 = t;
        double r309060 = 1.0;
        double r309061 = r309059 - r309060;
        double r309062 = a;
        double r309063 = log(r309062);
        double r309064 = r309061 * r309063;
        double r309065 = r309058 + r309064;
        double r309066 = b;
        double r309067 = r309065 - r309066;
        double r309068 = exp(r309067);
        double r309069 = r309054 * r309068;
        double r309070 = r309069 / r309055;
        return r309070;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r309071 = b;
        double r309072 = -0.014534861379600705;
        bool r309073 = r309071 <= r309072;
        double r309074 = -1.9356588119263143e-77;
        bool r309075 = r309071 <= r309074;
        double r309076 = !r309075;
        bool r309077 = r309073 || r309076;
        double r309078 = x;
        double r309079 = y;
        double r309080 = z;
        double r309081 = log(r309080);
        double r309082 = r309079 * r309081;
        double r309083 = t;
        double r309084 = 1.0;
        double r309085 = r309083 - r309084;
        double r309086 = a;
        double r309087 = log(r309086);
        double r309088 = r309085 * r309087;
        double r309089 = r309082 + r309088;
        double r309090 = r309089 - r309071;
        double r309091 = exp(r309090);
        double r309092 = r309078 * r309091;
        double r309093 = r309092 / r309079;
        double r309094 = pow(r309086, r309085);
        double r309095 = pow(r309080, r309079);
        double r309096 = r309094 * r309095;
        double r309097 = exp(r309071);
        double r309098 = r309079 * r309097;
        double r309099 = r309096 / r309098;
        double r309100 = r309078 * r309099;
        double r309101 = r309077 ? r309093 : r309100;
        return r309101;
}

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 associate-/l*3.3

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

      \[\leadsto \frac{x}{\color{blue}{\frac{y \cdot e^{b}}{{a}^{\left(t - 1\right)} \cdot {z}^{y}}}}\]
    5. Using strategy rm
    6. Applied div-inv11.1

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

      \[\leadsto x \cdot \color{blue}{\frac{{a}^{\left(t - 1\right)} \cdot {z}^{y}}{y \cdot e^{b}}}\]
  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{{a}^{\left(t - 1\right)} \cdot {z}^{y}}{y \cdot e^{b}}\\ \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))