Average Error: 4.0 → 4.7
Time: 59.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}\;x \le -5.622640931064597 \cdot 10^{-197}:\\ \;\;\;\;\frac{x}{e^{2.0 \cdot \log \left(e^{\frac{z \cdot \sqrt{t + a}}{t} - \left(a + \left(\frac{5.0}{6.0} - \frac{\frac{2.0}{t}}{3.0}\right)\right) \cdot \left(b - c\right)}\right)} \cdot y + x}\\ \mathbf{elif}\;x \le -1.4237820514682587 \cdot 10^{-289}:\\ \;\;\;\;\frac{x}{e^{2.0 \cdot \left(\left(\frac{z}{\frac{t}{\sqrt{t + a}}} - \left(b - c\right) \cdot \left(\left(a - \frac{2.0}{3.0 \cdot t}\right) + \frac{5.0}{6.0}\right)\right)\right)} \cdot y + x}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{e^{2.0 \cdot \log \left(e^{\frac{z \cdot \sqrt{t + a}}{t} - \left(a + \left(\frac{5.0}{6.0} - \frac{\frac{2.0}{t}}{3.0}\right)\right) \cdot \left(b - c\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}\;x \le -5.622640931064597 \cdot 10^{-197}:\\
\;\;\;\;\frac{x}{e^{2.0 \cdot \log \left(e^{\frac{z \cdot \sqrt{t + a}}{t} - \left(a + \left(\frac{5.0}{6.0} - \frac{\frac{2.0}{t}}{3.0}\right)\right) \cdot \left(b - c\right)}\right)} \cdot y + x}\\

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

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

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r20972541 = x;
        double r20972542 = y;
        double r20972543 = 2.0;
        double r20972544 = z;
        double r20972545 = t;
        double r20972546 = a;
        double r20972547 = r20972545 + r20972546;
        double r20972548 = sqrt(r20972547);
        double r20972549 = r20972544 * r20972548;
        double r20972550 = r20972549 / r20972545;
        double r20972551 = b;
        double r20972552 = c;
        double r20972553 = r20972551 - r20972552;
        double r20972554 = 5.0;
        double r20972555 = 6.0;
        double r20972556 = r20972554 / r20972555;
        double r20972557 = r20972546 + r20972556;
        double r20972558 = 3.0;
        double r20972559 = r20972545 * r20972558;
        double r20972560 = r20972543 / r20972559;
        double r20972561 = r20972557 - r20972560;
        double r20972562 = r20972553 * r20972561;
        double r20972563 = r20972550 - r20972562;
        double r20972564 = r20972543 * r20972563;
        double r20972565 = exp(r20972564);
        double r20972566 = r20972542 * r20972565;
        double r20972567 = r20972541 + r20972566;
        double r20972568 = r20972541 / r20972567;
        return r20972568;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r20972569 = x;
        double r20972570 = -5.622640931064597e-197;
        bool r20972571 = r20972569 <= r20972570;
        double r20972572 = 2.0;
        double r20972573 = z;
        double r20972574 = t;
        double r20972575 = a;
        double r20972576 = r20972574 + r20972575;
        double r20972577 = sqrt(r20972576);
        double r20972578 = r20972573 * r20972577;
        double r20972579 = r20972578 / r20972574;
        double r20972580 = 5.0;
        double r20972581 = 6.0;
        double r20972582 = r20972580 / r20972581;
        double r20972583 = r20972572 / r20972574;
        double r20972584 = 3.0;
        double r20972585 = r20972583 / r20972584;
        double r20972586 = r20972582 - r20972585;
        double r20972587 = r20972575 + r20972586;
        double r20972588 = b;
        double r20972589 = c;
        double r20972590 = r20972588 - r20972589;
        double r20972591 = r20972587 * r20972590;
        double r20972592 = r20972579 - r20972591;
        double r20972593 = exp(r20972592);
        double r20972594 = log(r20972593);
        double r20972595 = r20972572 * r20972594;
        double r20972596 = exp(r20972595);
        double r20972597 = y;
        double r20972598 = r20972596 * r20972597;
        double r20972599 = r20972598 + r20972569;
        double r20972600 = r20972569 / r20972599;
        double r20972601 = -1.4237820514682587e-289;
        bool r20972602 = r20972569 <= r20972601;
        double r20972603 = r20972574 / r20972577;
        double r20972604 = r20972573 / r20972603;
        double r20972605 = r20972584 * r20972574;
        double r20972606 = r20972572 / r20972605;
        double r20972607 = r20972575 - r20972606;
        double r20972608 = r20972607 + r20972582;
        double r20972609 = r20972590 * r20972608;
        double r20972610 = r20972604 - r20972609;
        double r20972611 = /* ERROR: no posit support in C */;
        double r20972612 = /* ERROR: no posit support in C */;
        double r20972613 = r20972572 * r20972612;
        double r20972614 = exp(r20972613);
        double r20972615 = r20972614 * r20972597;
        double r20972616 = r20972615 + r20972569;
        double r20972617 = r20972569 / r20972616;
        double r20972618 = r20972602 ? r20972617 : r20972600;
        double r20972619 = r20972571 ? r20972600 : r20972618;
        return r20972619;
}

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

Target

Original4.0
Target3.0
Herbie4.7
\[\begin{array}{l} \mathbf{if}\;t \lt -2.118326644891581 \cdot 10^{-50}:\\ \;\;\;\;\frac{x}{x + y \cdot e^{2.0 \cdot \left(\left(a \cdot c + 0.8333333333333334 \cdot c\right) - a \cdot b\right)}}\\ \mathbf{elif}\;t \lt 5.196588770651547 \cdot 10^{-123}:\\ \;\;\;\;\frac{x}{x + y \cdot e^{2.0 \cdot \frac{\left(z \cdot \sqrt{t + a}\right) \cdot \left(\left(3.0 \cdot t\right) \cdot \left(a - \frac{5.0}{6.0}\right)\right) - \left(\left(\frac{5.0}{6.0} + a\right) \cdot \left(3.0 \cdot t\right) - 2.0\right) \cdot \left(\left(a - \frac{5.0}{6.0}\right) \cdot \left(\left(b - c\right) \cdot t\right)\right)}{\left(\left(t \cdot t\right) \cdot 3.0\right) \cdot \left(a - \frac{5.0}{6.0}\right)}}}\\ \mathbf{else}:\\ \;\;\;\;\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)}}\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if x < -5.622640931064597e-197 or -1.4237820514682587e-289 < x

    1. Initial program 3.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-log-exp8.5

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

      \[\leadsto \frac{x}{x + y \cdot e^{2.0 \cdot \left(\color{blue}{\log \left(e^{\frac{z \cdot \sqrt{t + a}}{t}}\right)} - \log \left(e^{\left(b - c\right) \cdot \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{t \cdot 3.0}\right)}\right)\right)}}\]
    5. Applied diff-log17.1

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

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

    if -5.622640931064597e-197 < x < -1.4237820514682587e-289

    1. Initial program 5.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 add-cbrt-cube5.5

      \[\leadsto \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 \color{blue}{\sqrt[3]{\left(3.0 \cdot 3.0\right) \cdot 3.0}}}\right)\right)}}\]
    4. Applied add-cbrt-cube9.2

      \[\leadsto \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}{\color{blue}{\sqrt[3]{\left(t \cdot t\right) \cdot t}} \cdot \sqrt[3]{\left(3.0 \cdot 3.0\right) \cdot 3.0}}\right)\right)}}\]
    5. Applied cbrt-unprod9.2

      \[\leadsto \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}{\color{blue}{\sqrt[3]{\left(\left(t \cdot t\right) \cdot t\right) \cdot \left(\left(3.0 \cdot 3.0\right) \cdot 3.0\right)}}}\right)\right)}}\]
    6. Applied add-cbrt-cube9.2

      \[\leadsto \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{\color{blue}{\sqrt[3]{\left(2.0 \cdot 2.0\right) \cdot 2.0}}}{\sqrt[3]{\left(\left(t \cdot t\right) \cdot t\right) \cdot \left(\left(3.0 \cdot 3.0\right) \cdot 3.0\right)}}\right)\right)}}\]
    7. Applied cbrt-undiv9.3

      \[\leadsto \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) - \color{blue}{\sqrt[3]{\frac{\left(2.0 \cdot 2.0\right) \cdot 2.0}{\left(\left(t \cdot t\right) \cdot t\right) \cdot \left(\left(3.0 \cdot 3.0\right) \cdot 3.0\right)}}}\right)\right)}}\]
    8. Simplified9.3

      \[\leadsto \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) - \sqrt[3]{\color{blue}{\frac{\frac{2.0}{t}}{3.0} \cdot \left(\frac{\frac{2.0}{t}}{3.0} \cdot \frac{\frac{2.0}{t}}{3.0}\right)}}\right)\right)}}\]
    9. Using strategy rm
    10. Applied insert-posit1620.1

      \[\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) - \sqrt[3]{\frac{\frac{2.0}{t}}{3.0} \cdot \left(\frac{\frac{2.0}{t}}{3.0} \cdot \frac{\frac{2.0}{t}}{3.0}\right)}\right)\right)\right)}}}\]
    11. Simplified16.1

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

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

Reproduce

herbie shell --seed 2019165 
(FPCore (x y z t a b c)
  :name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I"

  :herbie-target
  (if (< t -2.118326644891581e-50) (/ x (+ x (* y (exp (* 2.0 (- (+ (* a c) (* 0.8333333333333334 c)) (* a b))))))) (if (< t 5.196588770651547e-123) (/ x (+ x (* y (exp (* 2.0 (/ (- (* (* z (sqrt (+ t a))) (* (* 3.0 t) (- a (/ 5.0 6.0)))) (* (- (* (+ (/ 5.0 6.0) a) (* 3.0 t)) 2.0) (* (- a (/ 5.0 6.0)) (* (- b c) t)))) (* (* (* t t) 3.0) (- a (/ 5.0 6.0))))))))) (/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0))))))))))))

  (/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0)))))))))))