mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-16 09:53:36 +00:00
library/uint32.m:
Add functions for setting, clearing, flipping and testing
the individual bits of a uint32 value.
NEWS:
Announce the new functions.
tests/hard_coded/Mmakefile:
tests/hard_coded/bit_access_uint32.{m,exp}:
Add a test case.
184 lines
11 KiB
Plaintext
184 lines
11 KiB
Plaintext
*** Test operation 'set_bit' ***
|
|
|
|
set_bit(00000000000000000000000000000000, 0 ) = 00000000000000000000000000000001
|
|
set_bit(00000000000000000000000000000000, 1 ) = 00000000000000000000000000000010
|
|
set_bit(00000000000000000000000000000000, 2 ) = 00000000000000000000000000000100
|
|
set_bit(00000000000000000000000000000000, 7 ) = 00000000000000000000000010000000
|
|
set_bit(00000000000000000000000000000000, 15) = 00000000000000001000000000000000
|
|
set_bit(00000000000000000000000000000000, 31) = 10000000000000000000000000000000
|
|
set_bit(00000000000000000000000000000000, 32) = <<exception>>
|
|
set_bit(11111111111111111111111111111111, 0 ) = 11111111111111111111111111111111
|
|
set_bit(11111111111111111111111111111111, 1 ) = 11111111111111111111111111111111
|
|
set_bit(11111111111111111111111111111111, 2 ) = 11111111111111111111111111111111
|
|
set_bit(11111111111111111111111111111111, 7 ) = 11111111111111111111111111111111
|
|
set_bit(11111111111111111111111111111111, 15) = 11111111111111111111111111111111
|
|
set_bit(11111111111111111111111111111111, 31) = 11111111111111111111111111111111
|
|
set_bit(11111111111111111111111111111111, 32) = <<exception>>
|
|
|
|
*** Test operation 'clear_bit' ***
|
|
|
|
clear_bit(00000000000000000000000000000000, 0 ) = 00000000000000000000000000000000
|
|
clear_bit(00000000000000000000000000000000, 1 ) = 00000000000000000000000000000000
|
|
clear_bit(00000000000000000000000000000000, 2 ) = 00000000000000000000000000000000
|
|
clear_bit(00000000000000000000000000000000, 7 ) = 00000000000000000000000000000000
|
|
clear_bit(00000000000000000000000000000000, 15) = 00000000000000000000000000000000
|
|
clear_bit(00000000000000000000000000000000, 31) = 00000000000000000000000000000000
|
|
clear_bit(00000000000000000000000000000000, 32) = <<exception>>
|
|
clear_bit(11111111111111111111111111111111, 0 ) = 11111111111111111111111111111110
|
|
clear_bit(11111111111111111111111111111111, 1 ) = 11111111111111111111111111111101
|
|
clear_bit(11111111111111111111111111111111, 2 ) = 11111111111111111111111111111011
|
|
clear_bit(11111111111111111111111111111111, 7 ) = 11111111111111111111111101111111
|
|
clear_bit(11111111111111111111111111111111, 15) = 11111111111111110111111111111111
|
|
clear_bit(11111111111111111111111111111111, 31) = 01111111111111111111111111111111
|
|
clear_bit(11111111111111111111111111111111, 32) = <<exception>>
|
|
|
|
*** Test operation 'flip_bit' ***
|
|
|
|
flip_bit(00000000000000000000000000000000, 0 ) = 00000000000000000000000000000001
|
|
flip_bit(00000000000000000000000000000000, 1 ) = 00000000000000000000000000000010
|
|
flip_bit(00000000000000000000000000000000, 2 ) = 00000000000000000000000000000100
|
|
flip_bit(00000000000000000000000000000000, 7 ) = 00000000000000000000000010000000
|
|
flip_bit(00000000000000000000000000000000, 15) = 00000000000000001000000000000000
|
|
flip_bit(00000000000000000000000000000000, 31) = 10000000000000000000000000000000
|
|
flip_bit(00000000000000000000000000000000, 32) = <<exception>>
|
|
flip_bit(11111111111111111111111111111111, 0 ) = 11111111111111111111111111111110
|
|
flip_bit(11111111111111111111111111111111, 1 ) = 11111111111111111111111111111101
|
|
flip_bit(11111111111111111111111111111111, 2 ) = 11111111111111111111111111111011
|
|
flip_bit(11111111111111111111111111111111, 7 ) = 11111111111111111111111101111111
|
|
flip_bit(11111111111111111111111111111111, 15) = 11111111111111110111111111111111
|
|
flip_bit(11111111111111111111111111111111, 31) = 01111111111111111111111111111111
|
|
flip_bit(11111111111111111111111111111111, 32) = <<exception>>
|
|
|
|
*** Test operation 'bit_is_set' ***
|
|
|
|
bit_is_set(00000000000000000000000000000000, 0 ) ==> false
|
|
bit_is_set(00000000000000000000000000000000, 1 ) ==> false
|
|
bit_is_set(00000000000000000000000000000000, 2 ) ==> false
|
|
bit_is_set(00000000000000000000000000000000, 7 ) ==> false
|
|
bit_is_set(00000000000000000000000000000000, 15) ==> false
|
|
bit_is_set(00000000000000000000000000000000, 31) ==> false
|
|
bit_is_set(00000000000000000000000000000000, 32) ==> <<exception>>
|
|
bit_is_set(00000000000000000000000000000001, 0 ) ==> true
|
|
bit_is_set(00000000000000000000000000000001, 1 ) ==> false
|
|
bit_is_set(00000000000000000000000000000001, 2 ) ==> false
|
|
bit_is_set(00000000000000000000000000000001, 7 ) ==> false
|
|
bit_is_set(00000000000000000000000000000001, 15) ==> false
|
|
bit_is_set(00000000000000000000000000000001, 31) ==> false
|
|
bit_is_set(00000000000000000000000000000001, 32) ==> <<exception>>
|
|
bit_is_set(00000000000000000000000000000010, 0 ) ==> false
|
|
bit_is_set(00000000000000000000000000000010, 1 ) ==> true
|
|
bit_is_set(00000000000000000000000000000010, 2 ) ==> false
|
|
bit_is_set(00000000000000000000000000000010, 7 ) ==> false
|
|
bit_is_set(00000000000000000000000000000010, 15) ==> false
|
|
bit_is_set(00000000000000000000000000000010, 31) ==> false
|
|
bit_is_set(00000000000000000000000000000010, 32) ==> <<exception>>
|
|
bit_is_set(00000000000000000000000000001000, 0 ) ==> false
|
|
bit_is_set(00000000000000000000000000001000, 1 ) ==> false
|
|
bit_is_set(00000000000000000000000000001000, 2 ) ==> false
|
|
bit_is_set(00000000000000000000000000001000, 7 ) ==> false
|
|
bit_is_set(00000000000000000000000000001000, 15) ==> false
|
|
bit_is_set(00000000000000000000000000001000, 31) ==> false
|
|
bit_is_set(00000000000000000000000000001000, 32) ==> <<exception>>
|
|
bit_is_set(00000000000000000000000000001010, 0 ) ==> false
|
|
bit_is_set(00000000000000000000000000001010, 1 ) ==> true
|
|
bit_is_set(00000000000000000000000000001010, 2 ) ==> false
|
|
bit_is_set(00000000000000000000000000001010, 7 ) ==> false
|
|
bit_is_set(00000000000000000000000000001010, 15) ==> false
|
|
bit_is_set(00000000000000000000000000001010, 31) ==> false
|
|
bit_is_set(00000000000000000000000000001010, 32) ==> <<exception>>
|
|
bit_is_set(00000000000000000000000000010000, 0 ) ==> false
|
|
bit_is_set(00000000000000000000000000010000, 1 ) ==> false
|
|
bit_is_set(00000000000000000000000000010000, 2 ) ==> false
|
|
bit_is_set(00000000000000000000000000010000, 7 ) ==> false
|
|
bit_is_set(00000000000000000000000000010000, 15) ==> false
|
|
bit_is_set(00000000000000000000000000010000, 31) ==> false
|
|
bit_is_set(00000000000000000000000000010000, 32) ==> <<exception>>
|
|
bit_is_set(00000000000000000000000011111111, 0 ) ==> true
|
|
bit_is_set(00000000000000000000000011111111, 1 ) ==> true
|
|
bit_is_set(00000000000000000000000011111111, 2 ) ==> true
|
|
bit_is_set(00000000000000000000000011111111, 7 ) ==> true
|
|
bit_is_set(00000000000000000000000011111111, 15) ==> false
|
|
bit_is_set(00000000000000000000000011111111, 31) ==> false
|
|
bit_is_set(00000000000000000000000011111111, 32) ==> <<exception>>
|
|
bit_is_set(00000000000000001111111111111111, 0 ) ==> true
|
|
bit_is_set(00000000000000001111111111111111, 1 ) ==> true
|
|
bit_is_set(00000000000000001111111111111111, 2 ) ==> true
|
|
bit_is_set(00000000000000001111111111111111, 7 ) ==> true
|
|
bit_is_set(00000000000000001111111111111111, 15) ==> true
|
|
bit_is_set(00000000000000001111111111111111, 31) ==> false
|
|
bit_is_set(00000000000000001111111111111111, 32) ==> <<exception>>
|
|
bit_is_set(11111111111111111111111111111111, 0 ) ==> true
|
|
bit_is_set(11111111111111111111111111111111, 1 ) ==> true
|
|
bit_is_set(11111111111111111111111111111111, 2 ) ==> true
|
|
bit_is_set(11111111111111111111111111111111, 7 ) ==> true
|
|
bit_is_set(11111111111111111111111111111111, 15) ==> true
|
|
bit_is_set(11111111111111111111111111111111, 31) ==> true
|
|
bit_is_set(11111111111111111111111111111111, 32) ==> <<exception>>
|
|
|
|
*** Test operation 'bit_is_clear' ***
|
|
|
|
bit_is_clear(00000000000000000000000000000000, 0 ) ==> true
|
|
bit_is_clear(00000000000000000000000000000000, 1 ) ==> true
|
|
bit_is_clear(00000000000000000000000000000000, 2 ) ==> true
|
|
bit_is_clear(00000000000000000000000000000000, 7 ) ==> true
|
|
bit_is_clear(00000000000000000000000000000000, 15) ==> true
|
|
bit_is_clear(00000000000000000000000000000000, 31) ==> true
|
|
bit_is_clear(00000000000000000000000000000000, 32) ==> <<exception>>
|
|
bit_is_clear(00000000000000000000000000000001, 0 ) ==> false
|
|
bit_is_clear(00000000000000000000000000000001, 1 ) ==> true
|
|
bit_is_clear(00000000000000000000000000000001, 2 ) ==> true
|
|
bit_is_clear(00000000000000000000000000000001, 7 ) ==> true
|
|
bit_is_clear(00000000000000000000000000000001, 15) ==> true
|
|
bit_is_clear(00000000000000000000000000000001, 31) ==> true
|
|
bit_is_clear(00000000000000000000000000000001, 32) ==> <<exception>>
|
|
bit_is_clear(00000000000000000000000000000010, 0 ) ==> true
|
|
bit_is_clear(00000000000000000000000000000010, 1 ) ==> false
|
|
bit_is_clear(00000000000000000000000000000010, 2 ) ==> true
|
|
bit_is_clear(00000000000000000000000000000010, 7 ) ==> true
|
|
bit_is_clear(00000000000000000000000000000010, 15) ==> true
|
|
bit_is_clear(00000000000000000000000000000010, 31) ==> true
|
|
bit_is_clear(00000000000000000000000000000010, 32) ==> <<exception>>
|
|
bit_is_clear(00000000000000000000000000001000, 0 ) ==> true
|
|
bit_is_clear(00000000000000000000000000001000, 1 ) ==> true
|
|
bit_is_clear(00000000000000000000000000001000, 2 ) ==> true
|
|
bit_is_clear(00000000000000000000000000001000, 7 ) ==> true
|
|
bit_is_clear(00000000000000000000000000001000, 15) ==> true
|
|
bit_is_clear(00000000000000000000000000001000, 31) ==> true
|
|
bit_is_clear(00000000000000000000000000001000, 32) ==> <<exception>>
|
|
bit_is_clear(00000000000000000000000000001010, 0 ) ==> true
|
|
bit_is_clear(00000000000000000000000000001010, 1 ) ==> false
|
|
bit_is_clear(00000000000000000000000000001010, 2 ) ==> true
|
|
bit_is_clear(00000000000000000000000000001010, 7 ) ==> true
|
|
bit_is_clear(00000000000000000000000000001010, 15) ==> true
|
|
bit_is_clear(00000000000000000000000000001010, 31) ==> true
|
|
bit_is_clear(00000000000000000000000000001010, 32) ==> <<exception>>
|
|
bit_is_clear(00000000000000000000000000010000, 0 ) ==> true
|
|
bit_is_clear(00000000000000000000000000010000, 1 ) ==> true
|
|
bit_is_clear(00000000000000000000000000010000, 2 ) ==> true
|
|
bit_is_clear(00000000000000000000000000010000, 7 ) ==> true
|
|
bit_is_clear(00000000000000000000000000010000, 15) ==> true
|
|
bit_is_clear(00000000000000000000000000010000, 31) ==> true
|
|
bit_is_clear(00000000000000000000000000010000, 32) ==> <<exception>>
|
|
bit_is_clear(00000000000000000000000011111111, 0 ) ==> false
|
|
bit_is_clear(00000000000000000000000011111111, 1 ) ==> false
|
|
bit_is_clear(00000000000000000000000011111111, 2 ) ==> false
|
|
bit_is_clear(00000000000000000000000011111111, 7 ) ==> false
|
|
bit_is_clear(00000000000000000000000011111111, 15) ==> true
|
|
bit_is_clear(00000000000000000000000011111111, 31) ==> true
|
|
bit_is_clear(00000000000000000000000011111111, 32) ==> <<exception>>
|
|
bit_is_clear(00000000000000001111111111111111, 0 ) ==> false
|
|
bit_is_clear(00000000000000001111111111111111, 1 ) ==> false
|
|
bit_is_clear(00000000000000001111111111111111, 2 ) ==> false
|
|
bit_is_clear(00000000000000001111111111111111, 7 ) ==> false
|
|
bit_is_clear(00000000000000001111111111111111, 15) ==> false
|
|
bit_is_clear(00000000000000001111111111111111, 31) ==> true
|
|
bit_is_clear(00000000000000001111111111111111, 32) ==> <<exception>>
|
|
bit_is_clear(11111111111111111111111111111111, 0 ) ==> false
|
|
bit_is_clear(11111111111111111111111111111111, 1 ) ==> false
|
|
bit_is_clear(11111111111111111111111111111111, 2 ) ==> false
|
|
bit_is_clear(11111111111111111111111111111111, 7 ) ==> false
|
|
bit_is_clear(11111111111111111111111111111111, 15) ==> false
|
|
bit_is_clear(11111111111111111111111111111111, 31) ==> false
|
|
bit_is_clear(11111111111111111111111111111111, 32) ==> <<exception>>
|
|
|