Average Error: 1.6 → 1.6
Time: 3.5s
Precision: 64
\[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
\[\left|\left(4 \cdot \frac{1}{y} + \frac{x}{y}\right) - \frac{x}{y} \cdot z\right|\]
\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|
\left|\left(4 \cdot \frac{1}{y} + \frac{x}{y}\right) - \frac{x}{y} \cdot z\right|
double f(double x, double y, double z) {
        double r24947 = x;
        double r24948 = 4.0;
        double r24949 = r24947 + r24948;
        double r24950 = y;
        double r24951 = r24949 / r24950;
        double r24952 = r24947 / r24950;
        double r24953 = z;
        double r24954 = r24952 * r24953;
        double r24955 = r24951 - r24954;
        double r24956 = fabs(r24955);
        return r24956;
}

double f(double x, double y, double z) {
        double r24957 = 4.0;
        double r24958 = 1.0;
        double r24959 = y;
        double r24960 = r24958 / r24959;
        double r24961 = r24957 * r24960;
        double r24962 = x;
        double r24963 = r24962 / r24959;
        double r24964 = r24961 + r24963;
        double r24965 = z;
        double r24966 = r24963 * r24965;
        double r24967 = r24964 - r24966;
        double r24968 = fabs(r24967);
        return r24968;
}

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. Taylor expanded around 0 1.6

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

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

Reproduce

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