Average Error: 0.4 → 0.5
Time: 24.1s
Precision: 64
\[x + \left(\left(y - x\right) \cdot 6.0\right) \cdot \left(\frac{2.0}{3.0} - z\right)\]
\[\mathsf{fma}\left(\sqrt[3]{x} \cdot \sqrt[3]{x}, \sqrt[3]{x}, \left(\frac{2.0}{3.0} - z\right) \cdot \left(\left(y - x\right) \cdot 6.0\right)\right)\]
x + \left(\left(y - x\right) \cdot 6.0\right) \cdot \left(\frac{2.0}{3.0} - z\right)
\mathsf{fma}\left(\sqrt[3]{x} \cdot \sqrt[3]{x}, \sqrt[3]{x}, \left(\frac{2.0}{3.0} - z\right) \cdot \left(\left(y - x\right) \cdot 6.0\right)\right)
double f(double x, double y, double z) {
        double r11253708 = x;
        double r11253709 = y;
        double r11253710 = r11253709 - r11253708;
        double r11253711 = 6.0;
        double r11253712 = r11253710 * r11253711;
        double r11253713 = 2.0;
        double r11253714 = 3.0;
        double r11253715 = r11253713 / r11253714;
        double r11253716 = z;
        double r11253717 = r11253715 - r11253716;
        double r11253718 = r11253712 * r11253717;
        double r11253719 = r11253708 + r11253718;
        return r11253719;
}

double f(double x, double y, double z) {
        double r11253720 = x;
        double r11253721 = cbrt(r11253720);
        double r11253722 = r11253721 * r11253721;
        double r11253723 = 2.0;
        double r11253724 = 3.0;
        double r11253725 = r11253723 / r11253724;
        double r11253726 = z;
        double r11253727 = r11253725 - r11253726;
        double r11253728 = y;
        double r11253729 = r11253728 - r11253720;
        double r11253730 = 6.0;
        double r11253731 = r11253729 * r11253730;
        double r11253732 = r11253727 * r11253731;
        double r11253733 = fma(r11253722, r11253721, r11253732);
        return r11253733;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Derivation

  1. Initial program 0.4

    \[x + \left(\left(y - x\right) \cdot 6.0\right) \cdot \left(\frac{2.0}{3.0} - z\right)\]
  2. Using strategy rm
  3. Applied add-cube-cbrt0.5

    \[\leadsto \color{blue}{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \sqrt[3]{x}} + \left(\left(y - x\right) \cdot 6.0\right) \cdot \left(\frac{2.0}{3.0} - z\right)\]
  4. Applied fma-def0.5

    \[\leadsto \color{blue}{\mathsf{fma}\left(\sqrt[3]{x} \cdot \sqrt[3]{x}, \sqrt[3]{x}, \left(\left(y - x\right) \cdot 6.0\right) \cdot \left(\frac{2.0}{3.0} - z\right)\right)}\]
  5. Final simplification0.5

    \[\leadsto \mathsf{fma}\left(\sqrt[3]{x} \cdot \sqrt[3]{x}, \sqrt[3]{x}, \left(\frac{2.0}{3.0} - z\right) \cdot \left(\left(y - x\right) \cdot 6.0\right)\right)\]

Reproduce

herbie shell --seed 2019163 +o rules:numerics
(FPCore (x y z)
  :name "Data.Colour.RGBSpace.HSL:hsl from colour-2.3.3, D"
  (+ x (* (* (- y x) 6.0) (- (/ 2.0 3.0) z))))