\frac{\left(1 - alphaD\right) + \sqrt{\left(\left(1 - 2 \cdot alphaD\right) + \left(4 \cdot Kp\right) \cdot alphaD\right) + alphaD \cdot alphaD}}{2 \cdot \sqrt{\left(\left(1 - 2 \cdot alphaD\right) + \left(4 \cdot Kp\right) \cdot alphaD\right) + alphaD \cdot alphaD}}\frac{1 - \frac{alphaD - 1}{\sqrt{\left(\left(1 - 2 \cdot alphaD\right) + \left(4 \cdot Kp\right) \cdot alphaD\right) + alphaD \cdot alphaD}}}{2}double code(double alphaD, double Kp) {
return ((double) (((double) (((double) (1.0 - alphaD)) + ((double) sqrt(((double) (((double) (((double) (1.0 - ((double) (2.0 * alphaD)))) + ((double) (((double) (4.0 * Kp)) * alphaD)))) + ((double) (alphaD * alphaD)))))))) / ((double) (2.0 * ((double) sqrt(((double) (((double) (((double) (1.0 - ((double) (2.0 * alphaD)))) + ((double) (((double) (4.0 * Kp)) * alphaD)))) + ((double) (alphaD * alphaD))))))))));
}
double code(double alphaD, double Kp) {
return ((double) (((double) (1.0 - ((double) (((double) (alphaD - 1.0)) / ((double) sqrt(((double) (((double) (((double) (1.0 - ((double) (2.0 * alphaD)))) + ((double) (((double) (4.0 * Kp)) * alphaD)))) + ((double) (alphaD * alphaD)))))))))) / 2.0));
}



Bits error versus alphaD



Bits error versus Kp
Results
Initial program 22.4
Simplified18.6
Final simplification18.6
herbie shell --seed 2020152
(FPCore (alphaD Kp)
:name "(/ (+ (- 1 alphaD) (sqrt (+ (+ (- 1.0 (* 2.0 alphaD)) (* (* 4.0 Kp) alphaD)) (* alphaD alphaD)))) (* 2 (sqrt (+ (+ (- 1.0 (* 2.0 alphaD)) (* (* 4.0 Kp) alphaD)) (* alphaD alphaD)))))"
:precision binary64
(/ (+ (- 1.0 alphaD) (sqrt (+ (+ (- 1.0 (* 2.0 alphaD)) (* (* 4.0 Kp) alphaD)) (* alphaD alphaD)))) (* 2.0 (sqrt (+ (+ (- 1.0 (* 2.0 alphaD)) (* (* 4.0 Kp) alphaD)) (* alphaD alphaD))))))