8 # ======================================================================
14 # $set1->equal($set2);
15 # $set1->subset($set2);
16 # $set1->Union($set2,$set3);
17 # $set1->Intersection($set2,$set3);
18 # $set1->Difference($set2,$set3);
19 # $set1->ExclusiveOr($set2,$set3);
20 # $set1->Complement($set2);
22 # ======================================================================
28 $limit = 999; # must be odd!
30 $set0 = new Bit::Vector($limit+1);
31 $set1 = new Bit::Vector($limit+1);
32 $set2 = new Bit::Vector($limit+1);
33 $set3 = new Bit::Vector($limit+1);
34 $set4 = new Bit::Vector($limit+1);
38 for ( $i = 0; $i <= $limit; $i += 2 ) { $set1->Bit_On($i); }
51 for ( $j = 4; $j <= $limit; $j += 2 ) { $set1->Bit_Off($j); }
53 for ( $i = 3; ($j = $i * $i) <= $limit; $i += 2 )
55 for ( ; $j <= $limit; $j += $i ) { $set1->Bit_Off($j); }
70 if ($set0->equal($set0))
71 {print "ok $n\n";} else {print "not ok $n\n";}
73 if (! $set0->equal($set1))
74 {print "ok $n\n";} else {print "not ok $n\n";}
76 if (! $set0->equal($set2))
77 {print "ok $n\n";} else {print "not ok $n\n";}
79 if (! $set0->equal($set3))
80 {print "ok $n\n";} else {print "not ok $n\n";}
82 if (! $set1->equal($set0))
83 {print "ok $n\n";} else {print "not ok $n\n";}
85 if ($set1->equal($set1))
86 {print "ok $n\n";} else {print "not ok $n\n";}
88 if (! $set1->equal($set2))
89 {print "ok $n\n";} else {print "not ok $n\n";}
91 if (! $set1->equal($set3))
92 {print "ok $n\n";} else {print "not ok $n\n";}
94 if (! $set2->equal($set0))
95 {print "ok $n\n";} else {print "not ok $n\n";}
97 if (! $set2->equal($set1))
98 {print "ok $n\n";} else {print "not ok $n\n";}
100 if ($set2->equal($set2))
101 {print "ok $n\n";} else {print "not ok $n\n";}
103 if (! $set2->equal($set3))
104 {print "ok $n\n";} else {print "not ok $n\n";}
106 if (! $set3->equal($set0))
107 {print "ok $n\n";} else {print "not ok $n\n";}
109 if (! $set3->equal($set1))
110 {print "ok $n\n";} else {print "not ok $n\n";}
112 if (! $set3->equal($set2))
113 {print "ok $n\n";} else {print "not ok $n\n";}
115 if ($set3->equal($set3))
116 {print "ok $n\n";} else {print "not ok $n\n";}
121 if ($set0->subset($set0))
122 {print "ok $n\n";} else {print "not ok $n\n";}
124 if ($set0->subset($set1))
125 {print "ok $n\n";} else {print "not ok $n\n";}
127 if ($set0->subset($set2))
128 {print "ok $n\n";} else {print "not ok $n\n";}
130 if ($set0->subset($set3))
131 {print "ok $n\n";} else {print "not ok $n\n";}
133 if (! $set1->subset($set0))
134 {print "ok $n\n";} else {print "not ok $n\n";}
136 if ($set1->subset($set1))
137 {print "ok $n\n";} else {print "not ok $n\n";}
139 if (! $set1->subset($set2))
140 {print "ok $n\n";} else {print "not ok $n\n";}
142 if ($set1->subset($set3))
143 {print "ok $n\n";} else {print "not ok $n\n";}
145 if (! $set2->subset($set0))
146 {print "ok $n\n";} else {print "not ok $n\n";}
148 if (! $set2->subset($set1))
149 {print "ok $n\n";} else {print "not ok $n\n";}
151 if ($set2->subset($set2))
152 {print "ok $n\n";} else {print "not ok $n\n";}
154 if ($set2->subset($set3))
155 {print "ok $n\n";} else {print "not ok $n\n";}
157 if (! $set3->subset($set0))
158 {print "ok $n\n";} else {print "not ok $n\n";}
160 if (! $set3->subset($set1))
161 {print "ok $n\n";} else {print "not ok $n\n";}
163 if (! $set3->subset($set2))
164 {print "ok $n\n";} else {print "not ok $n\n";}
166 if ($set3->subset($set3))
167 {print "ok $n\n";} else {print "not ok $n\n";}
172 $set4->Union($set0,$set0);
173 if ($set4->equal($set0))
174 {print "ok $n\n";} else {print "not ok $n\n";}
176 $set4->Union($set0,$set1);
177 if ($set4->equal($set1))
178 {print "ok $n\n";} else {print "not ok $n\n";}
180 $set4->Union($set0,$set2);
181 if ($set4->equal($set2))
182 {print "ok $n\n";} else {print "not ok $n\n";}
184 $set4->Union($set0,$set3);
185 if ($set4->equal($set3))
186 {print "ok $n\n";} else {print "not ok $n\n";}
188 $set4->Union($set1,$set0);
189 if ($set4->equal($set1))
190 {print "ok $n\n";} else {print "not ok $n\n";}
192 $set4->Union($set1,$set1);
193 if ($set4->equal($set1))
194 {print "ok $n\n";} else {print "not ok $n\n";}
196 $set4->Union($set1,$set2);
197 if ($set4->equal($set3))
198 {print "ok $n\n";} else {print "not ok $n\n";}
200 $set4->Union($set1,$set3);
201 if ($set4->equal($set3))
202 {print "ok $n\n";} else {print "not ok $n\n";}
204 $set4->Union($set2,$set0);
205 if ($set4->equal($set2))
206 {print "ok $n\n";} else {print "not ok $n\n";}
208 $set4->Union($set2,$set1);
209 if ($set4->equal($set3))
210 {print "ok $n\n";} else {print "not ok $n\n";}
212 $set4->Union($set2,$set2);
213 if ($set4->equal($set2))
214 {print "ok $n\n";} else {print "not ok $n\n";}
216 $set4->Union($set2,$set3);
217 if ($set4->equal($set3))
218 {print "ok $n\n";} else {print "not ok $n\n";}
220 $set4->Union($set3,$set0);
221 if ($set4->equal($set3))
222 {print "ok $n\n";} else {print "not ok $n\n";}
224 $set4->Union($set3,$set1);
225 if ($set4->equal($set3))
226 {print "ok $n\n";} else {print "not ok $n\n";}
228 $set4->Union($set3,$set2);
229 if ($set4->equal($set3))
230 {print "ok $n\n";} else {print "not ok $n\n";}
232 $set4->Union($set3,$set3);
233 if ($set4->equal($set3))
234 {print "ok $n\n";} else {print "not ok $n\n";}
239 $set4->Intersection($set0,$set0);
240 if ($set4->equal($set0))
241 {print "ok $n\n";} else {print "not ok $n\n";}
243 $set4->Intersection($set0,$set1);
244 if ($set4->equal($set0))
245 {print "ok $n\n";} else {print "not ok $n\n";}
247 $set4->Intersection($set0,$set2);
248 if ($set4->equal($set0))
249 {print "ok $n\n";} else {print "not ok $n\n";}
251 $set4->Intersection($set0,$set3);
252 if ($set4->equal($set0))
253 {print "ok $n\n";} else {print "not ok $n\n";}
255 $set4->Intersection($set1,$set0);
256 if ($set4->equal($set0))
257 {print "ok $n\n";} else {print "not ok $n\n";}
259 $set4->Intersection($set1,$set1);
260 if ($set4->equal($set1))
261 {print "ok $n\n";} else {print "not ok $n\n";}
263 $set4->Intersection($set1,$set2);
264 if ($set4->equal($set0))
265 {print "ok $n\n";} else {print "not ok $n\n";}
267 $set4->Intersection($set1,$set3);
268 if ($set4->equal($set1))
269 {print "ok $n\n";} else {print "not ok $n\n";}
271 $set4->Intersection($set2,$set0);
272 if ($set4->equal($set0))
273 {print "ok $n\n";} else {print "not ok $n\n";}
275 $set4->Intersection($set2,$set1);
276 if ($set4->equal($set0))
277 {print "ok $n\n";} else {print "not ok $n\n";}
279 $set4->Intersection($set2,$set2);
280 if ($set4->equal($set2))
281 {print "ok $n\n";} else {print "not ok $n\n";}
283 $set4->Intersection($set2,$set3);
284 if ($set4->equal($set2))
285 {print "ok $n\n";} else {print "not ok $n\n";}
287 $set4->Intersection($set3,$set0);
288 if ($set4->equal($set0))
289 {print "ok $n\n";} else {print "not ok $n\n";}
291 $set4->Intersection($set3,$set1);
292 if ($set4->equal($set1))
293 {print "ok $n\n";} else {print "not ok $n\n";}
295 $set4->Intersection($set3,$set2);
296 if ($set4->equal($set2))
297 {print "ok $n\n";} else {print "not ok $n\n";}
299 $set4->Intersection($set3,$set3);
300 if ($set4->equal($set3))
301 {print "ok $n\n";} else {print "not ok $n\n";}
306 $set4->Difference($set0,$set0);
307 if ($set4->equal($set0))
308 {print "ok $n\n";} else {print "not ok $n\n";}
310 $set4->Difference($set0,$set1);
311 if ($set4->equal($set0))
312 {print "ok $n\n";} else {print "not ok $n\n";}
314 $set4->Difference($set0,$set2);
315 if ($set4->equal($set0))
316 {print "ok $n\n";} else {print "not ok $n\n";}
318 $set4->Difference($set0,$set3);
319 if ($set4->equal($set0))
320 {print "ok $n\n";} else {print "not ok $n\n";}
322 $set4->Difference($set1,$set0);
323 if ($set4->equal($set1))
324 {print "ok $n\n";} else {print "not ok $n\n";}
326 $set4->Difference($set1,$set1);
327 if ($set4->equal($set0))
328 {print "ok $n\n";} else {print "not ok $n\n";}
330 $set4->Difference($set1,$set2);
331 if ($set4->equal($set1))
332 {print "ok $n\n";} else {print "not ok $n\n";}
334 $set4->Difference($set1,$set3);
335 if ($set4->equal($set0))
336 {print "ok $n\n";} else {print "not ok $n\n";}
338 $set4->Difference($set2,$set0);
339 if ($set4->equal($set2))
340 {print "ok $n\n";} else {print "not ok $n\n";}
342 $set4->Difference($set2,$set1);
343 if ($set4->equal($set2))
344 {print "ok $n\n";} else {print "not ok $n\n";}
346 $set4->Difference($set2,$set2);
347 if ($set4->equal($set0))
348 {print "ok $n\n";} else {print "not ok $n\n";}
350 $set4->Difference($set2,$set3);
351 if ($set4->equal($set0))
352 {print "ok $n\n";} else {print "not ok $n\n";}
354 $set4->Difference($set3,$set0);
355 if ($set4->equal($set3))
356 {print "ok $n\n";} else {print "not ok $n\n";}
358 $set4->Difference($set3,$set1);
359 if ($set4->equal($set2))
360 {print "ok $n\n";} else {print "not ok $n\n";}
362 $set4->Difference($set3,$set2);
363 if ($set4->equal($set1))
364 {print "ok $n\n";} else {print "not ok $n\n";}
366 $set4->Difference($set3,$set3);
367 if ($set4->equal($set0))
368 {print "ok $n\n";} else {print "not ok $n\n";}
373 $set4->ExclusiveOr($set0,$set0);
374 if ($set4->equal($set0))
375 {print "ok $n\n";} else {print "not ok $n\n";}
377 $set4->ExclusiveOr($set0,$set1);
378 if ($set4->equal($set1))
379 {print "ok $n\n";} else {print "not ok $n\n";}
381 $set4->ExclusiveOr($set0,$set2);
382 if ($set4->equal($set2))
383 {print "ok $n\n";} else {print "not ok $n\n";}
385 $set4->ExclusiveOr($set0,$set3);
386 if ($set4->equal($set3))
387 {print "ok $n\n";} else {print "not ok $n\n";}
389 $set4->ExclusiveOr($set1,$set0);
390 if ($set4->equal($set1))
391 {print "ok $n\n";} else {print "not ok $n\n";}
393 $set4->ExclusiveOr($set1,$set1);
394 if ($set4->equal($set0))
395 {print "ok $n\n";} else {print "not ok $n\n";}
397 $set4->ExclusiveOr($set1,$set2);
398 if ($set4->equal($set3))
399 {print "ok $n\n";} else {print "not ok $n\n";}
401 $set4->ExclusiveOr($set1,$set3);
402 if ($set4->equal($set2))
403 {print "ok $n\n";} else {print "not ok $n\n";}
405 $set4->ExclusiveOr($set2,$set0);
406 if ($set4->equal($set2))
407 {print "ok $n\n";} else {print "not ok $n\n";}
409 $set4->ExclusiveOr($set2,$set1);
410 if ($set4->equal($set3))
411 {print "ok $n\n";} else {print "not ok $n\n";}
413 $set4->ExclusiveOr($set2,$set2);
414 if ($set4->equal($set0))
415 {print "ok $n\n";} else {print "not ok $n\n";}
417 $set4->ExclusiveOr($set2,$set3);
418 if ($set4->equal($set1))
419 {print "ok $n\n";} else {print "not ok $n\n";}
421 $set4->ExclusiveOr($set3,$set0);
422 if ($set4->equal($set3))
423 {print "ok $n\n";} else {print "not ok $n\n";}
425 $set4->ExclusiveOr($set3,$set1);
426 if ($set4->equal($set2))
427 {print "ok $n\n";} else {print "not ok $n\n";}
429 $set4->ExclusiveOr($set3,$set2);
430 if ($set4->equal($set1))
431 {print "ok $n\n";} else {print "not ok $n\n";}
433 $set4->ExclusiveOr($set3,$set3);
434 if ($set4->equal($set0))
435 {print "ok $n\n";} else {print "not ok $n\n";}
440 $set4->Complement($set0);
441 if ($set4->equal($set3))
442 {print "ok $n\n";} else {print "not ok $n\n";}
444 $set4->Complement($set1);
445 if ($set4->equal($set2))
446 {print "ok $n\n";} else {print "not ok $n\n";}
448 $set4->Complement($set2);
449 if ($set4->equal($set1))
450 {print "ok $n\n";} else {print "not ok $n\n";}
452 $set4->Complement($set3);
453 if ($set4->equal($set0))
454 {print "ok $n\n";} else {print "not ok $n\n";}
460 if ($set4->equal($set0))
461 {print "ok $n\n";} else {print "not ok $n\n";}
464 if ($set4->equal($set1))
465 {print "ok $n\n";} else {print "not ok $n\n";}
468 if ($set4->equal($set2))
469 {print "ok $n\n";} else {print "not ok $n\n";}
472 if ($set4->equal($set3))
473 {print "ok $n\n";} else {print "not ok $n\n";}
479 $set4->Union($set2,$set4);
480 if ($set4->equal($set3))
481 {print "ok $n\n";} else {print "not ok $n\n";}
484 $set4->Union($set4,$set1);
485 if ($set4->equal($set3))
486 {print "ok $n\n";} else {print "not ok $n\n";}
490 $set4->Intersection($set1,$set4);
491 if ($set4->equal($set1))
492 {print "ok $n\n";} else {print "not ok $n\n";}
495 $set4->Intersection($set4,$set2);
496 if ($set4->equal($set2))
497 {print "ok $n\n";} else {print "not ok $n\n";}
501 $set4->Difference($set4,$set2);
502 if ($set4->equal($set1))
503 {print "ok $n\n";} else {print "not ok $n\n";}
506 $set4->Difference($set2,$set4);
507 if ($set4->equal($set0))
508 {print "ok $n\n";} else {print "not ok $n\n";}
512 $set4->ExclusiveOr($set4,$set3);
513 if ($set4->equal($set2))
514 {print "ok $n\n";} else {print "not ok $n\n";}
517 $set4->ExclusiveOr($set1,$set4);
518 if ($set4->equal($set3))
519 {print "ok $n\n";} else {print "not ok $n\n";}
523 $set4->Complement($set4);
524 if ($set4->equal($set2))
525 {print "ok $n\n";} else {print "not ok $n\n";}
528 $set4->Complement($set4);
529 if ($set4->equal($set0))
530 {print "ok $n\n";} else {print "not ok $n\n";}
535 if ($set4->equal($set1))
536 {print "ok $n\n";} else {print "not ok $n\n";}
540 if ($set4->equal($set2))
541 {print "ok $n\n";} else {print "not ok $n\n";}