Average Error: 16.7 → 15.6
Time: 16.3s
Precision: 64
\[\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
\[\frac{\mathsf{fma}\left(\frac{z}{t}, y, x\right)}{\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{b \cdot \sqrt[3]{y}}{\sqrt[3]{t}} + \left(a + 1\right)}\]
\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}
\frac{\mathsf{fma}\left(\frac{z}{t}, y, x\right)}{\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{b \cdot \sqrt[3]{y}}{\sqrt[3]{t}} + \left(a + 1\right)}
double f(double x, double y, double z, double t, double a, double b) {
        double r981998 = x;
        double r981999 = y;
        double r982000 = z;
        double r982001 = r981999 * r982000;
        double r982002 = t;
        double r982003 = r982001 / r982002;
        double r982004 = r981998 + r982003;
        double r982005 = a;
        double r982006 = 1.0;
        double r982007 = r982005 + r982006;
        double r982008 = b;
        double r982009 = r981999 * r982008;
        double r982010 = r982009 / r982002;
        double r982011 = r982007 + r982010;
        double r982012 = r982004 / r982011;
        return r982012;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r982013 = z;
        double r982014 = t;
        double r982015 = r982013 / r982014;
        double r982016 = y;
        double r982017 = x;
        double r982018 = fma(r982015, r982016, r982017);
        double r982019 = cbrt(r982016);
        double r982020 = r982019 * r982019;
        double r982021 = cbrt(r982014);
        double r982022 = r982021 * r982021;
        double r982023 = r982020 / r982022;
        double r982024 = b;
        double r982025 = r982024 * r982019;
        double r982026 = r982025 / r982021;
        double r982027 = r982023 * r982026;
        double r982028 = a;
        double r982029 = 1.0;
        double r982030 = r982028 + r982029;
        double r982031 = r982027 + r982030;
        double r982032 = r982018 / r982031;
        return r982032;
}

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.7
Target13.0
Herbie15.6
\[\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.7

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

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

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

    \[\leadsto \frac{\mathsf{fma}\left(\frac{z}{t}, y, x\right)}{\color{blue}{\frac{y}{t} \cdot b} + \left(a + 1\right)}\]
  6. Using strategy rm
  7. Applied add-cube-cbrt16.0

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

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

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

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

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

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

Reproduce

herbie shell --seed 2019196 +o rules:numerics
(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))))