Average Error: 16.3 → 12.2
Time: 18.4s
Precision: 64
\[\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
\[\begin{array}{l} \mathbf{if}\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}} \le -3.634799063555624674511406567758455140321 \cdot 10^{180}:\\ \;\;\;\;\frac{1}{\left(\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1\right) \cdot \frac{1}{\mathsf{fma}\left(\frac{y}{t}, z, x\right)}}\\ \mathbf{elif}\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}} \le -5.541990141838404510339109556572102988349 \cdot 10^{-225}:\\ \;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\ \mathbf{elif}\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}} \le 1.487602339458545407496150121045775053955 \cdot 10^{-281}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{z}{t}, y, x\right)}{\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1}\\ \mathbf{elif}\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}} \le 9.209141904289515274314784418784539649107 \cdot 10^{245}:\\ \;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\left(\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1\right) \cdot \frac{1}{\mathsf{fma}\left(\frac{y}{t}, z, x\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{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}} \le -3.634799063555624674511406567758455140321 \cdot 10^{180}:\\
\;\;\;\;\frac{1}{\left(\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1\right) \cdot \frac{1}{\mathsf{fma}\left(\frac{y}{t}, z, x\right)}}\\

\mathbf{elif}\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}} \le -5.541990141838404510339109556572102988349 \cdot 10^{-225}:\\
\;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\

\mathbf{elif}\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}} \le 1.487602339458545407496150121045775053955 \cdot 10^{-281}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{z}{t}, y, x\right)}{\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1}\\

\mathbf{elif}\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}} \le 9.209141904289515274314784418784539649107 \cdot 10^{245}:\\
\;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r661513 = x;
        double r661514 = y;
        double r661515 = z;
        double r661516 = r661514 * r661515;
        double r661517 = t;
        double r661518 = r661516 / r661517;
        double r661519 = r661513 + r661518;
        double r661520 = a;
        double r661521 = 1.0;
        double r661522 = r661520 + r661521;
        double r661523 = b;
        double r661524 = r661514 * r661523;
        double r661525 = r661524 / r661517;
        double r661526 = r661522 + r661525;
        double r661527 = r661519 / r661526;
        return r661527;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r661528 = x;
        double r661529 = y;
        double r661530 = z;
        double r661531 = r661529 * r661530;
        double r661532 = t;
        double r661533 = r661531 / r661532;
        double r661534 = r661528 + r661533;
        double r661535 = a;
        double r661536 = 1.0;
        double r661537 = r661535 + r661536;
        double r661538 = b;
        double r661539 = r661529 * r661538;
        double r661540 = r661539 / r661532;
        double r661541 = r661537 + r661540;
        double r661542 = r661534 / r661541;
        double r661543 = -3.6347990635556247e+180;
        bool r661544 = r661542 <= r661543;
        double r661545 = 1.0;
        double r661546 = r661529 / r661532;
        double r661547 = fma(r661546, r661538, r661535);
        double r661548 = r661547 + r661536;
        double r661549 = fma(r661546, r661530, r661528);
        double r661550 = r661545 / r661549;
        double r661551 = r661548 * r661550;
        double r661552 = r661545 / r661551;
        double r661553 = -5.541990141838405e-225;
        bool r661554 = r661542 <= r661553;
        double r661555 = 1.4876023394585454e-281;
        bool r661556 = r661542 <= r661555;
        double r661557 = r661530 / r661532;
        double r661558 = fma(r661557, r661529, r661528);
        double r661559 = r661558 / r661548;
        double r661560 = 9.209141904289515e+245;
        bool r661561 = r661542 <= r661560;
        double r661562 = r661561 ? r661542 : r661552;
        double r661563 = r661556 ? r661559 : r661562;
        double r661564 = r661554 ? r661542 : r661563;
        double r661565 = r661544 ? r661552 : r661564;
        return r661565;
}

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

Target

