Average Error: 46.0 → 46.0
Time: 1.7s
Precision: binary64
\[\frac{tp \cdot tn - fp \cdot fn}{\sqrt{\left(\left(\left(tp + fp\right) \cdot \left(tp + fn\right)\right) \cdot \left(tn + fp\right)\right) \cdot \left(tn + fn\right)}}\]
\[\frac{tp \cdot tn - fp \cdot fn}{\sqrt{\left(\left(\left(tp + fp\right) \cdot \left(tp + fn\right)\right) \cdot \left(tn + fp\right)\right) \cdot \left(tn + fn\right)}}\]
\frac{tp \cdot tn - fp \cdot fn}{\sqrt{\left(\left(\left(tp + fp\right) \cdot \left(tp + fn\right)\right) \cdot \left(tn + fp\right)\right) \cdot \left(tn + fn\right)}}
\frac{tp \cdot tn - fp \cdot fn}{\sqrt{\left(\left(\left(tp + fp\right) \cdot \left(tp + fn\right)\right) \cdot \left(tn + fp\right)\right) \cdot \left(tn + fn\right)}}
double code(double tp, double tn, double fp, double fn) {
	return ((double) (((double) (((double) (tp * tn)) - ((double) (fp * fn)))) / ((double) sqrt(((double) (((double) (((double) (((double) (tp + fp)) * ((double) (tp + fn)))) * ((double) (tn + fp)))) * ((double) (tn + fn))))))));
}
double code(double tp, double tn, double fp, double fn) {
	return ((double) (((double) (((double) (tp * tn)) - ((double) (fp * fn)))) / ((double) sqrt(((double) (((double) (((double) (((double) (tp + fp)) * ((double) (tp + fn)))) * ((double) (tn + fp)))) * ((double) (tn + fn))))))));
}

Error

Bits error versus tp

Bits error versus tn

Bits error versus fp

Bits error versus fn

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 46.0

    \[\frac{tp \cdot tn - fp \cdot fn}{\sqrt{\left(\left(\left(tp + fp\right) \cdot \left(tp + fn\right)\right) \cdot \left(tn + fp\right)\right) \cdot \left(tn + fn\right)}}\]
  2. Final simplification46.0

    \[\leadsto \frac{tp \cdot tn - fp \cdot fn}{\sqrt{\left(\left(\left(tp + fp\right) \cdot \left(tp + fn\right)\right) \cdot \left(tn + fp\right)\right) \cdot \left(tn + fn\right)}}\]

Reproduce

herbie shell --seed 2020152 
(FPCore (tp tn fp fn)
  :name "(/ (- (* tp tn) (* fp fn)) (sqrt (* (* (* (+ tp fp) (+ tp fn)) (+ tn fp)) (+ tn fn))))"
  :precision binary64
  (/ (- (* tp tn) (* fp fn)) (sqrt (* (* (* (+ tp fp) (+ tp fn)) (+ tn fp)) (+ tn fn)))))