Average Error: 1.7 → 1.0
Time: 3.0s
Precision: 64
\[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
\[\left|\mathsf{fma}\left(4, \frac{1}{y}, \frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}} \cdot \left(1 - z\right)\right)\right)\right|\]
\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|
\left|\mathsf{fma}\left(4, \frac{1}{y}, \frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}} \cdot \left(1 - z\right)\right)\right)\right|
double f(double x, double y, double z) {
        double r27667 = x;
        double r27668 = 4.0;
        double r27669 = r27667 + r27668;
        double r27670 = y;
        double r27671 = r27669 / r27670;
        double r27672 = r27667 / r27670;
        double r27673 = z;
        double r27674 = r27672 * r27673;
        double r27675 = r27671 - r27674;
        double r27676 = fabs(r27675);
        return r27676;
}

double f(double x, double y, double z) {
        double r27677 = 4.0;
        double r27678 = 1.0;
        double r27679 = y;
        double r27680 = r27678 / r27679;
        double r27681 = x;
        double r27682 = cbrt(r27681);
        double r27683 = r27682 * r27682;
        double r27684 = cbrt(r27679);
        double r27685 = r27684 * r27684;
        double r27686 = r27683 / r27685;
        double r27687 = r27682 / r27684;
        double r27688 = z;
        double r27689 = r27678 - r27688;
        double r27690 = r27687 * r27689;
        double r27691 = r27686 * r27690;
        double r27692 = fma(r27677, r27680, r27691);
        double r27693 = fabs(r27692);
        return r27693;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Derivation

  1. Initial program 1.7

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

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

    \[\leadsto \left|\color{blue}{\mathsf{fma}\left(4, \frac{1}{y}, \frac{x}{y} \cdot \left(1 - z\right)\right)}\right|\]
  4. Using strategy rm
  5. Applied add-cube-cbrt2.3

    \[\leadsto \left|\mathsf{fma}\left(4, \frac{1}{y}, \frac{x}{\color{blue}{\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \sqrt[3]{y}}} \cdot \left(1 - z\right)\right)\right|\]
  6. Applied add-cube-cbrt2.5

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

    \[\leadsto \left|\mathsf{fma}\left(4, \frac{1}{y}, \color{blue}{\left(\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{\sqrt[3]{x}}{\sqrt[3]{y}}\right)} \cdot \left(1 - z\right)\right)\right|\]
  8. Applied associate-*l*1.0

    \[\leadsto \left|\mathsf{fma}\left(4, \frac{1}{y}, \color{blue}{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}} \cdot \left(1 - z\right)\right)}\right)\right|\]
  9. Final simplification1.0

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

Reproduce

herbie shell --seed 2020024 +o rules:numerics
(FPCore (x y z)
  :name "fabs fraction 1"
  :precision binary64
  (fabs (- (/ (+ x 4) y) (* (/ x y) z))))