Average Error: 1.5 → 2.5
Time: 13.5s
Precision: 64
\[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
\[\begin{array}{l} \mathbf{if}\;x \le -2.458562722192793626558471518628763370729 \cdot 10^{-272}:\\ \;\;\;\;\left|\frac{4 + x}{y} - x \cdot \frac{z}{y}\right|\\ \mathbf{else}:\\ \;\;\;\;\left|\mathsf{fma}\left(\frac{1}{\sqrt[3]{y} \cdot \sqrt[3]{y}}, \frac{4}{\sqrt[3]{y}}, \frac{x}{y} - \frac{x}{y} \cdot z\right)\right|\\ \end{array}\]
\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|
\begin{array}{l}
\mathbf{if}\;x \le -2.458562722192793626558471518628763370729 \cdot 10^{-272}:\\
\;\;\;\;\left|\frac{4 + x}{y} - x \cdot \frac{z}{y}\right|\\

\mathbf{else}:\\
\;\;\;\;\left|\mathsf{fma}\left(\frac{1}{\sqrt[3]{y} \cdot \sqrt[3]{y}}, \frac{4}{\sqrt[3]{y}}, \frac{x}{y} - \frac{x}{y} \cdot z\right)\right|\\

\end{array}
double f(double x, double y, double z) {
        double r1109271 = x;
        double r1109272 = 4.0;
        double r1109273 = r1109271 + r1109272;
        double r1109274 = y;
        double r1109275 = r1109273 / r1109274;
        double r1109276 = r1109271 / r1109274;
        double r1109277 = z;
        double r1109278 = r1109276 * r1109277;
        double r1109279 = r1109275 - r1109278;
        double r1109280 = fabs(r1109279);
        return r1109280;
}

double f(double x, double y, double z) {
        double r1109281 = x;
        double r1109282 = -2.4585627221927936e-272;
        bool r1109283 = r1109281 <= r1109282;
        double r1109284 = 4.0;
        double r1109285 = r1109284 + r1109281;
        double r1109286 = y;
        double r1109287 = r1109285 / r1109286;
        double r1109288 = z;
        double r1109289 = r1109288 / r1109286;
        double r1109290 = r1109281 * r1109289;
        double r1109291 = r1109287 - r1109290;
        double r1109292 = fabs(r1109291);
        double r1109293 = 1.0;
        double r1109294 = cbrt(r1109286);
        double r1109295 = r1109294 * r1109294;
        double r1109296 = r1109293 / r1109295;
        double r1109297 = r1109284 / r1109294;
        double r1109298 = r1109281 / r1109286;
        double r1109299 = r1109298 * r1109288;
        double r1109300 = r1109298 - r1109299;
        double r1109301 = fma(r1109296, r1109297, r1109300);
        double r1109302 = fabs(r1109301);
        double r1109303 = r1109283 ? r1109292 : r1109302;
        return r1109303;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Derivation

  1. Split input into 2 regimes
  2. if x < -2.4585627221927936e-272

    1. Initial program 1.8

      \[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
    2. Using strategy rm
    3. Applied div-inv1.8

      \[\leadsto \left|\frac{x + 4}{y} - \color{blue}{\left(x \cdot \frac{1}{y}\right)} \cdot z\right|\]
    4. Applied associate-*l*3.1

      \[\leadsto \left|\frac{x + 4}{y} - \color{blue}{x \cdot \left(\frac{1}{y} \cdot z\right)}\right|\]
    5. Simplified3.1

      \[\leadsto \left|\frac{x + 4}{y} - x \cdot \color{blue}{\frac{z}{y}}\right|\]

    if -2.4585627221927936e-272 < x

    1. Initial program 1.3

      \[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
    2. Taylor expanded around 0 3.3

      \[\leadsto \left|\color{blue}{\left(\frac{x}{y} + 4 \cdot \frac{1}{y}\right) - \frac{x \cdot z}{y}}\right|\]
    3. Simplified1.3

      \[\leadsto \left|\color{blue}{\frac{4}{y} + \left(\frac{x}{y} - z \cdot \frac{x}{y}\right)}\right|\]
    4. Using strategy rm
    5. Applied add-cube-cbrt1.9

      \[\leadsto \left|\frac{4}{\color{blue}{\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \sqrt[3]{y}}} + \left(\frac{x}{y} - z \cdot \frac{x}{y}\right)\right|\]
    6. Applied *-un-lft-identity1.9

      \[\leadsto \left|\frac{\color{blue}{1 \cdot 4}}{\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \sqrt[3]{y}} + \left(\frac{x}{y} - z \cdot \frac{x}{y}\right)\right|\]
    7. Applied times-frac2.0

      \[\leadsto \left|\color{blue}{\frac{1}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{4}{\sqrt[3]{y}}} + \left(\frac{x}{y} - z \cdot \frac{x}{y}\right)\right|\]
    8. Applied fma-def2.0

      \[\leadsto \left|\color{blue}{\mathsf{fma}\left(\frac{1}{\sqrt[3]{y} \cdot \sqrt[3]{y}}, \frac{4}{\sqrt[3]{y}}, \frac{x}{y} - z \cdot \frac{x}{y}\right)}\right|\]
  3. Recombined 2 regimes into one program.
  4. Final simplification2.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -2.458562722192793626558471518628763370729 \cdot 10^{-272}:\\ \;\;\;\;\left|\frac{4 + x}{y} - x \cdot \frac{z}{y}\right|\\ \mathbf{else}:\\ \;\;\;\;\left|\mathsf{fma}\left(\frac{1}{\sqrt[3]{y} \cdot \sqrt[3]{y}}, \frac{4}{\sqrt[3]{y}}, \frac{x}{y} - \frac{x}{y} \cdot z\right)\right|\\ \end{array}\]

Reproduce

herbie shell --seed 2019171 +o rules:numerics
(FPCore (x y z)
  :name "fabs fraction 1"
  (fabs (- (/ (+ x 4.0) y) (* (/ x y) z))))