8 # ======================================================================
9 # $set->Resize($elements);
10 # ======================================================================
16 $set = Bit::Vector->new(1);
18 {print "ok $n\n";} else {print "not ok $n\n";}
20 if (ref($set) eq 'Bit::Vector')
21 {print "ok $n\n";} else {print "not ok $n\n";}
24 {print "ok $n\n";} else {print "not ok $n\n";}
26 eval { ${$set} = 0; };
27 if ($@ =~ /Modification of a read-only value attempted/)
28 {print "ok $n\n";} else {print "not ok $n\n";}
31 eval { $set->Resize(0); };
33 {print "ok $n\n";} else {print "not ok $n\n";}
35 if (ref($set) eq 'Bit::Vector')
36 {print "ok $n\n";} else {print "not ok $n\n";}
39 {print "ok $n\n";} else {print "not ok $n\n";}
41 eval { ${$set} = 1; };
42 if ($@ =~ /Modification of a read-only value attempted/)
43 {print "ok $n\n";} else {print "not ok $n\n";}
46 $set = Bit::Vector->new(8);
48 {print "ok $n\n";} else {print "not ok $n\n";}
50 if (ref($set) eq 'Bit::Vector')
51 {print "ok $n\n";} else {print "not ok $n\n";}
54 {print "ok $n\n";} else {print "not ok $n\n";}
58 {print "ok $n\n";} else {print "not ok $n\n";}
63 {print "ok $n\n";} else {print "not ok $n\n";}
65 if (ref($set) eq 'Bit::Vector')
66 {print "ok $n\n";} else {print "not ok $n\n";}
69 {print "ok $n\n";} else {print "not ok $n\n";}
72 {print "ok $n\n";} else {print "not ok $n\n";}
76 {print "ok $n\n";} else {print "not ok $n\n";}
78 if ($set->Size() == 65536)
79 {print "ok $n\n";} else {print "not ok $n\n";}
84 {print "ok $n\n";} else {print "not ok $n\n";}
86 if (ref($set) eq 'Bit::Vector')
87 {print "ok $n\n";} else {print "not ok $n\n";}
90 {print "ok $n\n";} else {print "not ok $n\n";}
93 {print "ok $n\n";} else {print "not ok $n\n";}
95 if ($set->Size() == 4090)
96 {print "ok $n\n";} else {print "not ok $n\n";}
101 {print "ok $n\n";} else {print "not ok $n\n";}
103 if (ref($set) eq 'Bit::Vector')
104 {print "ok $n\n";} else {print "not ok $n\n";}
107 {print "ok $n\n";} else {print "not ok $n\n";}
110 {print "ok $n\n";} else {print "not ok $n\n";}
112 if ($set->Size() == 4096)
113 {print "ok $n\n";} else {print "not ok $n\n";}
116 $set->Resize(&binomial(49,6));
118 {print "ok $n\n";} else {print "not ok $n\n";}
120 if (ref($set) eq 'Bit::Vector')
121 {print "ok $n\n";} else {print "not ok $n\n";}
124 {print "ok $n\n";} else {print "not ok $n\n";}
127 {print "ok $n\n";} else {print "not ok $n\n";}
131 {print "ok $n\n";} else {print "not ok $n\n";}
133 if ($set->Size() == &binomial(49,6))
134 {print "ok $n\n";} else {print "not ok $n\n";}
140 $set->Resize($limit);
142 {print "ok $n\n";} else {print "not ok $n\n";}
144 if (ref($set) eq 'Bit::Vector')
145 {print "ok $n\n";} else {print "not ok $n\n";}
148 {print "ok $n\n";} else {print "not ok $n\n";}
151 {print "ok $n\n";} else {print "not ok $n\n";}
153 if ($set->Size() == $limit)
154 {print "ok $n\n";} else {print "not ok $n\n";}
157 $inv = Bit::Vector->new($limit);
168 $index = ( $fib[0] + $fib[1] );
171 last if $index >= $limit;
172 $set->Bit_On($index);
173 $inv->Bit_Off($index);
176 if ($set->Norm() == $count)
177 {print "ok $n\n";} else {print "not ok $n\n";}
179 if ($limit - $inv->Norm() == $count)
180 {print "ok $n\n";} else {print "not ok $n\n";}
183 $set->Resize($limit * 2);
185 {print "ok $n\n";} else {print "not ok $n\n";}
187 if (ref($set) eq 'Bit::Vector')
188 {print "ok $n\n";} else {print "not ok $n\n";}
191 {print "ok $n\n";} else {print "not ok $n\n";}
194 {print "ok $n\n";} else {print "not ok $n\n";}
196 if ($set->Size() == $limit * 2)
197 {print "ok $n\n";} else {print "not ok $n\n";}
200 if ($set->Norm() == $count)
201 {print "ok $n\n";} else {print "not ok $n\n";}
204 $inv->Resize($limit * 2);
206 {print "ok $n\n";} else {print "not ok $n\n";}
208 if (ref($inv) eq 'Bit::Vector')
209 {print "ok $n\n";} else {print "not ok $n\n";}
212 {print "ok $n\n";} else {print "not ok $n\n";}
214 if ($inv->Size() == $limit * 2)
215 {print "ok $n\n";} else {print "not ok $n\n";}
218 if ($limit - $inv->Norm() == $count)
219 {print "ok $n\n";} else {print "not ok $n\n";}
222 $inv->Complement($inv);
224 if ($inv->Norm() == $limit + $count)
225 {print "ok $n\n";} else {print "not ok $n\n";}
228 if ($set->inclusion($inv))
229 {print "ok $n\n";} else {print "not ok $n\n";}
232 $set->ExclusiveOr($inv,$set);
234 if ($set->Norm() == $limit)
235 {print "ok $n\n";} else {print "not ok $n\n";}
238 if ($set->Min() == $limit)
239 {print "ok $n\n";} else {print "not ok $n\n";}
242 if ($set->Max() == (($limit * 2) - 1))
243 {print "ok $n\n";} else {print "not ok $n\n";}
254 if (($n <= 0) || ($k <= 0) || ($n <= $k)) { return(1); }
255 if ($k > $n - $k) { $k = $n - $k; }
261 return(int($prod + 0.5));