Average Error: 21.3 → 21.3
Time: 1.0s
Precision: binary64
\[b + \frac{\left|b\right|}{b} \cdot \sqrt{b \cdot b - a}\]
\[b + \frac{\left|b\right|}{b} \cdot \sqrt{b \cdot b - a}\]
b + \frac{\left|b\right|}{b} \cdot \sqrt{b \cdot b - a}
b + \frac{\left|b\right|}{b} \cdot \sqrt{b \cdot b - a}
double code(double b, double a) {
	return ((double) (b + ((double) (((double) (((double) fabs(b)) / b)) * ((double) sqrt(((double) (((double) (b * b)) - a))))))));
}
double code(double b, double a) {
	return ((double) (b + ((double) (((double) (((double) fabs(b)) / b)) * ((double) sqrt(((double) (((double) (b * b)) - a))))))));
}

Error

Bits error versus b

Bits error versus a

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 21.3

    \[b + \frac{\left|b\right|}{b} \cdot \sqrt{b \cdot b - a}\]
  2. Final simplification21.3

    \[\leadsto b + \frac{\left|b\right|}{b} \cdot \sqrt{b \cdot b - a}\]

Reproduce

herbie shell --seed 2020152 
(FPCore (b a)
  :name "(+ b (* (/ (fabs b) b) (sqrt (- (* b b) a))))"
  :precision binary64
  (+ b (* (/ (fabs b) b) (sqrt (- (* b b) a)))))