Average Error: 4.0 → 3.1
Time: 29.1s
Precision: 64
\[\frac{x}{x + y \cdot e^{2.0 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{t \cdot 3.0}\right)\right)}}\]
\[\begin{array}{l} \mathbf{if}\;t \le -7.898436796540733 \cdot 10^{-89}:\\ \;\;\;\;\frac{x}{e^{\left(\frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}} - \left(\left(\frac{5.0}{6.0} + a\right) - \frac{2.0}{t \cdot 3.0}\right) \cdot \left(b - c\right)\right) \cdot 2.0} \cdot y + x}\\ \mathbf{elif}\;t \le 1.4924055999405827 \cdot 10^{-228}:\\ \;\;\;\;\frac{x}{x + y \cdot e^{2.0 \cdot \left(\frac{\left(\left(\sqrt{t + a} \cdot z\right)\right)}{t} - \left(\left(\frac{5.0}{6.0} + a\right) - \frac{2.0}{t \cdot 3.0}\right) \cdot \left(b - c\right)\right)}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{e^{\left(\frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}} - \left(\left(\frac{5.0}{6.0} + a\right) - \frac{2.0}{t \cdot 3.0}\right) \cdot \left(b - c\right)\right) \cdot 2.0} \cdot y + x}\\ \end{array}\]
\frac{x}{x + y \cdot e^{2.0 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{t \cdot 3.0}\right)\right)}}
\begin{array}{l}
\mathbf{if}\;t \le -7.898436796540733 \cdot 10^{-89}:\\
\;\;\;\;\frac{x}{e^{\left(\frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}} - \left(\left(\frac{5.0}{6.0} + a\right) - \frac{2.0}{t \cdot 3.0}\right) \cdot \left(b - c\right)\right) \cdot 2.0} \cdot y + x}\\

\mathbf{elif}\;t \le 1.4924055999405827 \cdot 10^{-228}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{2.0 \cdot \left(\frac{\left(\left(\sqrt{t + a} \cdot z\right)\right)}{t} - \left(\left(\frac{5.0}{6.0} + a\right) - \frac{2.0}{t \cdot 3.0}\right) \cdot \left(b - c\right)\right)}}\\

\mathbf{else}:\\
\;\;\;\;\frac{x}{e^{\left(\frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}} - \left(\left(\frac{5.0}{6.0} + a\right) - \frac{2.0}{t \cdot 3.0}\right) \cdot \left(b - c\right)\right) \cdot 2.0} \cdot y + x}\\

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r1524496 = x;
        double r1524497 = y;
        double r1524498 = 2.0;
        double r1524499 = z;
        double r1524500 = t;
        double r1524501 = a;
        double r1524502 = r1524500 + r1524501;
        double r1524503 = sqrt(r1524502);
        double r1524504 = r1524499 * r1524503;
        double r1524505 = r1524504 / r1524500;
        double r1524506 = b;
        double r1524507 = c;
        double r1524508 = r1524506 - r1524507;
        double r1524509 = 5.0;
        double r1524510 = 6.0;
        double r1524511 = r1524509 / r1524510;
        double r1524512 = r1524501 + r1524511;
        double r1524513 = 3.0;
        double r1524514 = r1524500 * r1524513;
        double r1524515 = r1524498 / r1524514;
        double r1524516 = r1524512 - r1524515;
        double r1524517 = r1524508 * r1524516;
        double r1524518 = r1524505 - r1524517;
        double r1524519 = r1524498 * r1524518;
        double r1524520 = exp(r1524519);
        double r1524521 = r1524497 * r1524520;
        double r1524522 = r1524496 + r1524521;
        double r1524523 = r1524496 / r1524522;
        return r1524523;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r1524524 = t;
        double r1524525 = -7.898436796540733e-89;
        bool r1524526 = r1524524 <= r1524525;
        double r1524527 = x;
        double r1524528 = z;
        double r1524529 = cbrt(r1524524);
        double r1524530 = r1524529 * r1524529;
        double r1524531 = r1524528 / r1524530;
        double r1524532 = a;
        double r1524533 = r1524524 + r1524532;
        double r1524534 = sqrt(r1524533);
        double r1524535 = r1524534 / r1524529;
        double r1524536 = r1524531 * r1524535;
        double r1524537 = 5.0;
        double r1524538 = 6.0;
        double r1524539 = r1524537 / r1524538;
        double r1524540 = r1524539 + r1524532;
        double r1524541 = 2.0;
        double r1524542 = 3.0;
        double r1524543 = r1524524 * r1524542;
        double r1524544 = r1524541 / r1524543;
        double r1524545 = r1524540 - r1524544;
        double r1524546 = b;
        double r1524547 = c;
        double r1524548 = r1524546 - r1524547;
        double r1524549 = r1524545 * r1524548;
        double r1524550 = r1524536 - r1524549;
        double r1524551 = r1524550 * r1524541;
        double r1524552 = exp(r1524551);
        double r1524553 = y;
        double r1524554 = r1524552 * r1524553;
        double r1524555 = r1524554 + r1524527;
        double r1524556 = r1524527 / r1524555;
        double r1524557 = 1.4924055999405827e-228;
        bool r1524558 = r1524524 <= r1524557;
        double r1524559 = r1524534 * r1524528;
        double r1524560 = /* ERROR: no posit support in C */;
        double r1524561 = /* ERROR: no posit support in C */;
        double r1524562 = r1524561 / r1524524;
        double r1524563 = r1524562 - r1524549;
        double r1524564 = r1524541 * r1524563;
        double r1524565 = exp(r1524564);
        double r1524566 = r1524553 * r1524565;
        double r1524567 = r1524527 + r1524566;
        double r1524568 = r1524527 / r1524567;
        double r1524569 = r1524558 ? r1524568 : r1524556;
        double r1524570 = r1524526 ? r1524556 : r1524569;
        return r1524570;
}

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

