Average Error: 0.4 → 0.2
Time: 4.2s
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 r202436 = x;
        double r202437 = y;
        double r202438 = r202437 - r202436;
        double r202439 = 6.0;
        double r202440 = r202438 * r202439;
        double r202441 = 2.0;
        double r202442 = 3.0;
        double r202443 = r202441 / r202442;
        double r202444 = z;
        double r202445 = r202443 - r202444;
        double r202446 = r202440 * r202445;
        double r202447 = r202436 + r202446;
        return r202447;
}

double f(double x, double y, double z) {
        double r202448 = y;
        double r202449 = x;
        double r202450 = r202448 - r202449;
        double r202451 = 6.0;
        double r202452 = 2.0;
        double r202453 = 3.0;
        double r202454 = r202452 / r202453;
        double r202455 = sqrt(r202454);
        double r202456 = z;
        double r202457 = -r202456;
        double r202458 = fma(r202455, r202455, r202457);
        double r202459 = r202451 * r202458;
        double r202460 = fma(r202450, r202459, r202449);
        return r202460;
}

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