Average Error: 40.9 → 40.9
Time: 1.8s
Precision: binary64
\[\frac{p}{\sqrt{0.5 \cdot \left(\left(p \cdot p + \left(q - r\right) \cdot \left(q - r\right)\right) + \left(q - r\right) \cdot \sqrt{p \cdot p + \left(q - r\right) \cdot \left(q - r\right)}\right)}}\]
\[\frac{p}{\sqrt{0.5 \cdot \left(\left(p \cdot p + \left(q - r\right) \cdot \left(q - r\right)\right) + \left(q - r\right) \cdot \sqrt{p \cdot p + \left(q - r\right) \cdot \left(q - r\right)}\right)}}\]
\frac{p}{\sqrt{0.5 \cdot \left(\left(p \cdot p + \left(q - r\right) \cdot \left(q - r\right)\right) + \left(q - r\right) \cdot \sqrt{p \cdot p + \left(q - r\right) \cdot \left(q - r\right)}\right)}}
\frac{p}{\sqrt{0.5 \cdot \left(\left(p \cdot p + \left(q - r\right) \cdot \left(q - r\right)\right) + \left(q - r\right) \cdot \sqrt{p \cdot p + \left(q - r\right) \cdot \left(q - r\right)}\right)}}
double code(double p, double q, double r) {
	return ((double) (p / ((double) sqrt(((double) (0.5 * ((double) (((double) (((double) (p * p)) + ((double) (((double) (q - r)) * ((double) (q - r)))))) + ((double) (((double) (q - r)) * ((double) sqrt(((double) (((double) (p * p)) + ((double) (((double) (q - r)) * ((double) (q - r))))))))))))))))));
}
double code(double p, double q, double r) {
	return ((double) (p / ((double) sqrt(((double) (0.5 * ((double) (((double) (((double) (p * p)) + ((double) (((double) (q - r)) * ((double) (q - r)))))) + ((double) (((double) (q - r)) * ((double) sqrt(((double) (((double) (p * p)) + ((double) (((double) (q - r)) * ((double) (q - r))))))))))))))))));
}

Error

Bits error versus p

Bits error versus q

Bits error versus r

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 40.9

    \[\frac{p}{\sqrt{0.5 \cdot \left(\left(p \cdot p + \left(q - r\right) \cdot \left(q - r\right)\right) + \left(q - r\right) \cdot \sqrt{p \cdot p + \left(q - r\right) \cdot \left(q - r\right)}\right)}}\]
  2. Final simplification40.9

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

Reproduce

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