Average Error: 0.4 → 0.5
Time: 25.3s
Precision: 64
\[x + \left(\left(y - x\right) \cdot 6.0\right) \cdot \left(\frac{2.0}{3.0} - z\right)\]
\[\mathsf{fma}\left(\sqrt[3]{x} \cdot \sqrt[3]{x}, \sqrt[3]{x}, \left(\frac{2.0}{3.0} - z\right) \cdot \left(\left(y - x\right) \cdot 6.0\right)\right)\]
x + \left(\left(y - x\right) \cdot 6.0\right) \cdot \left(\frac{2.0}{3.0} - z\right)
\mathsf{fma}\left(\sqrt[3]{x} \cdot \sqrt[3]{x}, \sqrt[3]{x}, \left(\frac{2.0}{3.0} - z\right) \cdot \left(\left(y - x\right) \cdot 6.0\right)\right)
double f(double x, double y, double z) {
        double r13386483 = x;
        double r13386484 = y;
        double r13386485 = r13386484 - r13386483;
        double r13386486 = 6.0;
        double r13386487 = r13386485 * r13386486;
        double r13386488 = 2.0;
        double r13386489 = 3.0;
        double r13386490 = r13386488 / r13386489;
        double r13386491 = z;
        double r13386492 = r13386490 - r13386491;
        double r13386493 = r13386487 * r13386492;
        double r13386494 = r13386483 + r13386493;
        return r13386494;
}

double f(double x, double y, double z) {
        double r13386495 = x;
        double r13386496 = cbrt(r13386495);
        double r13386497 = r13386496 * r13386496;
        double r13386498 = 2.0;
        double r13386499 = 3.0;
        double r13386500 = r13386498 / r13386499;
        double r13386501 = z;
        double r13386502 = r13386500 - r13386501;
        double r13386503 = y;
        double r13386504 = r13386503 - r13386495;
        double r13386505 = 6.0;
        double r13386506 = r13386504 * r13386505;
        double r13386507 = r13386502 * r13386506;
        double r13386508 = fma(r13386497, r13386496, r13386507);
        return r13386508;
}

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.0\right) \cdot \left(\frac{2.0}{3.0} - z\right)\]
  2. Using strategy rm
  3. Applied add-cube-cbrt0.5

    \[\leadsto \color{blue}{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \sqrt[3]{x}} + \left(\left(y - x\right) \cdot 6.0\right) \cdot \left(\frac{2.0}{3.0} - z\right)\]
  4. Applied fma-def0.5

    \[\leadsto \color{blue}{\mathsf{fma}\left(\sqrt[3]{x} \cdot \sqrt[3]{x}, \sqrt[3]{x}, \left(\left(y - x\right) \cdot 6.0\right) \cdot \left(\frac{2.0}{3.0} - z\right)\right)}\]
  5. Final simplification0.5

    \[\leadsto \mathsf{fma}\left(\sqrt[3]{x} \cdot \sqrt[3]{x}, \sqrt[3]{x}, \left(\frac{2.0}{3.0} - z\right) \cdot \left(\left(y - x\right) \cdot 6.0\right)\right)\]

Reproduce

herbie shell --seed 2019163 +o rules:numerics
(FPCore (x y z)
  :name "Data.Colour.RGBSpace.HSL:hsl from colour-2.3.3, D"
  (+ x (* (* (- y x) 6.0) (- (/ 2.0 3.0) z))))