mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-19 19:33:46 +00:00
library/int64.m:
library/uint64.m:
Add num_zeros/1, num_ones/1, num_leading_zeros/1, num_trailing_zeros/1
and reverse_bits/1.
configure.ac:
runtime/mercury_conf.h.in:
Add a new configuration macro that is defined if C's long type
is 64-bit.
tests/hard_coded/Mmakefile:
tests/hard_coded/bit_twiddle_uint64.{m,exp}:
tests/hard_coded/bit_twiddle_int64.{m,exp}:
Add tests of the above.
102 lines
8.9 KiB
Plaintext
102 lines
8.9 KiB
Plaintext
*** Test function 'num_zeros' ***
|
|
|
|
num_zeros(1000000000000000000000000000000000000000000000000000000000000000) = 63
|
|
num_zeros(1111111111111111111111111111111110000000000000000000000000000000) = 31
|
|
num_zeros(1111111111111111111111111111111111111111111111111000000000000000) = 15
|
|
num_zeros(1111111111111111111111111111111111111111111111111111111110000000) = 7
|
|
num_zeros(0000000000000000000000000000000000000000000000000000000000000000) = 64
|
|
num_zeros(0000000000000000000000000000000000000000000000000000000000000001) = 63
|
|
num_zeros(0000000000000000000000000000000000000000000000000000000000000010) = 63
|
|
num_zeros(0000000000000000000000000000000000000000000000000000000000001000) = 63
|
|
num_zeros(0000000000000000000000000000000000000000000000000000000000001010) = 62
|
|
num_zeros(0000000000000000000000000000000000000000000000000000000000010000) = 63
|
|
num_zeros(0000000000000000000000000000000000000000000000000000000001111111) = 57
|
|
num_zeros(0000000000000000000000000000000000000000000000000111111111111111) = 49
|
|
num_zeros(0000000000000000000000000000000001111111111111111111111111111111) = 33
|
|
num_zeros(0111111111111111111111111111111111111111111111111111111111111111) = 1
|
|
|
|
*** Test function 'num_ones' ***
|
|
|
|
num_ones(1000000000000000000000000000000000000000000000000000000000000000) = 1
|
|
num_ones(1111111111111111111111111111111110000000000000000000000000000000) = 33
|
|
num_ones(1111111111111111111111111111111111111111111111111000000000000000) = 49
|
|
num_ones(1111111111111111111111111111111111111111111111111111111110000000) = 57
|
|
num_ones(0000000000000000000000000000000000000000000000000000000000000000) = 0
|
|
num_ones(0000000000000000000000000000000000000000000000000000000000000001) = 1
|
|
num_ones(0000000000000000000000000000000000000000000000000000000000000010) = 1
|
|
num_ones(0000000000000000000000000000000000000000000000000000000000001000) = 1
|
|
num_ones(0000000000000000000000000000000000000000000000000000000000001010) = 2
|
|
num_ones(0000000000000000000000000000000000000000000000000000000000010000) = 1
|
|
num_ones(0000000000000000000000000000000000000000000000000000000001111111) = 7
|
|
num_ones(0000000000000000000000000000000000000000000000000111111111111111) = 15
|
|
num_ones(0000000000000000000000000000000001111111111111111111111111111111) = 31
|
|
num_ones(0111111111111111111111111111111111111111111111111111111111111111) = 63
|
|
|
|
*** Test function 'num_leading_zeros' ***
|
|
|
|
num_leading_zeros(1000000000000000000000000000000000000000000000000000000000000000) = 0
|
|
num_leading_zeros(1111111111111111111111111111111110000000000000000000000000000000) = 0
|
|
num_leading_zeros(1111111111111111111111111111111111111111111111111000000000000000) = 0
|
|
num_leading_zeros(1111111111111111111111111111111111111111111111111111111110000000) = 0
|
|
num_leading_zeros(0000000000000000000000000000000000000000000000000000000000000000) = 64
|
|
num_leading_zeros(0000000000000000000000000000000000000000000000000000000000000001) = 63
|
|
num_leading_zeros(0000000000000000000000000000000000000000000000000000000000000010) = 62
|
|
num_leading_zeros(0000000000000000000000000000000000000000000000000000000000001000) = 60
|
|
num_leading_zeros(0000000000000000000000000000000000000000000000000000000000001010) = 60
|
|
num_leading_zeros(0000000000000000000000000000000000000000000000000000000000010000) = 59
|
|
num_leading_zeros(0000000000000000000000000000000000000000000000000000000001111111) = 57
|
|
num_leading_zeros(0000000000000000000000000000000000000000000000000111111111111111) = 49
|
|
num_leading_zeros(0000000000000000000000000000000001111111111111111111111111111111) = 33
|
|
num_leading_zeros(0111111111111111111111111111111111111111111111111111111111111111) = 1
|
|
|
|
*** Test function 'num_trailing_zeros' ***
|
|
|
|
num_trailing_zeros(1000000000000000000000000000000000000000000000000000000000000000) = 63
|
|
num_trailing_zeros(1111111111111111111111111111111110000000000000000000000000000000) = 31
|
|
num_trailing_zeros(1111111111111111111111111111111111111111111111111000000000000000) = 15
|
|
num_trailing_zeros(1111111111111111111111111111111111111111111111111111111110000000) = 7
|
|
num_trailing_zeros(0000000000000000000000000000000000000000000000000000000000000000) = 64
|
|
num_trailing_zeros(0000000000000000000000000000000000000000000000000000000000000001) = 0
|
|
num_trailing_zeros(0000000000000000000000000000000000000000000000000000000000000010) = 1
|
|
num_trailing_zeros(0000000000000000000000000000000000000000000000000000000000001000) = 3
|
|
num_trailing_zeros(0000000000000000000000000000000000000000000000000000000000001010) = 1
|
|
num_trailing_zeros(0000000000000000000000000000000000000000000000000000000000010000) = 4
|
|
num_trailing_zeros(0000000000000000000000000000000000000000000000000000000001111111) = 0
|
|
num_trailing_zeros(0000000000000000000000000000000000000000000000000111111111111111) = 0
|
|
num_trailing_zeros(0000000000000000000000000000000001111111111111111111111111111111) = 0
|
|
num_trailing_zeros(0111111111111111111111111111111111111111111111111111111111111111) = 0
|
|
|
|
*** Test function 'reverse_bits' ***
|
|
|
|
reverse_bits(1000000000000000000000000000000000000000000000000000000000000000) = 0000000000000000000000000000000000000000000000000000000000000001
|
|
reverse_bits(1111111111111111111111111111111110000000000000000000000000000000) = 0000000000000000000000000000000111111111111111111111111111111111
|
|
reverse_bits(1111111111111111111111111111111111111111111111111000000000000000) = 0000000000000001111111111111111111111111111111111111111111111111
|
|
reverse_bits(1111111111111111111111111111111111111111111111111111111110000000) = 0000000111111111111111111111111111111111111111111111111111111111
|
|
reverse_bits(0000000000000000000000000000000000000000000000000000000000000000) = 0000000000000000000000000000000000000000000000000000000000000000
|
|
reverse_bits(0000000000000000000000000000000000000000000000000000000000000001) = 1000000000000000000000000000000000000000000000000000000000000000
|
|
reverse_bits(0000000000000000000000000000000000000000000000000000000000000010) = 0100000000000000000000000000000000000000000000000000000000000000
|
|
reverse_bits(0000000000000000000000000000000000000000000000000000000000001000) = 0001000000000000000000000000000000000000000000000000000000000000
|
|
reverse_bits(0000000000000000000000000000000000000000000000000000000000001010) = 0101000000000000000000000000000000000000000000000000000000000000
|
|
reverse_bits(0000000000000000000000000000000000000000000000000000000000010000) = 0000100000000000000000000000000000000000000000000000000000000000
|
|
reverse_bits(0000000000000000000000000000000000000000000000000000000001111111) = 1111111000000000000000000000000000000000000000000000000000000000
|
|
reverse_bits(0000000000000000000000000000000000000000000000000111111111111111) = 1111111111111110000000000000000000000000000000000000000000000000
|
|
reverse_bits(0000000000000000000000000000000001111111111111111111111111111111) = 1111111111111111111111111111111000000000000000000000000000000000
|
|
reverse_bits(0111111111111111111111111111111111111111111111111111111111111111) = 1111111111111111111111111111111111111111111111111111111111111110
|
|
|
|
*** Test function 'reverse_bytes' ***
|
|
|
|
reverse_bytes(1000000000000000000000000000000000000000000000000000000000000000) = 0000000000000000000000000000000000000000000000000000000010000000
|
|
reverse_bytes(1111111111111111111111111111111110000000000000000000000000000000) = 0000000000000000000000001000000011111111111111111111111111111111
|
|
reverse_bytes(1111111111111111111111111111111111111111111111111000000000000000) = 0000000010000000111111111111111111111111111111111111111111111111
|
|
reverse_bytes(1111111111111111111111111111111111111111111111111111111110000000) = 1000000011111111111111111111111111111111111111111111111111111111
|
|
reverse_bytes(0000000000000000000000000000000000000000000000000000000000000000) = 0000000000000000000000000000000000000000000000000000000000000000
|
|
reverse_bytes(0000000000000000000000000000000000000000000000000000000000000001) = 0000000100000000000000000000000000000000000000000000000000000000
|
|
reverse_bytes(0000000000000000000000000000000000000000000000000000000000000010) = 0000001000000000000000000000000000000000000000000000000000000000
|
|
reverse_bytes(0000000000000000000000000000000000000000000000000000000000001000) = 0000100000000000000000000000000000000000000000000000000000000000
|
|
reverse_bytes(0000000000000000000000000000000000000000000000000000000000001010) = 0000101000000000000000000000000000000000000000000000000000000000
|
|
reverse_bytes(0000000000000000000000000000000000000000000000000000000000010000) = 0001000000000000000000000000000000000000000000000000000000000000
|
|
reverse_bytes(0000000000000000000000000000000000000000000000000000000001111111) = 0111111100000000000000000000000000000000000000000000000000000000
|
|
reverse_bytes(0000000000000000000000000000000000000000000000000111111111111111) = 1111111101111111000000000000000000000000000000000000000000000000
|
|
reverse_bytes(0000000000000000000000000000000001111111111111111111111111111111) = 1111111111111111111111110111111100000000000000000000000000000000
|
|
reverse_bytes(0111111111111111111111111111111111111111111111111111111111111111) = 1111111111111111111111111111111111111111111111111111111101111111
|