Average Error: 16.8 → 14.8
Time: 5.2s
Precision: 64
\[\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
\[\frac{1}{\mathsf{fma}\left(\frac{y}{t}, b, a + 1\right)} \cdot \mathsf{fma}\left(\frac{y}{t}, z, x\right)\]
\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}
\frac{1}{\mathsf{fma}\left(\frac{y}{t}, b, a + 1\right)} \cdot \mathsf{fma}\left(\frac{y}{t}, z, x\right)
double f(double x, double y, double z, double t, double a, double b) {
        double r787440 = x;
        double r787441 = y;
        double r787442 = z;
        double r787443 = r787441 * r787442;
        double r787444 = t;
        double r787445 = r787443 / r787444;
        double r787446 = r787440 + r787445;
        double r787447 = a;
        double r787448 = 1.0;
        double r787449 = r787447 + r787448;
        double r787450 = b;
        double r787451 = r787441 * r787450;
        double r787452 = r787451 / r787444;
        double r787453 = r787449 + r787452;
        double r787454 = r787446 / r787453;
        return r787454;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r787455 = 1.0;
        double r787456 = y;
        double r787457 = t;
        double r787458 = r787456 / r787457;
        double r787459 = b;
        double r787460 = a;
        double r787461 = 1.0;
        double r787462 = r787460 + r787461;
        double r787463 = fma(r787458, r787459, r787462);
        double r787464 = r787455 / r787463;
        double r787465 = z;
        double r787466 = x;
        double r787467 = fma(r787458, r787465, r787466);
        double r787468 = r787464 * r787467;
        return r787468;
}

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.8
Target13.4
Herbie14.8
\[\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. Initial program 16.8

    \[\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
  2. Using strategy rm
  3. Applied clear-num17.0

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

    \[\leadsto \frac{1}{\frac{\left(a + 1\right) + \frac{y \cdot b}{t}}{\color{blue}{1 \cdot \left(x + \frac{y \cdot z}{t}\right)}}}\]
  6. Applied associate-/r*17.0

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

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

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

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

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

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

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

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

Reproduce

herbie shell --seed 2020002 +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.036967103737246e-130) (/ z b) (* 1 (* (+ x (* (/ y t) z)) (/ 1 (+ (+ a 1) (* (/ y t) b)))))))

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