\left(\frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot \left(1 - m\right)
\begin{array}{l}
t_0 := \sqrt{m} \cdot \sqrt{m}\\
t_1 := \frac{m \cdot \left(1 - m\right)}{v} - 1\\
\mathsf{fma}\left(1, 1, -t_0\right) \cdot t_1 + t_1 \cdot \left(t_0 - m\right)
\end{array}
(FPCore (m v) :precision binary64 (* (- (/ (* m (- 1.0 m)) v) 1.0) (- 1.0 m)))
(FPCore (m v) :precision binary64 (let* ((t_0 (* (sqrt m) (sqrt m))) (t_1 (- (/ (* m (- 1.0 m)) v) 1.0))) (+ (* (fma 1.0 1.0 (- t_0)) t_1) (* t_1 (- t_0 m)))))
double code(double m, double v) {
return (((m * (1.0 - m)) / v) - 1.0) * (1.0 - m);
}
double code(double m, double v) {
double t_0 = sqrt(m) * sqrt(m);
double t_1 = ((m * (1.0 - m)) / v) - 1.0;
return (fma(1.0, 1.0, -t_0) * t_1) + (t_1 * (t_0 - m));
}



Bits error versus m



Bits error versus v
Initial program 0.1
Applied add-sqr-sqrt_binary640.1
Applied *-un-lft-identity_binary640.1
Applied prod-diff_binary640.1
Applied distribute-rgt-in_binary640.1
Applied fma-udef_binary640.1
Simplified0.1
Applied pow1_binary640.1
Final simplification0.1
herbie shell --seed 2021273
(FPCore (m v)
:name "b parameter of renormalized beta distribution"
:precision binary64
:pre (and (and (< 0.0 m) (< 0.0 v)) (< v 0.25))
(* (- (/ (* m (- 1.0 m)) v) 1.0) (- 1.0 m)))