1/* { dg-do compile } */
2/* { dg-options "-std=gnu99" } */
3
4/* N1169 7.18a.3 - Precision macros.
5
6   Check if defined fixed-point constants are ok.  */
7
8#include <stdfix.h>
9
10short fract sf = SFRACT_MAX;
11fract f = FRACT_MAX;
12long fract lf = LFRACT_MAX;
13long long fract llf = LLFRACT_MAX;
14
15unsigned short fract usf = USFRACT_MAX;
16unsigned fract uf = UFRACT_MAX;
17unsigned long fract ulf = ULFRACT_MAX;
18unsigned long long fract ullf = ULLFRACT_MAX;
19
20sat short fract Ssf = SFRACT_MAX;
21sat fract Sf = FRACT_MAX;
22sat long fract Slf = LFRACT_MAX;
23sat long long fract Sllf = LLFRACT_MAX;
24
25sat unsigned short fract Susf = USFRACT_MAX;
26sat unsigned fract Suf = UFRACT_MAX;
27sat unsigned long fract Sulf = ULFRACT_MAX;
28sat unsigned long long fract Sullf = ULLFRACT_MAX;
29
30short fract sfm = SFRACT_MIN;
31fract fm = FRACT_MIN;
32long fract lfm = LFRACT_MIN;
33long long fract llfm = LLFRACT_MIN;
34
35unsigned short fract usfm = USFRACT_MIN;
36unsigned fract ufm = UFRACT_MIN;
37unsigned long fract ulfm = ULFRACT_MIN;
38unsigned long long fract ullfm = ULLFRACT_MIN;
39
40sat short fract Ssfm = SFRACT_MIN;
41sat fract Sfm = FRACT_MIN;
42sat long fract Slfm = LFRACT_MIN;
43sat long long fract Sllfm = LLFRACT_MIN;
44
45sat unsigned short fract Susfm = USFRACT_MIN;
46sat unsigned fract Sufm = UFRACT_MIN;
47sat unsigned long fract Sulfm = ULFRACT_MIN;
48sat unsigned long long fract Sullfm = ULLFRACT_MIN;
49
50short fract sfE = SFRACT_EPSILON;
51fract fE = FRACT_EPSILON;
52long fract lfE = LFRACT_EPSILON;
53long long fract llfE = LLFRACT_EPSILON;
54
55unsigned short fract usfE = USFRACT_EPSILON;
56unsigned fract ufE = UFRACT_EPSILON;
57unsigned long fract ulfE = ULFRACT_EPSILON;
58unsigned long long fract ullfE = ULLFRACT_EPSILON;
59
60sat short fract SsfE = SFRACT_EPSILON;
61sat fract SfE = FRACT_EPSILON;
62sat long fract SlfE = LFRACT_EPSILON;
63sat long long fract SllfE = LLFRACT_EPSILON;
64
65sat unsigned short fract SusfE = USFRACT_EPSILON;
66sat unsigned fract SufE = UFRACT_EPSILON;
67sat unsigned long fract SulfE = ULFRACT_EPSILON;
68sat unsigned long long fract SullfE = ULLFRACT_EPSILON;
69
70short accum sk = SACCUM_MAX;
71accum k = ACCUM_MAX;
72long accum lk = LACCUM_MAX;
73long long accum llk = LLACCUM_MAX;
74
75unsigned short accum usk = USACCUM_MAX;
76unsigned accum uk = UACCUM_MAX;
77unsigned long accum ulk = ULACCUM_MAX;
78unsigned long long accum ullk = ULLACCUM_MAX;
79
80sat short accum Ssk = SACCUM_MAX;
81sat accum Sk = ACCUM_MAX;
82sat long accum Slk = LACCUM_MAX;
83sat long long accum Sllk = LLACCUM_MAX;
84
85sat unsigned short accum Susk = USACCUM_MAX;
86sat unsigned accum Suk = UACCUM_MAX;
87sat unsigned long accum Sulk = ULACCUM_MAX;
88sat unsigned long long accum Sullk = ULLACCUM_MAX;
89
90short accum skm = SACCUM_MIN;
91accum km = ACCUM_MIN;
92long accum lkm = LACCUM_MIN;
93long long accum llkm = LLACCUM_MIN;
94
95unsigned short accum uskm = USACCUM_MIN;
96unsigned accum ukm = UACCUM_MIN;
97unsigned long accum ulkm = ULACCUM_MIN;
98unsigned long long accum ullkm = ULLACCUM_MIN;
99
100sat short accum Sskm = SACCUM_MIN;
101sat accum Skm = ACCUM_MIN;
102sat long accum Slkm = LACCUM_MIN;
103sat long long accum Sllkm = LLACCUM_MIN;
104
105sat unsigned short accum Suskm = USACCUM_MIN;
106sat unsigned accum Sukm = UACCUM_MIN;
107sat unsigned long accum Sulkm = ULACCUM_MIN;
108sat unsigned long long accum Sullkm = ULLACCUM_MIN;
109
110short accum skE = SACCUM_EPSILON;
111accum kE = ACCUM_EPSILON;
112long accum lkE = LACCUM_EPSILON;
113long long accum llkE = LLACCUM_EPSILON;
114
115unsigned short accum uskE = USACCUM_EPSILON;
116unsigned accum ukE = UACCUM_EPSILON;
117unsigned long accum ulkE = ULACCUM_EPSILON;
118unsigned long long accum ullkE = ULLACCUM_EPSILON;
119
120sat short accum SskE = SACCUM_EPSILON;
121sat accum SkE = ACCUM_EPSILON;
122sat long accum SlkE = LACCUM_EPSILON;
123sat long long accum SllkE = LLACCUM_EPSILON;
124
125sat unsigned short accum SuskE = USACCUM_EPSILON;
126sat unsigned accum SukE = UACCUM_EPSILON;
127sat unsigned long accum SulkE = ULACCUM_EPSILON;
128sat unsigned long long accum SullkE = ULLACCUM_EPSILON;
129
130int fbit_sf = SFRACT_FBIT;
131int fbit_f = FRACT_FBIT;
132int fbit_lf = LFRACT_FBIT;
133int fbit_llf = LLFRACT_FBIT;
134
135int fbit_usf = USFRACT_FBIT;
136int fbit_uf = UFRACT_FBIT;
137int fbit_ulf = ULFRACT_FBIT;
138int fbit_ullf = ULLFRACT_FBIT;
139
140int fbit_sk = SACCUM_FBIT;
141int fbit_k = ACCUM_FBIT;
142int fbit_lk = LACCUM_FBIT;
143int fbit_llk = LLACCUM_FBIT;
144
145int fbit_usk = USACCUM_FBIT;
146int fbit_uk = UACCUM_FBIT;
147int fbit_ulk = ULACCUM_FBIT;
148int fbit_ullk = ULLACCUM_FBIT;
149
150int ibit_sk = SACCUM_IBIT;
151int ibit_k = ACCUM_IBIT;
152int ibit_lk = LACCUM_IBIT;
153int ibit_llk = LLACCUM_IBIT;
154
155int ibit_usk = USACCUM_IBIT;
156int ibit_uk = UACCUM_IBIT;
157int ibit_ulk = ULACCUM_IBIT;
158int ibit_ullk = ULLACCUM_IBIT;
159