Average Error: 0.4 → 0.2
Time: 13.9s
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 \frac{2}{3}, x\right) + \left(\left(y - x\right) \cdot 6\right) \cdot \left(-z\right)\]
x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)
\mathsf{fma}\left(y - x, 6 \cdot \frac{2}{3}, x\right) + \left(\left(y - x\right) \cdot 6\right) \cdot \left(-z\right)
double f(double x, double y, double z) {
        double r227923 = x;
        double r227924 = y;
        double r227925 = r227924 - r227923;
        double r227926 = 6.0;
        double r227927 = r227925 * r227926;
        double r227928 = 2.0;
        double r227929 = 3.0;
        double r227930 = r227928 / r227929;
        double r227931 = z;
        double r227932 = r227930 - r227931;
        double r227933 = r227927 * r227932;
        double r227934 = r227923 + r227933;
        return r227934;
}

double f(double x, double y, double z) {
        double r227935 = y;
        double r227936 = x;
        double r227937 = r227935 - r227936;
        double r227938 = 6.0;
        double r227939 = 2.0;
        double r227940 = 3.0;
        double r227941 = r227939 / r227940;
        double r227942 = r227938 * r227941;
        double r227943 = fma(r227937, r227942, r227936);
        double r227944 = r227937 * r227938;
        double r227945 = z;
        double r227946 = -r227945;
        double r227947 = r227944 * r227946;
        double r227948 = r227943 + r227947;
        return r227948;
}

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. Using strategy rm
  3. Applied sub-neg0.4

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

    \[\leadsto x + \color{blue}{\left(\left(\left(y - x\right) \cdot 6\right) \cdot \frac{2}{3} + \left(\left(y - x\right) \cdot 6\right) \cdot \left(-z\right)\right)}\]
  5. Applied associate-+r+0.4

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

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

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

Reproduce

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