Average Error: 2.0 → 2.0
Time: 3.9s
Precision: binary64
\[\left(c - a \cdot b\right) \cdot \left(c - a \cdot b\right) - \left(4 \cdot \left(1 - a \cdot a\right)\right) \cdot \left(\left(d - b \cdot b\right) - R \cdot R\right)\]
\[\left(c - a \cdot b\right) \cdot \left(c - a \cdot b\right) - \left(4 \cdot \left(1 - a \cdot a\right)\right) \cdot \left(\left(d - b \cdot b\right) - R \cdot R\right)\]
\left(c - a \cdot b\right) \cdot \left(c - a \cdot b\right) - \left(4 \cdot \left(1 - a \cdot a\right)\right) \cdot \left(\left(d - b \cdot b\right) - R \cdot R\right)
\left(c - a \cdot b\right) \cdot \left(c - a \cdot b\right) - \left(4 \cdot \left(1 - a \cdot a\right)\right) \cdot \left(\left(d - b \cdot b\right) - R \cdot R\right)
double code(double c, double a, double b, double d, double R) {
	return ((double) (((double) (((double) (c - ((double) (a * b)))) * ((double) (c - ((double) (a * b)))))) - ((double) (((double) (4.0 * ((double) (1.0 - ((double) (a * a)))))) * ((double) (((double) (d - ((double) (b * b)))) - ((double) (R * R))))))));
}
double code(double c, double a, double b, double d, double R) {
	return ((double) (((double) (((double) (c - ((double) (a * b)))) * ((double) (c - ((double) (a * b)))))) - ((double) (((double) (4.0 * ((double) (1.0 - ((double) (a * a)))))) * ((double) (((double) (d - ((double) (b * b)))) - ((double) (R * R))))))));
}

Error

Bits error versus c

Bits error versus a

Bits error versus b

Bits error versus d

Bits error versus R

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 2.0

    \[\left(c - a \cdot b\right) \cdot \left(c - a \cdot b\right) - \left(4 \cdot \left(1 - a \cdot a\right)\right) \cdot \left(\left(d - b \cdot b\right) - R \cdot R\right)\]
  2. Final simplification2.0

    \[\leadsto \left(c - a \cdot b\right) \cdot \left(c - a \cdot b\right) - \left(4 \cdot \left(1 - a \cdot a\right)\right) \cdot \left(\left(d - b \cdot b\right) - R \cdot R\right)\]

Reproduce

herbie shell --seed 2020152 
(FPCore (c a b d R)
  :name "(- (* (- c (* a b)) (- c (* a b))) (* (* 4 (- 1 (* a a))) (- (- d (* b b)) (* R R))))"
  :precision binary64
  (- (* (- c (* a b)) (- c (* a b))) (* (* 4.0 (- 1.0 (* a a))) (- (- d (* b b)) (* R R)))))