Average Error: 0.4 → 0.2
Time: 3.8s
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 r200223 = x;
        double r200224 = y;
        double r200225 = r200224 - r200223;
        double r200226 = 6.0;
        double r200227 = r200225 * r200226;
        double r200228 = 2.0;
        double r200229 = 3.0;
        double r200230 = r200228 / r200229;
        double r200231 = z;
        double r200232 = r200230 - r200231;
        double r200233 = r200227 * r200232;
        double r200234 = r200223 + r200233;
        return r200234;
}

double f(double x, double y, double z) {
        double r200235 = y;
        double r200236 = x;
        double r200237 = r200235 - r200236;
        double r200238 = 6.0;
        double r200239 = 2.0;
        double r200240 = 3.0;
        double r200241 = r200239 / r200240;
        double r200242 = sqrt(r200241);
        double r200243 = z;
        double r200244 = -r200243;
        double r200245 = fma(r200242, r200242, r200244);
        double r200246 = r200238 * r200245;
        double r200247 = fma(r200237, r200246, r200236);
        return r200247;
}

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 2020089 +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))))