Files
mercury/tests/hard_coded/bit_twiddle_uint64.exp
Julien Fischer 2fb7127729 Add more operations on 64-bit integers.
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.
2018-04-01 15:23:24 +10:00

78 lines
6.4 KiB
Plaintext

*** Test function 'num_zeros' ***
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(0000000000000000000000000000000000000000000000000000000011111111) = 56
num_zeros(0000000000000000000000000000000000000000000000001111111111111111) = 48
num_zeros(0000000000000000000000000000000011111111111111111111111111111111) = 32
num_zeros(1111111111111111111111111111111111111111111111111111111111111111) = 0
*** Test function 'num_ones' ***
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(0000000000000000000000000000000000000000000000000000000011111111) = 8
num_ones(0000000000000000000000000000000000000000000000001111111111111111) = 16
num_ones(0000000000000000000000000000000011111111111111111111111111111111) = 32
num_ones(1111111111111111111111111111111111111111111111111111111111111111) = 64
*** Test function 'num_leading_zeros' ***
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(0000000000000000000000000000000000000000000000000000000011111111) = 56
num_leading_zeros(0000000000000000000000000000000000000000000000001111111111111111) = 48
num_leading_zeros(0000000000000000000000000000000011111111111111111111111111111111) = 32
num_leading_zeros(1111111111111111111111111111111111111111111111111111111111111111) = 0
*** Test function 'num_trailing_zeros' ***
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(0000000000000000000000000000000000000000000000000000000011111111) = 0
num_trailing_zeros(0000000000000000000000000000000000000000000000001111111111111111) = 0
num_trailing_zeros(0000000000000000000000000000000011111111111111111111111111111111) = 0
num_trailing_zeros(1111111111111111111111111111111111111111111111111111111111111111) = 0
*** Test function 'reverse_bits' ***
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(0000000000000000000000000000000000000000000000000000000011111111) = 1111111100000000000000000000000000000000000000000000000000000000
reverse_bits(0000000000000000000000000000000000000000000000001111111111111111) = 1111111111111111000000000000000000000000000000000000000000000000
reverse_bits(0000000000000000000000000000000011111111111111111111111111111111) = 1111111111111111111111111111111100000000000000000000000000000000
reverse_bits(1111111111111111111111111111111111111111111111111111111111111111) = 1111111111111111111111111111111111111111111111111111111111111111
*** Test function 'reverse_bytes' ***
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(0000000000000000000000000000000000000000000000000000000011111111) = 1111111100000000000000000000000000000000000000000000000000000000
reverse_bytes(0000000000000000000000000000000000000000000000001111111111111111) = 1111111111111111000000000000000000000000000000000000000000000000
reverse_bytes(0000000000000000000000000000000011111111111111111111111111111111) = 1111111111111111111111111111111100000000000000000000000000000000
reverse_bytes(1111111111111111111111111111111111111111111111111111111111111111) = 1111111111111111111111111111111111111111111111111111111111111111