Average Error: 17.2 → 14.4
Time: 53.8s
Precision: 64
\[\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
\[\begin{array}{l} \mathbf{if}\;\frac{\frac{z \cdot y}{t} + x}{\frac{b \cdot y}{t} + \left(a + 1\right)} \le -2.920289298659490288425480516012074489493 \cdot 10^{-301} \lor \neg \left(\frac{\frac{z \cdot y}{t} + x}{\frac{b \cdot y}{t} + \left(a + 1\right)} \le 2.4163364434325818481245117375278618817 \cdot 10^{-239}\right):\\ \;\;\;\;\frac{x + \frac{z}{\frac{t}{y}}}{1 + \left(b \cdot \frac{y}{t} + a\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(x + y \cdot \frac{z}{t}\right) \cdot \frac{1}{a + \left(1 + b \cdot \frac{y}{t}\right)}\\ \end{array}\]
\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}
\begin{array}{l}
\mathbf{if}\;\frac{\frac{z \cdot y}{t} + x}{\frac{b \cdot y}{t} + \left(a + 1\right)} \le -2.920289298659490288425480516012074489493 \cdot 10^{-301} \lor \neg \left(\frac{\frac{z \cdot y}{t} + x}{\frac{b \cdot y}{t} + \left(a + 1\right)} \le 2.4163364434325818481245117375278618817 \cdot 10^{-239}\right):\\
\;\;\;\;\frac{x + \frac{z}{\frac{t}{y}}}{1 + \left(b \cdot \frac{y}{t} + a\right)}\\

\mathbf{else}:\\
\;\;\;\;\left(x + y \cdot \frac{z}{t}\right) \cdot \frac{1}{a + \left(1 + b \cdot \frac{y}{t}\right)}\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r686455 = x;
        double r686456 = y;
        double r686457 = z;
        double r686458 = r686456 * r686457;
        double r686459 = t;
        double r686460 = r686458 / r686459;
        double r686461 = r686455 + r686460;
        double r686462 = a;
        double r686463 = 1.0;
        double r686464 = r686462 + r686463;
        double r686465 = b;
        double r686466 = r686456 * r686465;
        double r686467 = r686466 / r686459;
        double r686468 = r686464 + r686467;
        double r686469 = r686461 / r686468;
        return r686469;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r686470 = z;
        double r686471 = y;
        double r686472 = r686470 * r686471;
        double r686473 = t;
        double r686474 = r686472 / r686473;
        double r686475 = x;
        double r686476 = r686474 + r686475;
        double r686477 = b;
        double r686478 = r686477 * r686471;
        double r686479 = r686478 / r686473;
        double r686480 = a;
        double r686481 = 1.0;
        double r686482 = r686480 + r686481;
        double r686483 = r686479 + r686482;
        double r686484 = r686476 / r686483;
        double r686485 = -2.9202892986594903e-301;
        bool r686486 = r686484 <= r686485;
        double r686487 = 2.416336443432582e-239;
        bool r686488 = r686484 <= r686487;
        double r686489 = !r686488;
        bool r686490 = r686486 || r686489;
        double r686491 = r686473 / r686471;
        double r686492 = r686470 / r686491;
        double r686493 = r686475 + r686492;
        double r686494 = r686471 / r686473;
        double r686495 = r686477 * r686494;
        double r686496 = r686495 + r686480;
        double r686497 = r686481 + r686496;
        double r686498 = r686493 / r686497;
        double r686499 = r686470 / r686473;
        double r686500 = r686471 * r686499;
        double r686501 = r686475 + r686500;
        double r686502 = 1.0;
        double r686503 = r686481 + r686495;
        double r686504 = r686480 + r686503;
        double r686505 = r686502 / r686504;
        double r686506 = r686501 * r686505;
        double r686507 = r686490 ? r686498 : r686506;
        return r686507;
}

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

Original17.2
Target13.7
Herbie14.4
\[\begin{array}{l} \mathbf{if}\;t \lt -1.365908536631008841640163147697088508132 \cdot 10^{-271}:\\ \;\;\;\;1 \cdot \left(\left(x + \frac{y}{t} \cdot z\right) \cdot \frac{1}{\left(a + 1\right) + \frac{y}{t} \cdot b}\right)\\ \mathbf{elif}\;t \lt 3.036967103737245906066829435890093573122 \cdot 10^{-130}:\\ \;\;\;\;\frac{z}{b}\\ \mathbf{else}:\\ \;\;\;\;1 \cdot \left(\left(x + \frac{y}{t} \cdot z\right) \cdot \frac{1}{\left(a + 1\right) + \frac{y}{t} \cdot b}\right)\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))) < -2.9202892986594903e-301 or 2.416336443432582e-239 < (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t)))

    1. Initial program 15.3

      \[\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
    2. Simplified13.5

      \[\leadsto \color{blue}{\frac{\frac{y}{t} \cdot z + x}{1 + \left(a + \frac{y}{t} \cdot b\right)}}\]
    3. Using strategy rm
    4. Applied div-inv13.6

      \[\leadsto \color{blue}{\left(\frac{y}{t} \cdot z + x\right) \cdot \frac{1}{1 + \left(a + \frac{y}{t} \cdot b\right)}}\]
    5. Simplified13.6

      \[\leadsto \left(\frac{y}{t} \cdot z + x\right) \cdot \color{blue}{\frac{1}{a + \left(b \cdot \frac{y}{t} + 1\right)}}\]
    6. Using strategy rm
    7. Applied *-un-lft-identity13.6

      \[\leadsto \color{blue}{\left(1 \cdot \left(\frac{y}{t} \cdot z + x\right)\right)} \cdot \frac{1}{a + \left(b \cdot \frac{y}{t} + 1\right)}\]
    8. Applied associate-*l*13.6

      \[\leadsto \color{blue}{1 \cdot \left(\left(\frac{y}{t} \cdot z + x\right) \cdot \frac{1}{a + \left(b \cdot \frac{y}{t} + 1\right)}\right)}\]
    9. Simplified13.6

      \[\leadsto 1 \cdot \color{blue}{\frac{x + \frac{z}{\frac{t}{y}}}{1 + \left(b \cdot \frac{y}{t} + a\right)}}\]

    if -2.9202892986594903e-301 < (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))) < 2.416336443432582e-239

    1. Initial program 24.9

      \[\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
    2. Simplified21.2

      \[\leadsto \color{blue}{\frac{\frac{y}{t} \cdot z + x}{1 + \left(a + \frac{y}{t} \cdot b\right)}}\]
    3. Using strategy rm
    4. Applied div-inv21.2

      \[\leadsto \color{blue}{\left(\frac{y}{t} \cdot z + x\right) \cdot \frac{1}{1 + \left(a + \frac{y}{t} \cdot b\right)}}\]
    5. Simplified21.2

      \[\leadsto \left(\frac{y}{t} \cdot z + x\right) \cdot \color{blue}{\frac{1}{a + \left(b \cdot \frac{y}{t} + 1\right)}}\]
    6. Using strategy rm
    7. Applied div-inv21.2

      \[\leadsto \left(\color{blue}{\left(y \cdot \frac{1}{t}\right)} \cdot z + x\right) \cdot \frac{1}{a + \left(b \cdot \frac{y}{t} + 1\right)}\]
    8. Applied associate-*l*17.5

      \[\leadsto \left(\color{blue}{y \cdot \left(\frac{1}{t} \cdot z\right)} + x\right) \cdot \frac{1}{a + \left(b \cdot \frac{y}{t} + 1\right)}\]
    9. Simplified17.5

      \[\leadsto \left(y \cdot \color{blue}{\frac{z}{t}} + x\right) \cdot \frac{1}{a + \left(b \cdot \frac{y}{t} + 1\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification14.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\frac{z \cdot y}{t} + x}{\frac{b \cdot y}{t} + \left(a + 1\right)} \le -2.920289298659490288425480516012074489493 \cdot 10^{-301} \lor \neg \left(\frac{\frac{z \cdot y}{t} + x}{\frac{b \cdot y}{t} + \left(a + 1\right)} \le 2.4163364434325818481245117375278618817 \cdot 10^{-239}\right):\\ \;\;\;\;\frac{x + \frac{z}{\frac{t}{y}}}{1 + \left(b \cdot \frac{y}{t} + a\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(x + y \cdot \frac{z}{t}\right) \cdot \frac{1}{a + \left(1 + b \cdot \frac{y}{t}\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2019179 
(FPCore (x y z t a b)
  :name "Diagrams.Solve.Tridiagonal:solveCyclicTriDiagonal from diagrams-solve-0.1, B"

  :herbie-target
  (if (< t -1.3659085366310088e-271) (* 1.0 (* (+ x (* (/ y t) z)) (/ 1.0 (+ (+ a 1.0) (* (/ y t) b))))) (if (< t 3.036967103737246e-130) (/ z b) (* 1.0 (* (+ x (* (/ y t) z)) (/ 1.0 (+ (+ a 1.0) (* (/ y t) b)))))))

  (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))))