Average Error: 0.4 → 0.2
Time: 3.5s
Precision: 64
\[x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)\]
\[\mathsf{fma}\left(y - x, 6 \cdot \left(\left(1 \cdot {\left(\sqrt[3]{\frac{2}{3}}\right)}^{3} + \left(-z\right)\right) + \mathsf{fma}\left(-z, 1, z\right)\right), x\right)\]
x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)
\mathsf{fma}\left(y - x, 6 \cdot \left(\left(1 \cdot {\left(\sqrt[3]{\frac{2}{3}}\right)}^{3} + \left(-z\right)\right) + \mathsf{fma}\left(-z, 1, z\right)\right), x\right)
double f(double x, double y, double z) {
        double r274697 = x;
        double r274698 = y;
        double r274699 = r274698 - r274697;
        double r274700 = 6.0;
        double r274701 = r274699 * r274700;
        double r274702 = 2.0;
        double r274703 = 3.0;
        double r274704 = r274702 / r274703;
        double r274705 = z;
        double r274706 = r274704 - r274705;
        double r274707 = r274701 * r274706;
        double r274708 = r274697 + r274707;
        return r274708;
}

double f(double x, double y, double z) {
        double r274709 = y;
        double r274710 = x;
        double r274711 = r274709 - r274710;
        double r274712 = 6.0;
        double r274713 = 1.0;
        double r274714 = 2.0;
        double r274715 = 3.0;
        double r274716 = r274714 / r274715;
        double r274717 = cbrt(r274716);
        double r274718 = 3.0;
        double r274719 = pow(r274717, r274718);
        double r274720 = r274713 * r274719;
        double r274721 = z;
        double r274722 = -r274721;
        double r274723 = r274720 + r274722;
        double r274724 = fma(r274722, r274713, r274721);
        double r274725 = r274723 + r274724;
        double r274726 = r274712 * r274725;
        double r274727 = fma(r274711, r274726, r274710);
        return r274727;
}

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. Simplified0.2

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

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

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

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

    \[\leadsto \mathsf{fma}\left(y - x, 6 \cdot \left(\color{blue}{\left(1 \cdot {\left(\sqrt[3]{\frac{2}{3}}\right)}^{3} + \left(-z\right)\right)} + \mathsf{fma}\left(-\sqrt[3]{z}, \sqrt[3]{z} \cdot \sqrt[3]{z}, \sqrt[3]{z} \cdot \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right)\right)\right), x\right)\]
  8. Simplified0.2

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

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

Reproduce

herbie shell --seed 2020060 +o rules:numerics
(FPCore (x y z)
  :name "Data.Colour.RGBSpace.HSL:hsl from colour-2.3.3, D"
  :precision binary64
  (+ x (* (* (- y x) 6) (- (/ 2 3) z))))