default_assign.cpp revision 12855:588919e0e4aa
1/*****************************************************************************
2
3  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
4  more contributor license agreements.  See the NOTICE file distributed
5  with this work for additional information regarding copyright ownership.
6  Accellera licenses this file to you under the Apache License, Version 2.0
7  (the "License"); you may not use this file except in compliance with the
8  License.  You may obtain a copy of the License at
9
10    http://www.apache.org/licenses/LICENSE-2.0
11
12  Unless required by applicable law or agreed to in writing, software
13  distributed under the License is distributed on an "AS IS" BASIS,
14  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15  implied.  See the License for the specific language governing
16  permissions and limitations under the License.
17
18 *****************************************************************************/
19
20/*****************************************************************************
21
22  default_assign.cpp --
23
24  Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15
25
26 *****************************************************************************/
27
28/*****************************************************************************
29
30  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
31  changes you are making here.
32
33      Name, Affiliation, Date:
34  Description of Modification:
35
36 *****************************************************************************/
37
38// This may look like C code, but it is really -*- C++ -*-
39//
40// default_assign.cxx --
41// Copyright Synopsys 1998
42// Author          : Ric Hilderink
43// Created On      : Wed Dec 30 09:52:54 1998
44// Status          : none
45//
46
47#include <limits.h>
48#include <float.h>
49
50#define SC_INCLUDE_FX
51#include "systemc.h"
52#include "fx_precision_double.h"
53
54typedef unsigned int   uint;
55typedef unsigned short ushort;
56typedef unsigned long  ulong;
57
58#define SHOW_DEFAULT_ASSIGN(a) cerr << #a << " : " << double(a) << " : " << a.to_string(SC_HEX) << "\n"
59#define IDENT_DEFAULT_ASSIGN(a) cerr << "--default_assign-Inf-Inf-Inf-Inf-Inf- " << a << "\n"
60
61//-------------------------------------------------------
62static void test_fx_float_int()
63{
64  IDENT_DEFAULT_ASSIGN("test_fx_float_int");
65
66  sc_fxval a; a = 0;
67  sc_fxval b; b = 1;
68  sc_fxval c; c = -1;
69  sc_fxval d; d = INT_MAX;
70  sc_fxval e; e = INT_MIN;
71
72  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
73}
74
75static void test_fx_float_uint()
76{
77  IDENT_DEFAULT_ASSIGN("test_fx_float_uint");
78
79  sc_fxval a; a = (uint)0;
80  sc_fxval b; b = (uint)1;
81  sc_fxval c; c = (uint)-1;
82  sc_fxval d; d = UINT_MAX;
83  sc_fxval e; e = (uint)abs(INT_MIN);
84
85  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
86}
87
88static void test_fx_float_short()
89{
90  IDENT_DEFAULT_ASSIGN("test_fx_float_short");
91
92  sc_fxval a; a = (short)0;
93  sc_fxval b; b = (short)1;
94  sc_fxval c; c = (short)-1;
95  sc_fxval d; d = SHRT_MAX;
96  sc_fxval e; e = SHRT_MIN;
97
98  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
99}
100
101static void test_fx_float_ushort()
102{
103  IDENT_DEFAULT_ASSIGN("test_fx_float_ushort");
104
105  sc_fxval a; a = (ushort)0;
106  sc_fxval b; b = (ushort)1;
107  sc_fxval c; c = (ushort)-1;
108  sc_fxval d; d = USHRT_MAX;
109  sc_fxval e; e = (ushort)abs(SHRT_MIN);
110
111  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
112}
113
114static void test_fx_float_long()
115{
116  IDENT_DEFAULT_ASSIGN("test_fx_float_long");
117
118  sc_fxval a; a = (long)0;
119  sc_fxval b; b = (long)1;
120  sc_fxval c; c = (long)-1;
121  sc_fxval d; d = LONG_MAX;
122  sc_fxval e; e = LONG_MIN;
123
124  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
125}
126
127static void test_fx_float_ulong()
128{
129  IDENT_DEFAULT_ASSIGN("test_fx_float_ulong");
130
131  sc_fxval a; a = (ulong)0;
132  sc_fxval b; b = (ulong)1;
133  sc_fxval c; c = (ulong)-1;
134  sc_fxval d; d = ULONG_MAX;
135  sc_fxval e; e = (ulong)abs(LONG_MIN);
136
137  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
138}
139
140static void test_fx_float_float()
141{
142  IDENT_DEFAULT_ASSIGN("test_fx_float_float");
143
144  sc_fxval a; a = 0.0;
145  sc_fxval b; b = 1.0;
146  sc_fxval c; c = -1.0;
147  sc_fxval d; d = FLT_MAX;
148  sc_fxval e; e = FLT_MIN;
149
150  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
151}
152
153static void test_fx_float_double()
154{
155  IDENT_DEFAULT_ASSIGN("test_fx_float_double");
156
157  sc_fxval a; a = (double)0.0;
158  sc_fxval b; b = (double)1.0;
159  sc_fxval c; c = (double)-1.0;
160  sc_fxval d; d = DBL_MAX;
161  sc_fxval e; e = DBL_MIN;
162
163  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
164}
165
166//-------------------------------------------------------
167static void test_fx_ufix_int()
168{
169  IDENT_DEFAULT_ASSIGN("test_fx_ufix_int");
170
171  sc_ufix a; a = 0;
172  sc_ufix b; b = 1;
173  sc_ufix c; c = -1;
174  sc_ufix d; d = INT_MAX;
175  sc_ufix e; e = INT_MIN;
176
177  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
178}
179
180static void test_fx_ufix_uint()
181{
182  IDENT_DEFAULT_ASSIGN("test_fx_ufix_uint");
183
184  sc_ufix a; a = (uint)0;
185  sc_ufix b; b = (uint)1;
186  sc_ufix c; c = (uint)-1;
187  sc_ufix d; d = UINT_MAX;
188  sc_ufix e; e = (uint)abs(INT_MIN);
189
190  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
191}
192
193static void test_fx_ufix_short()
194{
195  IDENT_DEFAULT_ASSIGN("test_fx_ufix_short");
196
197  sc_ufix a; a = (short)0;
198  sc_ufix b; b = (short)1;
199  sc_ufix c; c = (short)-1;
200  sc_ufix d; d = SHRT_MAX;
201  sc_ufix e; e = SHRT_MIN;
202
203  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
204}
205
206static void test_fx_ufix_ushort()
207{
208  IDENT_DEFAULT_ASSIGN("test_fx_ufix_ushort");
209
210  sc_ufix a; a = (ushort)0;
211  sc_ufix b; b = (ushort)1;
212  sc_ufix c; c = (ushort)-1;
213  sc_ufix d; d = USHRT_MAX;
214  sc_ufix e; e = (ushort)abs(SHRT_MIN);
215
216  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
217}
218
219static void test_fx_ufix_long()
220{
221  IDENT_DEFAULT_ASSIGN("test_fx_ufix_long");
222
223  sc_ufix a; a = (long)0;
224  sc_ufix b; b = (long)1;
225  sc_ufix c; c = (long)-1;
226  sc_ufix d; d = LONG_MAX;
227  sc_ufix e; e = LONG_MIN;
228
229  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
230}
231
232static void test_fx_ufix_ulong()
233{
234  IDENT_DEFAULT_ASSIGN("test_fx_ufix_ulong");
235
236  sc_ufix a; a = (ulong)0;
237  sc_ufix b; b = (ulong)1;
238  sc_ufix c; c = (ulong)-1;
239  sc_ufix d; d = ULONG_MAX;
240  sc_ufix e; e = (ulong)abs(LONG_MIN);
241
242  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
243}
244
245static void test_fx_ufix_float()
246{
247  IDENT_DEFAULT_ASSIGN("test_fx_ufix_float");
248
249  sc_ufix a; a = 0.0;
250  sc_ufix b; b = 1.0;
251  sc_ufix c; c = -1.0;
252   sc_ufix d; d = FLT_MAX;
253   sc_ufix e; e = FLT_MIN;
254
255  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c);  SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
256}
257
258static void test_fx_ufix_double()
259{
260  IDENT_DEFAULT_ASSIGN("test_fx_ufix_double");
261
262  sc_ufix a; a = (double)0.0;
263  sc_ufix b; b = (double)1.0;
264  sc_ufix c; c = (double)-1.0;
265   sc_ufix d; d = DBL_MAX;
266   sc_ufix e; e = DBL_MIN;
267
268  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c);  SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
269}
270
271//-------------------------------------------------------
272static void test_fx_fix_int()
273{
274  IDENT_DEFAULT_ASSIGN("test_fx_fix_int");
275
276  sc_fix a; a = 0;
277  sc_fix b; b = 1;
278  sc_fix c; c = -1;
279  sc_fix d; d = INT_MAX;
280  sc_fix e; e = INT_MIN;
281
282  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
283}
284
285static void test_fx_fix_uint()
286{
287  IDENT_DEFAULT_ASSIGN("test_fx_fix_uint");
288
289  sc_fix a; a = (uint)0;
290  sc_fix b; b = (uint)1;
291  sc_fix c; c = (uint)-1;
292  sc_fix d; d = UINT_MAX;
293  sc_fix e; e = (uint)abs(INT_MIN);
294
295  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
296}
297
298static void test_fx_fix_short()
299{
300  IDENT_DEFAULT_ASSIGN("test_fx_fix_short");
301
302  sc_fix a; a = (short)0;
303  sc_fix b; b = (short)1;
304  sc_fix c; c = (short)-1;
305  sc_fix d; d = SHRT_MAX;
306  sc_fix e; e = SHRT_MIN;
307
308  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
309}
310
311static void test_fx_fix_ushort()
312{
313  IDENT_DEFAULT_ASSIGN("test_fx_fix_ushort");
314
315  sc_fix a; a = (ushort)0;
316  sc_fix b; b = (ushort)1;
317  sc_fix c; c = (ushort)-1;
318  sc_fix d; d = USHRT_MAX;
319  sc_fix e; e = (ushort)abs(SHRT_MIN);
320
321  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
322}
323
324static void test_fx_fix_long()
325{
326  IDENT_DEFAULT_ASSIGN("test_fx_fix_long");
327
328  sc_fix a; a = (long)0;
329  sc_fix b; b = (long)1;
330  sc_fix c; c = (long)-1;
331  sc_fix d; d = LONG_MAX;
332  sc_fix e; e = LONG_MIN;
333
334  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
335}
336
337static void test_fx_fix_ulong()
338{
339  IDENT_DEFAULT_ASSIGN("test_fx_fix_ulong");
340
341  sc_fix a; a = (ulong)0;
342  sc_fix b; b = (ulong)1;
343  sc_fix c; c = (ulong)-1;
344  sc_fix d; d = ULONG_MAX;
345  sc_fix e; e = (ulong)abs(LONG_MIN);
346
347  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
348}
349
350static void test_fx_fix_float()
351{
352  IDENT_DEFAULT_ASSIGN("test_fx_fix_float");
353
354  sc_fix a; a = 0.0;
355  sc_fix b; b = 1.0;
356  sc_fix c; c = -1.0;
357   sc_fix d; d = FLT_MAX;
358   sc_fix e; e = FLT_MIN;
359
360  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c);  SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
361}
362
363static void test_fx_fix_double()
364{
365  IDENT_DEFAULT_ASSIGN("test_fx_fix_double");
366
367  sc_fix a; a = (double)0.0;
368  sc_fix b; b = (double)1.0;
369  sc_fix c; c = (double)-1.0;
370   sc_fix d; d = DBL_MAX;
371   sc_fix e; e = DBL_MIN;
372
373  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c);  SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
374}
375
376//-------------------------------------------------------
377static void test_fx_fixed_int()
378{
379  IDENT_DEFAULT_ASSIGN("test_fx_fixed_int");
380
381  sc_fixed<8, 5> a; a = 0;
382  sc_fixed<8, 5> b; b = 1;
383  sc_fixed<8, 5> c; c = -1;
384   sc_fixed<8, 5> d; d = INT_MAX;
385   sc_fixed<8, 5> e; e = INT_MIN;
386
387  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c);  SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
388}
389
390static void test_fx_fixed_uint()
391{
392  IDENT_DEFAULT_ASSIGN("test_fx_fixed_uint");
393
394  sc_fixed<8, 5> a; a = (uint)0;
395  sc_fixed<8, 5> b; b = (uint)1;
396   sc_fixed<8, 5> c; c = (uint)-1;
397   sc_fixed<8, 5> d; d = UINT_MAX;
398   sc_fixed<8, 5> e; e = (uint)abs(INT_MIN);
399
400  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b);  SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
401}
402
403static void test_fx_fixed_short()
404{
405  IDENT_DEFAULT_ASSIGN("test_fx_fixed_short");
406
407  sc_fixed<8, 5> a; a = (short)0;
408  sc_fixed<8, 5> b; b = (short)1;
409  sc_fixed<8, 5> c; c = (short)-1;
410   sc_fixed<8, 5> d; d = SHRT_MAX;
411   sc_fixed<8, 5> e; e = SHRT_MIN;
412
413  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c);  SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
414}
415
416static void test_fx_fixed_ushort()
417{
418  IDENT_DEFAULT_ASSIGN("test_fx_fixed_ushort");
419
420  sc_fixed<8, 5> a; a = (ushort)0;
421  sc_fixed<8, 5> b; b = (ushort)1;
422   sc_fixed<8, 5> c; c = (ushort)-1;
423   sc_fixed<8, 5> d; d = USHRT_MAX;
424   sc_fixed<8, 5> e; e = (ushort)abs(SHRT_MIN);
425
426  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b);  SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
427}
428
429static void test_fx_fixed_long()
430{
431  IDENT_DEFAULT_ASSIGN("test_fx_fixed_long");
432
433  sc_fixed<8, 5> a; a = (long)0;
434  sc_fixed<8, 5> b; b = (long)1;
435  sc_fixed<8, 5> c; c = (long)-1;
436   sc_fixed<8, 5> d; d = LONG_MAX;
437   sc_fixed<8, 5> e; e = LONG_MIN;
438
439  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c);  SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
440}
441
442static void test_fx_fixed_ulong()
443{
444  IDENT_DEFAULT_ASSIGN("test_fx_fixed_ulong");
445
446  sc_fixed<8, 5> a; a = (ulong)0;
447  sc_fixed<8, 5> b; b = (ulong)1;
448   sc_fixed<8, 5> c; c = (ulong)-1;
449   sc_fixed<8, 5> d; d = ULONG_MAX;
450   sc_fixed<8, 5> e; e = (ulong)abs(LONG_MIN);
451
452  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b);  SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
453}
454
455static void test_fx_fixed_float()
456{
457  IDENT_DEFAULT_ASSIGN("test_fx_fixed_float");
458
459  sc_fixed<8, 5> a; a = 0.0;
460  sc_fixed<8, 5> b; b = 1.0;
461  sc_fixed<8, 5> c; c = -1.0;
462   sc_fixed<8, 5> d; d = FLT_MAX;
463   sc_fixed<8, 5> e; e = FLT_MIN;
464
465  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c);  SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
466}
467
468static void test_fx_fixed_double()
469{
470  IDENT_DEFAULT_ASSIGN("test_fx_fixed_double");
471
472  sc_fixed<8, 5> a; a = (double)0.0;
473  sc_fixed<8, 5> b; b = (double)1.0;
474  sc_fixed<8, 5> c; c = (double)-1.0;
475   sc_fixed<8, 5> d; d = DBL_MAX;
476   sc_fixed<8, 5> e; e = DBL_MIN;
477
478  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c);  SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
479}
480
481//-------------------------------------------------------
482static void test_fx_ufixed_int()
483{
484  IDENT_DEFAULT_ASSIGN("test_fx_ufixed_int");
485
486  sc_ufixed<8, 5> a; a = 0;
487  sc_ufixed<8, 5> b; b = 1;
488  sc_ufixed<8, 5> c; c = -1;
489   sc_ufixed<8, 5> d; d = INT_MAX;
490   sc_ufixed<8, 5> e; e = INT_MIN;
491
492  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c);  SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
493}
494
495static void test_fx_ufixed_uint()
496{
497  IDENT_DEFAULT_ASSIGN("test_fx_ufixed_uint");
498
499  sc_ufixed<8, 5> a; a = (uint)0;
500  sc_ufixed<8, 5> b; b = (uint)1;
501   sc_ufixed<8, 5> c; c = (uint)-1;
502   sc_ufixed<8, 5> d; d = UINT_MAX;
503   sc_ufixed<8, 5> e; e = (uint)abs(INT_MIN);
504
505  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b);  SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
506}
507
508static void test_fx_ufixed_short()
509{
510  IDENT_DEFAULT_ASSIGN("test_fx_ufixed_short");
511
512  sc_ufixed<8, 5> a; a = (short)0;
513  sc_ufixed<8, 5> b; b = (short)1;
514  sc_ufixed<8, 5> c; c = (short)-1;
515   sc_ufixed<8, 5> d; d = SHRT_MAX;
516   sc_ufixed<8, 5> e; e = SHRT_MIN;
517
518  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c);  SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
519}
520
521static void test_fx_ufixed_ushort()
522{
523  IDENT_DEFAULT_ASSIGN("test_fx_ufixed_ushort");
524
525  sc_ufixed<8, 5> a; a = (ushort)0;
526  sc_ufixed<8, 5> b; b = (ushort)1;
527   sc_ufixed<8, 5> c; c = (ushort)-1;
528   sc_ufixed<8, 5> d; d = USHRT_MAX;
529   sc_ufixed<8, 5> e; e = (ushort)abs(SHRT_MIN);
530
531  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b);  SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
532}
533
534static void test_fx_ufixed_long()
535{
536  IDENT_DEFAULT_ASSIGN("test_fx_ufixed_long");
537
538  sc_ufixed<8, 5> a; a = (long)0;
539  sc_ufixed<8, 5> b; b = (long)1;
540  sc_ufixed<8, 5> c; c = (long)-1;
541   sc_ufixed<8, 5> d; d = LONG_MAX;
542   sc_ufixed<8, 5> e; e = LONG_MIN;
543
544  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c);  SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
545}
546
547static void test_fx_ufixed_ulong()
548{
549  IDENT_DEFAULT_ASSIGN("test_fx_ufixed_ulong");
550
551  sc_ufixed<8, 5> a; a = (ulong)0;
552  sc_ufixed<8, 5> b; b = (ulong)1;
553   sc_ufixed<8, 5> c; c = (ulong)-1;
554   sc_ufixed<8, 5> d; d = ULONG_MAX;
555   sc_ufixed<8, 5> e; e = (ulong)abs(LONG_MIN);
556
557  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b);  SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
558}
559
560static void test_fx_ufixed_float()
561{
562  IDENT_DEFAULT_ASSIGN("test_fx_ufixed_float");
563
564  sc_ufixed<8, 5> a; a = 0.0;
565  sc_ufixed<8, 5> b; b = 1.0;
566  sc_ufixed<8, 5> c; c = -1.0;
567   sc_ufixed<8, 5> d; d = FLT_MAX;
568   sc_ufixed<8, 5> e; e = FLT_MIN;
569
570  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c);  SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
571}
572
573static void test_fx_ufixed_double()
574{
575  IDENT_DEFAULT_ASSIGN("test_fx_ufixed_double");
576
577  sc_ufixed<8, 5> a; a = (double)0.0;
578  sc_ufixed<8, 5> b; b = (double)1.0;
579  sc_ufixed<8, 5> c; c = (double)-1.0;
580   sc_ufixed<8, 5> d; d = DBL_MAX;
581   sc_ufixed<8, 5> e; e = DBL_MIN;
582
583  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c);  SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
584}
585
586void default_assign()
587{
588  cerr << "************** default_assign fx_float\n";
589  test_fx_float_int();
590  test_fx_float_uint();
591  test_fx_float_short();
592  test_fx_float_ushort();
593  test_fx_float_long();
594  test_fx_float_ulong();
595  test_fx_float_float();
596  test_fx_float_double();
597
598  cerr << "************** default_assign fx_ufix\n";
599  test_fx_ufix_int();
600  test_fx_ufix_uint();
601  test_fx_ufix_short();
602  test_fx_ufix_ushort();
603  test_fx_ufix_long();
604  test_fx_ufix_ulong();
605  test_fx_ufix_float();
606  test_fx_ufix_double();
607
608  cerr << "************** default_assign fx_fix\n";
609  test_fx_fix_int();
610  test_fx_fix_uint();
611  test_fx_fix_short();
612  test_fx_fix_ushort();
613  test_fx_fix_long();
614  test_fx_fix_ulong();
615  test_fx_fix_float();
616  test_fx_fix_double();
617
618  cerr << "************** default_assign fx_fixed\n";
619  test_fx_fixed_int();
620  test_fx_fixed_uint();
621  test_fx_fixed_short();
622  test_fx_fixed_ushort();
623  test_fx_fixed_long();
624  test_fx_fixed_ulong();
625  test_fx_fixed_float();
626  test_fx_fixed_double();
627
628  cerr << "************** default_assign fx_ufixed\n";
629  test_fx_ufixed_int();
630  test_fx_ufixed_uint();
631  test_fx_ufixed_short();
632  test_fx_ufixed_ushort();
633  test_fx_ufixed_long();
634  test_fx_ufixed_ulong();
635  test_fx_ufixed_float();
636  test_fx_ufixed_double();
637}
638