Average Error: 0.4 → 0.2
Time: 23.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 \mathsf{fma}\left(\sqrt{\frac{2}{3}}, \sqrt{\frac{2}{3}}, -z\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 \mathsf{fma}\left(\sqrt{\frac{2}{3}}, \sqrt{\frac{2}{3}}, -z\right), x\right)
double f(double x, double y, double z) {
        double r315828 = x;
        double r315829 = y;
        double r315830 = r315829 - r315828;
        double r315831 = 6.0;
        double r315832 = r315830 * r315831;
        double r315833 = 2.0;
        double r315834 = 3.0;
        double r315835 = r315833 / r315834;
        double r315836 = z;
        double r315837 = r315835 - r315836;
        double r315838 = r315832 * r315837;
        double r315839 = r315828 + r315838;
        return r315839;
}

double f(double x, double y, double z) {
        double r315840 = y;
        double r315841 = x;
        double r315842 = r315840 - r315841;
        double r315843 = 6.0;
        double r315844 = 2.0;
        double r315845 = 3.0;
        double r315846 = r315844 / r315845;
        double r315847 = sqrt(r315846);
        double r315848 = z;
        double r315849 = -r315848;
        double r315850 = fma(r315847, r315847, r315849);
        double r315851 = r315843 * r315850;
        double r315852 = fma(r315842, r315851, r315841);
        return r315852;
}

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-sqr-sqrt0.2

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

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

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

Reproduce

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