Average Error: 0.4 → 0.4
Time: 3.8s
Precision: 64
\[x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)\]
\[x + \left(\left(y - x\right) \cdot 6\right) \cdot \mathsf{fma}\left(\sqrt{\frac{2}{3}}, \sqrt{\frac{2}{3}}, -z\right)\]
x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)
x + \left(\left(y - x\right) \cdot 6\right) \cdot \mathsf{fma}\left(\sqrt{\frac{2}{3}}, \sqrt{\frac{2}{3}}, -z\right)
double f(double x, double y, double z) {
        double r255150 = x;
        double r255151 = y;
        double r255152 = r255151 - r255150;
        double r255153 = 6.0;
        double r255154 = r255152 * r255153;
        double r255155 = 2.0;
        double r255156 = 3.0;
        double r255157 = r255155 / r255156;
        double r255158 = z;
        double r255159 = r255157 - r255158;
        double r255160 = r255154 * r255159;
        double r255161 = r255150 + r255160;
        return r255161;
}

double f(double x, double y, double z) {
        double r255162 = x;
        double r255163 = y;
        double r255164 = r255163 - r255162;
        double r255165 = 6.0;
        double r255166 = r255164 * r255165;
        double r255167 = 2.0;
        double r255168 = 3.0;
        double r255169 = r255167 / r255168;
        double r255170 = sqrt(r255169);
        double r255171 = z;
        double r255172 = -r255171;
        double r255173 = fma(r255170, r255170, r255172);
        double r255174 = r255166 * r255173;
        double r255175 = r255162 + r255174;
        return r255175;
}

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 add-sqr-sqrt0.4

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

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

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

Reproduce

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