Average Error: 0.4 → 0.2
Time: 26.7s
Precision: 64
\[x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)\]
\[\left(y - x\right) \cdot \left(6 \cdot \left(\left(\frac{\frac{2}{\sqrt{3}}}{\sqrt{3}} - z\right) + \mathsf{fma}\left(z, -1, z\right)\right)\right) + x\]
x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)
\left(y - x\right) \cdot \left(6 \cdot \left(\left(\frac{\frac{2}{\sqrt{3}}}{\sqrt{3}} - z\right) + \mathsf{fma}\left(z, -1, z\right)\right)\right) + x
double f(double x, double y, double z) {
        double r263487 = x;
        double r263488 = y;
        double r263489 = r263488 - r263487;
        double r263490 = 6.0;
        double r263491 = r263489 * r263490;
        double r263492 = 2.0;
        double r263493 = 3.0;
        double r263494 = r263492 / r263493;
        double r263495 = z;
        double r263496 = r263494 - r263495;
        double r263497 = r263491 * r263496;
        double r263498 = r263487 + r263497;
        return r263498;
}

double f(double x, double y, double z) {
        double r263499 = y;
        double r263500 = x;
        double r263501 = r263499 - r263500;
        double r263502 = 6.0;
        double r263503 = 2.0;
        double r263504 = 3.0;
        double r263505 = sqrt(r263504);
        double r263506 = r263503 / r263505;
        double r263507 = r263506 / r263505;
        double r263508 = z;
        double r263509 = r263507 - r263508;
        double r263510 = -1.0;
        double r263511 = fma(r263508, r263510, r263508);
        double r263512 = r263509 + r263511;
        double r263513 = r263502 * r263512;
        double r263514 = r263501 * r263513;
        double r263515 = r263514 + r263500;
        return r263515;
}

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 fma-udef0.2

    \[\leadsto \color{blue}{\left(y - x\right) \cdot \left(6 \cdot \left(\frac{2}{3} - z\right)\right) + x}\]
  5. Using strategy rm
  6. Applied add-cube-cbrt0.6

    \[\leadsto \left(y - x\right) \cdot \left(6 \cdot \left(\frac{2}{3} - \color{blue}{\left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \sqrt[3]{z}}\right)\right) + x\]
  7. Applied add-sqr-sqrt0.6

    \[\leadsto \left(y - x\right) \cdot \left(6 \cdot \left(\frac{2}{\color{blue}{\sqrt{3} \cdot \sqrt{3}}} - \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \sqrt[3]{z}\right)\right) + x\]
  8. Applied *-un-lft-identity0.6

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

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

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

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

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

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

Reproduce

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