default_assign.cpp revision 12855:588919e0e4aa
14661Sksewell@umich.edu/*****************************************************************************
24661Sksewell@umich.edu
35268Sksewell@umich.edu  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
45268Sksewell@umich.edu  more contributor license agreements.  See the NOTICE file distributed
55268Sksewell@umich.edu  with this work for additional information regarding copyright ownership.
65268Sksewell@umich.edu  Accellera licenses this file to you under the Apache License, Version 2.0
75268Sksewell@umich.edu  (the "License"); you may not use this file except in compliance with the
85268Sksewell@umich.edu  License.  You may obtain a copy of the License at
95268Sksewell@umich.edu
105268Sksewell@umich.edu    http://www.apache.org/licenses/LICENSE-2.0
115268Sksewell@umich.edu
125268Sksewell@umich.edu  Unless required by applicable law or agreed to in writing, software
135268Sksewell@umich.edu  distributed under the License is distributed on an "AS IS" BASIS,
145268Sksewell@umich.edu  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
155268Sksewell@umich.edu  implied.  See the License for the specific language governing
165268Sksewell@umich.edu  permissions and limitations under the License.
175268Sksewell@umich.edu
185268Sksewell@umich.edu *****************************************************************************/
195268Sksewell@umich.edu
205268Sksewell@umich.edu/*****************************************************************************
215268Sksewell@umich.edu
225268Sksewell@umich.edu  default_assign.cpp --
235268Sksewell@umich.edu
245268Sksewell@umich.edu  Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15
255268Sksewell@umich.edu
265268Sksewell@umich.edu *****************************************************************************/
275268Sksewell@umich.edu
285268Sksewell@umich.edu/*****************************************************************************
295268Sksewell@umich.edu
305268Sksewell@umich.edu  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
314661Sksewell@umich.edu  changes you are making here.
324661Sksewell@umich.edu
334661Sksewell@umich.edu      Name, Affiliation, Date:
344661Sksewell@umich.edu  Description of Modification:
354661Sksewell@umich.edu
364661Sksewell@umich.edu *****************************************************************************/
374661Sksewell@umich.edu
384661Sksewell@umich.edu// This may look like C code, but it is really -*- C++ -*-
394661Sksewell@umich.edu//
404661Sksewell@umich.edu// default_assign.cxx --
414661Sksewell@umich.edu// Copyright Synopsys 1998
424661Sksewell@umich.edu// Author          : Ric Hilderink
434661Sksewell@umich.edu// Created On      : Wed Dec 30 09:52:54 1998
444661Sksewell@umich.edu// Status          : none
454661Sksewell@umich.edu//
464661Sksewell@umich.edu
474661Sksewell@umich.edu#include <limits.h>
484661Sksewell@umich.edu#include <float.h>
494661Sksewell@umich.edu
504661Sksewell@umich.edu#define SC_INCLUDE_FX
514661Sksewell@umich.edu#include "systemc.h"
524661Sksewell@umich.edu#include "fx_precision_double.h"
534661Sksewell@umich.edu
544661Sksewell@umich.edutypedef unsigned int   uint;
554661Sksewell@umich.edutypedef unsigned short ushort;
564661Sksewell@umich.edutypedef unsigned long  ulong;
574661Sksewell@umich.edu
584661Sksewell@umich.edu#define SHOW_DEFAULT_ASSIGN(a) cerr << #a << " : " << double(a) << " : " << a.to_string(SC_HEX) << "\n"
594661Sksewell@umich.edu#define IDENT_DEFAULT_ASSIGN(a) cerr << "--default_assign-Inf-Inf-Inf-Inf-Inf- " << a << "\n"
604661Sksewell@umich.edu
614661Sksewell@umich.edu//-------------------------------------------------------
624661Sksewell@umich.edustatic void test_fx_float_int()
634661Sksewell@umich.edu{
644661Sksewell@umich.edu  IDENT_DEFAULT_ASSIGN("test_fx_float_int");
654661Sksewell@umich.edu
664661Sksewell@umich.edu  sc_fxval a; a = 0;
6712234Sgabeblack@google.com  sc_fxval b; b = 1;
6812234Sgabeblack@google.com  sc_fxval c; c = -1;
694661Sksewell@umich.edu  sc_fxval d; d = INT_MAX;
704661Sksewell@umich.edu  sc_fxval e; e = INT_MIN;
714661Sksewell@umich.edu
724661Sksewell@umich.edu  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
734661Sksewell@umich.edu}
744661Sksewell@umich.edu
754661Sksewell@umich.edustatic void test_fx_float_uint()
764661Sksewell@umich.edu{
774661Sksewell@umich.edu  IDENT_DEFAULT_ASSIGN("test_fx_float_uint");
784661Sksewell@umich.edu
794661Sksewell@umich.edu  sc_fxval a; a = (uint)0;
804661Sksewell@umich.edu  sc_fxval b; b = (uint)1;
814661Sksewell@umich.edu  sc_fxval c; c = (uint)-1;
824661Sksewell@umich.edu  sc_fxval d; d = UINT_MAX;
8310474Sandreas.hansson@arm.com  sc_fxval e; e = (uint)abs(INT_MIN);
844661Sksewell@umich.edu
854661Sksewell@umich.edu  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
864661Sksewell@umich.edu}
874661Sksewell@umich.edu
8810474Sandreas.hansson@arm.comstatic void test_fx_float_short()
894661Sksewell@umich.edu{
904661Sksewell@umich.edu  IDENT_DEFAULT_ASSIGN("test_fx_float_short");
914661Sksewell@umich.edu
924661Sksewell@umich.edu  sc_fxval a; a = (short)0;
934661Sksewell@umich.edu  sc_fxval b; b = (short)1;
944661Sksewell@umich.edu  sc_fxval c; c = (short)-1;
954661Sksewell@umich.edu  sc_fxval d; d = SHRT_MAX;
964661Sksewell@umich.edu  sc_fxval e; e = SHRT_MIN;
974661Sksewell@umich.edu
984661Sksewell@umich.edu  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
994661Sksewell@umich.edu}
1004661Sksewell@umich.edu
10112234Sgabeblack@google.comstatic void test_fx_float_ushort()
10212234Sgabeblack@google.com{
1034661Sksewell@umich.edu  IDENT_DEFAULT_ASSIGN("test_fx_float_ushort");
1044661Sksewell@umich.edu
1054661Sksewell@umich.edu  sc_fxval a; a = (ushort)0;
1064661Sksewell@umich.edu  sc_fxval b; b = (ushort)1;
1074661Sksewell@umich.edu  sc_fxval c; c = (ushort)-1;
1084661Sksewell@umich.edu  sc_fxval d; d = USHRT_MAX;
1094661Sksewell@umich.edu  sc_fxval e; e = (ushort)abs(SHRT_MIN);
1104661Sksewell@umich.edu
1114661Sksewell@umich.edu  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
1124661Sksewell@umich.edu}
1134661Sksewell@umich.edu
1144661Sksewell@umich.edustatic void test_fx_float_long()
1154661Sksewell@umich.edu{
1164661Sksewell@umich.edu  IDENT_DEFAULT_ASSIGN("test_fx_float_long");
11710474Sandreas.hansson@arm.com
1184661Sksewell@umich.edu  sc_fxval a; a = (long)0;
1194661Sksewell@umich.edu  sc_fxval b; b = (long)1;
1204661Sksewell@umich.edu  sc_fxval c; c = (long)-1;
1214661Sksewell@umich.edu  sc_fxval d; d = LONG_MAX;
12210474Sandreas.hansson@arm.com  sc_fxval e; e = LONG_MIN;
1234661Sksewell@umich.edu
1244661Sksewell@umich.edu  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
1254661Sksewell@umich.edu}
1264661Sksewell@umich.edu
1274661Sksewell@umich.edustatic void test_fx_float_ulong()
1284661Sksewell@umich.edu{
1294661Sksewell@umich.edu  IDENT_DEFAULT_ASSIGN("test_fx_float_ulong");
1304661Sksewell@umich.edu
1314661Sksewell@umich.edu  sc_fxval a; a = (ulong)0;
1324661Sksewell@umich.edu  sc_fxval b; b = (ulong)1;
1334661Sksewell@umich.edu  sc_fxval c; c = (ulong)-1;
1344661Sksewell@umich.edu  sc_fxval d; d = ULONG_MAX;
1354661Sksewell@umich.edu  sc_fxval e; e = (ulong)abs(LONG_MIN);
1364661Sksewell@umich.edu
1374661Sksewell@umich.edu  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
1384661Sksewell@umich.edu}
1394661Sksewell@umich.edu
1409554Sandreas.hansson@arm.comstatic void test_fx_float_float()
14112234Sgabeblack@google.com{
1429554Sandreas.hansson@arm.com  IDENT_DEFAULT_ASSIGN("test_fx_float_float");
14312234Sgabeblack@google.com
1449554Sandreas.hansson@arm.com  sc_fxval a; a = 0.0;
1459554Sandreas.hansson@arm.com  sc_fxval b; b = 1.0;
1464661Sksewell@umich.edu  sc_fxval c; c = -1.0;
1474661Sksewell@umich.edu  sc_fxval d; d = FLT_MAX;
1484661Sksewell@umich.edu  sc_fxval e; e = FLT_MIN;
1494661Sksewell@umich.edu
1504661Sksewell@umich.edu  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
1518564Sgblack@eecs.umich.edu}
15212234Sgabeblack@google.com
1534661Sksewell@umich.edustatic void test_fx_float_double()
1548738Sgblack@eecs.umich.edu{
1554661Sksewell@umich.edu  IDENT_DEFAULT_ASSIGN("test_fx_float_double");
1564661Sksewell@umich.edu
1574661Sksewell@umich.edu  sc_fxval a; a = (double)0.0;
1584661Sksewell@umich.edu  sc_fxval b; b = (double)1.0;
1598564Sgblack@eecs.umich.edu  sc_fxval c; c = (double)-1.0;
16012234Sgabeblack@google.com  sc_fxval d; d = DBL_MAX;
1614661Sksewell@umich.edu  sc_fxval e; e = DBL_MIN;
1628738Sgblack@eecs.umich.edu
1634661Sksewell@umich.edu  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
1644661Sksewell@umich.edu}
1654661Sksewell@umich.edu
1664661Sksewell@umich.edu//-------------------------------------------------------
1674661Sksewell@umich.edustatic void test_fx_ufix_int()
1684661Sksewell@umich.edu{
1694661Sksewell@umich.edu  IDENT_DEFAULT_ASSIGN("test_fx_ufix_int");
1704661Sksewell@umich.edu
1714661Sksewell@umich.edu  sc_ufix a; a = 0;
1724661Sksewell@umich.edu  sc_ufix b; b = 1;
1734661Sksewell@umich.edu  sc_ufix c; c = -1;
1744661Sksewell@umich.edu  sc_ufix d; d = INT_MAX;
1754661Sksewell@umich.edu  sc_ufix e; e = INT_MIN;
1764661Sksewell@umich.edu
1774661Sksewell@umich.edu  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
1784661Sksewell@umich.edu}
1795222Sksewell@umich.edu
1805222Sksewell@umich.edustatic void test_fx_ufix_uint()
1814661Sksewell@umich.edu{
1824661Sksewell@umich.edu  IDENT_DEFAULT_ASSIGN("test_fx_ufix_uint");
1834661Sksewell@umich.edu
1844661Sksewell@umich.edu  sc_ufix a; a = (uint)0;
1854661Sksewell@umich.edu  sc_ufix b; b = (uint)1;
1864661Sksewell@umich.edu  sc_ufix c; c = (uint)-1;
1874661Sksewell@umich.edu  sc_ufix d; d = UINT_MAX;
1884661Sksewell@umich.edu  sc_ufix e; e = (uint)abs(INT_MIN);
1894661Sksewell@umich.edu
1904661Sksewell@umich.edu  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
1914661Sksewell@umich.edu}
1924661Sksewell@umich.edu
1934661Sksewell@umich.edustatic void test_fx_ufix_short()
1944661Sksewell@umich.edu{
1954661Sksewell@umich.edu  IDENT_DEFAULT_ASSIGN("test_fx_ufix_short");
1964661Sksewell@umich.edu
1974661Sksewell@umich.edu  sc_ufix a; a = (short)0;
1984661Sksewell@umich.edu  sc_ufix b; b = (short)1;
1994661Sksewell@umich.edu  sc_ufix c; c = (short)-1;
2004661Sksewell@umich.edu  sc_ufix d; d = SHRT_MAX;
2014661Sksewell@umich.edu  sc_ufix e; e = SHRT_MIN;
2024661Sksewell@umich.edu
2034661Sksewell@umich.edu  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
2044661Sksewell@umich.edu}
2054661Sksewell@umich.edu
2064661Sksewell@umich.edustatic void test_fx_ufix_ushort()
2074661Sksewell@umich.edu{
2084661Sksewell@umich.edu  IDENT_DEFAULT_ASSIGN("test_fx_ufix_ushort");
2094661Sksewell@umich.edu
2105222Sksewell@umich.edu  sc_ufix a; a = (ushort)0;
2115222Sksewell@umich.edu  sc_ufix b; b = (ushort)1;
2124661Sksewell@umich.edu  sc_ufix c; c = (ushort)-1;
2134661Sksewell@umich.edu  sc_ufix d; d = USHRT_MAX;
2144661Sksewell@umich.edu  sc_ufix e; e = (ushort)abs(SHRT_MIN);
2154661Sksewell@umich.edu
2164661Sksewell@umich.edu  SHOW_DEFAULT_ASSIGN(a); SHOW_DEFAULT_ASSIGN(b); SHOW_DEFAULT_ASSIGN(c); SHOW_DEFAULT_ASSIGN(d); SHOW_DEFAULT_ASSIGN(e);
2174661Sksewell@umich.edu}
2184661Sksewell@umich.edu
2194661Sksewell@umich.edustatic void test_fx_ufix_long()
2204661Sksewell@umich.edu{
2214661Sksewell@umich.edu  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