\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))))));
}



Bits error versus uppP



Bits error versus newMean



Bits error versus upperMean



Bits error versus lowerMean



Bits error versus lowerP
Results
Initial program 17.0
Final simplification17.0
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))))