Average Error: 1.7 → 0.1
Time: 26.2s
Precision: 64
\[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
\[\begin{array}{l} \mathbf{if}\;x \le -6.802828374588185734214273309161669089917 \cdot 10^{-6}:\\ \;\;\;\;\left|\frac{4 + x}{y} - x \cdot \frac{z}{y}\right|\\ \mathbf{elif}\;x \le 1.911097105881180336510542685795471779445 \cdot 10^{-21}:\\ \;\;\;\;\left|\frac{\left(4 + x\right) - z \cdot x}{y}\right|\\ \mathbf{else}:\\ \;\;\;\;\left|\frac{x}{y} + \left(\frac{4}{y} - \frac{x}{\frac{y}{z}}\right)\right|\\ \end{array}\]
\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|
\begin{array}{l}
\mathbf{if}\;x \le -6.802828374588185734214273309161669089917 \cdot 10^{-6}:\\
\;\;\;\;\left|\frac{4 + x}{y} - x \cdot \frac{z}{y}\right|\\

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

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

\end{array}
double f(double x, double y, double z) {
        double r1105875 = x;
        double r1105876 = 4.0;
        double r1105877 = r1105875 + r1105876;
        double r1105878 = y;
        double r1105879 = r1105877 / r1105878;
        double r1105880 = r1105875 / r1105878;
        double r1105881 = z;
        double r1105882 = r1105880 * r1105881;
        double r1105883 = r1105879 - r1105882;
        double r1105884 = fabs(r1105883);
        return r1105884;
}

double f(double x, double y, double z) {
        double r1105885 = x;
        double r1105886 = -6.802828374588186e-06;
        bool r1105887 = r1105885 <= r1105886;
        double r1105888 = 4.0;
        double r1105889 = r1105888 + r1105885;
        double r1105890 = y;
        double r1105891 = r1105889 / r1105890;
        double r1105892 = z;
        double r1105893 = r1105892 / r1105890;
        double r1105894 = r1105885 * r1105893;
        double r1105895 = r1105891 - r1105894;
        double r1105896 = fabs(r1105895);
        double r1105897 = 1.9110971058811803e-21;
        bool r1105898 = r1105885 <= r1105897;
        double r1105899 = r1105892 * r1105885;
        double r1105900 = r1105889 - r1105899;
        double r1105901 = r1105900 / r1105890;
        double r1105902 = fabs(r1105901);
        double r1105903 = r1105885 / r1105890;
        double r1105904 = r1105888 / r1105890;
        double r1105905 = r1105890 / r1105892;
        double r1105906 = r1105885 / r1105905;
        double r1105907 = r1105904 - r1105906;
        double r1105908 = r1105903 + r1105907;
        double r1105909 = fabs(r1105908);
        double r1105910 = r1105898 ? r1105902 : r1105909;
        double r1105911 = r1105887 ? r1105896 : r1105910;
        return r1105911;
}

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 < -6.802828374588186e-06

    1. Initial program 0.1

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

      \[\leadsto \left|\frac{x + 4}{y} - \color{blue}{\left(x \cdot \frac{1}{y}\right)} \cdot z\right|\]
    4. Applied associate-*l*0.2

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

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

    if -6.802828374588186e-06 < x < 1.9110971058811803e-21

    1. Initial program 2.8

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

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

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

    if 1.9110971058811803e-21 < 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.2

      \[\leadsto \left|\frac{x + 4}{y} - \color{blue}{\left(x \cdot \frac{1}{y}\right)} \cdot z\right|\]
    4. Applied associate-*l*0.2

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

      \[\leadsto \left|\frac{x + 4}{y} - x \cdot \color{blue}{\frac{z}{y}}\right|\]
    6. Taylor expanded around 0 7.7

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -6.802828374588185734214273309161669089917 \cdot 10^{-6}:\\ \;\;\;\;\left|\frac{4 + x}{y} - x \cdot \frac{z}{y}\right|\\ \mathbf{elif}\;x \le 1.911097105881180336510542685795471779445 \cdot 10^{-21}:\\ \;\;\;\;\left|\frac{\left(4 + x\right) - z \cdot x}{y}\right|\\ \mathbf{else}:\\ \;\;\;\;\left|\frac{x}{y} + \left(\frac{4}{y} - \frac{x}{\frac{y}{z}}\right)\right|\\ \end{array}\]

Reproduce

herbie shell --seed 2019168 
(FPCore (x y z)
  :name "fabs fraction 1"
  (fabs (- (/ (+ x 4.0) y) (* (/ x y) z))))