Average Error: 3.9 → 4.2
Time: 45.2s
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 1.0333984294579716 \cdot 10^{-111}:\\ \;\;\;\;\frac{x}{x + e^{\left(\frac{\left(\left(\sqrt{t + a} \cdot z\right)\right)}{t} - \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{3.0 \cdot t}\right) \cdot \left(b - c\right)\right) \cdot 2.0} \cdot y}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{x + y \cdot e^{2.0 \cdot \log \left(e^{\sqrt{t + a} \cdot \frac{z}{t} - \left(\frac{5.0}{6.0} + \left(a - \left(\left(\frac{\frac{2.0}{t}}{3.0}\right)\right)\right)\right) \cdot \left(b - c\right)}\right)}}\\ \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 1.0333984294579716 \cdot 10^{-111}:\\
\;\;\;\;\frac{x}{x + e^{\left(\frac{\left(\left(\sqrt{t + a} \cdot z\right)\right)}{t} - \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{3.0 \cdot t}\right) \cdot \left(b - c\right)\right) \cdot 2.0} \cdot y}\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r3481287 = x;
        double r3481288 = y;
        double r3481289 = 2.0;
        double r3481290 = z;
        double r3481291 = t;
        double r3481292 = a;
        double r3481293 = r3481291 + r3481292;
        double r3481294 = sqrt(r3481293);
        double r3481295 = r3481290 * r3481294;
        double r3481296 = r3481295 / r3481291;
        double r3481297 = b;
        double r3481298 = c;
        double r3481299 = r3481297 - r3481298;
        double r3481300 = 5.0;
        double r3481301 = 6.0;
        double r3481302 = r3481300 / r3481301;
        double r3481303 = r3481292 + r3481302;
        double r3481304 = 3.0;
        double r3481305 = r3481291 * r3481304;
        double r3481306 = r3481289 / r3481305;
        double r3481307 = r3481303 - r3481306;
        double r3481308 = r3481299 * r3481307;
        double r3481309 = r3481296 - r3481308;
        double r3481310 = r3481289 * r3481309;
        double r3481311 = exp(r3481310);
        double r3481312 = r3481288 * r3481311;
        double r3481313 = r3481287 + r3481312;
        double r3481314 = r3481287 / r3481313;
        return r3481314;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r3481315 = t;
        double r3481316 = 1.0333984294579716e-111;
        bool r3481317 = r3481315 <= r3481316;
        double r3481318 = x;
        double r3481319 = a;
        double r3481320 = r3481315 + r3481319;
        double r3481321 = sqrt(r3481320);
        double r3481322 = z;
        double r3481323 = r3481321 * r3481322;
        double r3481324 = /* ERROR: no posit support in C */;
        double r3481325 = /* ERROR: no posit support in C */;
        double r3481326 = r3481325 / r3481315;
        double r3481327 = 5.0;
        double r3481328 = 6.0;
        double r3481329 = r3481327 / r3481328;
        double r3481330 = r3481319 + r3481329;
        double r3481331 = 2.0;
        double r3481332 = 3.0;
        double r3481333 = r3481332 * r3481315;
        double r3481334 = r3481331 / r3481333;
        double r3481335 = r3481330 - r3481334;
        double r3481336 = b;
        double r3481337 = c;
        double r3481338 = r3481336 - r3481337;
        double r3481339 = r3481335 * r3481338;
        double r3481340 = r3481326 - r3481339;
        double r3481341 = r3481340 * r3481331;
        double r3481342 = exp(r3481341);
        double r3481343 = y;
        double r3481344 = r3481342 * r3481343;
        double r3481345 = r3481318 + r3481344;
        double r3481346 = r3481318 / r3481345;
        double r3481347 = r3481322 / r3481315;
        double r3481348 = r3481321 * r3481347;
        double r3481349 = r3481331 / r3481315;
        double r3481350 = r3481349 / r3481332;
        double r3481351 = /* ERROR: no posit support in C */;
        double r3481352 = /* ERROR: no posit support in C */;
        double r3481353 = r3481319 - r3481352;
        double r3481354 = r3481329 + r3481353;
        double r3481355 = r3481354 * r3481338;
        double r3481356 = r3481348 - r3481355;
        double r3481357 = exp(r3481356);
        double r3481358 = log(r3481357);
        double r3481359 = r3481331 * r3481358;
        double r3481360 = exp(r3481359);
        double r3481361 = r3481343 * r3481360;
        double r3481362 = r3481318 + r3481361;
        double r3481363 = r3481318 / r3481362;
        double r3481364 = r3481317 ? r3481346 : r3481363;
        return r3481364;
}

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 < 1.0333984294579716e-111

    1. Initial program 5.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 insert-posit168.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)}}\]

    if 1.0333984294579716e-111 < t

    1. Initial program 2.4

      \[\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-exp5.7

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

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

      \[\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. Simplified0.5

      \[\leadsto \frac{x}{x + y \cdot e^{2.0 \cdot \log \color{blue}{\left(e^{\frac{z}{t} \cdot \sqrt{a + t} - \left(\frac{5.0}{6.0} + \left(a - \frac{\frac{2.0}{t}}{3.0}\right)\right) \cdot \left(b - c\right)}\right)}}}\]
    7. Using strategy rm
    8. Applied insert-posit161.2

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

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

Reproduce

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