Original16.3
Target13.0
Herbie12.2
\[\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 3 regimes
  2. if (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))) < -3.6347990635556247e+180 or 9.209141904289515e+245 < (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t)))

    1. Initial program 47.0

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

      \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(\frac{y}{t}, z, x\right)}{\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1}}\]
    3. Using strategy rm
    4. Applied clear-num36.5

      \[\leadsto \color{blue}{\frac{1}{\frac{\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1}{\mathsf{fma}\left(\frac{y}{t}, z, x\right)}}}\]
    5. Using strategy rm
    6. Applied div-inv36.5

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

    if -3.6347990635556247e+180 < (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))) < -5.541990141838405e-225 or 1.4876023394585454e-281 < (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))) < 9.209141904289515e+245

    1. Initial program 0.4

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

    if -5.541990141838405e-225 < (/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))) < 1.4876023394585454e-281

    1. Initial program 22.9

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

      \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(\frac{y}{t}, z, x\right)}{\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1}}\]
    3. Using strategy rm
    4. Applied clear-num20.8

      \[\leadsto \color{blue}{\frac{1}{\frac{\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1}{\mathsf{fma}\left(\frac{y}{t}, z, x\right)}}}\]
    5. Using strategy rm
    6. Applied *-un-lft-identity20.8

      \[\leadsto \frac{1}{\frac{\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1}{\color{blue}{1 \cdot \mathsf{fma}\left(\frac{y}{t}, z, x\right)}}}\]
    7. Applied *-un-lft-identity20.8

      \[\leadsto \frac{1}{\frac{\color{blue}{1 \cdot \left(\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1\right)}}{1 \cdot \mathsf{fma}\left(\frac{y}{t}, z, x\right)}}\]
    8. Applied times-frac20.8

      \[\leadsto \frac{1}{\color{blue}{\frac{1}{1} \cdot \frac{\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1}{\mathsf{fma}\left(\frac{y}{t}, z, x\right)}}}\]
    9. Applied add-cube-cbrt20.8

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right) \cdot \sqrt[3]{1}}}{\frac{1}{1} \cdot \frac{\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1}{\mathsf{fma}\left(\frac{y}{t}, z, x\right)}}\]
    10. Applied times-frac20.8

      \[\leadsto \color{blue}{\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\frac{1}{1}} \cdot \frac{\sqrt[3]{1}}{\frac{\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1}{\mathsf{fma}\left(\frac{y}{t}, z, x\right)}}}\]
    11. Simplified20.8

      \[\leadsto \color{blue}{1} \cdot \frac{\sqrt[3]{1}}{\frac{\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1}{\mathsf{fma}\left(\frac{y}{t}, z, x\right)}}\]
    12. Simplified15.3

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}} \le -3.634799063555624674511406567758455140321 \cdot 10^{180}:\\ \;\;\;\;\frac{1}{\left(\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1\right) \cdot \frac{1}{\mathsf{fma}\left(\frac{y}{t}, z, x\right)}}\\ \mathbf{elif}\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}} \le -5.541990141838404510339109556572102988349 \cdot 10^{-225}:\\ \;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\ \mathbf{elif}\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}} \le 1.487602339458545407496150121045775053955 \cdot 10^{-281}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{z}{t}, y, x\right)}{\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1}\\ \mathbf{elif}\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}} \le 9.209141904289515274314784418784539649107 \cdot 10^{245}:\\ \;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\left(\mathsf{fma}\left(\frac{y}{t}, b, a\right) + 1\right) \cdot \frac{1}{\mathsf{fma}\left(\frac{y}{t}, z, x\right)}}\\ \end{array}\]

Reproduce

herbie shell --seed 2019305 +o rules:numerics
(FPCore (x y z t a b)
  :name "Diagrams.Solve.Tridiagonal:solveCyclicTriDiagonal from diagrams-solve-0.1, B"
  :precision binary64

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

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