Average Error: 1.6 → 3.4
Time: 14.8s
Precision: 64
\[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
\[\left|\frac{x + 4}{y} - x \cdot \frac{z}{y}\right|\]
\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|
\left|\frac{x + 4}{y} - x \cdot \frac{z}{y}\right|
double f(double x, double y, double z) {
        double r40728 = x;
        double r40729 = 4.0;
        double r40730 = r40728 + r40729;
        double r40731 = y;
        double r40732 = r40730 / r40731;
        double r40733 = r40728 / r40731;
        double r40734 = z;
        double r40735 = r40733 * r40734;
        double r40736 = r40732 - r40735;
        double r40737 = fabs(r40736);
        return r40737;
}

double f(double x, double y, double z) {
        double r40738 = x;
        double r40739 = 4.0;
        double r40740 = r40738 + r40739;
        double r40741 = y;
        double r40742 = r40740 / r40741;
        double r40743 = z;
        double r40744 = r40743 / r40741;
        double r40745 = r40738 * r40744;
        double r40746 = r40742 - r40745;
        double r40747 = fabs(r40746);
        return r40747;
}

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 2 regimes
  2. if y < -1.3888570802766273e-10 or 2.5573295651290014e-94 < y

    1. Initial program 2.4

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

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

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

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

    if -1.3888570802766273e-10 < y < 2.5573295651290014e-94

    1. Initial program 0.1

      \[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
    2. Taylor expanded around 0 0.1

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

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

Reproduce

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