File: integer.tst

package info (click to toggle)
gap 4.15.1-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 110,212 kB
  • sloc: ansic: 97,261; xml: 48,343; cpp: 13,946; sh: 4,900; perl: 1,650; javascript: 255; makefile: 252; ruby: 9
file content (120 lines) | stat: -rw-r--r-- 3,440 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#
# Tests for functions defined in src/integer.c
#
gap> START_TEST("kernel/integer.tst");

#
gap> INT_STRING(fail);
fail

#
gap> ABS_INT(-100);
100
gap> ABS_INT(-100000000000);
100000000000

#
gap> SIGN_INT(-100);
-1
gap> SIGN_INT(-100000000000);
-1

#
gap> FACTORIAL_INT(fail);
Error, FACTORIAL_INT: <n> must be a non-negative small integer (not the value \
'fail')

#
#
#
gap> N := 2^(8*GAPInfo.BytesPerVariable-1);;
gap> data:=Set([0, 1, 2^28-1, 2^28, 2^28+1, INTOBJ_MAX-1, INTOBJ_MAX, INTOBJ_MAX+1, N-1 ]);;
gap> data64:=Union(data, [ 2^60-1, 2^60, 2^60+1, 2^63-1]);;

#
gap> ForAll(data, n -> INTERNAL_TEST_CONV_INT(n) = n);
true
gap> ForAll(data, n -> INTERNAL_TEST_CONV_INT(-n) = -n);
true
gap> INTERNAL_TEST_CONV_INT(-N) = -N;
true
gap> INTERNAL_TEST_CONV_INT(N-1) = N-1;
true
gap> INTERNAL_TEST_CONV_INT(-N-1);
Error, Conversion error: integer too large
gap> INTERNAL_TEST_CONV_INT(N);
Error, Conversion error: integer too large
gap> INTERNAL_TEST_CONV_INT(2^100);
Error, Conversion error: integer too large
gap> INTERNAL_TEST_CONV_INT(-2^100);
Error, Conversion error: integer too large
gap> INTERNAL_TEST_CONV_INT(fail);
Error, Conversion error: <i> must be an integer (not the value 'fail')

#
gap> ForAll(data, n -> INTERNAL_TEST_CONV_UINT(n) = n);
true
gap> INTERNAL_TEST_CONV_UINT(2*N-1) = 2*N-1;
true
gap> INTERNAL_TEST_CONV_UINT(2*N);
Error, Conversion error: integer too large
gap> INTERNAL_TEST_CONV_UINT(2^100);
Error, Conversion error: integer too large
gap> INTERNAL_TEST_CONV_UINT(-1);
Error, Conversion error: cannot convert negative integer to unsigned type
gap> INTERNAL_TEST_CONV_UINT(fail);
Error, Conversion error: <i> must be a non-negative integer (not the value 'fa\
il')

#
gap> ForAll(data, n -> INTERNAL_TEST_CONV_UINTINV(n) = -n);
true
gap> -INTERNAL_TEST_CONV_UINTINV(2*N-1) = 2*N-1;
true
gap> INTERNAL_TEST_CONV_UINTINV(2*N);
Error, Conversion error: integer too large
gap> INTERNAL_TEST_CONV_UINTINV(2^100);
Error, Conversion error: integer too large
gap> INTERNAL_TEST_CONV_UINTINV(-1);
Error, Conversion error: cannot convert negative integer to unsigned type
gap> INTERNAL_TEST_CONV_UINTINV(fail);
Error, Conversion error: <i> must be a non-negative integer (not the value 'fa\
il')

#
gap> ForAll(data64, n -> INTERNAL_TEST_CONV_INT8(n) = n);
true
gap> ForAll(data64, n -> INTERNAL_TEST_CONV_INT8(-n) = -n);
true
gap> INTERNAL_TEST_CONV_INT8(-2^63) = -2^63;
true
gap> INTERNAL_TEST_CONV_INT8(2^63-1) = 2^63-1;
true
gap> INTERNAL_TEST_CONV_INT8(-2^63-1);
Error, Conversion error: integer too large
gap> INTERNAL_TEST_CONV_INT8(2^63);
Error, Conversion error: integer too large
gap> INTERNAL_TEST_CONV_INT8(2^100);
Error, Conversion error: integer too large
gap> INTERNAL_TEST_CONV_INT8(-2^100);
Error, Conversion error: integer too large
gap> INTERNAL_TEST_CONV_INT8(fail);
Error, Conversion error: <i> must be an integer (not the value 'fail')

#
gap> ForAll(data64, n -> INTERNAL_TEST_CONV_UINT8(n) = n);
true
gap> INTERNAL_TEST_CONV_UINT8(2^64-1) = 2^64-1;
true
gap> INTERNAL_TEST_CONV_UINT8(2^64);
Error, Conversion error: integer too large
gap> INTERNAL_TEST_CONV_UINT8(2^100);
Error, Conversion error: integer too large
gap> INTERNAL_TEST_CONV_UINT8(-1);
Error, Conversion error: cannot convert negative integer to unsigned type
gap> INTERNAL_TEST_CONV_UINT8(fail);
Error, Conversion error: <i> must be a non-negative integer (not the value 'fa\
il')

#
gap> STOP_TEST("kernel/integer.tst");