Average Error: 3.7 → 2.0
Time: 1.6m
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}\;\frac{\sqrt{t + a} \cdot z}{t} - \left(b - c\right) \cdot \left(\left(\frac{5.0}{6.0} + a\right) - \frac{2.0}{3.0 \cdot t}\right) \le 1.6426553154601523 \cdot 10^{-43}:\\ \;\;\;\;\frac{x}{x + y \cdot e^{\left(\frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}} - \left(b - c\right) \cdot \left(\left(\frac{5.0}{6.0} + a\right) - \frac{2.0}{3.0 \cdot t}\right)\right) \cdot 2.0}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{e^{2.0 \cdot \left(\left(\frac{\sqrt{t + a} \cdot z}{t} - \left(b - c\right) \cdot \left(\left(\frac{5.0}{6.0} + a\right) - \frac{2.0}{3.0 \cdot t}\right)\right)\right)} \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}\;\frac{\sqrt{t + a} \cdot z}{t} - \left(b - c\right) \cdot \left(\left(\frac{5.0}{6.0} + a\right) - \frac{2.0}{3.0 \cdot t}\right) \le 1.6426553154601523 \cdot 10^{-43}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{\left(\frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}} - \left(b - c\right) \cdot \left(\left(\frac{5.0}{6.0} + a\right) - \frac{2.0}{3.0 \cdot t}\right)\right) \cdot 2.0}}\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r6811560 = x;
        double r6811561 = y;
        double r6811562 = 2.0;
        double r6811563 = z;
        double r6811564 = t;
        double r6811565 = a;
        double r6811566 = r6811564 + r6811565;
        double r6811567 = sqrt(r6811566);
        double r6811568 = r6811563 * r6811567;
        double r6811569 = r6811568 / r6811564;
        double r6811570 = b;
        double r6811571 = c;
        double r6811572 = r6811570 - r6811571;
        double r6811573 = 5.0;
        double r6811574 = 6.0;
        double r6811575 = r6811573 / r6811574;
        double r6811576 = r6811565 + r6811575;
        double r6811577 = 3.0;
        double r6811578 = r6811564 * r6811577;
        double r6811579 = r6811562 / r6811578;
        double r6811580 = r6811576 - r6811579;
        double r6811581 = r6811572 * r6811580;
        double r6811582 = r6811569 - r6811581;
        double r6811583 = r6811562 * r6811582;
        double r6811584 = exp(r6811583);
        double r6811585 = r6811561 * r6811584;
        double r6811586 = r6811560 + r6811585;
        double r6811587 = r6811560 / r6811586;
        return r6811587;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r6811588 = t;
        double r6811589 = a;
        double r6811590 = r6811588 + r6811589;
        double r6811591 = sqrt(r6811590);
        double r6811592 = z;
        double r6811593 = r6811591 * r6811592;
        double r6811594 = r6811593 / r6811588;
        double r6811595 = b;
        double r6811596 = c;
        double r6811597 = r6811595 - r6811596;
        double r6811598 = 5.0;
        double r6811599 = 6.0;
        double r6811600 = r6811598 / r6811599;
        double r6811601 = r6811600 + r6811589;
        double r6811602 = 2.0;
        double r6811603 = 3.0;
        double r6811604 = r6811603 * r6811588;
        double r6811605 = r6811602 / r6811604;
        double r6811606 = r6811601 - r6811605;
        double r6811607 = r6811597 * r6811606;
        double r6811608 = r6811594 - r6811607;
        double r6811609 = 1.6426553154601523e-43;
        bool r6811610 = r6811608 <= r6811609;
        double r6811611 = x;
        double r6811612 = y;
        double r6811613 = cbrt(r6811588);
        double r6811614 = r6811613 * r6811613;
        double r6811615 = r6811592 / r6811614;
        double r6811616 = r6811591 / r6811613;
        double r6811617 = r6811615 * r6811616;
        double r6811618 = r6811617 - r6811607;
        double r6811619 = r6811618 * r6811602;
        double r6811620 = exp(r6811619);
        double r6811621 = r6811612 * r6811620;
        double r6811622 = r6811611 + r6811621;
        double r6811623 = r6811611 / r6811622;
        double r6811624 = /* ERROR: no posit support in C */;
        double r6811625 = /* ERROR: no posit support in C */;
        double r6811626 = r6811602 * r6811625;
        double r6811627 = exp(r6811626);
        double r6811628 = r6811627 * r6811612;
        double r6811629 = r6811628 + r6811611;
        double r6811630 = r6811611 / r6811629;
        double r6811631 = r6811610 ? r6811623 : r6811630;
        return r6811631;
}

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 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0))))) < 1.6426553154601523e-43

    1. Initial program 0.8

      \[\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-cbrt0.8

      \[\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-frac0.1

      \[\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 1.6426553154601523e-43 < (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0)))))

    1. Initial program 6.5

      \[\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-posit163.9

      \[\leadsto \frac{x}{x + y \cdot e^{2.0 \cdot \color{blue}{\left(\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)\right)}}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification2.0

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

Reproduce

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