Average Error: 0.4 → 0.2
Time: 19.7s
Precision: 64
\[x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)\]
\[\mathsf{fma}\left(y - x, \frac{6}{3} \cdot 2 + 6 \cdot \left(-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, \frac{6}{3} \cdot 2 + 6 \cdot \left(-z\right), x\right)
double f(double x, double y, double z) {
        double r168446 = x;
        double r168447 = y;
        double r168448 = r168447 - r168446;
        double r168449 = 6.0;
        double r168450 = r168448 * r168449;
        double r168451 = 2.0;
        double r168452 = 3.0;
        double r168453 = r168451 / r168452;
        double r168454 = z;
        double r168455 = r168453 - r168454;
        double r168456 = r168450 * r168455;
        double r168457 = r168446 + r168456;
        return r168457;
}

double f(double x, double y, double z) {
        double r168458 = y;
        double r168459 = x;
        double r168460 = r168458 - r168459;
        double r168461 = 6.0;
        double r168462 = 3.0;
        double r168463 = r168461 / r168462;
        double r168464 = 2.0;
        double r168465 = r168463 * r168464;
        double r168466 = z;
        double r168467 = -r168466;
        double r168468 = r168461 * r168467;
        double r168469 = r168465 + r168468;
        double r168470 = fma(r168460, r168469, r168459);
        return r168470;
}

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 sub-neg0.2

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

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

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

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

Reproduce

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