Average Error: 0.1 → 0.0
Time: 24.1s
Precision: 64
\[1 + \frac{4 \cdot \left(\left(x + y \cdot 0.25\right) - z\right)}{y}\]
\[\mathsf{fma}\left(4, \mathsf{fma}\left(\sqrt[3]{0.25} \cdot \sqrt[3]{0.25}, \sqrt[3]{0.25}, -\frac{z - x}{y}\right), 1\right)\]
1 + \frac{4 \cdot \left(\left(x + y \cdot 0.25\right) - z\right)}{y}
\mathsf{fma}\left(4, \mathsf{fma}\left(\sqrt[3]{0.25} \cdot \sqrt[3]{0.25}, \sqrt[3]{0.25}, -\frac{z - x}{y}\right), 1\right)
double f(double x, double y, double z) {
        double r182711 = 1.0;
        double r182712 = 4.0;
        double r182713 = x;
        double r182714 = y;
        double r182715 = 0.25;
        double r182716 = r182714 * r182715;
        double r182717 = r182713 + r182716;
        double r182718 = z;
        double r182719 = r182717 - r182718;
        double r182720 = r182712 * r182719;
        double r182721 = r182720 / r182714;
        double r182722 = r182711 + r182721;
        return r182722;
}

double f(double x, double y, double z) {
        double r182723 = 4.0;
        double r182724 = 0.25;
        double r182725 = cbrt(r182724);
        double r182726 = r182725 * r182725;
        double r182727 = z;
        double r182728 = x;
        double r182729 = r182727 - r182728;
        double r182730 = y;
        double r182731 = r182729 / r182730;
        double r182732 = -r182731;
        double r182733 = fma(r182726, r182725, r182732);
        double r182734 = 1.0;
        double r182735 = fma(r182723, r182733, r182734);
        return r182735;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Derivation

  1. Initial program 0.1

    \[1 + \frac{4 \cdot \left(\left(x + y \cdot 0.25\right) - z\right)}{y}\]
  2. Simplified0.0

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

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

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

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

Reproduce

herbie shell --seed 2019199 +o rules:numerics
(FPCore (x y z)
  :name "Data.Array.Repa.Algorithms.ColorRamp:rampColorHotToCold from repa-algorithms-3.4.0.1, C"
  (+ 1.0 (/ (* 4.0 (- (+ x (* y 0.25)) z)) y)))