Average Error: 1.5 → 0.3
Time: 7.1m
Precision: 64
\[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
\[\begin{array}{l} \mathbf{if}\;x \le -4.795736430740204 \cdot 10^{-53}:\\ \;\;\;\;\left|\frac{4 + x}{y} - \frac{z}{\frac{y}{x}}\right|\\ \mathbf{elif}\;x \le 1.7425061446232146 \cdot 10^{-95}:\\ \;\;\;\;\left|\frac{4 + x}{y} - \left(z \cdot x\right) \cdot \frac{1}{y}\right|\\ \mathbf{else}:\\ \;\;\;\;\left|\frac{4 + x}{y} - \frac{z}{y} \cdot x\right|\\ \end{array}\]
\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|
\begin{array}{l}
\mathbf{if}\;x \le -4.795736430740204 \cdot 10^{-53}:\\
\;\;\;\;\left|\frac{4 + x}{y} - \frac{z}{\frac{y}{x}}\right|\\

\mathbf{elif}\;x \le 1.7425061446232146 \cdot 10^{-95}:\\
\;\;\;\;\left|\frac{4 + x}{y} - \left(z \cdot x\right) \cdot \frac{1}{y}\right|\\

\mathbf{else}:\\
\;\;\;\;\left|\frac{4 + x}{y} - \frac{z}{y} \cdot x\right|\\

\end{array}
double f(double x, double y, double z) {
        double r17789942 = x;
        double r17789943 = 4.0;
        double r17789944 = r17789942 + r17789943;
        double r17789945 = y;
        double r17789946 = r17789944 / r17789945;
        double r17789947 = r17789942 / r17789945;
        double r17789948 = z;
        double r17789949 = r17789947 * r17789948;
        double r17789950 = r17789946 - r17789949;
        double r17789951 = fabs(r17789950);
        return r17789951;
}

double f(double x, double y, double z) {
        double r17789952 = x;
        double r17789953 = -4.795736430740204e-53;
        bool r17789954 = r17789952 <= r17789953;
        double r17789955 = 4.0;
        double r17789956 = r17789955 + r17789952;
        double r17789957 = y;
        double r17789958 = r17789956 / r17789957;
        double r17789959 = z;
        double r17789960 = r17789957 / r17789952;
        double r17789961 = r17789959 / r17789960;
        double r17789962 = r17789958 - r17789961;
        double r17789963 = fabs(r17789962);
        double r17789964 = 1.7425061446232146e-95;
        bool r17789965 = r17789952 <= r17789964;
        double r17789966 = r17789959 * r17789952;
        double r17789967 = 1.0;
        double r17789968 = r17789967 / r17789957;
        double r17789969 = r17789966 * r17789968;
        double r17789970 = r17789958 - r17789969;
        double r17789971 = fabs(r17789970);
        double r17789972 = r17789959 / r17789957;
        double r17789973 = r17789972 * r17789952;
        double r17789974 = r17789958 - r17789973;
        double r17789975 = fabs(r17789974);
        double r17789976 = r17789965 ? r17789971 : r17789975;
        double r17789977 = r17789954 ? r17789963 : r17789976;
        return r17789977;
}

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 x < -4.795736430740204e-53

    1. Initial program 0.3

      \[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
    2. Using strategy rm
    3. Applied *-un-lft-identity0.3

      \[\leadsto \left|\frac{x + 4}{\color{blue}{1 \cdot y}} - \frac{x}{y} \cdot z\right|\]
    4. Applied add-cube-cbrt1.0

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

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

      \[\leadsto \left|\color{blue}{(\left(\frac{\sqrt[3]{x + 4} \cdot \sqrt[3]{x + 4}}{1}\right) \cdot \left(\frac{\sqrt[3]{x + 4}}{y}\right) + \left(-z \cdot \frac{x}{y}\right))_* + (\left(-z\right) \cdot \left(\frac{x}{y}\right) + \left(z \cdot \frac{x}{y}\right))_*}\right|\]
    7. Simplified0.3

      \[\leadsto \left|\color{blue}{\left(\frac{4 + x}{y} - \frac{z}{\frac{y}{x}}\right)} + (\left(-z\right) \cdot \left(\frac{x}{y}\right) + \left(z \cdot \frac{x}{y}\right))_*\right|\]
    8. Simplified0.3

      \[\leadsto \left|\left(\frac{4 + x}{y} - \frac{z}{\frac{y}{x}}\right) + \color{blue}{0}\right|\]

    if -4.795736430740204e-53 < x < 1.7425061446232146e-95

    1. Initial program 2.6

      \[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
    2. Using strategy rm
    3. Applied *-un-lft-identity2.6

      \[\leadsto \left|\frac{x + 4}{\color{blue}{1 \cdot y}} - \frac{x}{y} \cdot z\right|\]
    4. Applied add-cube-cbrt3.6

      \[\leadsto \left|\frac{\color{blue}{\left(\sqrt[3]{x + 4} \cdot \sqrt[3]{x + 4}\right) \cdot \sqrt[3]{x + 4}}}{1 \cdot y} - \frac{x}{y} \cdot z\right|\]
    5. Applied times-frac3.7

      \[\leadsto \left|\color{blue}{\frac{\sqrt[3]{x + 4} \cdot \sqrt[3]{x + 4}}{1} \cdot \frac{\sqrt[3]{x + 4}}{y}} - \frac{x}{y} \cdot z\right|\]
    6. Applied prod-diff3.7

      \[\leadsto \left|\color{blue}{(\left(\frac{\sqrt[3]{x + 4} \cdot \sqrt[3]{x + 4}}{1}\right) \cdot \left(\frac{\sqrt[3]{x + 4}}{y}\right) + \left(-z \cdot \frac{x}{y}\right))_* + (\left(-z\right) \cdot \left(\frac{x}{y}\right) + \left(z \cdot \frac{x}{y}\right))_*}\right|\]
    7. Simplified2.8

      \[\leadsto \left|\color{blue}{\left(\frac{4 + x}{y} - \frac{z}{\frac{y}{x}}\right)} + (\left(-z\right) \cdot \left(\frac{x}{y}\right) + \left(z \cdot \frac{x}{y}\right))_*\right|\]
    8. Simplified2.8

      \[\leadsto \left|\left(\frac{4 + x}{y} - \frac{z}{\frac{y}{x}}\right) + \color{blue}{0}\right|\]
    9. Using strategy rm
    10. Applied div-inv2.8

      \[\leadsto \left|\left(\frac{4 + x}{y} - \frac{z}{\color{blue}{y \cdot \frac{1}{x}}}\right) + 0\right|\]
    11. Applied *-un-lft-identity2.8

      \[\leadsto \left|\left(\frac{4 + x}{y} - \frac{\color{blue}{1 \cdot z}}{y \cdot \frac{1}{x}}\right) + 0\right|\]
    12. Applied times-frac0.1

      \[\leadsto \left|\left(\frac{4 + x}{y} - \color{blue}{\frac{1}{y} \cdot \frac{z}{\frac{1}{x}}}\right) + 0\right|\]
    13. Simplified0.1

      \[\leadsto \left|\left(\frac{4 + x}{y} - \frac{1}{y} \cdot \color{blue}{\left(z \cdot x\right)}\right) + 0\right|\]

    if 1.7425061446232146e-95 < x

    1. Initial program 0.6

      \[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
    2. Using strategy rm
    3. Applied *-un-lft-identity0.6

      \[\leadsto \left|\frac{x + 4}{\color{blue}{1 \cdot y}} - \frac{x}{y} \cdot z\right|\]
    4. Applied add-cube-cbrt1.4

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

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

      \[\leadsto \left|\color{blue}{(\left(\frac{\sqrt[3]{x + 4} \cdot \sqrt[3]{x + 4}}{1}\right) \cdot \left(\frac{\sqrt[3]{x + 4}}{y}\right) + \left(-z \cdot \frac{x}{y}\right))_* + (\left(-z\right) \cdot \left(\frac{x}{y}\right) + \left(z \cdot \frac{x}{y}\right))_*}\right|\]
    7. Simplified0.7

      \[\leadsto \left|\color{blue}{\left(\frac{4 + x}{y} - \frac{z}{\frac{y}{x}}\right)} + (\left(-z\right) \cdot \left(\frac{x}{y}\right) + \left(z \cdot \frac{x}{y}\right))_*\right|\]
    8. Simplified0.7

      \[\leadsto \left|\left(\frac{4 + x}{y} - \frac{z}{\frac{y}{x}}\right) + \color{blue}{0}\right|\]
    9. Using strategy rm
    10. Applied associate-/r/0.8

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -4.795736430740204 \cdot 10^{-53}:\\ \;\;\;\;\left|\frac{4 + x}{y} - \frac{z}{\frac{y}{x}}\right|\\ \mathbf{elif}\;x \le 1.7425061446232146 \cdot 10^{-95}:\\ \;\;\;\;\left|\frac{4 + x}{y} - \left(z \cdot x\right) \cdot \frac{1}{y}\right|\\ \mathbf{else}:\\ \;\;\;\;\left|\frac{4 + x}{y} - \frac{z}{y} \cdot x\right|\\ \end{array}\]

Reproduce

herbie shell --seed 2019119 +o rules:numerics
(FPCore (x y z)
  :name "fabs fraction 1"
  (fabs (- (/ (+ x 4) y) (* (/ x y) z))))