mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-20 03:43:51 +00:00
library/int32.m:
Add num_zeros/1, num_ones/1, num_leading_zeros/1, num_trailing_zeros/1
and reverse_bits/1.
library/uint32.m:
Fix spelling.
tests/hard_coded/Mmakefile:
tests/hard_coded/bit_twiddle_int32.{m,exp}:
Add tests of the above operations.
90 lines
4.6 KiB
Plaintext
90 lines
4.6 KiB
Plaintext
*** Test function 'num_zeros' ***
|
|
|
|
num_zeros(10000000000000000000000000000000) = 31
|
|
num_zeros(11111111111111111000000000000000) = 15
|
|
num_zeros(11111111111111111111111110000000) = 7
|
|
num_zeros(00000000000000000000000000000000) = 32
|
|
num_zeros(00000000000000000000000000000001) = 31
|
|
num_zeros(00000000000000000000000000000010) = 31
|
|
num_zeros(00000000000000000000000000001000) = 31
|
|
num_zeros(00000000000000000000000000001010) = 30
|
|
num_zeros(00000000000000000000000000010000) = 31
|
|
num_zeros(00000000000000000000000001111111) = 25
|
|
num_zeros(00000000000000000111111111111111) = 17
|
|
num_zeros(01111111111111111111111111111111) = 1
|
|
|
|
*** Test function 'num_ones' ***
|
|
|
|
num_ones(10000000000000000000000000000000) = 1
|
|
num_ones(11111111111111111000000000000000) = 17
|
|
num_ones(11111111111111111111111110000000) = 25
|
|
num_ones(00000000000000000000000000000000) = 0
|
|
num_ones(00000000000000000000000000000001) = 1
|
|
num_ones(00000000000000000000000000000010) = 1
|
|
num_ones(00000000000000000000000000001000) = 1
|
|
num_ones(00000000000000000000000000001010) = 2
|
|
num_ones(00000000000000000000000000010000) = 1
|
|
num_ones(00000000000000000000000001111111) = 7
|
|
num_ones(00000000000000000111111111111111) = 15
|
|
num_ones(01111111111111111111111111111111) = 31
|
|
|
|
*** Test function 'num_leading_zeros' ***
|
|
|
|
num_leading_zeros(10000000000000000000000000000000) = 0
|
|
num_leading_zeros(11111111111111111000000000000000) = 0
|
|
num_leading_zeros(11111111111111111111111110000000) = 0
|
|
num_leading_zeros(00000000000000000000000000000000) = 32
|
|
num_leading_zeros(00000000000000000000000000000001) = 31
|
|
num_leading_zeros(00000000000000000000000000000010) = 30
|
|
num_leading_zeros(00000000000000000000000000001000) = 28
|
|
num_leading_zeros(00000000000000000000000000001010) = 28
|
|
num_leading_zeros(00000000000000000000000000010000) = 27
|
|
num_leading_zeros(00000000000000000000000001111111) = 25
|
|
num_leading_zeros(00000000000000000111111111111111) = 17
|
|
num_leading_zeros(01111111111111111111111111111111) = 1
|
|
|
|
*** Test function 'num_trailing_zeros' ***
|
|
|
|
num_trailing_zeros(10000000000000000000000000000000) = 31
|
|
num_trailing_zeros(11111111111111111000000000000000) = 15
|
|
num_trailing_zeros(11111111111111111111111110000000) = 7
|
|
num_trailing_zeros(00000000000000000000000000000000) = 32
|
|
num_trailing_zeros(00000000000000000000000000000001) = 0
|
|
num_trailing_zeros(00000000000000000000000000000010) = 1
|
|
num_trailing_zeros(00000000000000000000000000001000) = 3
|
|
num_trailing_zeros(00000000000000000000000000001010) = 1
|
|
num_trailing_zeros(00000000000000000000000000010000) = 4
|
|
num_trailing_zeros(00000000000000000000000001111111) = 0
|
|
num_trailing_zeros(00000000000000000111111111111111) = 0
|
|
num_trailing_zeros(01111111111111111111111111111111) = 0
|
|
|
|
*** Test function 'reverse_bits' ***
|
|
|
|
reverse_bits(10000000000000000000000000000000) = 00000000000000000000000000000001
|
|
reverse_bits(11111111111111111000000000000000) = 00000000000000011111111111111111
|
|
reverse_bits(11111111111111111111111110000000) = 00000001111111111111111111111111
|
|
reverse_bits(00000000000000000000000000000000) = 00000000000000000000000000000000
|
|
reverse_bits(00000000000000000000000000000001) = 10000000000000000000000000000000
|
|
reverse_bits(00000000000000000000000000000010) = 01000000000000000000000000000000
|
|
reverse_bits(00000000000000000000000000001000) = 00010000000000000000000000000000
|
|
reverse_bits(00000000000000000000000000001010) = 01010000000000000000000000000000
|
|
reverse_bits(00000000000000000000000000010000) = 00001000000000000000000000000000
|
|
reverse_bits(00000000000000000000000001111111) = 11111110000000000000000000000000
|
|
reverse_bits(00000000000000000111111111111111) = 11111111111111100000000000000000
|
|
reverse_bits(01111111111111111111111111111111) = 11111111111111111111111111111110
|
|
|
|
*** Test function 'reverse_bytes' ***
|
|
|
|
reverse_bytes(10000000000000000000000000000000) = 00000000000000000000000010000000
|
|
reverse_bytes(11111111111111111000000000000000) = 00000000100000001111111111111111
|
|
reverse_bytes(11111111111111111111111110000000) = 10000000111111111111111111111111
|
|
reverse_bytes(00000000000000000000000000000000) = 00000000000000000000000000000000
|
|
reverse_bytes(00000000000000000000000000000001) = 00000001000000000000000000000000
|
|
reverse_bytes(00000000000000000000000000000010) = 00000010000000000000000000000000
|
|
reverse_bytes(00000000000000000000000000001000) = 00001000000000000000000000000000
|
|
reverse_bytes(00000000000000000000000000001010) = 00001010000000000000000000000000
|
|
reverse_bytes(00000000000000000000000000010000) = 00010000000000000000000000000000
|
|
reverse_bytes(00000000000000000000000001111111) = 01111111000000000000000000000000
|
|
reverse_bytes(00000000000000000111111111111111) = 11111111011111110000000000000000
|
|
reverse_bytes(01111111111111111111111111111111) = 11111111111111111111111101111111
|