Average Error: 0.2 → 0.2
Time: 21.4s
Precision: 64
Internal Precision: 128
\[\left(\frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot m\]
\[(\left(\frac{m}{\frac{v}{m}}\right) \cdot \left(1 - m\right) + \left(-m\right))_*\]

Error

Bits error versus m

Bits error versus v

Derivation

  1. Initial program 0.2

    \[\left(\frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot m\]
  2. Taylor expanded around inf 6.7

    \[\leadsto \color{blue}{\frac{{m}^{2}}{v} - \left(m + \frac{{m}^{3}}{v}\right)}\]
  3. Using strategy rm
  4. Applied add-sqr-sqrt7.0

    \[\leadsto \frac{{m}^{2}}{v} - \color{blue}{\sqrt{m + \frac{{m}^{3}}{v}} \cdot \sqrt{m + \frac{{m}^{3}}{v}}}\]
  5. Applied *-un-lft-identity7.0

    \[\leadsto \color{blue}{1 \cdot \frac{{m}^{2}}{v}} - \sqrt{m + \frac{{m}^{3}}{v}} \cdot \sqrt{m + \frac{{m}^{3}}{v}}\]
  6. Applied prod-diff7.0

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

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

    \[\leadsto (\left(\frac{m}{\frac{v}{m}}\right) \cdot \left(1 - m\right) + \left(-m\right))_* + \color{blue}{0}\]
  9. Final simplification0.2

    \[\leadsto (\left(\frac{m}{\frac{v}{m}}\right) \cdot \left(1 - m\right) + \left(-m\right))_*\]

Reproduce

herbie shell --seed 2019016 +o rules:numerics
(FPCore (m v)
  :name "a parameter of renormalized beta distribution"
  :pre (and (< 0 m) (< 0 v) (< v 0.25))
  (* (- (/ (* m (- 1 m)) v) 1) m))

Details

Time bar (total: 20.8s)Debug log

sample183.0ms

Algorithm
intervals
Results
413×(pre true 80)
413×(body real 80)

simplify288.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
288.0ms
(* (- (/ (* m (- 1 m)) v) 1) m)

prune15.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 0.1b

localize18.0ms

Local error

Found 2 expressions with local error:

0.1b
(* m (fma (- 1 m) (/ m v) -1))
0.1b
(fma (- 1 m) (/ m v) -1)

rewrite9.0ms

Algorithm
rewrite-expression-head
Rules
fma-udef
add-cube-cbrt
associate-*r*
*-un-lft-identity
add-sqr-sqrt
add-log-exp
log1p-expm1-u
add-exp-log
add-cbrt-cube
pow1
expm1-log1p-u
*-commutative
distribute-lft-in
distribute-rgt-in
Counts
2 → 25
Calls
2 calls:
Slowest
6.0ms
(* m (fma (- 1 m) (/ m v) -1))
0.0ms
(fma (- 1 m) (/ m v) -1)

series53.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
41.0ms
(* m (fma (- 1 m) (/ m v) -1))
12.0ms
(fma (- 1 m) (/ m v) -1)

simplify1.0s

Counts
11 → 31
Calls
11 calls:
Slowest
526.0ms
(- (/ (pow m 2) v) (+ m (/ (pow m 3) v)))
143.0ms
(- (/ (pow m 2) v) (+ m (/ (pow m 3) v)))
124.0ms
(- (/ (pow m 2) v) (+ m (/ (pow m 3) v)))
76.0ms
(- (/ m v) (+ (/ (pow m 2) v) 1))
72.0ms
(- (/ m v) (+ (/ (pow m 2) v) 1))

prune289.0ms

Pruning

7 alts after pruning (7 fresh and 0 done)

Merged error: 0.0b

localize22.0ms

Local error

Found 4 expressions with local error:

0.1b
(* (- (/ (* m (- 1 m)) v) 1) m)
0.0b
(/ (* m (- 1 m)) v)
0.0b
(* m (- 1 m))
0.0b
(- (/ (* m (- 1 m)) v) 1)

rewrite32.0ms

Algorithm
rewrite-expression-head
Rules
add-sqr-sqrt
add-cube-cbrt
*-un-lft-identity
add-exp-log
add-log-exp
flip--
log1p-expm1-u
associate-*r/
associate-*l*
fma-neg
add-cbrt-cube
flip3--
pow1
expm1-log1p-u
associate-*r*
sub-neg
associate-/l/
div-inv
*-commutative
associate-*l/
difference-of-sqr-1
distribute-lft-in
distribute-rgt-in
associate-/l*
frac-2neg
clear-num
expm1-def
Counts
4 → 69
Calls
4 calls:
Slowest
16.0ms
(* (- (/ (* m (- 1 m)) v) 1) m)
9.0ms
(/ (* m (- 1 m)) v)
4.0ms
(- (/ (* m (- 1 m)) v) 1)
1.0ms
(* m (- 1 m))

series71.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
20.0ms
(/ (* m (- 1 m)) v)
19.0ms
(* m (- 1 m))
17.0ms
(* (- (/ (* m (- 1 m)) v) 1) m)
14.0ms
(- (/ (* m (- 1 m)) v) 1)

simplify1.9s

Counts
33 → 81
Calls
33 calls:
Slowest
305.0ms
(* (- (pow (/ (* m (- 1 m)) v) 3) (pow 1 3)) m)
172.0ms
(* (cbrt (- (/ (* m (- 1 m)) v) 1)) (cbrt (- (/ (* m (- 1 m)) v) 1)))
164.0ms
(- (/ (pow m 2) v) (+ m (/ (pow m 3) v)))
145.0ms
(- (/ (pow m 2) v) (+ m (/ (pow m 3) v)))
144.0ms
(- (/ (pow m 2) v) (+ m (/ (pow m 3) v)))

prune624.0ms

Pruning

6 alts after pruning (5 fresh and 1 done)

Merged error: 0b

localize21.0ms

Local error

Found 4 expressions with local error:

0.2b
(/ 1 (/ v (* m (- 1 m))))
0.1b
(* (- (/ 1 (/ v (* m (- 1 m)))) 1) m)
0.1b
(/ v (* m (- 1 m)))
0.0b
(* m (- 1 m))

rewrite10.0ms

Algorithm
rewrite-expression-head
Rules
add-sqr-sqrt
add-cube-cbrt
*-un-lft-identity
associate-/r*
associate-*r/
associate-/r/
add-exp-log
pow1
add-log-exp
flip--
log1p-expm1-u
associate-*l*
add-cbrt-cube
flip3--
expm1-log1p-u
div-inv
associate-*r*
*-commutative
associate-*l/
distribute-lft-in
frac-2neg
sub-neg
clear-num
distribute-rgt-in
inv-pow
pow-flip
difference-of-sqr-1
rec-exp
Counts
4 → 72
Calls
4 calls:
Slowest
6.0ms
(* (- (/ 1 (/ v (* m (- 1 m)))) 1) m)
1.0ms
(* m (- 1 m))
1.0ms
(/ 1 (/ v (* m (- 1 m))))
1.0ms
(/ v (* m (- 1 m)))

series128.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
36.0ms
(* (- (/ 1 (/ v (* m (- 1 m)))) 1) m)
33.0ms
(/ v (* m (- 1 m)))
33.0ms
(* m (- 1 m))
26.0ms
(/ 1 (/ v (* m (- 1 m))))

simplify2.2s

Counts
37 → 84
Calls
37 calls:
Slowest
332.0ms
(* (- (pow (/ 1 (/ v (* m (- 1 m)))) 3) (pow 1 3)) m)
246.0ms
(+ (sqrt (/ 1 (/ v (* m (- 1 m))))) 1)
241.0ms
(sqrt (- (/ 1 (/ v (* m (- 1 m)))) 1))
230.0ms
(* (cbrt (- (/ 1 (/ v (* m (- 1 m)))) 1)) (cbrt (- (/ 1 (/ v (* m (- 1 m)))) 1)))
170.0ms
(- (/ (pow m 2) v) (+ m (/ (pow m 3) v)))

prune726.0ms

Pruning

6 alts after pruning (4 fresh and 2 done)

Merged error: 0b

localize18.0ms

Local error

Found 4 expressions with local error:

13.9b
(/ (pow m 2) v)
8.6b
(/ (pow m 3) v)
0.0b
(- (/ (pow m 2) v) (+ m (/ (pow m 3) v)))
0.0b
(+ m (/ (pow m 3) v))

rewrite17.0ms

Algorithm
rewrite-expression-head
Rules
16×*-un-lft-identity
16×add-sqr-sqrt
14×add-cube-cbrt
12×prod-diff
associate-/l*
add-log-exp
div-inv
log1p-expm1-u
add-exp-log
fma-neg
add-cbrt-cube
pow1
expm1-log1p-u
flip-+
frac-sub
flip3-+
frac-2neg
clear-num
difference-of-squares
unpow2
distribute-lft-out--
associate--r+
flip--
unpow3
diff-log
flip3--
sub-neg
+-commutative
cube-mult
Counts
4 → 80
Calls
4 calls:
Slowest
8.0ms
(- (/ (pow m 2) v) (+ m (/ (pow m 3) v)))
5.0ms
(/ (pow m 2) v)
2.0ms
(/ (pow m 3) v)
1.0ms
(+ m (/ (pow m 3) v))

series65.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
22.0ms
(- (/ (pow m 2) v) (+ m (/ (pow m 3) v)))
22.0ms
(+ m (/ (pow m 3) v))
11.0ms
(/ (pow m 3) v)
10.0ms
(/ (pow m 2) v)

simplify9.5s

Counts
53 → 92
Calls
53 calls:
Slowest
689.0ms
(fma (- (+ m (/ (pow m 3) v))) 1 (* (+ m (/ (pow m 3) v)) 1))
662.0ms
(fma (- (+ m (/ (pow m 3) v))) 1 (* (+ m (/ (pow m 3) v)) 1))
658.0ms
(fma (- (+ m (/ (pow m 3) v))) 1 (* (+ m (/ (pow m 3) v)) 1))
634.0ms
(fma (pow m 2) (/ 1 v) (- (* (sqrt (+ m (/ (pow m 3) v))) (sqrt (+ m (/ (pow m 3) v))))))
590.0ms
(fma (- (+ m (/ (pow m 3) v))) 1 (* (+ m (/ (pow m 3) v)) 1))

prune901.0ms

Pruning

6 alts after pruning (3 fresh and 3 done)

Merged error: 0b

regimes142.0ms

Accuracy

0% (0.2b remaining)

Error of 0.2b against oracle of 0.0b and baseline of 0.2b

bsearch1.0ms

end0.0ms

sample2.5s

Algorithm
intervals
Results
13711×(pre true 80)
13711×(body real 80)