Average Error: 1.5 → 0.4
Time: 15.5s
Precision: 64
\[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
\[\begin{array}{l} \mathbf{if}\;x \le -1.109110258294614752055774941493075991437 \cdot 10^{97}:\\ \;\;\;\;\left|\frac{1}{\frac{y}{x + 4}} - \frac{z}{\frac{y}{x}}\right|\\ \mathbf{elif}\;x \le 4.00953015364486885541650984422639355434 \cdot 10^{48}:\\ \;\;\;\;\left|\frac{\left(x + 4\right) - x \cdot z}{y}\right|\\ \mathbf{else}:\\ \;\;\;\;\left|\left(x + 4\right) \cdot \frac{1}{y} - \frac{x}{y} \cdot z\right|\\ \end{array}\]
\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|
\begin{array}{l}
\mathbf{if}\;x \le -1.109110258294614752055774941493075991437 \cdot 10^{97}:\\
\;\;\;\;\left|\frac{1}{\frac{y}{x + 4}} - \frac{z}{\frac{y}{x}}\right|\\

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

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

\end{array}
double f(double x, double y, double z) {
        double r32867 = x;
        double r32868 = 4.0;
        double r32869 = r32867 + r32868;
        double r32870 = y;
        double r32871 = r32869 / r32870;
        double r32872 = r32867 / r32870;
        double r32873 = z;
        double r32874 = r32872 * r32873;
        double r32875 = r32871 - r32874;
        double r32876 = fabs(r32875);
        return r32876;
}

double f(double x, double y, double z) {
        double r32877 = x;
        double r32878 = -1.1091102582946148e+97;
        bool r32879 = r32877 <= r32878;
        double r32880 = 1.0;
        double r32881 = y;
        double r32882 = 4.0;
        double r32883 = r32877 + r32882;
        double r32884 = r32881 / r32883;
        double r32885 = r32880 / r32884;
        double r32886 = z;
        double r32887 = r32881 / r32877;
        double r32888 = r32886 / r32887;
        double r32889 = r32885 - r32888;
        double r32890 = fabs(r32889);
        double r32891 = 4.009530153644869e+48;
        bool r32892 = r32877 <= r32891;
        double r32893 = r32877 * r32886;
        double r32894 = r32883 - r32893;
        double r32895 = r32894 / r32881;
        double r32896 = fabs(r32895);
        double r32897 = r32880 / r32881;
        double r32898 = r32883 * r32897;
        double r32899 = r32877 / r32881;
        double r32900 = r32899 * r32886;
        double r32901 = r32898 - r32900;
        double r32902 = fabs(r32901);
        double r32903 = r32892 ? r32896 : r32902;
        double r32904 = r32879 ? r32890 : r32903;
        return r32904;
}

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 < -1.1091102582946148e+97

    1. Initial program 0.1

      \[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
    2. Using strategy rm
    3. Applied clear-num0.3

      \[\leadsto \left|\color{blue}{\frac{1}{\frac{y}{x + 4}}} - \frac{x}{y} \cdot z\right|\]
    4. Using strategy rm
    5. Applied pow10.3

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

      \[\leadsto \left|\frac{1}{\frac{y}{x + 4}} - \color{blue}{{\left(\frac{x}{y}\right)}^{1}} \cdot {z}^{1}\right|\]
    7. Applied pow-prod-down0.3

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

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

    if -1.1091102582946148e+97 < x < 4.009530153644869e+48

    1. Initial program 2.0

      \[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
    2. Using strategy rm
    3. Applied associate-*l/0.5

      \[\leadsto \left|\frac{x + 4}{y} - \color{blue}{\frac{x \cdot z}{y}}\right|\]
    4. Applied sub-div0.5

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

    if 4.009530153644869e+48 < x

    1. Initial program 0.1

      \[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
    2. Using strategy rm
    3. Applied div-inv0.3

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

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

Reproduce

herbie shell --seed 2019303 
(FPCore (x y z)
  :name "fabs fraction 1"
  :precision binary64
  (fabs (- (/ (+ x 4) y) (* (/ x y) z))))