Derivation

  1. Split input into 2 regimes
  2. if t < -7.898436796540733e-89 or 1.4924055999405827e-228 < t

    1. Initial program 2.9

      \[\frac{x}{x + y \cdot e^{2.0 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{t \cdot 3.0}\right)\right)}}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt2.9

      \[\leadsto \frac{x}{x + y \cdot e^{2.0 \cdot \left(\frac{z \cdot \sqrt{t + a}}{\color{blue}{\left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right) \cdot \sqrt[3]{t}}} - \left(b - c\right) \cdot \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{t \cdot 3.0}\right)\right)}}\]
    4. Applied times-frac1.4

      \[\leadsto \frac{x}{x + y \cdot e^{2.0 \cdot \left(\color{blue}{\frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}}} - \left(b - c\right) \cdot \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{t \cdot 3.0}\right)\right)}}\]

    if -7.898436796540733e-89 < t < 1.4924055999405827e-228

    1. Initial program 8.1

      \[\frac{x}{x + y \cdot e^{2.0 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{t \cdot 3.0}\right)\right)}}\]
    2. Using strategy rm
    3. Applied insert-posit169.1

      \[\leadsto \frac{x}{x + y \cdot e^{2.0 \cdot \left(\frac{\color{blue}{\left(\left(z \cdot \sqrt{t + a}\right)\right)}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{t \cdot 3.0}\right)\right)}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification3.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -7.898436796540733 \cdot 10^{-89}:\\ \;\;\;\;\frac{x}{e^{\left(\frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}} - \left(\left(\frac{5.0}{6.0} + a\right) - \frac{2.0}{t \cdot 3.0}\right) \cdot \left(b - c\right)\right) \cdot 2.0} \cdot y + x}\\ \mathbf{elif}\;t \le 1.4924055999405827 \cdot 10^{-228}:\\ \;\;\;\;\frac{x}{x + y \cdot e^{2.0 \cdot \left(\frac{\left(\left(\sqrt{t + a} \cdot z\right)\right)}{t} - \left(\left(\frac{5.0}{6.0} + a\right) - \frac{2.0}{t \cdot 3.0}\right) \cdot \left(b - c\right)\right)}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{e^{\left(\frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}} - \left(\left(\frac{5.0}{6.0} + a\right) - \frac{2.0}{t \cdot 3.0}\right) \cdot \left(b - c\right)\right) \cdot 2.0} \cdot y + x}\\ \end{array}\]

Reproduce

herbie shell --seed 2019153 
(FPCore (x y z t a b c)
  :name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2"
  (/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0)))))))))))