Average Error: 0.1 → 0.1
Time: 4.3s
Precision: 64
\[0.0 \lt m \land 0.0 \lt v \land v \lt 0.25\]
\[\left(\frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot \left(1 - m\right)\]
\[\left(\frac{m \cdot \left(1 \cdot 1 - m \cdot m\right)}{v \cdot \left(1 + m\right)} - 1\right) \cdot 1 + \mathsf{fma}\left(m, 1, \frac{{m}^{3}}{v} - 1 \cdot \frac{{m}^{2}}{v}\right)\]
\left(\frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot \left(1 - m\right)
\left(\frac{m \cdot \left(1 \cdot 1 - m \cdot m\right)}{v \cdot \left(1 + m\right)} - 1\right) \cdot 1 + \mathsf{fma}\left(m, 1, \frac{{m}^{3}}{v} - 1 \cdot \frac{{m}^{2}}{v}\right)
double f(double m, double v) {
        double r16223 = m;
        double r16224 = 1.0;
        double r16225 = r16224 - r16223;
        double r16226 = r16223 * r16225;
        double r16227 = v;
        double r16228 = r16226 / r16227;
        double r16229 = r16228 - r16224;
        double r16230 = r16229 * r16225;
        return r16230;
}

double f(double m, double v) {
        double r16231 = m;
        double r16232 = 1.0;
        double r16233 = r16232 * r16232;
        double r16234 = r16231 * r16231;
        double r16235 = r16233 - r16234;
        double r16236 = r16231 * r16235;
        double r16237 = v;
        double r16238 = r16232 + r16231;
        double r16239 = r16237 * r16238;
        double r16240 = r16236 / r16239;
        double r16241 = r16240 - r16232;
        double r16242 = r16241 * r16232;
        double r16243 = 3.0;
        double r16244 = pow(r16231, r16243);
        double r16245 = r16244 / r16237;
        double r16246 = 2.0;
        double r16247 = pow(r16231, r16246);
        double r16248 = r16247 / r16237;
        double r16249 = r16232 * r16248;
        double r16250 = r16245 - r16249;
        double r16251 = fma(r16231, r16232, r16250);
        double r16252 = r16242 + r16251;
        return r16252;
}

Error

Bits error versus m

Bits error versus v

Derivation

  1. Initial program 0.1

    \[\left(\frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot \left(1 - m\right)\]
  2. Using strategy rm
  3. Applied flip--0.1

    \[\leadsto \left(\frac{m \cdot \color{blue}{\frac{1 \cdot 1 - m \cdot m}{1 + m}}}{v} - 1\right) \cdot \left(1 - m\right)\]
  4. Applied associate-*r/0.1

    \[\leadsto \left(\frac{\color{blue}{\frac{m \cdot \left(1 \cdot 1 - m \cdot m\right)}{1 + m}}}{v} - 1\right) \cdot \left(1 - m\right)\]
  5. Applied associate-/l/0.1

    \[\leadsto \left(\color{blue}{\frac{m \cdot \left(1 \cdot 1 - m \cdot m\right)}{v \cdot \left(1 + m\right)}} - 1\right) \cdot \left(1 - m\right)\]
  6. Using strategy rm
  7. Applied sub-neg0.1

    \[\leadsto \left(\frac{m \cdot \left(1 \cdot 1 - m \cdot m\right)}{v \cdot \left(1 + m\right)} - 1\right) \cdot \color{blue}{\left(1 + \left(-m\right)\right)}\]
  8. Applied distribute-lft-in0.1

    \[\leadsto \color{blue}{\left(\frac{m \cdot \left(1 \cdot 1 - m \cdot m\right)}{v \cdot \left(1 + m\right)} - 1\right) \cdot 1 + \left(\frac{m \cdot \left(1 \cdot 1 - m \cdot m\right)}{v \cdot \left(1 + m\right)} - 1\right) \cdot \left(-m\right)}\]
  9. Taylor expanded around inf 0.1

    \[\leadsto \left(\frac{m \cdot \left(1 \cdot 1 - m \cdot m\right)}{v \cdot \left(1 + m\right)} - 1\right) \cdot 1 + \color{blue}{\left(\left(1 \cdot m + \frac{{m}^{3}}{v}\right) - 1 \cdot \frac{{m}^{2}}{v}\right)}\]
  10. Simplified0.1

    \[\leadsto \left(\frac{m \cdot \left(1 \cdot 1 - m \cdot m\right)}{v \cdot \left(1 + m\right)} - 1\right) \cdot 1 + \color{blue}{\mathsf{fma}\left(m, 1, \frac{{m}^{3}}{v} - 1 \cdot \frac{{m}^{2}}{v}\right)}\]
  11. Final simplification0.1

    \[\leadsto \left(\frac{m \cdot \left(1 \cdot 1 - m \cdot m\right)}{v \cdot \left(1 + m\right)} - 1\right) \cdot 1 + \mathsf{fma}\left(m, 1, \frac{{m}^{3}}{v} - 1 \cdot \frac{{m}^{2}}{v}\right)\]

Reproduce

herbie shell --seed 2020064 +o rules:numerics
(FPCore (m v)
  :name "b parameter of renormalized beta distribution"
  :precision binary64
  :pre (and (< 0.0 m) (< 0.0 v) (< v 0.25))
  (* (- (/ (* m (- 1 m)) v) 1) (- 1 m)))