Average Error: 26.5 → 26.5
Time: 1.4s
Precision: binary64
\[\frac{u \cdot u1 + v \cdot v1}{{u}^{2} + {v}^{2}}\]
\[\frac{u \cdot u1 + v \cdot v1}{{u}^{2} + {v}^{2}}\]
\frac{u \cdot u1 + v \cdot v1}{{u}^{2} + {v}^{2}}
\frac{u \cdot u1 + v \cdot v1}{{u}^{2} + {v}^{2}}
double code(double u, double u1, double v, double v1) {
	return ((double) (((double) (((double) (u * u1)) + ((double) (v * v1)))) / ((double) (((double) pow(u, 2.0)) + ((double) pow(v, 2.0))))));
}
double code(double u, double u1, double v, double v1) {
	return ((double) (((double) (((double) (u * u1)) + ((double) (v * v1)))) / ((double) (((double) pow(u, 2.0)) + ((double) pow(v, 2.0))))));
}

Error

Bits error versus u

Bits error versus u1

Bits error versus v

Bits error versus v1

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 26.5

    \[\frac{u \cdot u1 + v \cdot v1}{{u}^{2} + {v}^{2}}\]
  2. Final simplification26.5

    \[\leadsto \frac{u \cdot u1 + v \cdot v1}{{u}^{2} + {v}^{2}}\]

Reproduce

herbie shell --seed 2020152 
(FPCore (u u1 v v1)
  :name "(/ (+ (* u u1) (* v v1)) (+ (pow u 2) (pow v 2)))"
  :precision binary64
  (/ (+ (* u u1) (* v v1)) (+ (pow u 2.0) (pow v 2.0))))