Average Error: 1.4 → 0.7
Time: 3.0s
Precision: 64
\[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
\[\left|\mathsf{fma}\left(x + 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 z\right)\right)\right|\]
\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|
\left|\mathsf{fma}\left(x + 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 z\right)\right)\right|
double f(double x, double y, double z) {
        double r30258 = x;
        double r30259 = 4.0;
        double r30260 = r30258 + r30259;
        double r30261 = y;
        double r30262 = r30260 / r30261;
        double r30263 = r30258 / r30261;
        double r30264 = z;
        double r30265 = r30263 * r30264;
        double r30266 = r30262 - r30265;
        double r30267 = fabs(r30266);
        return r30267;
}

double f(double x, double y, double z) {
        double r30268 = x;
        double r30269 = 4.0;
        double r30270 = r30268 + r30269;
        double r30271 = 1.0;
        double r30272 = y;
        double r30273 = r30271 / r30272;
        double r30274 = cbrt(r30268);
        double r30275 = r30274 * r30274;
        double r30276 = cbrt(r30272);
        double r30277 = r30276 * r30276;
        double r30278 = r30275 / r30277;
        double r30279 = r30274 / r30276;
        double r30280 = z;
        double r30281 = r30279 * r30280;
        double r30282 = r30278 * r30281;
        double r30283 = -r30282;
        double r30284 = fma(r30270, r30273, r30283);
        double r30285 = fabs(r30284);
        return r30285;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Derivation

  1. Initial program 1.4

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

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

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

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

    \[\leadsto \left|\mathsf{fma}\left(x + 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 z\right)\right|\]
  8. Applied times-frac1.8

    \[\leadsto \left|\mathsf{fma}\left(x + 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 z\right)\right|\]
  9. Applied associate-*l*0.7

    \[\leadsto \left|\mathsf{fma}\left(x + 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 z\right)}\right)\right|\]
  10. Final simplification0.7

    \[\leadsto \left|\mathsf{fma}\left(x + 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 z\right)\right)\right|\]

Reproduce

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