Average Error: 0.4 → 0.4
Time: 1.5s
Precision: binary64
\[\frac{\left(b + a\right) + \frac{\frac{\left|f\right|}{f} \cdot \left(d - dp\right)}{1 + 3 \cdot \frac{\left|d\right|}{\left|dp\right|}}}{2}\]
\[\frac{\left(b + a\right) + \frac{\frac{\left|f\right|}{f} \cdot \left(d - dp\right)}{1 + 3 \cdot \frac{\left|d\right|}{\left|dp\right|}}}{2}\]
\frac{\left(b + a\right) + \frac{\frac{\left|f\right|}{f} \cdot \left(d - dp\right)}{1 + 3 \cdot \frac{\left|d\right|}{\left|dp\right|}}}{2}
\frac{\left(b + a\right) + \frac{\frac{\left|f\right|}{f} \cdot \left(d - dp\right)}{1 + 3 \cdot \frac{\left|d\right|}{\left|dp\right|}}}{2}
double code(double b, double a, double f, double d, double dp) {
	return ((double) (((double) (((double) (b + a)) + ((double) (((double) (((double) (((double) fabs(f)) / f)) * ((double) (d - dp)))) / ((double) (1.0 + ((double) (3.0 * ((double) (((double) fabs(d)) / ((double) fabs(dp)))))))))))) / 2.0));
}
double code(double b, double a, double f, double d, double dp) {
	return ((double) (((double) (((double) (b + a)) + ((double) (((double) (((double) (((double) fabs(f)) / f)) * ((double) (d - dp)))) / ((double) (1.0 + ((double) (3.0 * ((double) (((double) fabs(d)) / ((double) fabs(dp)))))))))))) / 2.0));
}

Error

Bits error versus b

Bits error versus a

Bits error versus f

Bits error versus d

Bits error versus dp

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.4

    \[\frac{\left(b + a\right) + \frac{\frac{\left|f\right|}{f} \cdot \left(d - dp\right)}{1 + 3 \cdot \frac{\left|d\right|}{\left|dp\right|}}}{2}\]
  2. Final simplification0.4

    \[\leadsto \frac{\left(b + a\right) + \frac{\frac{\left|f\right|}{f} \cdot \left(d - dp\right)}{1 + 3 \cdot \frac{\left|d\right|}{\left|dp\right|}}}{2}\]

Reproduce

herbie shell --seed 2020152 
(FPCore (b a f d dp)
  :name "(/ (+ (+ b a) (/ (* (/ (fabs f) f) (- d dp)) (+ 1.0 (* 3.0 (/ (fabs d) (fabs dp)))))) 2.0)"
  :precision binary64
  (/ (+ (+ b a) (/ (* (/ (fabs f) f) (- d dp)) (+ 1.0 (* 3.0 (/ (fabs d) (fabs dp)))))) 2.0))