]> gitweb.factorcode.org Git - factor.git/blob - extra/math/extras/extras-tests.factor
8967451fd13c45dc8ea6458622f53c8153c22dd7
[factor.git] / extra / math / extras / extras-tests.factor
1 ! Copyright (C) 2012 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
3
4 USING: arrays kernel math math.extras math.ranges sequences
5 tools.test ;
6
7 { 7 } [ 4 2 stirling ] unit-test
8 { 90 } [ 6 3 stirling ] unit-test
9
10 { { 1 -1/2 1/6 0 -1/30 0 1/42 0 -1/30 0 } }
11 [ 10 <iota> [ bernoulli ] map ] unit-test
12
13 { -1 } [ -1 7 jacobi ] unit-test
14 { 0 } [ 3 3 jacobi ] unit-test
15 { -1 } [ 127 703 jacobi ] unit-test
16 { 1 } [ -4 197 jacobi ] unit-test
17
18 { { 2 3 4 5 6 7 8 9 } } [ 10 [1,b] 3 moving-average ] unit-test
19 { { 1+1/2 2+1/2 3+1/2 4+1/2 5+1/2 6+1/2 7+1/2 8+1/2 9+1/2 } }
20 [ 10 [1,b] 2 moving-average ] unit-test
21
22 { { 1 1+1/2 2+1/4 3+1/8 4+1/16 5+1/32 } }
23 [ 6 [1,b] 1/2 exponential-moving-average ] unit-test
24 { { 1 3 3 5 5 7 7 9 9 11 } }
25 [ 10 [1,b] 2 exponential-moving-average ] unit-test
26
27 { { 2 5 5 4 3 } } [ { 1 2 5 6 1 4 3 } 3 moving-median ] unit-test
28
29 { { 2 1 1 2 1 1 } } [ { 1 1 2 3 5 8 13 } 2 [ odd? ] moving-count ] unit-test
30
31 { { } } [ { 0 0 } nonzero ] unit-test
32 { { 1 2 3 } } [ { 0 1 0 2 0 3 0 } nonzero ] unit-test
33
34 { { } } [ 0 bartlett ] unit-test
35 { { 1 } } [ 1 bartlett ] unit-test
36 { { 0 0 } } [ 2 bartlett ] unit-test
37 { { 0 1 0 } } [ 3 bartlett ] unit-test
38 { { 0 2/3 2/3 0 } } [ 4 bartlett ] unit-test
39 { { 0 1/2 1 1/2 0 } } [ 5 bartlett ] unit-test
40 { { 0 2/5 4/5 4/5 2/5 0 } } [ 6 bartlett ] unit-test
41
42 { 2819/3914 } [
43     {
44         998,000
45         20,000
46         17,500
47         70,000
48         23,500
49         45,200
50     } gini
51 ] unit-test
52
53 { 8457/9785 } [
54     {
55         998,000
56         20,000
57         17,500
58         70,000
59         23,500
60         45,200
61     } concentration-coefficient
62 ] unit-test
63
64 { 0 } [ { 1 } gini ] unit-test
65 { 0 } [ { 1 1 1 1 1 1 } gini ] unit-test
66 { 0 } [ { 10 10 10 10 } gini ] unit-test
67 { 0 } [ { } gini ] unit-test
68
69 { 0 } [ { 1 } concentration-coefficient ] unit-test
70 { 0 } [ { 1 1 1 1 1 1 } concentration-coefficient ] unit-test
71 { 0 } [ { 10 10 10 10 } concentration-coefficient ] unit-test
72 { 0 } [ { } concentration-coefficient ] unit-test
73
74 { 57/200 } [ { 80 60 10 20 30 } herfindahl ] unit-test
75 { 17/160 } [ { 80 60 10 20 30 } normalized-herfindahl ] unit-test
76
77 { { 0 5 1 2 2 } } [
78     { -10 10 2 2.5 3 } { 1 2 3 4 5 } digitize]
79 ] unit-test
80
81 { { 0 5 2 2 3 } } [
82     { -10 10 2 2.5 3 } { 1 2 3 4 5 } digitize)
83 ] unit-test
84
85 {
86     { 1 2 3 4 }
87     { 0 1 0 0 2 3 }
88 } [ { 1 2 1 1 3 4 } unique-indices ] unit-test
89
90 { { 1 8+4/5 16+3/5 24+2/5 32+1/5 } } [ 1 40 5 linspace[a..b) >array ] unit-test
91 { { 1 10+3/4 20+1/2 30+1/4 40 } } [ 1 40 5 linspace[a..b] >array ] unit-test
92
93 { f } [ { } majority ] unit-test
94 { 1 } [ { 1 } majority ] unit-test
95 { f } [ { 1 2 } majority ] unit-test
96 { 1 } [ { 1 1 2 } majority ] unit-test
97 { f } [ { 1 1 2 2 } majority ] unit-test
98 { 2 } [ { 1 1 2 2 2 } majority ] unit-test
99 { 3 } [ { 1 2 3 1 2 3 1 2 3 3 } majority ] unit-test
100 { CHAR: C } [ "AAACCBBCCCBCC" majority ] unit-test
101
102 { 0.0 } [ 0 2 round-to-decimal ] unit-test
103 { 1.0 } [ 1 2 round-to-decimal ] unit-test
104 { 1.23 } [ 1.2349 2 round-to-decimal ] unit-test
105 { 1.24 } [ 1.2350 2 round-to-decimal ] unit-test
106 { 1.24 } [ 1.2351 2 round-to-decimal ] unit-test
107 { -1.23 } [ -1.2349 2 round-to-decimal ] unit-test
108 { -1.24 } [ -1.2350 2 round-to-decimal ] unit-test
109 { -1.24 } [ -1.2351 2 round-to-decimal ] unit-test
110 {
111     {
112         0.0 0.0 10000.0 12000.0 12300.0 12350.0 12346.0 12345.7
113         12345.68 12345.679 12345.6789 12345.6789 12345.678901
114         12345.6789012 12345.67890123 12345.678901235
115     }
116 } [ 12345.67890123456 -6 9 [a..b] [ round-to-decimal ] with map ] unit-test
117
118 { 0 } [ 0 5 round-to-step ] unit-test
119 { 0 } [ 1 5 round-to-step ] unit-test
120 { 5 } [ 3 5 round-to-step ] unit-test
121 { 10 } [ 12 5 round-to-step ] unit-test
122 { 15 } [ 13 5 round-to-step ] unit-test
123
124 { 0 } [ 0 round-away-from-zero ] unit-test
125 { -1.0 } [ -0.1 round-away-from-zero ] unit-test
126 { 1.0 } [ 0.1 round-away-from-zero ] unit-test
127 { -2.0 } [ -1.9 round-away-from-zero ] unit-test
128 { 2.0 } [ 1.9 round-away-from-zero ] unit-test
129
130 { { 0 1 2 3 0 0 1 } } [ { 1 2 3 3 2 1 2 } [ <= ] monotonic-count ] unit-test
131 { 4 } [ { 1 2 3 1 2 3 4 5 } [ < ] max-monotonic-count ] unit-test
132
133 { 4.0 } [ { 1e-30 1 3 -1e-30 } sum-floats ] unit-test
134 { 1.0000000000000002e16 } [ { 1e-16 1 1e16 } sum-floats ] unit-test
135
136 {
137     {
138         1 -1 -1 0 -1 1 -1 0 0 1 -1 0 -1 1 1
139         0 -1 0 -1 0 1 1 -1 0 0 1 0 0 -1 -1
140     }
141 } [
142     30 [1,b] [ mobius ] map
143 ] unit-test
144
145 { 1/5 } [ 3/5 1 kelly ] unit-test
146 { 0 } [ 1/2 1 kelly ] unit-test
147 { -1/5 } [ 2/5 1 kelly ] unit-test
148
149 [ -1 integer-sqrt ] must-fail
150 { 0 } [ 0 integer-sqrt ] unit-test
151 { 3 } [ 12 integer-sqrt ] unit-test
152 { 4 } [ 16 integer-sqrt ] unit-test
153 { 44 } [ 2019 integer-sqrt ] unit-test