Average Error: 17.0 → 17.0
Time: 1.2s
Precision: binary64
\[\frac{uppP \cdot newMean - upperMean}{lowerMean \cdot uppP - upperMean \cdot lowerP}\]
\[\frac{uppP \cdot newMean - upperMean}{lowerMean \cdot uppP - upperMean \cdot lowerP}\]
\frac{uppP \cdot newMean - upperMean}{lowerMean \cdot uppP - upperMean \cdot lowerP}
\frac{uppP \cdot newMean - upperMean}{lowerMean \cdot uppP - upperMean \cdot lowerP}
double code(double uppP, double newMean, double upperMean, double lowerMean, double lowerP) {
	return ((double) (((double) (((double) (uppP * newMean)) - upperMean)) / ((double) (((double) (lowerMean * uppP)) - ((double) (upperMean * lowerP))))));
}
double code(double uppP, double newMean, double upperMean, double lowerMean, double lowerP) {
	return ((double) (((double) (((double) (uppP * newMean)) - upperMean)) / ((double) (((double) (lowerMean * uppP)) - ((double) (upperMean * lowerP))))));
}

Error

Bits error versus uppP

Bits error versus newMean

Bits error versus upperMean

Bits error versus lowerMean

Bits error versus lowerP

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 17.0

    \[\frac{uppP \cdot newMean - upperMean}{lowerMean \cdot uppP - upperMean \cdot lowerP}\]
  2. Final simplification17.0

    \[\leadsto \frac{uppP \cdot newMean - upperMean}{lowerMean \cdot uppP - upperMean \cdot lowerP}\]

Reproduce

herbie shell --seed 2020152 
(FPCore (uppP newMean upperMean lowerMean lowerP)
  :name "(/ (- (* uppP newMean) upperMean) (- (* lowerMean uppP) (* upperMean lowerP)))"
  :precision binary64
  (/ (- (* uppP newMean) upperMean) (- (* lowerMean uppP) (* upperMean lowerP))))