Average Error: 37.9 → 37.9
Time: 1.9s
Precision: binary64
\[\frac{0.5}{\sqrt{\left(4 \cdot p\right) \cdot p + r \cdot r} \cdot \sqrt{0.5 \cdot \left(1 + \frac{r}{\sqrt{\left(4 \cdot p\right) \cdot p + r \cdot r}}\right)}}\]
\[\frac{0.5}{\sqrt{\left(4 \cdot p\right) \cdot p + r \cdot r} \cdot \sqrt{0.5 \cdot \left(1 + \frac{r}{\sqrt{\left(4 \cdot p\right) \cdot p + r \cdot r}}\right)}}\]
\frac{0.5}{\sqrt{\left(4 \cdot p\right) \cdot p + r \cdot r} \cdot \sqrt{0.5 \cdot \left(1 + \frac{r}{\sqrt{\left(4 \cdot p\right) \cdot p + r \cdot r}}\right)}}
\frac{0.5}{\sqrt{\left(4 \cdot p\right) \cdot p + r \cdot r} \cdot \sqrt{0.5 \cdot \left(1 + \frac{r}{\sqrt{\left(4 \cdot p\right) \cdot p + r \cdot r}}\right)}}
double code(double p, double r) {
	return ((double) (0.5 / ((double) (((double) sqrt(((double) (((double) (((double) (4.0 * p)) * p)) + ((double) (r * r)))))) * ((double) sqrt(((double) (0.5 * ((double) (1.0 + ((double) (r / ((double) sqrt(((double) (((double) (((double) (4.0 * p)) * p)) + ((double) (r * r))))))))))))))))));
}
double code(double p, double r) {
	return ((double) (0.5 / ((double) (((double) sqrt(((double) (((double) (((double) (4.0 * p)) * p)) + ((double) (r * r)))))) * ((double) sqrt(((double) (0.5 * ((double) (1.0 + ((double) (r / ((double) sqrt(((double) (((double) (((double) (4.0 * p)) * p)) + ((double) (r * r))))))))))))))))));
}

Error

Bits error versus p

Bits error versus r

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 37.9

    \[\frac{0.5}{\sqrt{\left(4 \cdot p\right) \cdot p + r \cdot r} \cdot \sqrt{0.5 \cdot \left(1 + \frac{r}{\sqrt{\left(4 \cdot p\right) \cdot p + r \cdot r}}\right)}}\]
  2. Final simplification37.9

    \[\leadsto \frac{0.5}{\sqrt{\left(4 \cdot p\right) \cdot p + r \cdot r} \cdot \sqrt{0.5 \cdot \left(1 + \frac{r}{\sqrt{\left(4 \cdot p\right) \cdot p + r \cdot r}}\right)}}\]

Reproduce

herbie shell --seed 2020153 
(FPCore (p r)
  :name "(/ 0.5 (* (sqrt (+ (* (* 4 p) p) (* r r))) (sqrt (* 0.5 (+ 1 (/ r (sqrt (+ (* (* 4 p) p) (* r r)))))))))"
  :precision binary64
  (/ 0.5 (* (sqrt (+ (* (* 4.0 p) p) (* r r))) (sqrt (* 0.5 (+ 1.0 (/ r (sqrt (+ (* (* 4.0 p) p) (* r r))))))))))