Files
mercury/tests/hard_coded/uint_arith.exp
Julien Fischer 6330b51b61 Implement checked division for uints.
library/uint.m:
     Add (//)/2, (/)/2 and rem/2 for uints.

     Add mod/2 and div/2 as synonyms for the above.

tests/hard_coded/uint_arith.m
     Enable the division tests.

tests/hard_coded/uint_bitwise.exp*:
     Update the expected outputs.
2017-05-12 21:59:36 +10:00

335 lines
7.3 KiB
Plaintext

*** Test binary operation '+' ***
0u + 0u = 0u
0u + 1u = 1u
0u + 2u = 2u
0u + 8u = 8u
0u + 10u = 10u
0u + 16u = 16u
0u + 32u = 32u
0u + 18446744073709551615u = 18446744073709551615u
1u + 0u = 1u
1u + 1u = 2u
1u + 2u = 3u
1u + 8u = 9u
1u + 10u = 11u
1u + 16u = 17u
1u + 32u = 33u
1u + 18446744073709551615u = 0u
2u + 0u = 2u
2u + 1u = 3u
2u + 2u = 4u
2u + 8u = 10u
2u + 10u = 12u
2u + 16u = 18u
2u + 32u = 34u
2u + 18446744073709551615u = 1u
8u + 0u = 8u
8u + 1u = 9u
8u + 2u = 10u
8u + 8u = 16u
8u + 10u = 18u
8u + 16u = 24u
8u + 32u = 40u
8u + 18446744073709551615u = 7u
10u + 0u = 10u
10u + 1u = 11u
10u + 2u = 12u
10u + 8u = 18u
10u + 10u = 20u
10u + 16u = 26u
10u + 32u = 42u
10u + 18446744073709551615u = 9u
16u + 0u = 16u
16u + 1u = 17u
16u + 2u = 18u
16u + 8u = 24u
16u + 10u = 26u
16u + 16u = 32u
16u + 32u = 48u
16u + 18446744073709551615u = 15u
32u + 0u = 32u
32u + 1u = 33u
32u + 2u = 34u
32u + 8u = 40u
32u + 10u = 42u
32u + 16u = 48u
32u + 32u = 64u
32u + 18446744073709551615u = 31u
18446744073709551615u + 0u = 18446744073709551615u
18446744073709551615u + 1u = 0u
18446744073709551615u + 2u = 1u
18446744073709551615u + 8u = 7u
18446744073709551615u + 10u = 9u
18446744073709551615u + 16u = 15u
18446744073709551615u + 32u = 31u
18446744073709551615u + 18446744073709551615u = 18446744073709551614u
*** Test binary operation '-' ***
0u - 0u = 0u
0u - 1u = 18446744073709551615u
0u - 2u = 18446744073709551614u
0u - 8u = 18446744073709551608u
0u - 10u = 18446744073709551606u
0u - 16u = 18446744073709551600u
0u - 32u = 18446744073709551584u
0u - 18446744073709551615u = 1u
1u - 0u = 1u
1u - 1u = 0u
1u - 2u = 18446744073709551615u
1u - 8u = 18446744073709551609u
1u - 10u = 18446744073709551607u
1u - 16u = 18446744073709551601u
1u - 32u = 18446744073709551585u
1u - 18446744073709551615u = 2u
2u - 0u = 2u
2u - 1u = 1u
2u - 2u = 0u
2u - 8u = 18446744073709551610u
2u - 10u = 18446744073709551608u
2u - 16u = 18446744073709551602u
2u - 32u = 18446744073709551586u
2u - 18446744073709551615u = 3u
8u - 0u = 8u
8u - 1u = 7u
8u - 2u = 6u
8u - 8u = 0u
8u - 10u = 18446744073709551614u
8u - 16u = 18446744073709551608u
8u - 32u = 18446744073709551592u
8u - 18446744073709551615u = 9u
10u - 0u = 10u
10u - 1u = 9u
10u - 2u = 8u
10u - 8u = 2u
10u - 10u = 0u
10u - 16u = 18446744073709551610u
10u - 32u = 18446744073709551594u
10u - 18446744073709551615u = 11u
16u - 0u = 16u
16u - 1u = 15u
16u - 2u = 14u
16u - 8u = 8u
16u - 10u = 6u
16u - 16u = 0u
16u - 32u = 18446744073709551600u
16u - 18446744073709551615u = 17u
32u - 0u = 32u
32u - 1u = 31u
32u - 2u = 30u
32u - 8u = 24u
32u - 10u = 22u
32u - 16u = 16u
32u - 32u = 0u
32u - 18446744073709551615u = 33u
18446744073709551615u - 0u = 18446744073709551615u
18446744073709551615u - 1u = 18446744073709551614u
18446744073709551615u - 2u = 18446744073709551613u
18446744073709551615u - 8u = 18446744073709551607u
18446744073709551615u - 10u = 18446744073709551605u
18446744073709551615u - 16u = 18446744073709551599u
18446744073709551615u - 32u = 18446744073709551583u
18446744073709551615u - 18446744073709551615u = 0u
*** Test binary operation '*' ***
0u * 0u = 0u
0u * 1u = 0u
0u * 2u = 0u
0u * 8u = 0u
0u * 10u = 0u
0u * 16u = 0u
0u * 32u = 0u
0u * 18446744073709551615u = 0u
1u * 0u = 0u
1u * 1u = 1u
1u * 2u = 2u
1u * 8u = 8u
1u * 10u = 10u
1u * 16u = 16u
1u * 32u = 32u
1u * 18446744073709551615u = 18446744073709551615u
2u * 0u = 0u
2u * 1u = 2u
2u * 2u = 4u
2u * 8u = 16u
2u * 10u = 20u
2u * 16u = 32u
2u * 32u = 64u
2u * 18446744073709551615u = 18446744073709551614u
8u * 0u = 0u
8u * 1u = 8u
8u * 2u = 16u
8u * 8u = 64u
8u * 10u = 80u
8u * 16u = 128u
8u * 32u = 256u
8u * 18446744073709551615u = 18446744073709551608u
10u * 0u = 0u
10u * 1u = 10u
10u * 2u = 20u
10u * 8u = 80u
10u * 10u = 100u
10u * 16u = 160u
10u * 32u = 320u
10u * 18446744073709551615u = 18446744073709551606u
16u * 0u = 0u
16u * 1u = 16u
16u * 2u = 32u
16u * 8u = 128u
16u * 10u = 160u
16u * 16u = 256u
16u * 32u = 512u
16u * 18446744073709551615u = 18446744073709551600u
32u * 0u = 0u
32u * 1u = 32u
32u * 2u = 64u
32u * 8u = 256u
32u * 10u = 320u
32u * 16u = 512u
32u * 32u = 1024u
32u * 18446744073709551615u = 18446744073709551584u
18446744073709551615u * 0u = 0u
18446744073709551615u * 1u = 18446744073709551615u
18446744073709551615u * 2u = 18446744073709551614u
18446744073709551615u * 8u = 18446744073709551608u
18446744073709551615u * 10u = 18446744073709551606u
18446744073709551615u * 16u = 18446744073709551600u
18446744073709551615u * 32u = 18446744073709551584u
18446744073709551615u * 18446744073709551615u = 1u
*** Test binary operation '/' ***
0u / 0u = <<exception>>
0u / 1u = 0u
0u / 2u = 0u
0u / 8u = 0u
0u / 10u = 0u
0u / 16u = 0u
0u / 32u = 0u
0u / 18446744073709551615u = 0u
1u / 0u = <<exception>>
1u / 1u = 1u
1u / 2u = 0u
1u / 8u = 0u
1u / 10u = 0u
1u / 16u = 0u
1u / 32u = 0u
1u / 18446744073709551615u = 0u
2u / 0u = <<exception>>
2u / 1u = 2u
2u / 2u = 1u
2u / 8u = 0u
2u / 10u = 0u
2u / 16u = 0u
2u / 32u = 0u
2u / 18446744073709551615u = 0u
8u / 0u = <<exception>>
8u / 1u = 8u
8u / 2u = 4u
8u / 8u = 1u
8u / 10u = 0u
8u / 16u = 0u
8u / 32u = 0u
8u / 18446744073709551615u = 0u
10u / 0u = <<exception>>
10u / 1u = 10u
10u / 2u = 5u
10u / 8u = 1u
10u / 10u = 1u
10u / 16u = 0u
10u / 32u = 0u
10u / 18446744073709551615u = 0u
16u / 0u = <<exception>>
16u / 1u = 16u
16u / 2u = 8u
16u / 8u = 2u
16u / 10u = 1u
16u / 16u = 1u
16u / 32u = 0u
16u / 18446744073709551615u = 0u
32u / 0u = <<exception>>
32u / 1u = 32u
32u / 2u = 16u
32u / 8u = 4u
32u / 10u = 3u
32u / 16u = 2u
32u / 32u = 1u
32u / 18446744073709551615u = 0u
18446744073709551615u / 0u = <<exception>>
18446744073709551615u / 1u = 18446744073709551615u
18446744073709551615u / 2u = 9223372036854775807u
18446744073709551615u / 8u = 2305843009213693951u
18446744073709551615u / 10u = 1844674407370955161u
18446744073709551615u / 16u = 1152921504606846975u
18446744073709551615u / 32u = 576460752303423487u
18446744073709551615u / 18446744073709551615u = 1u
*** Test binary operation 'rem' ***
0u rem 0u = <<exception>>
0u rem 1u = 0u
0u rem 2u = 0u
0u rem 8u = 0u
0u rem 10u = 0u
0u rem 16u = 0u
0u rem 32u = 0u
0u rem 18446744073709551615u = 0u
1u rem 0u = <<exception>>
1u rem 1u = 0u
1u rem 2u = 1u
1u rem 8u = 1u
1u rem 10u = 1u
1u rem 16u = 1u
1u rem 32u = 1u
1u rem 18446744073709551615u = 1u
2u rem 0u = <<exception>>
2u rem 1u = 0u
2u rem 2u = 0u
2u rem 8u = 2u
2u rem 10u = 2u
2u rem 16u = 2u
2u rem 32u = 2u
2u rem 18446744073709551615u = 2u
8u rem 0u = <<exception>>
8u rem 1u = 0u
8u rem 2u = 0u
8u rem 8u = 0u
8u rem 10u = 8u
8u rem 16u = 8u
8u rem 32u = 8u
8u rem 18446744073709551615u = 8u
10u rem 0u = <<exception>>
10u rem 1u = 0u
10u rem 2u = 0u
10u rem 8u = 2u
10u rem 10u = 0u
10u rem 16u = 10u
10u rem 32u = 10u
10u rem 18446744073709551615u = 10u
16u rem 0u = <<exception>>
16u rem 1u = 0u
16u rem 2u = 0u
16u rem 8u = 0u
16u rem 10u = 6u
16u rem 16u = 0u
16u rem 32u = 16u
16u rem 18446744073709551615u = 16u
32u rem 0u = <<exception>>
32u rem 1u = 0u
32u rem 2u = 0u
32u rem 8u = 0u
32u rem 10u = 2u
32u rem 16u = 0u
32u rem 32u = 0u
32u rem 18446744073709551615u = 32u
18446744073709551615u rem 0u = <<exception>>
18446744073709551615u rem 1u = 0u
18446744073709551615u rem 2u = 1u
18446744073709551615u rem 8u = 7u
18446744073709551615u rem 10u = 5u
18446744073709551615u rem 16u = 15u
18446744073709551615u rem 32u = 31u
18446744073709551615u rem 18446744073709551615u = 0u