Average Error: 1.6 → 1.6
Time: 17.6s
Precision: 64
\[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
\[\left|\left(-\frac{x}{y}\right) \cdot z + \frac{4 + x}{y}\right|\]
\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|
\left|\left(-\frac{x}{y}\right) \cdot z + \frac{4 + x}{y}\right|
double f(double x, double y, double z) {
        double r1071656 = x;
        double r1071657 = 4.0;
        double r1071658 = r1071656 + r1071657;
        double r1071659 = y;
        double r1071660 = r1071658 / r1071659;
        double r1071661 = r1071656 / r1071659;
        double r1071662 = z;
        double r1071663 = r1071661 * r1071662;
        double r1071664 = r1071660 - r1071663;
        double r1071665 = fabs(r1071664);
        return r1071665;
}

double f(double x, double y, double z) {
        double r1071666 = x;
        double r1071667 = y;
        double r1071668 = r1071666 / r1071667;
        double r1071669 = -r1071668;
        double r1071670 = z;
        double r1071671 = r1071669 * r1071670;
        double r1071672 = 4.0;
        double r1071673 = r1071672 + r1071666;
        double r1071674 = r1071673 / r1071667;
        double r1071675 = r1071671 + r1071674;
        double r1071676 = fabs(r1071675);
        return r1071676;
}

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. Initial program 1.6

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

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

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

Reproduce

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