Average Error: 0.4 → 0.4
Time: 19.4s
Precision: 64
\[x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)\]
\[\mathsf{fma}\left(\sqrt[3]{x} \cdot \sqrt[3]{x}, \sqrt[3]{x}, \left(6 \cdot \left(\frac{2}{3} - z\right)\right) \cdot \left(y - x\right)\right)\]
x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)
\mathsf{fma}\left(\sqrt[3]{x} \cdot \sqrt[3]{x}, \sqrt[3]{x}, \left(6 \cdot \left(\frac{2}{3} - z\right)\right) \cdot \left(y - x\right)\right)
double f(double x, double y, double z) {
        double r10351754 = x;
        double r10351755 = y;
        double r10351756 = r10351755 - r10351754;
        double r10351757 = 6.0;
        double r10351758 = r10351756 * r10351757;
        double r10351759 = 2.0;
        double r10351760 = 3.0;
        double r10351761 = r10351759 / r10351760;
        double r10351762 = z;
        double r10351763 = r10351761 - r10351762;
        double r10351764 = r10351758 * r10351763;
        double r10351765 = r10351754 + r10351764;
        return r10351765;
}

double f(double x, double y, double z) {
        double r10351766 = x;
        double r10351767 = cbrt(r10351766);
        double r10351768 = r10351767 * r10351767;
        double r10351769 = 6.0;
        double r10351770 = 2.0;
        double r10351771 = 3.0;
        double r10351772 = r10351770 / r10351771;
        double r10351773 = z;
        double r10351774 = r10351772 - r10351773;
        double r10351775 = r10351769 * r10351774;
        double r10351776 = y;
        double r10351777 = r10351776 - r10351766;
        double r10351778 = r10351775 * r10351777;
        double r10351779 = fma(r10351768, r10351767, r10351778);
        return r10351779;
}

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\right) \cdot \left(\frac{2}{3} - z\right)\]
  2. Using strategy rm
  3. Applied associate-*l*0.2

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

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

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

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

Reproduce

herbie shell --seed 2019192 +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))))