8 # ======================================================================
9 # $vector->increment();
10 # $vector->decrement();
11 # ======================================================================
19 $limit = (1 << $bits) - 1;
23 $test_vector = bitvector($bits,$k);
25 for ( $i = 0; $i <= $limit; $i++ )
27 if ($k++ == $limit) { $k = 0; }
29 $ref_carry = ($test_vector->Norm() == $bits);
31 $test_carry = $test_vector->increment();
33 if ($test_carry == $ref_carry)
34 {print "ok $n\n";} else {print "not ok $n\n";}
37 $ref_vector = bitvector($bits,$k);
39 if ($test_vector->equal($ref_vector))
40 {print "ok $n\n";} else {print "not ok $n\n";}
46 $test_vector = bitvector($bits,$k);
48 for ( $i = $limit; $i >= 0; $i-- )
50 if ($k-- == 0) { $k = $limit; }
52 $ref_carry = ($test_vector->Norm() == 0);
54 $test_carry = $test_vector->decrement();
56 if ($test_carry == $ref_carry)
57 {print "ok $n\n";} else {print "not ok $n\n";}
60 $ref_vector = bitvector($bits,$k);
62 if ($test_vector->equal($ref_vector))
63 {print "ok $n\n";} else {print "not ok $n\n";}
74 $test_vector = bitvector($bits,$k);
76 while (++$k <= $upper)
78 $ref_carry = ($test_vector->Norm() == $bits);
80 $test_carry = $test_vector->increment();
82 if ($test_carry == $ref_carry)
83 {print "ok $n\n";} else {print "not ok $n\n";}
86 $ref_vector = bitvector($bits,$k);
88 if ($test_vector->equal($ref_vector))
89 {print "ok $n\n";} else {print "not ok $n\n";}
95 $test_vector = bitvector($bits,$k);
97 while (--$k >= $lower)
99 $ref_carry = ($test_vector->Norm() == 0);
101 $test_carry = $test_vector->decrement();
103 if ($test_carry == $ref_carry)
104 {print "ok $n\n";} else {print "not ok $n\n";}
107 $ref_vector = bitvector($bits,$k);
109 if ($test_vector->equal($ref_vector))
110 {print "ok $n\n";} else {print "not ok $n\n";}
118 my($bits,$value) = @_;
121 $vector = Bit::Vector->new($bits);
125 $value = -1 - $value;
132 if ($value & 1) { $vector->bit_flip($bit); }