Average Error: 3.3 → 1.0
Time: 14.7s
Precision: 64
\[x \cdot \left(1.0 - y \cdot z\right)\]
\[\begin{array}{l} \mathbf{if}\;y \cdot z \le -1.745382629156709 \cdot 10^{+79}:\\ \;\;\;\;x \cdot 1.0 + \left(-z \cdot \left(x \cdot y\right)\right)\\ \mathbf{elif}\;y \cdot z \le 1.0054811471022471 \cdot 10^{+181}:\\ \;\;\;\;\sqrt[3]{y \cdot \left(-z\right)} \cdot \left(\left(\sqrt[3]{y \cdot \left(-z\right)} \cdot \sqrt[3]{y \cdot \left(-z\right)}\right) \cdot x\right) + x \cdot 1.0\\ \mathbf{else}:\\ \;\;\;\;x \cdot 1.0 + \left(-y \cdot \left(x \cdot z\right)\right)\\ \end{array}\]
x \cdot \left(1.0 - y \cdot z\right)
\begin{array}{l}
\mathbf{if}\;y \cdot z \le -1.745382629156709 \cdot 10^{+79}:\\
\;\;\;\;x \cdot 1.0 + \left(-z \cdot \left(x \cdot y\right)\right)\\

\mathbf{elif}\;y \cdot z \le 1.0054811471022471 \cdot 10^{+181}:\\
\;\;\;\;\sqrt[3]{y \cdot \left(-z\right)} \cdot \left(\left(\sqrt[3]{y \cdot \left(-z\right)} \cdot \sqrt[3]{y \cdot \left(-z\right)}\right) \cdot x\right) + x \cdot 1.0\\

\mathbf{else}:\\
\;\;\;\;x \cdot 1.0 + \left(-y \cdot \left(x \cdot z\right)\right)\\

\end{array}
double f(double x, double y, double z) {
        double r6608701 = x;
        double r6608702 = 1.0;
        double r6608703 = y;
        double r6608704 = z;
        double r6608705 = r6608703 * r6608704;
        double r6608706 = r6608702 - r6608705;
        double r6608707 = r6608701 * r6608706;
        return r6608707;
}

double f(double x, double y, double z) {
        double r6608708 = y;
        double r6608709 = z;
        double r6608710 = r6608708 * r6608709;
        double r6608711 = -1.745382629156709e+79;
        bool r6608712 = r6608710 <= r6608711;
        double r6608713 = x;
        double r6608714 = 1.0;
        double r6608715 = r6608713 * r6608714;
        double r6608716 = r6608713 * r6608708;
        double r6608717 = r6608709 * r6608716;
        double r6608718 = -r6608717;
        double r6608719 = r6608715 + r6608718;
        double r6608720 = 1.0054811471022471e+181;
        bool r6608721 = r6608710 <= r6608720;
        double r6608722 = -r6608709;
        double r6608723 = r6608708 * r6608722;
        double r6608724 = cbrt(r6608723);
        double r6608725 = r6608724 * r6608724;
        double r6608726 = r6608725 * r6608713;
        double r6608727 = r6608724 * r6608726;
        double r6608728 = r6608727 + r6608715;
        double r6608729 = r6608713 * r6608709;
        double r6608730 = r6608708 * r6608729;
        double r6608731 = -r6608730;
        double r6608732 = r6608715 + r6608731;
        double r6608733 = r6608721 ? r6608728 : r6608732;
        double r6608734 = r6608712 ? r6608719 : r6608733;
        return r6608734;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 3 regimes
  2. if (* y z) < -1.745382629156709e+79

    1. Initial program 12.3

      \[x \cdot \left(1.0 - y \cdot z\right)\]
    2. Using strategy rm
    3. Applied sub-neg12.3

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

      \[\leadsto \color{blue}{x \cdot 1.0 + x \cdot \left(-y \cdot z\right)}\]
    5. Using strategy rm
    6. Applied *-commutative12.3

      \[\leadsto x \cdot 1.0 + x \cdot \left(-\color{blue}{z \cdot y}\right)\]
    7. Applied distribute-lft-neg-in12.3

      \[\leadsto x \cdot 1.0 + x \cdot \color{blue}{\left(\left(-z\right) \cdot y\right)}\]
    8. Applied associate-*r*4.5

      \[\leadsto x \cdot 1.0 + \color{blue}{\left(x \cdot \left(-z\right)\right) \cdot y}\]
    9. Using strategy rm
    10. Applied *-commutative4.5

      \[\leadsto x \cdot 1.0 + \color{blue}{\left(\left(-z\right) \cdot x\right)} \cdot y\]
    11. Applied associate-*l*4.5

      \[\leadsto x \cdot 1.0 + \color{blue}{\left(-z\right) \cdot \left(x \cdot y\right)}\]

    if -1.745382629156709e+79 < (* y z) < 1.0054811471022471e+181

    1. Initial program 0.1

      \[x \cdot \left(1.0 - y \cdot z\right)\]
    2. Using strategy rm
    3. Applied sub-neg0.1

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

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

      \[\leadsto x \cdot 1.0 + x \cdot \color{blue}{\left(\left(\sqrt[3]{-y \cdot z} \cdot \sqrt[3]{-y \cdot z}\right) \cdot \sqrt[3]{-y \cdot z}\right)}\]
    7. Applied associate-*r*0.3

      \[\leadsto x \cdot 1.0 + \color{blue}{\left(x \cdot \left(\sqrt[3]{-y \cdot z} \cdot \sqrt[3]{-y \cdot z}\right)\right) \cdot \sqrt[3]{-y \cdot z}}\]

    if 1.0054811471022471e+181 < (* y z)

    1. Initial program 22.4

      \[x \cdot \left(1.0 - y \cdot z\right)\]
    2. Using strategy rm
    3. Applied sub-neg22.4

      \[\leadsto x \cdot \color{blue}{\left(1.0 + \left(-y \cdot z\right)\right)}\]
    4. Applied distribute-lft-in22.4

      \[\leadsto \color{blue}{x \cdot 1.0 + x \cdot \left(-y \cdot z\right)}\]
    5. Using strategy rm
    6. Applied *-commutative22.4

      \[\leadsto x \cdot 1.0 + x \cdot \left(-\color{blue}{z \cdot y}\right)\]
    7. Applied distribute-lft-neg-in22.4

      \[\leadsto x \cdot 1.0 + x \cdot \color{blue}{\left(\left(-z\right) \cdot y\right)}\]
    8. Applied associate-*r*1.7

      \[\leadsto x \cdot 1.0 + \color{blue}{\left(x \cdot \left(-z\right)\right) \cdot y}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification1.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \cdot z \le -1.745382629156709 \cdot 10^{+79}:\\ \;\;\;\;x \cdot 1.0 + \left(-z \cdot \left(x \cdot y\right)\right)\\ \mathbf{elif}\;y \cdot z \le 1.0054811471022471 \cdot 10^{+181}:\\ \;\;\;\;\sqrt[3]{y \cdot \left(-z\right)} \cdot \left(\left(\sqrt[3]{y \cdot \left(-z\right)} \cdot \sqrt[3]{y \cdot \left(-z\right)}\right) \cdot x\right) + x \cdot 1.0\\ \mathbf{else}:\\ \;\;\;\;x \cdot 1.0 + \left(-y \cdot \left(x \cdot z\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019158 
(FPCore (x y z)
  :name "Data.Colour.RGBSpace.HSV:hsv from colour-2.3.3, I"
  (* x (- 1.0 (* y z))))