112027Sjungma@eit.uni-kl.de/*****************************************************************************
212027Sjungma@eit.uni-kl.de
312027Sjungma@eit.uni-kl.de  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
412027Sjungma@eit.uni-kl.de  more contributor license agreements.  See the NOTICE file distributed
512027Sjungma@eit.uni-kl.de  with this work for additional information regarding copyright ownership.
612027Sjungma@eit.uni-kl.de  Accellera licenses this file to you under the Apache License, Version 2.0
712027Sjungma@eit.uni-kl.de  (the "License"); you may not use this file except in compliance with the
812027Sjungma@eit.uni-kl.de  License.  You may obtain a copy of the License at
912027Sjungma@eit.uni-kl.de
1012027Sjungma@eit.uni-kl.de    http://www.apache.org/licenses/LICENSE-2.0
1112027Sjungma@eit.uni-kl.de
1212027Sjungma@eit.uni-kl.de  Unless required by applicable law or agreed to in writing, software
1312027Sjungma@eit.uni-kl.de  distributed under the License is distributed on an "AS IS" BASIS,
1412027Sjungma@eit.uni-kl.de  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
1512027Sjungma@eit.uni-kl.de  implied.  See the License for the specific language governing
1612027Sjungma@eit.uni-kl.de  permissions and limitations under the License.
1712027Sjungma@eit.uni-kl.de
1812027Sjungma@eit.uni-kl.de *****************************************************************************/
1912027Sjungma@eit.uni-kl.de
2012027Sjungma@eit.uni-kl.de/*****************************************************************************
2112027Sjungma@eit.uni-kl.de
2212027Sjungma@eit.uni-kl.de  sc_ufix.h -
2312027Sjungma@eit.uni-kl.de
2412027Sjungma@eit.uni-kl.de  Original Author: Martin Janssen, Synopsys, Inc.
2512027Sjungma@eit.uni-kl.de
2612027Sjungma@eit.uni-kl.de *****************************************************************************/
2712027Sjungma@eit.uni-kl.de
2812027Sjungma@eit.uni-kl.de/*****************************************************************************
2912027Sjungma@eit.uni-kl.de
3012027Sjungma@eit.uni-kl.de  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
3112027Sjungma@eit.uni-kl.de  changes you are making here.
3212027Sjungma@eit.uni-kl.de
3312027Sjungma@eit.uni-kl.de      Name, Affiliation, Date:
3412027Sjungma@eit.uni-kl.de  Description of Modification:
3512027Sjungma@eit.uni-kl.de
3612027Sjungma@eit.uni-kl.de *****************************************************************************/
3712027Sjungma@eit.uni-kl.de
3812027Sjungma@eit.uni-kl.de// $Log: sc_ufix.h,v $
3912027Sjungma@eit.uni-kl.de// Revision 1.2  2011/01/20 22:52:30  acg
4012027Sjungma@eit.uni-kl.de//  Andy Goodrich: Add float constructors.
4112027Sjungma@eit.uni-kl.de//
4212027Sjungma@eit.uni-kl.de// Revision 1.1.1.1  2006/12/15 20:20:04  acg
4312027Sjungma@eit.uni-kl.de// SystemC 2.3
4412027Sjungma@eit.uni-kl.de//
4512027Sjungma@eit.uni-kl.de// Revision 1.3  2006/01/13 18:53:58  acg
4612027Sjungma@eit.uni-kl.de// Andy Goodrich: added $Log command so that CVS comments are reproduced in
4712027Sjungma@eit.uni-kl.de// the source.
4812027Sjungma@eit.uni-kl.de//
4912027Sjungma@eit.uni-kl.de
5012027Sjungma@eit.uni-kl.de#ifndef SC_UFIX_H
5112027Sjungma@eit.uni-kl.de#define SC_UFIX_H
5212027Sjungma@eit.uni-kl.de
5312027Sjungma@eit.uni-kl.de
5412027Sjungma@eit.uni-kl.de#include "sysc/datatypes/fx/sc_fxnum.h"
5512027Sjungma@eit.uni-kl.de
5612027Sjungma@eit.uni-kl.de
5712027Sjungma@eit.uni-kl.denamespace sc_dt
5812027Sjungma@eit.uni-kl.de{
5912027Sjungma@eit.uni-kl.de
6012027Sjungma@eit.uni-kl.de// classes defined in this module
6112027Sjungma@eit.uni-kl.declass sc_ufix;
6212027Sjungma@eit.uni-kl.declass sc_ufix_fast;
6312027Sjungma@eit.uni-kl.de
6412027Sjungma@eit.uni-kl.de
6512027Sjungma@eit.uni-kl.de// ----------------------------------------------------------------------------
6612027Sjungma@eit.uni-kl.de//  CLASS : sc_ufix
6712027Sjungma@eit.uni-kl.de//
6812027Sjungma@eit.uni-kl.de//  "Unconstrained" unsigned fixed-point class; arbitrary precision.
6912027Sjungma@eit.uni-kl.de// ----------------------------------------------------------------------------
7012027Sjungma@eit.uni-kl.de
7112027Sjungma@eit.uni-kl.declass sc_ufix : public sc_fxnum
7212027Sjungma@eit.uni-kl.de{
7312027Sjungma@eit.uni-kl.de
7412027Sjungma@eit.uni-kl.depublic:
7512027Sjungma@eit.uni-kl.de
7612027Sjungma@eit.uni-kl.de    // constructors
7712027Sjungma@eit.uni-kl.de
7812027Sjungma@eit.uni-kl.de    explicit sc_ufix( sc_fxnum_observer* = 0 );
7912027Sjungma@eit.uni-kl.de             sc_ufix( int, int,
8012027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );
8112027Sjungma@eit.uni-kl.de             sc_ufix( sc_q_mode, sc_o_mode,
8212027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );
8312027Sjungma@eit.uni-kl.de             sc_ufix( sc_q_mode, sc_o_mode, int,
8412027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );
8512027Sjungma@eit.uni-kl.de             sc_ufix( int, int, sc_q_mode, sc_o_mode,
8612027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );
8712027Sjungma@eit.uni-kl.de             sc_ufix( int, int, sc_q_mode, sc_o_mode, int,
8812027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );
8912027Sjungma@eit.uni-kl.de    explicit sc_ufix( const sc_fxcast_switch&,
9012027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );
9112027Sjungma@eit.uni-kl.de             sc_ufix( int, int,
9212027Sjungma@eit.uni-kl.de		      const sc_fxcast_switch&,
9312027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );
9412027Sjungma@eit.uni-kl.de             sc_ufix( sc_q_mode, sc_o_mode,
9512027Sjungma@eit.uni-kl.de		      const sc_fxcast_switch&,
9612027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );
9712027Sjungma@eit.uni-kl.de             sc_ufix( sc_q_mode, sc_o_mode, int,
9812027Sjungma@eit.uni-kl.de		      const sc_fxcast_switch&,
9912027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );
10012027Sjungma@eit.uni-kl.de             sc_ufix( int, int, sc_q_mode, sc_o_mode,
10112027Sjungma@eit.uni-kl.de		      const sc_fxcast_switch&,
10212027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );
10312027Sjungma@eit.uni-kl.de             sc_ufix( int, int, sc_q_mode, sc_o_mode, int,
10412027Sjungma@eit.uni-kl.de		      const sc_fxcast_switch&,
10512027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );
10612027Sjungma@eit.uni-kl.de    explicit sc_ufix( const sc_fxtype_params&,
10712027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );
10812027Sjungma@eit.uni-kl.de             sc_ufix( const sc_fxtype_params&,
10912027Sjungma@eit.uni-kl.de		      const sc_fxcast_switch&,
11012027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );
11112027Sjungma@eit.uni-kl.de
11212027Sjungma@eit.uni-kl.de#define DECL_CTORS_T(tp)                                                      \
11312027Sjungma@eit.uni-kl.de             sc_ufix( tp,                                                     \
11412027Sjungma@eit.uni-kl.de		      int, int,                                               \
11512027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );                               \
11612027Sjungma@eit.uni-kl.de             sc_ufix( tp,                                                     \
11712027Sjungma@eit.uni-kl.de		      sc_q_mode, sc_o_mode,                                   \
11812027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );                               \
11912027Sjungma@eit.uni-kl.de             sc_ufix( tp,                                                     \
12012027Sjungma@eit.uni-kl.de		      sc_q_mode, sc_o_mode, int,                              \
12112027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );                               \
12212027Sjungma@eit.uni-kl.de             sc_ufix( tp,                                                     \
12312027Sjungma@eit.uni-kl.de		      int, int, sc_q_mode, sc_o_mode,                         \
12412027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );                               \
12512027Sjungma@eit.uni-kl.de             sc_ufix( tp,                                                     \
12612027Sjungma@eit.uni-kl.de		      int, int, sc_q_mode, sc_o_mode, int,                    \
12712027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );                               \
12812027Sjungma@eit.uni-kl.de             sc_ufix( tp,                                                     \
12912027Sjungma@eit.uni-kl.de		      const sc_fxcast_switch&,                                \
13012027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );                               \
13112027Sjungma@eit.uni-kl.de             sc_ufix( tp,                                                     \
13212027Sjungma@eit.uni-kl.de		      int, int,                                               \
13312027Sjungma@eit.uni-kl.de		      const sc_fxcast_switch&,                                \
13412027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );                               \
13512027Sjungma@eit.uni-kl.de             sc_ufix( tp,                                                     \
13612027Sjungma@eit.uni-kl.de		      sc_q_mode, sc_o_mode,                                   \
13712027Sjungma@eit.uni-kl.de		      const sc_fxcast_switch&,                                \
13812027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );                               \
13912027Sjungma@eit.uni-kl.de             sc_ufix( tp,                                                     \
14012027Sjungma@eit.uni-kl.de		      sc_q_mode, sc_o_mode, int,                              \
14112027Sjungma@eit.uni-kl.de		      const sc_fxcast_switch&,                                \
14212027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );                               \
14312027Sjungma@eit.uni-kl.de             sc_ufix( tp,                                                     \
14412027Sjungma@eit.uni-kl.de		      int, int, sc_q_mode, sc_o_mode,                         \
14512027Sjungma@eit.uni-kl.de		      const sc_fxcast_switch&,                                \
14612027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );                               \
14712027Sjungma@eit.uni-kl.de             sc_ufix( tp,                                                     \
14812027Sjungma@eit.uni-kl.de		      int, int, sc_q_mode, sc_o_mode, int,                    \
14912027Sjungma@eit.uni-kl.de		      const sc_fxcast_switch&,                                \
15012027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );                               \
15112027Sjungma@eit.uni-kl.de             sc_ufix( tp,                                                     \
15212027Sjungma@eit.uni-kl.de		      const sc_fxtype_params&,                                \
15312027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );                               \
15412027Sjungma@eit.uni-kl.de             sc_ufix( tp,                                                     \
15512027Sjungma@eit.uni-kl.de		      const sc_fxtype_params&,                                \
15612027Sjungma@eit.uni-kl.de		      const sc_fxcast_switch&,                                \
15712027Sjungma@eit.uni-kl.de		      sc_fxnum_observer* = 0 );
15812027Sjungma@eit.uni-kl.de
15912027Sjungma@eit.uni-kl.de#define DECL_CTORS_T_A(tp)                                                    \
16012027Sjungma@eit.uni-kl.de             sc_ufix( tp,                                                     \
16112027Sjungma@eit.uni-kl.de	              sc_fxnum_observer* = 0 );                               \
16212027Sjungma@eit.uni-kl.de    DECL_CTORS_T(tp)
16312027Sjungma@eit.uni-kl.de
16412027Sjungma@eit.uni-kl.de#define DECL_CTORS_T_B(tp)                                                    \
16512027Sjungma@eit.uni-kl.de    explicit sc_ufix( tp,                                                     \
16612027Sjungma@eit.uni-kl.de	              sc_fxnum_observer* = 0 );                               \
16712027Sjungma@eit.uni-kl.de    DECL_CTORS_T(tp)
16812027Sjungma@eit.uni-kl.de
16912027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(int)
17012027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(unsigned int)
17112027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(long)
17212027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(unsigned long)
17312027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(float)
17412027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(double)
17512027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(const char*)
17612027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(const sc_fxval&)
17712027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(const sc_fxval_fast&)
17812027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(const sc_fxnum&)
17912027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(const sc_fxnum_fast&)
18012027Sjungma@eit.uni-kl.de#ifndef SC_FX_EXCLUDE_OTHER
18112027Sjungma@eit.uni-kl.de    DECL_CTORS_T_B(int64)
18212027Sjungma@eit.uni-kl.de    DECL_CTORS_T_B(uint64)
18312027Sjungma@eit.uni-kl.de    DECL_CTORS_T_B(const sc_int_base&)
18412027Sjungma@eit.uni-kl.de    DECL_CTORS_T_B(const sc_uint_base&)
18512027Sjungma@eit.uni-kl.de    DECL_CTORS_T_B(const sc_signed&)
18612027Sjungma@eit.uni-kl.de    DECL_CTORS_T_B(const sc_unsigned&)
18712027Sjungma@eit.uni-kl.de#endif
18812027Sjungma@eit.uni-kl.de
18912027Sjungma@eit.uni-kl.de#undef DECL_CTORS_T
19012027Sjungma@eit.uni-kl.de#undef DECL_CTORS_T_A
19112027Sjungma@eit.uni-kl.de#undef DECL_CTORS_T_B
19212027Sjungma@eit.uni-kl.de
19312027Sjungma@eit.uni-kl.de    // copy constructor
19412027Sjungma@eit.uni-kl.de
19512027Sjungma@eit.uni-kl.de    sc_ufix( const sc_ufix& );
19612027Sjungma@eit.uni-kl.de
19712027Sjungma@eit.uni-kl.de
19812027Sjungma@eit.uni-kl.de    // unary bitwise operators
19912027Sjungma@eit.uni-kl.de
20012027Sjungma@eit.uni-kl.de    const sc_ufix operator ~ () const;
20112027Sjungma@eit.uni-kl.de
20212027Sjungma@eit.uni-kl.de
20312027Sjungma@eit.uni-kl.de    // unary bitwise functions
20412027Sjungma@eit.uni-kl.de
20512027Sjungma@eit.uni-kl.de    friend void b_not( sc_ufix&, const sc_ufix& );
20612027Sjungma@eit.uni-kl.de
20712027Sjungma@eit.uni-kl.de
20812027Sjungma@eit.uni-kl.de    // binary bitwise operators
20912027Sjungma@eit.uni-kl.de
21012027Sjungma@eit.uni-kl.de    friend const sc_ufix operator & ( const sc_ufix&, const sc_ufix& );
21112027Sjungma@eit.uni-kl.de    friend const sc_ufix operator & ( const sc_ufix&, const sc_ufix_fast& );
21212027Sjungma@eit.uni-kl.de    friend const sc_ufix operator & ( const sc_ufix_fast&, const sc_ufix& );
21312027Sjungma@eit.uni-kl.de    friend const sc_ufix operator | ( const sc_ufix&, const sc_ufix& );
21412027Sjungma@eit.uni-kl.de    friend const sc_ufix operator | ( const sc_ufix&, const sc_ufix_fast& );
21512027Sjungma@eit.uni-kl.de    friend const sc_ufix operator | ( const sc_ufix_fast&, const sc_ufix& );
21612027Sjungma@eit.uni-kl.de    friend const sc_ufix operator ^ ( const sc_ufix&, const sc_ufix& );
21712027Sjungma@eit.uni-kl.de    friend const sc_ufix operator ^ ( const sc_ufix&, const sc_ufix_fast& );
21812027Sjungma@eit.uni-kl.de    friend const sc_ufix operator ^ ( const sc_ufix_fast&, const sc_ufix& );
21912027Sjungma@eit.uni-kl.de
22012027Sjungma@eit.uni-kl.de
22112027Sjungma@eit.uni-kl.de    // binary bitwise functions
22212027Sjungma@eit.uni-kl.de
22312027Sjungma@eit.uni-kl.de    friend void b_and( sc_ufix&, const sc_ufix&, const sc_ufix& );
22412027Sjungma@eit.uni-kl.de    friend void b_and( sc_ufix&, const sc_ufix&, const sc_ufix_fast& );
22512027Sjungma@eit.uni-kl.de    friend void b_and( sc_ufix&, const sc_ufix_fast&, const sc_ufix& );
22612027Sjungma@eit.uni-kl.de    friend void b_or ( sc_ufix&, const sc_ufix&, const sc_ufix& );
22712027Sjungma@eit.uni-kl.de    friend void b_or ( sc_ufix&, const sc_ufix&, const sc_ufix_fast& );
22812027Sjungma@eit.uni-kl.de    friend void b_or ( sc_ufix&, const sc_ufix_fast&, const sc_ufix& );
22912027Sjungma@eit.uni-kl.de    friend void b_xor( sc_ufix&, const sc_ufix&, const sc_ufix& );
23012027Sjungma@eit.uni-kl.de    friend void b_xor( sc_ufix&, const sc_ufix&, const sc_ufix_fast& );
23112027Sjungma@eit.uni-kl.de    friend void b_xor( sc_ufix&, const sc_ufix_fast&, const sc_ufix& );
23212027Sjungma@eit.uni-kl.de
23312027Sjungma@eit.uni-kl.de
23412027Sjungma@eit.uni-kl.de    // assignment operators
23512027Sjungma@eit.uni-kl.de
23612027Sjungma@eit.uni-kl.de    sc_ufix& operator = ( const sc_ufix& );
23712027Sjungma@eit.uni-kl.de
23812027Sjungma@eit.uni-kl.de#define DECL_ASN_OP_T(op,tp)                                                  \
23912027Sjungma@eit.uni-kl.de    sc_ufix& operator op ( tp );
24012027Sjungma@eit.uni-kl.de
24112027Sjungma@eit.uni-kl.de#ifndef SC_FX_EXCLUDE_OTHER
24212027Sjungma@eit.uni-kl.de#define DECL_ASN_OP_OTHER(op)                                                 \
24312027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,int64)                                                   \
24412027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,uint64)                                                  \
24512027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const sc_int_base&)                                      \
24612027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const sc_uint_base&)                                     \
24712027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const sc_signed&)                                        \
24812027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const sc_unsigned&)
24912027Sjungma@eit.uni-kl.de#else
25012027Sjungma@eit.uni-kl.de#define DECL_ASN_OP_OTHER(op)
25112027Sjungma@eit.uni-kl.de#endif
25212027Sjungma@eit.uni-kl.de
25312027Sjungma@eit.uni-kl.de#define DECL_ASN_OP(op)                                                       \
25412027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,int)                                                     \
25512027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,unsigned int)                                            \
25612027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,long)                                                    \
25712027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,unsigned long)                                           \
25812027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,float)                                                  \
25912027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,double)                                                  \
26012027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const char*)                                             \
26112027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const sc_fxval&)                                         \
26212027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const sc_fxval_fast&)                                    \
26312027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const sc_fxnum&)                                         \
26412027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const sc_fxnum_fast&)                                    \
26512027Sjungma@eit.uni-kl.de    DECL_ASN_OP_OTHER(op)
26612027Sjungma@eit.uni-kl.de
26712027Sjungma@eit.uni-kl.de    DECL_ASN_OP(=)
26812027Sjungma@eit.uni-kl.de
26912027Sjungma@eit.uni-kl.de    DECL_ASN_OP(*=)
27012027Sjungma@eit.uni-kl.de    DECL_ASN_OP(/=)
27112027Sjungma@eit.uni-kl.de    DECL_ASN_OP(+=)
27212027Sjungma@eit.uni-kl.de    DECL_ASN_OP(-=)
27312027Sjungma@eit.uni-kl.de
27412027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(<<=,int)
27512027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(>>=,int)
27612027Sjungma@eit.uni-kl.de
27712027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(&=,const sc_ufix&)
27812027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(&=,const sc_ufix_fast&)
27912027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(|=,const sc_ufix&)
28012027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(|=,const sc_ufix_fast&)
28112027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(^=,const sc_ufix&)
28212027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(^=,const sc_ufix_fast&)
28312027Sjungma@eit.uni-kl.de
28412027Sjungma@eit.uni-kl.de#undef DECL_ASN_OP_T
28512027Sjungma@eit.uni-kl.de#undef DECL_ASN_OP_OTHER
28612027Sjungma@eit.uni-kl.de#undef DECL_ASN_OP
28712027Sjungma@eit.uni-kl.de
28812027Sjungma@eit.uni-kl.de
28912027Sjungma@eit.uni-kl.de    // auto-increment and auto-decrement
29012027Sjungma@eit.uni-kl.de
29112027Sjungma@eit.uni-kl.de    const sc_fxval operator ++ ( int );
29212027Sjungma@eit.uni-kl.de    const sc_fxval operator -- ( int );
29312027Sjungma@eit.uni-kl.de
29412027Sjungma@eit.uni-kl.de    sc_ufix& operator ++ ();
29512027Sjungma@eit.uni-kl.de    sc_ufix& operator -- ();
29612027Sjungma@eit.uni-kl.de
29712027Sjungma@eit.uni-kl.de};
29812027Sjungma@eit.uni-kl.de
29912027Sjungma@eit.uni-kl.de
30012027Sjungma@eit.uni-kl.de// ----------------------------------------------------------------------------
30112027Sjungma@eit.uni-kl.de//  CLASS : sc_ufix_fast
30212027Sjungma@eit.uni-kl.de//
30312027Sjungma@eit.uni-kl.de//  "Unconstrained" unsigned fixed-point class; limited precision.
30412027Sjungma@eit.uni-kl.de// ----------------------------------------------------------------------------
30512027Sjungma@eit.uni-kl.de
30612027Sjungma@eit.uni-kl.declass sc_ufix_fast : public sc_fxnum_fast
30712027Sjungma@eit.uni-kl.de{
30812027Sjungma@eit.uni-kl.de
30912027Sjungma@eit.uni-kl.depublic:
31012027Sjungma@eit.uni-kl.de
31112027Sjungma@eit.uni-kl.de    // constructors
31212027Sjungma@eit.uni-kl.de
31312027Sjungma@eit.uni-kl.de    explicit sc_ufix_fast( sc_fxnum_fast_observer* = 0 );
31412027Sjungma@eit.uni-kl.de             sc_ufix_fast( int, int,
31512027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );
31612027Sjungma@eit.uni-kl.de             sc_ufix_fast( sc_q_mode, sc_o_mode,
31712027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );
31812027Sjungma@eit.uni-kl.de             sc_ufix_fast( sc_q_mode, sc_o_mode, int,
31912027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );
32012027Sjungma@eit.uni-kl.de             sc_ufix_fast( int, int, sc_q_mode, sc_o_mode,
32112027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );
32212027Sjungma@eit.uni-kl.de             sc_ufix_fast( int, int, sc_q_mode, sc_o_mode, int,
32312027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );
32412027Sjungma@eit.uni-kl.de    explicit sc_ufix_fast( const sc_fxcast_switch&,
32512027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );
32612027Sjungma@eit.uni-kl.de             sc_ufix_fast( int, int,
32712027Sjungma@eit.uni-kl.de			   const sc_fxcast_switch&,
32812027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );
32912027Sjungma@eit.uni-kl.de             sc_ufix_fast( sc_q_mode, sc_o_mode,
33012027Sjungma@eit.uni-kl.de			   const sc_fxcast_switch&,
33112027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );
33212027Sjungma@eit.uni-kl.de             sc_ufix_fast( sc_q_mode, sc_o_mode, int,
33312027Sjungma@eit.uni-kl.de			   const sc_fxcast_switch&,
33412027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );
33512027Sjungma@eit.uni-kl.de             sc_ufix_fast( int, int, sc_q_mode, sc_o_mode,
33612027Sjungma@eit.uni-kl.de			   const sc_fxcast_switch&,
33712027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );
33812027Sjungma@eit.uni-kl.de             sc_ufix_fast( int, int, sc_q_mode, sc_o_mode, int,
33912027Sjungma@eit.uni-kl.de			   const sc_fxcast_switch&,
34012027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );
34112027Sjungma@eit.uni-kl.de    explicit sc_ufix_fast( const sc_fxtype_params&,
34212027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );
34312027Sjungma@eit.uni-kl.de             sc_ufix_fast( const sc_fxtype_params&,
34412027Sjungma@eit.uni-kl.de			   const sc_fxcast_switch&,
34512027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );
34612027Sjungma@eit.uni-kl.de
34712027Sjungma@eit.uni-kl.de#define DECL_CTORS_T(tp)                                                      \
34812027Sjungma@eit.uni-kl.de             sc_ufix_fast( tp,                                                \
34912027Sjungma@eit.uni-kl.de			   int, int,                                          \
35012027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );                     \
35112027Sjungma@eit.uni-kl.de             sc_ufix_fast( tp,                                                \
35212027Sjungma@eit.uni-kl.de			   sc_q_mode, sc_o_mode,                              \
35312027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );                     \
35412027Sjungma@eit.uni-kl.de             sc_ufix_fast( tp,                                                \
35512027Sjungma@eit.uni-kl.de			   sc_q_mode, sc_o_mode, int,                         \
35612027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );                     \
35712027Sjungma@eit.uni-kl.de             sc_ufix_fast( tp,                                                \
35812027Sjungma@eit.uni-kl.de			   int, int, sc_q_mode, sc_o_mode,                    \
35912027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );                     \
36012027Sjungma@eit.uni-kl.de             sc_ufix_fast( tp,                                                \
36112027Sjungma@eit.uni-kl.de			   int, int, sc_q_mode, sc_o_mode, int,               \
36212027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );                     \
36312027Sjungma@eit.uni-kl.de             sc_ufix_fast( tp,                                                \
36412027Sjungma@eit.uni-kl.de			   const sc_fxcast_switch&,                           \
36512027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );                     \
36612027Sjungma@eit.uni-kl.de             sc_ufix_fast( tp,                                                \
36712027Sjungma@eit.uni-kl.de			   int, int,                                          \
36812027Sjungma@eit.uni-kl.de			   const sc_fxcast_switch&,                           \
36912027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );                     \
37012027Sjungma@eit.uni-kl.de             sc_ufix_fast( tp,                                                \
37112027Sjungma@eit.uni-kl.de			   sc_q_mode, sc_o_mode,                              \
37212027Sjungma@eit.uni-kl.de			   const sc_fxcast_switch&,                           \
37312027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );                     \
37412027Sjungma@eit.uni-kl.de             sc_ufix_fast( tp,                                                \
37512027Sjungma@eit.uni-kl.de			   sc_q_mode, sc_o_mode, int,                         \
37612027Sjungma@eit.uni-kl.de			   const sc_fxcast_switch&,                           \
37712027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );                     \
37812027Sjungma@eit.uni-kl.de             sc_ufix_fast( tp,                                                \
37912027Sjungma@eit.uni-kl.de			   int, int, sc_q_mode, sc_o_mode,                    \
38012027Sjungma@eit.uni-kl.de			   const sc_fxcast_switch&,                           \
38112027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );                     \
38212027Sjungma@eit.uni-kl.de             sc_ufix_fast( tp,                                                \
38312027Sjungma@eit.uni-kl.de			   int, int, sc_q_mode, sc_o_mode, int,               \
38412027Sjungma@eit.uni-kl.de			   const sc_fxcast_switch&,                           \
38512027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );                     \
38612027Sjungma@eit.uni-kl.de             sc_ufix_fast( tp,                                                \
38712027Sjungma@eit.uni-kl.de			   const sc_fxtype_params&,                           \
38812027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );                     \
38912027Sjungma@eit.uni-kl.de             sc_ufix_fast( tp,                                                \
39012027Sjungma@eit.uni-kl.de			   const sc_fxtype_params&,                           \
39112027Sjungma@eit.uni-kl.de			   const sc_fxcast_switch&,                           \
39212027Sjungma@eit.uni-kl.de			   sc_fxnum_fast_observer* = 0 );
39312027Sjungma@eit.uni-kl.de
39412027Sjungma@eit.uni-kl.de#define DECL_CTORS_T_A(tp)                                                    \
39512027Sjungma@eit.uni-kl.de             sc_ufix_fast( tp,                                                \
39612027Sjungma@eit.uni-kl.de		           sc_fxnum_fast_observer* = 0 );                     \
39712027Sjungma@eit.uni-kl.de    DECL_CTORS_T(tp)
39812027Sjungma@eit.uni-kl.de
39912027Sjungma@eit.uni-kl.de#define DECL_CTORS_T_B(tp)                                                    \
40012027Sjungma@eit.uni-kl.de    explicit sc_ufix_fast( tp,                                                \
40112027Sjungma@eit.uni-kl.de		           sc_fxnum_fast_observer* = 0 );                     \
40212027Sjungma@eit.uni-kl.de    DECL_CTORS_T(tp)
40312027Sjungma@eit.uni-kl.de
40412027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(int)
40512027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(unsigned int)
40612027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(long)
40712027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(unsigned long)
40812027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(float)
40912027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(double)
41012027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(const char*)
41112027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(const sc_fxval&)
41212027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(const sc_fxval_fast&)
41312027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(const sc_fxnum&)
41412027Sjungma@eit.uni-kl.de    DECL_CTORS_T_A(const sc_fxnum_fast&)
41512027Sjungma@eit.uni-kl.de#ifndef SC_FX_EXCLUDE_OTHER
41612027Sjungma@eit.uni-kl.de    DECL_CTORS_T_B(int64)
41712027Sjungma@eit.uni-kl.de    DECL_CTORS_T_B(uint64)
41812027Sjungma@eit.uni-kl.de    DECL_CTORS_T_B(const sc_int_base&)
41912027Sjungma@eit.uni-kl.de    DECL_CTORS_T_B(const sc_uint_base&)
42012027Sjungma@eit.uni-kl.de    DECL_CTORS_T_B(const sc_signed&)
42112027Sjungma@eit.uni-kl.de    DECL_CTORS_T_B(const sc_unsigned&)
42212027Sjungma@eit.uni-kl.de#endif
42312027Sjungma@eit.uni-kl.de
42412027Sjungma@eit.uni-kl.de#undef DECL_CTORS_T
42512027Sjungma@eit.uni-kl.de#undef DECL_CTORS_T_A
42612027Sjungma@eit.uni-kl.de#undef DECL_CTORS_T_B
42712027Sjungma@eit.uni-kl.de
42812027Sjungma@eit.uni-kl.de    // copy constructor
42912027Sjungma@eit.uni-kl.de
43012027Sjungma@eit.uni-kl.de    sc_ufix_fast( const sc_ufix_fast& );
43112027Sjungma@eit.uni-kl.de
43212027Sjungma@eit.uni-kl.de
43312027Sjungma@eit.uni-kl.de    // unary bitwise operators
43412027Sjungma@eit.uni-kl.de
43512027Sjungma@eit.uni-kl.de    const sc_ufix_fast operator ~ () const;
43612027Sjungma@eit.uni-kl.de
43712027Sjungma@eit.uni-kl.de
43812027Sjungma@eit.uni-kl.de    // unary bitwise functions
43912027Sjungma@eit.uni-kl.de
44012027Sjungma@eit.uni-kl.de    friend void b_not( sc_ufix_fast&, const sc_ufix_fast& );
44112027Sjungma@eit.uni-kl.de
44212027Sjungma@eit.uni-kl.de
44312027Sjungma@eit.uni-kl.de    // binary bitwise operators
44412027Sjungma@eit.uni-kl.de
44512027Sjungma@eit.uni-kl.de    friend const sc_ufix_fast operator & ( const sc_ufix_fast&,
44612027Sjungma@eit.uni-kl.de					   const sc_ufix_fast& );
44712027Sjungma@eit.uni-kl.de    friend const sc_ufix_fast operator ^ ( const sc_ufix_fast&,
44812027Sjungma@eit.uni-kl.de					   const sc_ufix_fast& );
44912027Sjungma@eit.uni-kl.de    friend const sc_ufix_fast operator | ( const sc_ufix_fast&,
45012027Sjungma@eit.uni-kl.de					   const sc_ufix_fast& );
45112027Sjungma@eit.uni-kl.de
45212027Sjungma@eit.uni-kl.de
45312027Sjungma@eit.uni-kl.de    // binary bitwise functions
45412027Sjungma@eit.uni-kl.de
45512027Sjungma@eit.uni-kl.de    friend void b_and( sc_ufix_fast&, const sc_ufix_fast&,
45612027Sjungma@eit.uni-kl.de		                      const sc_ufix_fast& );
45712027Sjungma@eit.uni-kl.de    friend void b_or ( sc_ufix_fast&, const sc_ufix_fast&,
45812027Sjungma@eit.uni-kl.de		                      const sc_ufix_fast& );
45912027Sjungma@eit.uni-kl.de    friend void b_xor( sc_ufix_fast&, const sc_ufix_fast&,
46012027Sjungma@eit.uni-kl.de		                      const sc_ufix_fast& );
46112027Sjungma@eit.uni-kl.de
46212027Sjungma@eit.uni-kl.de
46312027Sjungma@eit.uni-kl.de    // assignment operators
46412027Sjungma@eit.uni-kl.de
46512027Sjungma@eit.uni-kl.de    sc_ufix_fast& operator = ( const sc_ufix_fast& );
46612027Sjungma@eit.uni-kl.de
46712027Sjungma@eit.uni-kl.de#define DECL_ASN_OP_T(op,tp)                                                  \
46812027Sjungma@eit.uni-kl.de    sc_ufix_fast& operator op ( tp );
46912027Sjungma@eit.uni-kl.de
47012027Sjungma@eit.uni-kl.de#ifndef SC_FX_EXCLUDE_OTHER
47112027Sjungma@eit.uni-kl.de#define DECL_ASN_OP_OTHER(op)                                                 \
47212027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,int64)                                                   \
47312027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,uint64)                                                  \
47412027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const sc_int_base&)                                      \
47512027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const sc_uint_base&)                                     \
47612027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const sc_signed&)                                        \
47712027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const sc_unsigned&)
47812027Sjungma@eit.uni-kl.de#else
47912027Sjungma@eit.uni-kl.de#define DECL_ASN_OP_OTHER(op)
48012027Sjungma@eit.uni-kl.de#endif
48112027Sjungma@eit.uni-kl.de
48212027Sjungma@eit.uni-kl.de#define DECL_ASN_OP(op)                                                       \
48312027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,int)                                                     \
48412027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,unsigned int)                                            \
48512027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,long)                                                    \
48612027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,unsigned long)                                           \
48712027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,float)                                                  \
48812027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,double)                                                  \
48912027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const char*)                                             \
49012027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const sc_fxval&)                                         \
49112027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const sc_fxval_fast&)                                    \
49212027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const sc_fxnum&)                                         \
49312027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(op,const sc_fxnum_fast&)                                    \
49412027Sjungma@eit.uni-kl.de    DECL_ASN_OP_OTHER(op)
49512027Sjungma@eit.uni-kl.de
49612027Sjungma@eit.uni-kl.de    DECL_ASN_OP(=)
49712027Sjungma@eit.uni-kl.de
49812027Sjungma@eit.uni-kl.de    DECL_ASN_OP(*=)
49912027Sjungma@eit.uni-kl.de    DECL_ASN_OP(/=)
50012027Sjungma@eit.uni-kl.de    DECL_ASN_OP(+=)
50112027Sjungma@eit.uni-kl.de    DECL_ASN_OP(-=)
50212027Sjungma@eit.uni-kl.de
50312027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(<<=,int)
50412027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(>>=,int)
50512027Sjungma@eit.uni-kl.de
50612027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(&=,const sc_ufix&)
50712027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(&=,const sc_ufix_fast&)
50812027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(|=,const sc_ufix&)
50912027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(|=,const sc_ufix_fast&)
51012027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(^=,const sc_ufix&)
51112027Sjungma@eit.uni-kl.de    DECL_ASN_OP_T(^=,const sc_ufix_fast&)
51212027Sjungma@eit.uni-kl.de
51312027Sjungma@eit.uni-kl.de#undef DECL_ASN_OP_T
51412027Sjungma@eit.uni-kl.de#undef DECL_ASN_OP_OTHER
51512027Sjungma@eit.uni-kl.de#undef DECL_ASN_OP
51612027Sjungma@eit.uni-kl.de
51712027Sjungma@eit.uni-kl.de
51812027Sjungma@eit.uni-kl.de    // auto-increment and auto-decrement
51912027Sjungma@eit.uni-kl.de
52012027Sjungma@eit.uni-kl.de    const sc_fxval_fast operator ++ ( int );
52112027Sjungma@eit.uni-kl.de    const sc_fxval_fast operator -- ( int );
52212027Sjungma@eit.uni-kl.de
52312027Sjungma@eit.uni-kl.de    sc_ufix_fast& operator ++ ();
52412027Sjungma@eit.uni-kl.de    sc_ufix_fast& operator -- ();
52512027Sjungma@eit.uni-kl.de
52612027Sjungma@eit.uni-kl.de};
52712027Sjungma@eit.uni-kl.de
52812027Sjungma@eit.uni-kl.de
52912027Sjungma@eit.uni-kl.de// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
53012027Sjungma@eit.uni-kl.de
53112027Sjungma@eit.uni-kl.de// ----------------------------------------------------------------------------
53212027Sjungma@eit.uni-kl.de//  CLASS : sc_ufix
53312027Sjungma@eit.uni-kl.de//
53412027Sjungma@eit.uni-kl.de//  "Unconstrained" unsigned fixed-point class; arbitrary precision.
53512027Sjungma@eit.uni-kl.de// ----------------------------------------------------------------------------
53612027Sjungma@eit.uni-kl.de
53712027Sjungma@eit.uni-kl.de// constructors
53812027Sjungma@eit.uni-kl.de
53912027Sjungma@eit.uni-kl.deinline
54012027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( sc_fxnum_observer* observer_ )
54112027Sjungma@eit.uni-kl.de: sc_fxnum( sc_fxtype_params(),
54212027Sjungma@eit.uni-kl.de	    SC_US_,
54312027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),
54412027Sjungma@eit.uni-kl.de	    observer_ )
54512027Sjungma@eit.uni-kl.de{}
54612027Sjungma@eit.uni-kl.de
54712027Sjungma@eit.uni-kl.deinline
54812027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( int wl_, int iwl_,
54912027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )
55012027Sjungma@eit.uni-kl.de: sc_fxnum( sc_fxtype_params( wl_, iwl_ ),
55112027Sjungma@eit.uni-kl.de	    SC_US_,
55212027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),
55312027Sjungma@eit.uni-kl.de	    observer_ )
55412027Sjungma@eit.uni-kl.de{}
55512027Sjungma@eit.uni-kl.de
55612027Sjungma@eit.uni-kl.deinline
55712027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( sc_q_mode qm, sc_o_mode om,
55812027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )
55912027Sjungma@eit.uni-kl.de: sc_fxnum( sc_fxtype_params( qm, om ),
56012027Sjungma@eit.uni-kl.de	    SC_US_,
56112027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),
56212027Sjungma@eit.uni-kl.de	    observer_ )
56312027Sjungma@eit.uni-kl.de{}
56412027Sjungma@eit.uni-kl.de
56512027Sjungma@eit.uni-kl.deinline
56612027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( sc_q_mode qm, sc_o_mode om, int nb,
56712027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )
56812027Sjungma@eit.uni-kl.de: sc_fxnum( sc_fxtype_params( qm, om, nb ),
56912027Sjungma@eit.uni-kl.de	    SC_US_,
57012027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),
57112027Sjungma@eit.uni-kl.de	    observer_ )
57212027Sjungma@eit.uni-kl.de{}
57312027Sjungma@eit.uni-kl.de
57412027Sjungma@eit.uni-kl.deinline
57512027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( int wl_, int iwl_, sc_q_mode qm, sc_o_mode om,
57612027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )
57712027Sjungma@eit.uni-kl.de: sc_fxnum( sc_fxtype_params( wl_, iwl_, qm, om ),
57812027Sjungma@eit.uni-kl.de	    SC_US_,
57912027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),
58012027Sjungma@eit.uni-kl.de	    observer_ )
58112027Sjungma@eit.uni-kl.de{}
58212027Sjungma@eit.uni-kl.de
58312027Sjungma@eit.uni-kl.deinline
58412027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( int wl_, int iwl_, sc_q_mode qm, sc_o_mode om, int nb,
58512027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )
58612027Sjungma@eit.uni-kl.de: sc_fxnum( sc_fxtype_params( wl_, iwl_, qm, om, nb ),
58712027Sjungma@eit.uni-kl.de	    SC_US_,
58812027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),
58912027Sjungma@eit.uni-kl.de	    observer_ )
59012027Sjungma@eit.uni-kl.de{}
59112027Sjungma@eit.uni-kl.de
59212027Sjungma@eit.uni-kl.deinline
59312027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( const sc_fxcast_switch& cast_sw,
59412027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )
59512027Sjungma@eit.uni-kl.de: sc_fxnum( sc_fxtype_params(),
59612027Sjungma@eit.uni-kl.de	    SC_US_,
59712027Sjungma@eit.uni-kl.de	    cast_sw,
59812027Sjungma@eit.uni-kl.de	    observer_ )
59912027Sjungma@eit.uni-kl.de{}
60012027Sjungma@eit.uni-kl.de
60112027Sjungma@eit.uni-kl.deinline
60212027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( int wl_, int iwl_,
60312027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,
60412027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )
60512027Sjungma@eit.uni-kl.de: sc_fxnum( sc_fxtype_params( wl_, iwl_ ),
60612027Sjungma@eit.uni-kl.de	    SC_US_,
60712027Sjungma@eit.uni-kl.de	    cast_sw,
60812027Sjungma@eit.uni-kl.de	    observer_ )
60912027Sjungma@eit.uni-kl.de{}
61012027Sjungma@eit.uni-kl.de
61112027Sjungma@eit.uni-kl.deinline
61212027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( sc_q_mode qm, sc_o_mode om,
61312027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,
61412027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )
61512027Sjungma@eit.uni-kl.de: sc_fxnum( sc_fxtype_params( qm, om ),
61612027Sjungma@eit.uni-kl.de	    SC_US_,
61712027Sjungma@eit.uni-kl.de	    cast_sw,
61812027Sjungma@eit.uni-kl.de	    observer_ )
61912027Sjungma@eit.uni-kl.de{}
62012027Sjungma@eit.uni-kl.de
62112027Sjungma@eit.uni-kl.deinline
62212027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( sc_q_mode qm, sc_o_mode om, int nb,
62312027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,
62412027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )
62512027Sjungma@eit.uni-kl.de: sc_fxnum( sc_fxtype_params( qm, om, nb ),
62612027Sjungma@eit.uni-kl.de	    SC_US_,
62712027Sjungma@eit.uni-kl.de	    cast_sw,
62812027Sjungma@eit.uni-kl.de	    observer_ )
62912027Sjungma@eit.uni-kl.de{}
63012027Sjungma@eit.uni-kl.de
63112027Sjungma@eit.uni-kl.deinline
63212027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( int wl_, int iwl_, sc_q_mode qm, sc_o_mode om,
63312027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,
63412027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )
63512027Sjungma@eit.uni-kl.de: sc_fxnum( sc_fxtype_params( wl_, iwl_, qm, om ),
63612027Sjungma@eit.uni-kl.de	    SC_US_,
63712027Sjungma@eit.uni-kl.de	    cast_sw,
63812027Sjungma@eit.uni-kl.de	    observer_ )
63912027Sjungma@eit.uni-kl.de{}
64012027Sjungma@eit.uni-kl.de
64112027Sjungma@eit.uni-kl.deinline
64212027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( int wl_, int iwl_, sc_q_mode qm, sc_o_mode om, int nb,
64312027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,
64412027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )
64512027Sjungma@eit.uni-kl.de: sc_fxnum( sc_fxtype_params( wl_, iwl_, qm, om, nb ),
64612027Sjungma@eit.uni-kl.de	    SC_US_,
64712027Sjungma@eit.uni-kl.de	    cast_sw,
64812027Sjungma@eit.uni-kl.de	    observer_ )
64912027Sjungma@eit.uni-kl.de{}
65012027Sjungma@eit.uni-kl.de
65112027Sjungma@eit.uni-kl.deinline
65212027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( const sc_fxtype_params& type_params,
65312027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )
65412027Sjungma@eit.uni-kl.de: sc_fxnum( type_params,
65512027Sjungma@eit.uni-kl.de	    SC_US_,
65612027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),
65712027Sjungma@eit.uni-kl.de	    observer_ )
65812027Sjungma@eit.uni-kl.de{}
65912027Sjungma@eit.uni-kl.de
66012027Sjungma@eit.uni-kl.deinline
66112027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( const sc_fxtype_params& type_params,
66212027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,
66312027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )
66412027Sjungma@eit.uni-kl.de: sc_fxnum( type_params,
66512027Sjungma@eit.uni-kl.de	    SC_US_,
66612027Sjungma@eit.uni-kl.de	    cast_sw,
66712027Sjungma@eit.uni-kl.de	    observer_ )
66812027Sjungma@eit.uni-kl.de{}
66912027Sjungma@eit.uni-kl.de
67012027Sjungma@eit.uni-kl.de#define DEFN_CTORS_T_A(tp)                                                    \
67112027Sjungma@eit.uni-kl.deinline                                                                        \
67212027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
67312027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
67412027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
67512027Sjungma@eit.uni-kl.de	    sc_fxtype_params(),                                               \
67612027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
67712027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),                                               \
67812027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
67912027Sjungma@eit.uni-kl.de{}                                                                            \
68012027Sjungma@eit.uni-kl.de                                                                              \
68112027Sjungma@eit.uni-kl.deinline                                                                        \
68212027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
68312027Sjungma@eit.uni-kl.de		  int wl_, int iwl_,                                          \
68412027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
68512027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
68612027Sjungma@eit.uni-kl.de	    sc_fxtype_params( wl_, iwl_ ),                                    \
68712027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
68812027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),                                               \
68912027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
69012027Sjungma@eit.uni-kl.de{}                                                                            \
69112027Sjungma@eit.uni-kl.de                                                                              \
69212027Sjungma@eit.uni-kl.deinline                                                                        \
69312027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
69412027Sjungma@eit.uni-kl.de		  sc_q_mode qm, sc_o_mode om,                                 \
69512027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
69612027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
69712027Sjungma@eit.uni-kl.de	    sc_fxtype_params( qm, om ),                                       \
69812027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
69912027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),                                               \
70012027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
70112027Sjungma@eit.uni-kl.de{}                                                                            \
70212027Sjungma@eit.uni-kl.de                                                                              \
70312027Sjungma@eit.uni-kl.deinline                                                                        \
70412027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
70512027Sjungma@eit.uni-kl.de		  sc_q_mode qm, sc_o_mode om, int nb,                         \
70612027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
70712027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
70812027Sjungma@eit.uni-kl.de	    sc_fxtype_params( qm, om, nb ),                                   \
70912027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
71012027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),                                               \
71112027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
71212027Sjungma@eit.uni-kl.de{}                                                                            \
71312027Sjungma@eit.uni-kl.de                                                                              \
71412027Sjungma@eit.uni-kl.deinline                                                                        \
71512027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
71612027Sjungma@eit.uni-kl.de		  int wl_, int iwl_, sc_q_mode qm, sc_o_mode om,              \
71712027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
71812027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
71912027Sjungma@eit.uni-kl.de	    sc_fxtype_params( wl_, iwl_, qm, om ),                            \
72012027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
72112027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),                                               \
72212027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
72312027Sjungma@eit.uni-kl.de{}                                                                            \
72412027Sjungma@eit.uni-kl.de                                                                              \
72512027Sjungma@eit.uni-kl.deinline                                                                        \
72612027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
72712027Sjungma@eit.uni-kl.de		  int wl_, int iwl_, sc_q_mode qm, sc_o_mode om, int nb,      \
72812027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
72912027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
73012027Sjungma@eit.uni-kl.de	    sc_fxtype_params( wl_, iwl_, qm, om, nb ),                        \
73112027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
73212027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),                                               \
73312027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
73412027Sjungma@eit.uni-kl.de{}                                                                            \
73512027Sjungma@eit.uni-kl.de                                                                              \
73612027Sjungma@eit.uni-kl.deinline                                                                        \
73712027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
73812027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,                            \
73912027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
74012027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
74112027Sjungma@eit.uni-kl.de	    sc_fxtype_params(),                                               \
74212027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
74312027Sjungma@eit.uni-kl.de	    cast_sw,                                                          \
74412027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
74512027Sjungma@eit.uni-kl.de{}                                                                            \
74612027Sjungma@eit.uni-kl.de                                                                              \
74712027Sjungma@eit.uni-kl.deinline                                                                        \
74812027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
74912027Sjungma@eit.uni-kl.de		  int wl_, int iwl_,                                          \
75012027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,                            \
75112027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
75212027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
75312027Sjungma@eit.uni-kl.de	    sc_fxtype_params( wl_, iwl_ ),                                    \
75412027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
75512027Sjungma@eit.uni-kl.de	    cast_sw,                                                          \
75612027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
75712027Sjungma@eit.uni-kl.de{}                                                                            \
75812027Sjungma@eit.uni-kl.de                                                                              \
75912027Sjungma@eit.uni-kl.deinline                                                                        \
76012027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
76112027Sjungma@eit.uni-kl.de		  sc_q_mode qm, sc_o_mode om,                                 \
76212027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,                            \
76312027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
76412027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
76512027Sjungma@eit.uni-kl.de	    sc_fxtype_params( qm, om ),                                       \
76612027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
76712027Sjungma@eit.uni-kl.de	    cast_sw,                                                          \
76812027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
76912027Sjungma@eit.uni-kl.de{}                                                                            \
77012027Sjungma@eit.uni-kl.de                                                                              \
77112027Sjungma@eit.uni-kl.deinline                                                                        \
77212027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
77312027Sjungma@eit.uni-kl.de		  sc_q_mode qm, sc_o_mode om, int nb,                         \
77412027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,                            \
77512027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
77612027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
77712027Sjungma@eit.uni-kl.de	    sc_fxtype_params( qm, om, nb ),                                   \
77812027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
77912027Sjungma@eit.uni-kl.de	    cast_sw,                                                          \
78012027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
78112027Sjungma@eit.uni-kl.de{}                                                                            \
78212027Sjungma@eit.uni-kl.de                                                                              \
78312027Sjungma@eit.uni-kl.deinline                                                                        \
78412027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
78512027Sjungma@eit.uni-kl.de		  int wl_, int iwl_, sc_q_mode qm, sc_o_mode om,              \
78612027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,                            \
78712027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
78812027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
78912027Sjungma@eit.uni-kl.de	    sc_fxtype_params( wl_, iwl_, qm, om ),                            \
79012027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
79112027Sjungma@eit.uni-kl.de	    cast_sw,                                                          \
79212027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
79312027Sjungma@eit.uni-kl.de{}                                                                            \
79412027Sjungma@eit.uni-kl.de                                                                              \
79512027Sjungma@eit.uni-kl.deinline                                                                        \
79612027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
79712027Sjungma@eit.uni-kl.de		  int wl_, int iwl_, sc_q_mode qm, sc_o_mode om, int nb,      \
79812027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,                            \
79912027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
80012027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
80112027Sjungma@eit.uni-kl.de	    sc_fxtype_params( wl_, iwl_, qm, om, nb ),                        \
80212027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
80312027Sjungma@eit.uni-kl.de	    cast_sw,                                                          \
80412027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
80512027Sjungma@eit.uni-kl.de{}                                                                            \
80612027Sjungma@eit.uni-kl.de                                                                              \
80712027Sjungma@eit.uni-kl.deinline                                                                        \
80812027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
80912027Sjungma@eit.uni-kl.de		  const sc_fxtype_params& type_params,                        \
81012027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
81112027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
81212027Sjungma@eit.uni-kl.de	    type_params,                                                      \
81312027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
81412027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),                                               \
81512027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
81612027Sjungma@eit.uni-kl.de{}                                                                            \
81712027Sjungma@eit.uni-kl.de                                                                              \
81812027Sjungma@eit.uni-kl.deinline                                                                        \
81912027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
82012027Sjungma@eit.uni-kl.de		  const sc_fxtype_params& type_params,                        \
82112027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,                            \
82212027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
82312027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
82412027Sjungma@eit.uni-kl.de	    type_params,                                                      \
82512027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
82612027Sjungma@eit.uni-kl.de	    cast_sw,                                                          \
82712027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
82812027Sjungma@eit.uni-kl.de{}
82912027Sjungma@eit.uni-kl.de
83012027Sjungma@eit.uni-kl.de#define DEFN_CTORS_T_B(tp)                                                    \
83112027Sjungma@eit.uni-kl.deinline                                                                        \
83212027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
83312027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
83412027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
83512027Sjungma@eit.uni-kl.de	    a.type_params(),                                                  \
83612027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
83712027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),                                               \
83812027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
83912027Sjungma@eit.uni-kl.de{}                                                                            \
84012027Sjungma@eit.uni-kl.de                                                                              \
84112027Sjungma@eit.uni-kl.deinline                                                                        \
84212027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
84312027Sjungma@eit.uni-kl.de		  int wl_, int iwl_,                                          \
84412027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
84512027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
84612027Sjungma@eit.uni-kl.de	    sc_fxtype_params( a.type_params(), wl_, iwl_ ),                   \
84712027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
84812027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),                                               \
84912027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
85012027Sjungma@eit.uni-kl.de{}                                                                            \
85112027Sjungma@eit.uni-kl.de                                                                              \
85212027Sjungma@eit.uni-kl.deinline                                                                        \
85312027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
85412027Sjungma@eit.uni-kl.de		  sc_q_mode qm, sc_o_mode om,                                 \
85512027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
85612027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
85712027Sjungma@eit.uni-kl.de	    sc_fxtype_params( a.type_params(), qm, om ),                      \
85812027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
85912027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),                                               \
86012027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
86112027Sjungma@eit.uni-kl.de{}                                                                            \
86212027Sjungma@eit.uni-kl.de                                                                              \
86312027Sjungma@eit.uni-kl.deinline                                                                        \
86412027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
86512027Sjungma@eit.uni-kl.de		  sc_q_mode qm, sc_o_mode om, int nb,                         \
86612027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
86712027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
86812027Sjungma@eit.uni-kl.de	    sc_fxtype_params( a.type_params(), qm, om, nb ),                  \
86912027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
87012027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),                                               \
87112027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
87212027Sjungma@eit.uni-kl.de{}                                                                            \
87312027Sjungma@eit.uni-kl.de                                                                              \
87412027Sjungma@eit.uni-kl.deinline                                                                        \
87512027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
87612027Sjungma@eit.uni-kl.de		  int wl_, int iwl_, sc_q_mode qm, sc_o_mode om,              \
87712027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
87812027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
87912027Sjungma@eit.uni-kl.de	    sc_fxtype_params( wl_, iwl_, qm, om ),                            \
88012027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
88112027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),                                               \
88212027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
88312027Sjungma@eit.uni-kl.de{}                                                                            \
88412027Sjungma@eit.uni-kl.de                                                                              \
88512027Sjungma@eit.uni-kl.deinline                                                                        \
88612027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
88712027Sjungma@eit.uni-kl.de		  int wl_, int iwl_, sc_q_mode qm, sc_o_mode om, int nb,      \
88812027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
88912027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
89012027Sjungma@eit.uni-kl.de	    sc_fxtype_params( wl_, iwl_, qm, om, nb ),                        \
89112027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
89212027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),                                               \
89312027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
89412027Sjungma@eit.uni-kl.de{}                                                                            \
89512027Sjungma@eit.uni-kl.de                                                                              \
89612027Sjungma@eit.uni-kl.deinline                                                                        \
89712027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
89812027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,                            \
89912027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
90012027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
90112027Sjungma@eit.uni-kl.de	    a.type_params(),                                                  \
90212027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
90312027Sjungma@eit.uni-kl.de	    cast_sw,                                                          \
90412027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
90512027Sjungma@eit.uni-kl.de{}                                                                            \
90612027Sjungma@eit.uni-kl.de                                                                              \
90712027Sjungma@eit.uni-kl.deinline                                                                        \
90812027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
90912027Sjungma@eit.uni-kl.de		  int wl_, int iwl_,                                          \
91012027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,                            \
91112027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
91212027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
91312027Sjungma@eit.uni-kl.de	    sc_fxtype_params( a.type_params(), wl_, iwl_ ),                   \
91412027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
91512027Sjungma@eit.uni-kl.de	    cast_sw,                                                          \
91612027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
91712027Sjungma@eit.uni-kl.de{}                                                                            \
91812027Sjungma@eit.uni-kl.de                                                                              \
91912027Sjungma@eit.uni-kl.deinline                                                                        \
92012027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
92112027Sjungma@eit.uni-kl.de		  sc_q_mode qm, sc_o_mode om,                                 \
92212027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,                            \
92312027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
92412027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
92512027Sjungma@eit.uni-kl.de	    sc_fxtype_params( a.type_params(), qm, om ),                      \
92612027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
92712027Sjungma@eit.uni-kl.de	    cast_sw,                                                          \
92812027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
92912027Sjungma@eit.uni-kl.de{}                                                                            \
93012027Sjungma@eit.uni-kl.de                                                                              \
93112027Sjungma@eit.uni-kl.deinline                                                                        \
93212027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
93312027Sjungma@eit.uni-kl.de		  sc_q_mode qm, sc_o_mode om, int nb,                         \
93412027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,                            \
93512027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
93612027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
93712027Sjungma@eit.uni-kl.de	    sc_fxtype_params( a.type_params(), qm, om, nb ),                  \
93812027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
93912027Sjungma@eit.uni-kl.de	    cast_sw,                                                          \
94012027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
94112027Sjungma@eit.uni-kl.de{}                                                                            \
94212027Sjungma@eit.uni-kl.de                                                                              \
94312027Sjungma@eit.uni-kl.deinline                                                                        \
94412027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
94512027Sjungma@eit.uni-kl.de		  int wl_, int iwl_, sc_q_mode qm, sc_o_mode om,              \
94612027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,                            \
94712027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
94812027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
94912027Sjungma@eit.uni-kl.de	    sc_fxtype_params( wl_, iwl_, qm, om ),                            \
95012027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
95112027Sjungma@eit.uni-kl.de	    cast_sw,                                                          \
95212027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
95312027Sjungma@eit.uni-kl.de{}                                                                            \
95412027Sjungma@eit.uni-kl.de                                                                              \
95512027Sjungma@eit.uni-kl.deinline                                                                        \
95612027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
95712027Sjungma@eit.uni-kl.de		  int wl_, int iwl_, sc_q_mode qm, sc_o_mode om, int nb,      \
95812027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,                            \
95912027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
96012027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
96112027Sjungma@eit.uni-kl.de	    sc_fxtype_params( wl_, iwl_, qm, om, nb ),                        \
96212027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
96312027Sjungma@eit.uni-kl.de	    cast_sw,                                                          \
96412027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
96512027Sjungma@eit.uni-kl.de{}                                                                            \
96612027Sjungma@eit.uni-kl.de                                                                              \
96712027Sjungma@eit.uni-kl.deinline                                                                        \
96812027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
96912027Sjungma@eit.uni-kl.de		  const sc_fxtype_params& type_params,                        \
97012027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
97112027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
97212027Sjungma@eit.uni-kl.de	    type_params,                                                      \
97312027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
97412027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),                                               \
97512027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
97612027Sjungma@eit.uni-kl.de{}                                                                            \
97712027Sjungma@eit.uni-kl.de                                                                              \
97812027Sjungma@eit.uni-kl.deinline                                                                        \
97912027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( tp a,                                                       \
98012027Sjungma@eit.uni-kl.de		  const sc_fxtype_params& type_params,                        \
98112027Sjungma@eit.uni-kl.de		  const sc_fxcast_switch& cast_sw,                            \
98212027Sjungma@eit.uni-kl.de		  sc_fxnum_observer* observer_ )                              \
98312027Sjungma@eit.uni-kl.de: sc_fxnum( a,                                                                \
98412027Sjungma@eit.uni-kl.de	    type_params,                                                      \
98512027Sjungma@eit.uni-kl.de	    SC_US_,                                                           \
98612027Sjungma@eit.uni-kl.de	    cast_sw,                                                          \
98712027Sjungma@eit.uni-kl.de	    observer_ )                                                       \
98812027Sjungma@eit.uni-kl.de{}
98912027Sjungma@eit.uni-kl.de
99012027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(int)
99112027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(unsigned int)
99212027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(long)
99312027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(unsigned long)
99412027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(float)
99512027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(double)
99612027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(const char*)
99712027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(const sc_fxval&)
99812027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(const sc_fxval_fast&)
99912027Sjungma@eit.uni-kl.deDEFN_CTORS_T_B(const sc_fxnum&)
100012027Sjungma@eit.uni-kl.deDEFN_CTORS_T_B(const sc_fxnum_fast&)
100112027Sjungma@eit.uni-kl.de#ifndef SC_FX_EXCLUDE_OTHER
100212027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(int64)
100312027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(uint64)
100412027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(const sc_int_base&)
100512027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(const sc_uint_base&)
100612027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(const sc_signed&)
100712027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(const sc_unsigned&)
100812027Sjungma@eit.uni-kl.de#endif
100912027Sjungma@eit.uni-kl.de
101012027Sjungma@eit.uni-kl.de#undef DEFN_CTORS_T_A
101112027Sjungma@eit.uni-kl.de#undef DEFN_CTORS_T_B
101212027Sjungma@eit.uni-kl.de
101312027Sjungma@eit.uni-kl.de// copy constructor
101412027Sjungma@eit.uni-kl.de
101512027Sjungma@eit.uni-kl.deinline
101612027Sjungma@eit.uni-kl.desc_ufix::sc_ufix( const sc_ufix& a )
101712027Sjungma@eit.uni-kl.de: sc_fxnum( a,
101812027Sjungma@eit.uni-kl.de	    a.type_params(),
101912027Sjungma@eit.uni-kl.de	    SC_US_,
102012027Sjungma@eit.uni-kl.de	    sc_fxcast_switch(),
102112027Sjungma@eit.uni-kl.de	    0 )
102212027Sjungma@eit.uni-kl.de{}
102312027Sjungma@eit.uni-kl.de
102412027Sjungma@eit.uni-kl.de
102512027Sjungma@eit.uni-kl.de// unary bitwise operators
102612027Sjungma@eit.uni-kl.de
102712027Sjungma@eit.uni-kl.deinline
102812027Sjungma@eit.uni-kl.deconst sc_ufix
102912027Sjungma@eit.uni-kl.desc_ufix::operator ~ () const
103012027Sjungma@eit.uni-kl.de{
103112027Sjungma@eit.uni-kl.de    SC_FXNUM_OBSERVER_READ_( *this )
103212027Sjungma@eit.uni-kl.de    int iwl_c = iwl();
103312027Sjungma@eit.uni-kl.de    int wl_c = wl();
103412027Sjungma@eit.uni-kl.de    sc_ufix c( wl_c, iwl_c );
103512027Sjungma@eit.uni-kl.de    for( int i = iwl_c - wl_c; i < iwl_c; ++ i )
103612027Sjungma@eit.uni-kl.de	c.set_bit( i, ! get_bit( i ) );
103712027Sjungma@eit.uni-kl.de    return sc_ufix( c, wl_c, iwl_c );
103812027Sjungma@eit.uni-kl.de}
103912027Sjungma@eit.uni-kl.de
104012027Sjungma@eit.uni-kl.de
104112027Sjungma@eit.uni-kl.de// unary bitwise functions
104212027Sjungma@eit.uni-kl.de
104312027Sjungma@eit.uni-kl.deinline
104412027Sjungma@eit.uni-kl.devoid
104512027Sjungma@eit.uni-kl.deb_not( sc_ufix& c, const sc_ufix& a )
104612027Sjungma@eit.uni-kl.de{
104712027Sjungma@eit.uni-kl.de    SC_FXNUM_OBSERVER_READ_( a )
104812027Sjungma@eit.uni-kl.de    int iwl_c = c.iwl();
104912027Sjungma@eit.uni-kl.de    for( int i = iwl_c - c.wl(); i < iwl_c; ++ i )
105012027Sjungma@eit.uni-kl.de	c.set_bit( i, ! a.get_bit( i ) );
105112027Sjungma@eit.uni-kl.de    c.cast();
105212027Sjungma@eit.uni-kl.de    SC_FXNUM_OBSERVER_WRITE_( c )
105312027Sjungma@eit.uni-kl.de}
105412027Sjungma@eit.uni-kl.de
105512027Sjungma@eit.uni-kl.de
105612027Sjungma@eit.uni-kl.de// binary bitwise operators
105712027Sjungma@eit.uni-kl.de
105812027Sjungma@eit.uni-kl.de#define DEFN_BIN_OP_T(op,op2,tp1,tp2)                                         \
105912027Sjungma@eit.uni-kl.deinline                                                                        \
106012027Sjungma@eit.uni-kl.deconst sc_ufix                                                                 \
106112027Sjungma@eit.uni-kl.deoperator op ( const tp1& a, const tp2& b )                                    \
106212027Sjungma@eit.uni-kl.de{                                                                             \
106312027Sjungma@eit.uni-kl.de    a.observer_read();                                                        \
106412027Sjungma@eit.uni-kl.de    b.observer_read();                                                        \
106512027Sjungma@eit.uni-kl.de    int iwl_a = a.iwl();                                                      \
106612027Sjungma@eit.uni-kl.de    int iwl_b = b.iwl();                                                      \
106712027Sjungma@eit.uni-kl.de    int iwl_c = sc_max( iwl_a, iwl_b );                                       \
106812027Sjungma@eit.uni-kl.de    int fwl_c = sc_max( a.wl() - iwl_a, b.wl() - iwl_b );                     \
106912027Sjungma@eit.uni-kl.de    sc_ufix c( iwl_c + fwl_c, iwl_c );                                        \
107012027Sjungma@eit.uni-kl.de    for( int i = -fwl_c; i < iwl_c; ++ i )                                    \
107112027Sjungma@eit.uni-kl.de	c.set_bit( i, a.get_bit( i ) op2 b.get_bit( i ) );                    \
107212027Sjungma@eit.uni-kl.de    return sc_ufix( c, iwl_c + fwl_c, iwl_c );                                \
107312027Sjungma@eit.uni-kl.de}
107412027Sjungma@eit.uni-kl.de
107512027Sjungma@eit.uni-kl.deDEFN_BIN_OP_T(&,&&,sc_ufix,sc_ufix)
107612027Sjungma@eit.uni-kl.deDEFN_BIN_OP_T(&,&&,sc_ufix,sc_ufix_fast)
107712027Sjungma@eit.uni-kl.deDEFN_BIN_OP_T(&,&&,sc_ufix_fast,sc_ufix)
107812027Sjungma@eit.uni-kl.de
107912027Sjungma@eit.uni-kl.deDEFN_BIN_OP_T(|,||,sc_ufix,sc_ufix)
108012027Sjungma@eit.uni-kl.deDEFN_BIN_OP_T(|,||,sc_ufix,sc_ufix_fast)
108112027Sjungma@eit.uni-kl.deDEFN_BIN_OP_T(|,||,sc_ufix_fast,sc_ufix)
108212027Sjungma@eit.uni-kl.de
108312027Sjungma@eit.uni-kl.deDEFN_BIN_OP_T(^,!=,sc_ufix,sc_ufix)
108412027Sjungma@eit.uni-kl.deDEFN_BIN_OP_T(^,!=,sc_ufix,sc_ufix_fast)
108512027Sjungma@eit.uni-kl.deDEFN_BIN_OP_T(^,!=,sc_ufix_fast,sc_ufix)
108612027Sjungma@eit.uni-kl.de
108712027Sjungma@eit.uni-kl.de#undef DEFN_BIN_OP_T
108812027Sjungma@eit.uni-kl.de
108912027Sjungma@eit.uni-kl.de
109012027Sjungma@eit.uni-kl.de// binary bitwise functions
109112027Sjungma@eit.uni-kl.de
109212027Sjungma@eit.uni-kl.de#define DEFN_BIN_FNC_T(fnc,op2,tp1,tp2)                                       \
109312027Sjungma@eit.uni-kl.deinline                                                                        \
109412027Sjungma@eit.uni-kl.devoid                                                                          \
109512027Sjungma@eit.uni-kl.defnc ( sc_ufix& c, const tp1& a, const tp2& b )                                \
109612027Sjungma@eit.uni-kl.de{                                                                             \
109712027Sjungma@eit.uni-kl.de    a.observer_read();                                                        \
109812027Sjungma@eit.uni-kl.de    b.observer_read();                                                        \
109912027Sjungma@eit.uni-kl.de    int iwl_c = c.iwl();                                                      \
110012027Sjungma@eit.uni-kl.de    for( int i = iwl_c - c.wl(); i < iwl_c; ++ i )                            \
110112027Sjungma@eit.uni-kl.de	c.set_bit( i, a.get_bit( i ) op2 b.get_bit( i ) );                    \
110212027Sjungma@eit.uni-kl.de    c.cast();                                                                 \
110312027Sjungma@eit.uni-kl.de    SC_FXNUM_OBSERVER_WRITE_( c )                                             \
110412027Sjungma@eit.uni-kl.de}
110512027Sjungma@eit.uni-kl.de
110612027Sjungma@eit.uni-kl.deDEFN_BIN_FNC_T(b_and,&&,sc_ufix,sc_ufix)
110712027Sjungma@eit.uni-kl.deDEFN_BIN_FNC_T(b_and,&&,sc_ufix,sc_ufix_fast)
110812027Sjungma@eit.uni-kl.deDEFN_BIN_FNC_T(b_and,&&,sc_ufix_fast,sc_ufix)
110912027Sjungma@eit.uni-kl.de
111012027Sjungma@eit.uni-kl.deDEFN_BIN_FNC_T(b_or,||,sc_ufix,sc_ufix)
111112027Sjungma@eit.uni-kl.deDEFN_BIN_FNC_T(b_or,||,sc_ufix,sc_ufix_fast)
111212027Sjungma@eit.uni-kl.deDEFN_BIN_FNC_T(b_or,||,sc_ufix_fast,sc_ufix)
111312027Sjungma@eit.uni-kl.de
111412027Sjungma@eit.uni-kl.deDEFN_BIN_FNC_T(b_xor,!=,sc_ufix,sc_ufix)
111512027Sjungma@eit.uni-kl.deDEFN_BIN_FNC_T(b_xor,!=,sc_ufix,sc_ufix_fast)
111612027Sjungma@eit.uni-kl.deDEFN_BIN_FNC_T(b_xor,!=,sc_ufix_fast,sc_ufix)
111712027Sjungma@eit.uni-kl.de
111812027Sjungma@eit.uni-kl.de#undef DEFN_BIN_FNC_T
111912027Sjungma@eit.uni-kl.de
112012027Sjungma@eit.uni-kl.de
112112027Sjungma@eit.uni-kl.de// assignment operators
112212027Sjungma@eit.uni-kl.de
112312027Sjungma@eit.uni-kl.deinline
112412027Sjungma@eit.uni-kl.desc_ufix&
112512027Sjungma@eit.uni-kl.desc_ufix::operator = ( const sc_ufix& a )
112612027Sjungma@eit.uni-kl.de{
112712027Sjungma@eit.uni-kl.de    sc_fxnum::operator = ( a );
112812027Sjungma@eit.uni-kl.de    return *this;
112912027Sjungma@eit.uni-kl.de}
113012027Sjungma@eit.uni-kl.de
113112027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP_T(op,tp)                                                  \
113212027Sjungma@eit.uni-kl.deinline                                                                        \
113312027Sjungma@eit.uni-kl.desc_ufix&                                                                      \
113412027Sjungma@eit.uni-kl.desc_ufix::operator op ( tp a )                                                 \
113512027Sjungma@eit.uni-kl.de{                                                                             \
113612027Sjungma@eit.uni-kl.de    sc_fxnum::operator op( a );                                               \
113712027Sjungma@eit.uni-kl.de    return *this;                                                             \
113812027Sjungma@eit.uni-kl.de}
113912027Sjungma@eit.uni-kl.de
114012027Sjungma@eit.uni-kl.de#ifndef SC_FX_EXCLUDE_OTHER
114112027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP_OTHER(op)                                                 \
114212027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,int64)                                                       \
114312027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,uint64)                                                      \
114412027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_int_base&)                                          \
114512027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_uint_base&)                                         \
114612027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_signed&)                                            \
114712027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_unsigned&)
114812027Sjungma@eit.uni-kl.de#else
114912027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP_OTHER(op)
115012027Sjungma@eit.uni-kl.de#endif
115112027Sjungma@eit.uni-kl.de
115212027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP(op)                                                       \
115312027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,int)                                                         \
115412027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,unsigned int)                                                \
115512027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,long)                                                        \
115612027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,unsigned long)                                               \
115712027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,float)                                                      \
115812027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,double)                                                      \
115912027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const char*)                                                 \
116012027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_fxval&)                                             \
116112027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_fxval_fast&)                                        \
116212027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_fxnum&)                                             \
116312027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_fxnum_fast&)                                        \
116412027Sjungma@eit.uni-kl.deDEFN_ASN_OP_OTHER(op)
116512027Sjungma@eit.uni-kl.de
116612027Sjungma@eit.uni-kl.deDEFN_ASN_OP(=)
116712027Sjungma@eit.uni-kl.de
116812027Sjungma@eit.uni-kl.deDEFN_ASN_OP(*=)
116912027Sjungma@eit.uni-kl.deDEFN_ASN_OP(/=)
117012027Sjungma@eit.uni-kl.deDEFN_ASN_OP(+=)
117112027Sjungma@eit.uni-kl.deDEFN_ASN_OP(-=)
117212027Sjungma@eit.uni-kl.de
117312027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(<<=,int)
117412027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(>>=,int)
117512027Sjungma@eit.uni-kl.de
117612027Sjungma@eit.uni-kl.de#undef DEFN_ASN_OP_T
117712027Sjungma@eit.uni-kl.de#undef DEFN_ASN_OP_OTHER
117812027Sjungma@eit.uni-kl.de#undef DEFN_ASN_OP
117912027Sjungma@eit.uni-kl.de
118012027Sjungma@eit.uni-kl.de
118112027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP_T(op,op2,tp)                                              \
118212027Sjungma@eit.uni-kl.deinline                                                                        \
118312027Sjungma@eit.uni-kl.desc_ufix&                                                                      \
118412027Sjungma@eit.uni-kl.desc_ufix::operator op ( const tp& b )                                          \
118512027Sjungma@eit.uni-kl.de{                                                                             \
118612027Sjungma@eit.uni-kl.de    SC_FXNUM_OBSERVER_READ_( *this )                                          \
118712027Sjungma@eit.uni-kl.de    b.observer_read();                                                        \
118812027Sjungma@eit.uni-kl.de    int iwl_c = iwl();                                                        \
118912027Sjungma@eit.uni-kl.de    for( int i = iwl_c - wl(); i < iwl_c; ++ i )                              \
119012027Sjungma@eit.uni-kl.de	set_bit( i, get_bit( i ) op2 b.get_bit( i ) );                        \
119112027Sjungma@eit.uni-kl.de    cast();                                                                   \
119212027Sjungma@eit.uni-kl.de    SC_FXNUM_OBSERVER_WRITE_( *this )                                         \
119312027Sjungma@eit.uni-kl.de    return *this;                                                             \
119412027Sjungma@eit.uni-kl.de}
119512027Sjungma@eit.uni-kl.de
119612027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(&=,&&,sc_ufix)
119712027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(&=,&&,sc_ufix_fast)
119812027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(|=,||,sc_ufix)
119912027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(|=,||,sc_ufix_fast)
120012027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(^=,!=,sc_ufix)
120112027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(^=,!=,sc_ufix_fast)
120212027Sjungma@eit.uni-kl.de
120312027Sjungma@eit.uni-kl.de#undef DEFN_ASN_OP_T
120412027Sjungma@eit.uni-kl.de
120512027Sjungma@eit.uni-kl.de
120612027Sjungma@eit.uni-kl.de// auto-increment and auto-decrement
120712027Sjungma@eit.uni-kl.de
120812027Sjungma@eit.uni-kl.deinline
120912027Sjungma@eit.uni-kl.deconst sc_fxval
121012027Sjungma@eit.uni-kl.desc_ufix::operator ++ ( int )
121112027Sjungma@eit.uni-kl.de{
121212027Sjungma@eit.uni-kl.de    return sc_fxval( sc_fxnum::operator ++ ( 0 ) );
121312027Sjungma@eit.uni-kl.de}
121412027Sjungma@eit.uni-kl.de
121512027Sjungma@eit.uni-kl.deinline
121612027Sjungma@eit.uni-kl.deconst sc_fxval
121712027Sjungma@eit.uni-kl.desc_ufix::operator -- ( int )
121812027Sjungma@eit.uni-kl.de{
121912027Sjungma@eit.uni-kl.de    return sc_fxval( sc_fxnum::operator -- ( 0 ) );
122012027Sjungma@eit.uni-kl.de}
122112027Sjungma@eit.uni-kl.de
122212027Sjungma@eit.uni-kl.deinline
122312027Sjungma@eit.uni-kl.desc_ufix&
122412027Sjungma@eit.uni-kl.desc_ufix::operator ++ ()
122512027Sjungma@eit.uni-kl.de{
122612027Sjungma@eit.uni-kl.de    sc_fxnum::operator ++ ();
122712027Sjungma@eit.uni-kl.de    return *this;
122812027Sjungma@eit.uni-kl.de}
122912027Sjungma@eit.uni-kl.de
123012027Sjungma@eit.uni-kl.deinline
123112027Sjungma@eit.uni-kl.desc_ufix&
123212027Sjungma@eit.uni-kl.desc_ufix::operator -- ()
123312027Sjungma@eit.uni-kl.de{
123412027Sjungma@eit.uni-kl.de    sc_fxnum::operator -- ();
123512027Sjungma@eit.uni-kl.de    return *this;
123612027Sjungma@eit.uni-kl.de}
123712027Sjungma@eit.uni-kl.de
123812027Sjungma@eit.uni-kl.de
123912027Sjungma@eit.uni-kl.de// ----------------------------------------------------------------------------
124012027Sjungma@eit.uni-kl.de//  CLASS : sc_ufix_fast
124112027Sjungma@eit.uni-kl.de//
124212027Sjungma@eit.uni-kl.de//  "Unconstrained" unsigned fixed-point class; limited precision.
124312027Sjungma@eit.uni-kl.de// ----------------------------------------------------------------------------
124412027Sjungma@eit.uni-kl.de
124512027Sjungma@eit.uni-kl.de// constructors
124612027Sjungma@eit.uni-kl.de
124712027Sjungma@eit.uni-kl.deinline
124812027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( sc_fxnum_fast_observer* observer_ )
124912027Sjungma@eit.uni-kl.de: sc_fxnum_fast( sc_fxtype_params(),
125012027Sjungma@eit.uni-kl.de		 SC_US_,
125112027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),
125212027Sjungma@eit.uni-kl.de		 observer_ )
125312027Sjungma@eit.uni-kl.de{}
125412027Sjungma@eit.uni-kl.de
125512027Sjungma@eit.uni-kl.deinline
125612027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( int wl_, int iwl_,
125712027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )
125812027Sjungma@eit.uni-kl.de: sc_fxnum_fast( sc_fxtype_params( wl_, iwl_ ),
125912027Sjungma@eit.uni-kl.de		 SC_US_,
126012027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),
126112027Sjungma@eit.uni-kl.de		 observer_ )
126212027Sjungma@eit.uni-kl.de{}
126312027Sjungma@eit.uni-kl.de
126412027Sjungma@eit.uni-kl.deinline
126512027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( sc_q_mode qm, sc_o_mode om,
126612027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )
126712027Sjungma@eit.uni-kl.de: sc_fxnum_fast( sc_fxtype_params( qm, om ),
126812027Sjungma@eit.uni-kl.de		 SC_US_,
126912027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),
127012027Sjungma@eit.uni-kl.de		 observer_ )
127112027Sjungma@eit.uni-kl.de{}
127212027Sjungma@eit.uni-kl.de
127312027Sjungma@eit.uni-kl.deinline
127412027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( sc_q_mode qm, sc_o_mode om, int nb,
127512027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )
127612027Sjungma@eit.uni-kl.de: sc_fxnum_fast( sc_fxtype_params( qm, om, nb ),
127712027Sjungma@eit.uni-kl.de		 SC_US_,
127812027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),
127912027Sjungma@eit.uni-kl.de		 observer_ )
128012027Sjungma@eit.uni-kl.de{}
128112027Sjungma@eit.uni-kl.de
128212027Sjungma@eit.uni-kl.deinline
128312027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( int wl_, int iwl_, sc_q_mode qm, sc_o_mode om,
128412027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )
128512027Sjungma@eit.uni-kl.de: sc_fxnum_fast( sc_fxtype_params( wl_, iwl_, qm, om ),
128612027Sjungma@eit.uni-kl.de		 SC_US_,
128712027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),
128812027Sjungma@eit.uni-kl.de		 observer_ )
128912027Sjungma@eit.uni-kl.de{}
129012027Sjungma@eit.uni-kl.de
129112027Sjungma@eit.uni-kl.deinline
129212027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( int wl_, int iwl_,
129312027Sjungma@eit.uni-kl.de			    sc_q_mode qm, sc_o_mode om, int nb,
129412027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )
129512027Sjungma@eit.uni-kl.de: sc_fxnum_fast( sc_fxtype_params( wl_, iwl_, qm, om, nb ),
129612027Sjungma@eit.uni-kl.de		 SC_US_,
129712027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),
129812027Sjungma@eit.uni-kl.de		 observer_ )
129912027Sjungma@eit.uni-kl.de{}
130012027Sjungma@eit.uni-kl.de
130112027Sjungma@eit.uni-kl.deinline
130212027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( const sc_fxcast_switch& cast_sw,
130312027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )
130412027Sjungma@eit.uni-kl.de: sc_fxnum_fast( sc_fxtype_params(),
130512027Sjungma@eit.uni-kl.de		 SC_US_,
130612027Sjungma@eit.uni-kl.de		 cast_sw,
130712027Sjungma@eit.uni-kl.de		 observer_ )
130812027Sjungma@eit.uni-kl.de{}
130912027Sjungma@eit.uni-kl.de
131012027Sjungma@eit.uni-kl.deinline
131112027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( int wl_, int iwl_,
131212027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,
131312027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )
131412027Sjungma@eit.uni-kl.de: sc_fxnum_fast( sc_fxtype_params( wl_, iwl_ ),
131512027Sjungma@eit.uni-kl.de		 SC_US_,
131612027Sjungma@eit.uni-kl.de		 cast_sw,
131712027Sjungma@eit.uni-kl.de		 observer_ )
131812027Sjungma@eit.uni-kl.de{}
131912027Sjungma@eit.uni-kl.de
132012027Sjungma@eit.uni-kl.deinline
132112027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( sc_q_mode qm, sc_o_mode om,
132212027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,
132312027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )
132412027Sjungma@eit.uni-kl.de: sc_fxnum_fast( sc_fxtype_params( qm, om ),
132512027Sjungma@eit.uni-kl.de		 SC_US_,
132612027Sjungma@eit.uni-kl.de		 cast_sw,
132712027Sjungma@eit.uni-kl.de		 observer_ )
132812027Sjungma@eit.uni-kl.de{}
132912027Sjungma@eit.uni-kl.de
133012027Sjungma@eit.uni-kl.deinline
133112027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( sc_q_mode qm, sc_o_mode om, int nb,
133212027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,
133312027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )
133412027Sjungma@eit.uni-kl.de: sc_fxnum_fast( sc_fxtype_params( qm, om, nb ),
133512027Sjungma@eit.uni-kl.de		 SC_US_,
133612027Sjungma@eit.uni-kl.de		 cast_sw,
133712027Sjungma@eit.uni-kl.de		 observer_ )
133812027Sjungma@eit.uni-kl.de{}
133912027Sjungma@eit.uni-kl.de
134012027Sjungma@eit.uni-kl.deinline
134112027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( int wl_, int iwl_, sc_q_mode qm, sc_o_mode om,
134212027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,
134312027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )
134412027Sjungma@eit.uni-kl.de: sc_fxnum_fast( sc_fxtype_params( wl_, iwl_, qm, om ),
134512027Sjungma@eit.uni-kl.de		 SC_US_,
134612027Sjungma@eit.uni-kl.de		 cast_sw,
134712027Sjungma@eit.uni-kl.de		 observer_ )
134812027Sjungma@eit.uni-kl.de{}
134912027Sjungma@eit.uni-kl.de
135012027Sjungma@eit.uni-kl.deinline
135112027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( int wl_, int iwl_,
135212027Sjungma@eit.uni-kl.de			    sc_q_mode qm, sc_o_mode om, int nb,
135312027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,
135412027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )
135512027Sjungma@eit.uni-kl.de: sc_fxnum_fast( sc_fxtype_params( wl_, iwl_, qm, om, nb ),
135612027Sjungma@eit.uni-kl.de		 SC_US_,
135712027Sjungma@eit.uni-kl.de		 cast_sw,
135812027Sjungma@eit.uni-kl.de		 observer_ )
135912027Sjungma@eit.uni-kl.de{}
136012027Sjungma@eit.uni-kl.de
136112027Sjungma@eit.uni-kl.deinline
136212027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( const sc_fxtype_params& type_params,
136312027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )
136412027Sjungma@eit.uni-kl.de: sc_fxnum_fast( type_params,
136512027Sjungma@eit.uni-kl.de		 SC_US_,
136612027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),
136712027Sjungma@eit.uni-kl.de		 observer_ )
136812027Sjungma@eit.uni-kl.de{}
136912027Sjungma@eit.uni-kl.de
137012027Sjungma@eit.uni-kl.deinline
137112027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( const sc_fxtype_params& type_params,
137212027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,
137312027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )
137412027Sjungma@eit.uni-kl.de: sc_fxnum_fast( type_params,
137512027Sjungma@eit.uni-kl.de		 SC_US_,
137612027Sjungma@eit.uni-kl.de		 cast_sw,
137712027Sjungma@eit.uni-kl.de		 observer_ )
137812027Sjungma@eit.uni-kl.de{}
137912027Sjungma@eit.uni-kl.de
138012027Sjungma@eit.uni-kl.de#define DEFN_CTORS_T_A(tp)                                                    \
138112027Sjungma@eit.uni-kl.deinline                                                                        \
138212027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
138312027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
138412027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
138512027Sjungma@eit.uni-kl.de		 sc_fxtype_params(),                                          \
138612027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
138712027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),                                          \
138812027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
138912027Sjungma@eit.uni-kl.de{}                                                                            \
139012027Sjungma@eit.uni-kl.de                                                                              \
139112027Sjungma@eit.uni-kl.deinline                                                                        \
139212027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
139312027Sjungma@eit.uni-kl.de			    int wl_, int iwl_,                                \
139412027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
139512027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
139612027Sjungma@eit.uni-kl.de		 sc_fxtype_params( wl_, iwl_ ),                               \
139712027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
139812027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),                                          \
139912027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
140012027Sjungma@eit.uni-kl.de{}                                                                            \
140112027Sjungma@eit.uni-kl.de                                                                              \
140212027Sjungma@eit.uni-kl.deinline                                                                        \
140312027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
140412027Sjungma@eit.uni-kl.de			    sc_q_mode qm, sc_o_mode om,                       \
140512027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
140612027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
140712027Sjungma@eit.uni-kl.de		 sc_fxtype_params( qm, om ),                                  \
140812027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
140912027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),                                          \
141012027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
141112027Sjungma@eit.uni-kl.de{}                                                                            \
141212027Sjungma@eit.uni-kl.de                                                                              \
141312027Sjungma@eit.uni-kl.deinline                                                                        \
141412027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
141512027Sjungma@eit.uni-kl.de			    sc_q_mode qm, sc_o_mode om, int nb,               \
141612027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
141712027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
141812027Sjungma@eit.uni-kl.de		 sc_fxtype_params( qm, om, nb ),                              \
141912027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
142012027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),                                          \
142112027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
142212027Sjungma@eit.uni-kl.de{}                                                                            \
142312027Sjungma@eit.uni-kl.de                                                                              \
142412027Sjungma@eit.uni-kl.deinline                                                                        \
142512027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
142612027Sjungma@eit.uni-kl.de			    int wl_, int iwl_, sc_q_mode qm, sc_o_mode om,    \
142712027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
142812027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
142912027Sjungma@eit.uni-kl.de		 sc_fxtype_params( wl_, iwl_, qm, om ),                       \
143012027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
143112027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),                                          \
143212027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
143312027Sjungma@eit.uni-kl.de{}                                                                            \
143412027Sjungma@eit.uni-kl.de                                                                              \
143512027Sjungma@eit.uni-kl.deinline                                                                        \
143612027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
143712027Sjungma@eit.uni-kl.de			    int wl_, int iwl_,                                \
143812027Sjungma@eit.uni-kl.de			    sc_q_mode qm, sc_o_mode om, int nb,               \
143912027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
144012027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
144112027Sjungma@eit.uni-kl.de		 sc_fxtype_params( wl_, iwl_, qm, om, nb ),                   \
144212027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
144312027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),                                          \
144412027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
144512027Sjungma@eit.uni-kl.de{}                                                                            \
144612027Sjungma@eit.uni-kl.de                                                                              \
144712027Sjungma@eit.uni-kl.deinline                                                                        \
144812027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
144912027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,                  \
145012027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
145112027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
145212027Sjungma@eit.uni-kl.de		 sc_fxtype_params(),                                          \
145312027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
145412027Sjungma@eit.uni-kl.de		 cast_sw,                                                     \
145512027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
145612027Sjungma@eit.uni-kl.de{}                                                                            \
145712027Sjungma@eit.uni-kl.de                                                                              \
145812027Sjungma@eit.uni-kl.deinline                                                                        \
145912027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
146012027Sjungma@eit.uni-kl.de			    int wl_, int iwl_,                                \
146112027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,                  \
146212027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
146312027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
146412027Sjungma@eit.uni-kl.de		 sc_fxtype_params( wl_, iwl_ ),                               \
146512027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
146612027Sjungma@eit.uni-kl.de		 cast_sw,                                                     \
146712027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
146812027Sjungma@eit.uni-kl.de{}                                                                            \
146912027Sjungma@eit.uni-kl.de                                                                              \
147012027Sjungma@eit.uni-kl.deinline                                                                        \
147112027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
147212027Sjungma@eit.uni-kl.de			    sc_q_mode qm, sc_o_mode om,                       \
147312027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,                  \
147412027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
147512027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
147612027Sjungma@eit.uni-kl.de		 sc_fxtype_params( qm, om ),                                  \
147712027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
147812027Sjungma@eit.uni-kl.de		 cast_sw,                                                     \
147912027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
148012027Sjungma@eit.uni-kl.de{}                                                                            \
148112027Sjungma@eit.uni-kl.de                                                                              \
148212027Sjungma@eit.uni-kl.deinline                                                                        \
148312027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
148412027Sjungma@eit.uni-kl.de			    sc_q_mode qm, sc_o_mode om, int nb,               \
148512027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,                  \
148612027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
148712027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
148812027Sjungma@eit.uni-kl.de		 sc_fxtype_params( qm, om, nb ),                              \
148912027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
149012027Sjungma@eit.uni-kl.de		 cast_sw,                                                     \
149112027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
149212027Sjungma@eit.uni-kl.de{}                                                                            \
149312027Sjungma@eit.uni-kl.de                                                                              \
149412027Sjungma@eit.uni-kl.deinline                                                                        \
149512027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
149612027Sjungma@eit.uni-kl.de			    int wl_, int iwl_, sc_q_mode qm, sc_o_mode om,    \
149712027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,                  \
149812027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
149912027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
150012027Sjungma@eit.uni-kl.de		 sc_fxtype_params( wl_, iwl_, qm, om ),                       \
150112027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
150212027Sjungma@eit.uni-kl.de		 cast_sw,                                                     \
150312027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
150412027Sjungma@eit.uni-kl.de{}                                                                            \
150512027Sjungma@eit.uni-kl.de                                                                              \
150612027Sjungma@eit.uni-kl.deinline                                                                        \
150712027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
150812027Sjungma@eit.uni-kl.de			    int wl_, int iwl_,                                \
150912027Sjungma@eit.uni-kl.de			    sc_q_mode qm, sc_o_mode om, int nb,               \
151012027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,                  \
151112027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
151212027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
151312027Sjungma@eit.uni-kl.de		 sc_fxtype_params( wl_, iwl_, qm, om, nb ),                   \
151412027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
151512027Sjungma@eit.uni-kl.de		 cast_sw,                                                     \
151612027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
151712027Sjungma@eit.uni-kl.de{}                                                                            \
151812027Sjungma@eit.uni-kl.de                                                                              \
151912027Sjungma@eit.uni-kl.deinline                                                                        \
152012027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
152112027Sjungma@eit.uni-kl.de			    const sc_fxtype_params& type_params,              \
152212027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
152312027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
152412027Sjungma@eit.uni-kl.de		 type_params,                                                 \
152512027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
152612027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),                                          \
152712027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
152812027Sjungma@eit.uni-kl.de{}                                                                            \
152912027Sjungma@eit.uni-kl.de                                                                              \
153012027Sjungma@eit.uni-kl.deinline                                                                        \
153112027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
153212027Sjungma@eit.uni-kl.de			    const sc_fxtype_params& type_params,              \
153312027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,                  \
153412027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
153512027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
153612027Sjungma@eit.uni-kl.de		 type_params,                                                 \
153712027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
153812027Sjungma@eit.uni-kl.de		 cast_sw,                                                     \
153912027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
154012027Sjungma@eit.uni-kl.de{}
154112027Sjungma@eit.uni-kl.de
154212027Sjungma@eit.uni-kl.de#define DEFN_CTORS_T_B(tp)                                                    \
154312027Sjungma@eit.uni-kl.deinline                                                                        \
154412027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
154512027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
154612027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
154712027Sjungma@eit.uni-kl.de		 a.type_params(),                                             \
154812027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
154912027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),                                          \
155012027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
155112027Sjungma@eit.uni-kl.de{}                                                                            \
155212027Sjungma@eit.uni-kl.de                                                                              \
155312027Sjungma@eit.uni-kl.deinline                                                                        \
155412027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
155512027Sjungma@eit.uni-kl.de			    int wl_, int iwl_,                                \
155612027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
155712027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
155812027Sjungma@eit.uni-kl.de		 sc_fxtype_params( a.type_params(), wl_, iwl_ ),              \
155912027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
156012027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),                                          \
156112027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
156212027Sjungma@eit.uni-kl.de{}                                                                            \
156312027Sjungma@eit.uni-kl.de                                                                              \
156412027Sjungma@eit.uni-kl.deinline                                                                        \
156512027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
156612027Sjungma@eit.uni-kl.de			    sc_q_mode qm, sc_o_mode om,                       \
156712027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
156812027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
156912027Sjungma@eit.uni-kl.de		 sc_fxtype_params( a.type_params(), qm, om ),                 \
157012027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
157112027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),                                          \
157212027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
157312027Sjungma@eit.uni-kl.de{}                                                                            \
157412027Sjungma@eit.uni-kl.de                                                                              \
157512027Sjungma@eit.uni-kl.deinline                                                                        \
157612027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
157712027Sjungma@eit.uni-kl.de			    sc_q_mode qm, sc_o_mode om, int nb,               \
157812027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
157912027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
158012027Sjungma@eit.uni-kl.de		 sc_fxtype_params( a.type_params(), qm, om, nb ),             \
158112027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
158212027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),                                          \
158312027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
158412027Sjungma@eit.uni-kl.de{}                                                                            \
158512027Sjungma@eit.uni-kl.de                                                                              \
158612027Sjungma@eit.uni-kl.deinline                                                                        \
158712027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
158812027Sjungma@eit.uni-kl.de			    int wl_, int iwl_, sc_q_mode qm, sc_o_mode om,    \
158912027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
159012027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
159112027Sjungma@eit.uni-kl.de		 sc_fxtype_params( wl_, iwl_, qm, om ),                       \
159212027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
159312027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),                                          \
159412027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
159512027Sjungma@eit.uni-kl.de{}                                                                            \
159612027Sjungma@eit.uni-kl.de                                                                              \
159712027Sjungma@eit.uni-kl.deinline                                                                        \
159812027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
159912027Sjungma@eit.uni-kl.de			    int wl_, int iwl_,                                \
160012027Sjungma@eit.uni-kl.de			    sc_q_mode qm, sc_o_mode om, int nb,               \
160112027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
160212027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
160312027Sjungma@eit.uni-kl.de		 sc_fxtype_params( wl_, iwl_, qm, om, nb ),                   \
160412027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
160512027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),                                          \
160612027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
160712027Sjungma@eit.uni-kl.de{}                                                                            \
160812027Sjungma@eit.uni-kl.de                                                                              \
160912027Sjungma@eit.uni-kl.deinline                                                                        \
161012027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
161112027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,                  \
161212027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
161312027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
161412027Sjungma@eit.uni-kl.de		 a.type_params(),                                             \
161512027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
161612027Sjungma@eit.uni-kl.de		 cast_sw,                                                     \
161712027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
161812027Sjungma@eit.uni-kl.de{}                                                                            \
161912027Sjungma@eit.uni-kl.de                                                                              \
162012027Sjungma@eit.uni-kl.deinline                                                                        \
162112027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
162212027Sjungma@eit.uni-kl.de			    int wl_, int iwl_,                                \
162312027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,                  \
162412027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
162512027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
162612027Sjungma@eit.uni-kl.de		 sc_fxtype_params( a.type_params(), wl_, iwl_ ),              \
162712027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
162812027Sjungma@eit.uni-kl.de		 cast_sw,                                                     \
162912027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
163012027Sjungma@eit.uni-kl.de{}                                                                            \
163112027Sjungma@eit.uni-kl.de                                                                              \
163212027Sjungma@eit.uni-kl.deinline                                                                        \
163312027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
163412027Sjungma@eit.uni-kl.de			    sc_q_mode qm, sc_o_mode om,                       \
163512027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,                  \
163612027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
163712027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
163812027Sjungma@eit.uni-kl.de		 sc_fxtype_params( a.type_params(), qm, om ),                 \
163912027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
164012027Sjungma@eit.uni-kl.de		 cast_sw,                                                     \
164112027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
164212027Sjungma@eit.uni-kl.de{}                                                                            \
164312027Sjungma@eit.uni-kl.de                                                                              \
164412027Sjungma@eit.uni-kl.deinline                                                                        \
164512027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
164612027Sjungma@eit.uni-kl.de			    sc_q_mode qm, sc_o_mode om, int nb,               \
164712027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,                  \
164812027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
164912027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
165012027Sjungma@eit.uni-kl.de		 sc_fxtype_params( a.type_params(), qm, om, nb ),             \
165112027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
165212027Sjungma@eit.uni-kl.de		 cast_sw,                                                     \
165312027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
165412027Sjungma@eit.uni-kl.de{}                                                                            \
165512027Sjungma@eit.uni-kl.de                                                                              \
165612027Sjungma@eit.uni-kl.deinline                                                                        \
165712027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
165812027Sjungma@eit.uni-kl.de			    int wl_, int iwl_, sc_q_mode qm, sc_o_mode om,    \
165912027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,                  \
166012027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
166112027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
166212027Sjungma@eit.uni-kl.de		 sc_fxtype_params( wl_, iwl_, qm, om ),                       \
166312027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
166412027Sjungma@eit.uni-kl.de		 cast_sw,                                                     \
166512027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
166612027Sjungma@eit.uni-kl.de{}                                                                            \
166712027Sjungma@eit.uni-kl.de                                                                              \
166812027Sjungma@eit.uni-kl.deinline                                                                        \
166912027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
167012027Sjungma@eit.uni-kl.de			    int wl_, int iwl_,                                \
167112027Sjungma@eit.uni-kl.de			    sc_q_mode qm, sc_o_mode om, int nb,               \
167212027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,                  \
167312027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
167412027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
167512027Sjungma@eit.uni-kl.de		 sc_fxtype_params( wl_, iwl_, qm, om, nb ),                   \
167612027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
167712027Sjungma@eit.uni-kl.de		 cast_sw,                                                     \
167812027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
167912027Sjungma@eit.uni-kl.de{}                                                                            \
168012027Sjungma@eit.uni-kl.de                                                                              \
168112027Sjungma@eit.uni-kl.deinline                                                                        \
168212027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
168312027Sjungma@eit.uni-kl.de			    const sc_fxtype_params& type_params,              \
168412027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
168512027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
168612027Sjungma@eit.uni-kl.de		 type_params,                                                 \
168712027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
168812027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),                                          \
168912027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
169012027Sjungma@eit.uni-kl.de{}                                                                            \
169112027Sjungma@eit.uni-kl.de                                                                              \
169212027Sjungma@eit.uni-kl.deinline                                                                        \
169312027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( tp a,                                             \
169412027Sjungma@eit.uni-kl.de			    const sc_fxtype_params& type_params,              \
169512027Sjungma@eit.uni-kl.de			    const sc_fxcast_switch& cast_sw,                  \
169612027Sjungma@eit.uni-kl.de			    sc_fxnum_fast_observer* observer_ )               \
169712027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,                                                           \
169812027Sjungma@eit.uni-kl.de		 type_params,                                                 \
169912027Sjungma@eit.uni-kl.de		 SC_US_,                                                      \
170012027Sjungma@eit.uni-kl.de		 cast_sw,                                                     \
170112027Sjungma@eit.uni-kl.de		 observer_ )                                                  \
170212027Sjungma@eit.uni-kl.de{}
170312027Sjungma@eit.uni-kl.de
170412027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(int)
170512027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(unsigned int)
170612027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(long)
170712027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(unsigned long)
170812027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(float)
170912027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(double)
171012027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(const char*)
171112027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(const sc_fxval&)
171212027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(const sc_fxval_fast&)
171312027Sjungma@eit.uni-kl.deDEFN_CTORS_T_B(const sc_fxnum&)
171412027Sjungma@eit.uni-kl.deDEFN_CTORS_T_B(const sc_fxnum_fast&)
171512027Sjungma@eit.uni-kl.de#ifndef SC_FX_EXCLUDE_OTHER
171612027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(int64)
171712027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(uint64)
171812027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(const sc_int_base&)
171912027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(const sc_uint_base&)
172012027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(const sc_signed&)
172112027Sjungma@eit.uni-kl.deDEFN_CTORS_T_A(const sc_unsigned&)
172212027Sjungma@eit.uni-kl.de#endif
172312027Sjungma@eit.uni-kl.de
172412027Sjungma@eit.uni-kl.de#undef DEFN_CTORS_T_A
172512027Sjungma@eit.uni-kl.de#undef DEFN_CTORS_T_B
172612027Sjungma@eit.uni-kl.de
172712027Sjungma@eit.uni-kl.de// copy constructor
172812027Sjungma@eit.uni-kl.de
172912027Sjungma@eit.uni-kl.deinline
173012027Sjungma@eit.uni-kl.desc_ufix_fast::sc_ufix_fast( const sc_ufix_fast& a )
173112027Sjungma@eit.uni-kl.de: sc_fxnum_fast( a,
173212027Sjungma@eit.uni-kl.de		 a.type_params(),
173312027Sjungma@eit.uni-kl.de		 SC_US_,
173412027Sjungma@eit.uni-kl.de		 sc_fxcast_switch(),
173512027Sjungma@eit.uni-kl.de		 0 )
173612027Sjungma@eit.uni-kl.de{}
173712027Sjungma@eit.uni-kl.de
173812027Sjungma@eit.uni-kl.de
173912027Sjungma@eit.uni-kl.de// unary bitwise operators
174012027Sjungma@eit.uni-kl.de
174112027Sjungma@eit.uni-kl.deinline
174212027Sjungma@eit.uni-kl.deconst sc_ufix_fast
174312027Sjungma@eit.uni-kl.desc_ufix_fast::operator ~ () const
174412027Sjungma@eit.uni-kl.de{
174512027Sjungma@eit.uni-kl.de    SC_FXNUM_FAST_OBSERVER_READ_( *this )
174612027Sjungma@eit.uni-kl.de    int iwl_c = iwl();
174712027Sjungma@eit.uni-kl.de    int wl_c = wl();
174812027Sjungma@eit.uni-kl.de    sc_ufix_fast c( wl_c, iwl_c );
174912027Sjungma@eit.uni-kl.de    for( int i = iwl_c - wl_c; i < iwl_c; ++ i )
175012027Sjungma@eit.uni-kl.de	c.set_bit( i, ! get_bit( i ) );
175112027Sjungma@eit.uni-kl.de    return sc_ufix_fast( c, wl_c, iwl_c );
175212027Sjungma@eit.uni-kl.de}
175312027Sjungma@eit.uni-kl.de
175412027Sjungma@eit.uni-kl.de
175512027Sjungma@eit.uni-kl.de// unary bitwise functions
175612027Sjungma@eit.uni-kl.de
175712027Sjungma@eit.uni-kl.deinline
175812027Sjungma@eit.uni-kl.devoid
175912027Sjungma@eit.uni-kl.deb_not( sc_ufix_fast& c, const sc_ufix_fast& a )
176012027Sjungma@eit.uni-kl.de{
176112027Sjungma@eit.uni-kl.de    SC_FXNUM_FAST_OBSERVER_READ_( a )
176212027Sjungma@eit.uni-kl.de    int iwl_c = c.iwl();
176312027Sjungma@eit.uni-kl.de    for( int i = iwl_c - c.wl(); i < iwl_c; ++ i )
176412027Sjungma@eit.uni-kl.de	c.set_bit( i, ! a.get_bit( i ) );
176512027Sjungma@eit.uni-kl.de    c.cast();
176612027Sjungma@eit.uni-kl.de    SC_FXNUM_FAST_OBSERVER_WRITE_( c )
176712027Sjungma@eit.uni-kl.de}
176812027Sjungma@eit.uni-kl.de
176912027Sjungma@eit.uni-kl.de
177012027Sjungma@eit.uni-kl.de// binary bitwise operators
177112027Sjungma@eit.uni-kl.de
177212027Sjungma@eit.uni-kl.de#define DEFN_BIN_OP_T(op,op2,tp1,tp2)                                         \
177312027Sjungma@eit.uni-kl.deinline                                                                        \
177412027Sjungma@eit.uni-kl.deconst sc_ufix_fast                                                            \
177512027Sjungma@eit.uni-kl.deoperator op ( const tp1& a, const tp2& b )                                    \
177612027Sjungma@eit.uni-kl.de{                                                                             \
177712027Sjungma@eit.uni-kl.de    a.observer_read();                                                        \
177812027Sjungma@eit.uni-kl.de    b.observer_read();                                                        \
177912027Sjungma@eit.uni-kl.de    int iwl_a = a.iwl();                                                      \
178012027Sjungma@eit.uni-kl.de    int iwl_b = b.iwl();                                                      \
178112027Sjungma@eit.uni-kl.de    int iwl_c = sc_max( iwl_a, iwl_b );                                       \
178212027Sjungma@eit.uni-kl.de    int fwl_c = sc_max( a.wl() - iwl_a, b.wl() - iwl_b );                     \
178312027Sjungma@eit.uni-kl.de    sc_ufix_fast c( iwl_c + fwl_c, iwl_c );                                   \
178412027Sjungma@eit.uni-kl.de    for( int i = -fwl_c; i < iwl_c; ++ i )                                    \
178512027Sjungma@eit.uni-kl.de	c.set_bit( i, a.get_bit( i ) op2 b.get_bit( i ) );                    \
178612027Sjungma@eit.uni-kl.de    return sc_ufix_fast( c, iwl_c + fwl_c, iwl_c );                           \
178712027Sjungma@eit.uni-kl.de}
178812027Sjungma@eit.uni-kl.de
178912027Sjungma@eit.uni-kl.deDEFN_BIN_OP_T(&,&&,sc_ufix_fast,sc_ufix_fast)
179012027Sjungma@eit.uni-kl.deDEFN_BIN_OP_T(|,||,sc_ufix_fast,sc_ufix_fast)
179112027Sjungma@eit.uni-kl.deDEFN_BIN_OP_T(^,!=,sc_ufix_fast,sc_ufix_fast)
179212027Sjungma@eit.uni-kl.de
179312027Sjungma@eit.uni-kl.de#undef DEFN_BIN_OP_T
179412027Sjungma@eit.uni-kl.de
179512027Sjungma@eit.uni-kl.de
179612027Sjungma@eit.uni-kl.de// binary bitwise functions
179712027Sjungma@eit.uni-kl.de
179812027Sjungma@eit.uni-kl.de#define DEFN_BIN_FNC_T(fnc,op2,tp1,tp2)                                       \
179912027Sjungma@eit.uni-kl.deinline                                                                        \
180012027Sjungma@eit.uni-kl.devoid                                                                          \
180112027Sjungma@eit.uni-kl.defnc ( sc_ufix_fast& c, const tp1& a, const tp2& b )                           \
180212027Sjungma@eit.uni-kl.de{                                                                             \
180312027Sjungma@eit.uni-kl.de    a.observer_read();                                                        \
180412027Sjungma@eit.uni-kl.de    b.observer_read();                                                        \
180512027Sjungma@eit.uni-kl.de    int iwl_c = c.iwl();                                                      \
180612027Sjungma@eit.uni-kl.de    for( int i = iwl_c - c.wl(); i < iwl_c; ++ i )                            \
180712027Sjungma@eit.uni-kl.de	c.set_bit( i, a.get_bit( i ) op2 b.get_bit( i ) );                    \
180812027Sjungma@eit.uni-kl.de    c.cast();                                                                 \
180912027Sjungma@eit.uni-kl.de    SC_FXNUM_FAST_OBSERVER_WRITE_( c )                                        \
181012027Sjungma@eit.uni-kl.de}
181112027Sjungma@eit.uni-kl.de
181212027Sjungma@eit.uni-kl.deDEFN_BIN_FNC_T(b_and,&&,sc_ufix_fast,sc_ufix_fast)
181312027Sjungma@eit.uni-kl.deDEFN_BIN_FNC_T(b_or,||,sc_ufix_fast,sc_ufix_fast)
181412027Sjungma@eit.uni-kl.deDEFN_BIN_FNC_T(b_xor,!=,sc_ufix_fast,sc_ufix_fast)
181512027Sjungma@eit.uni-kl.de
181612027Sjungma@eit.uni-kl.de#undef DEFN_BIN_FNC_T
181712027Sjungma@eit.uni-kl.de
181812027Sjungma@eit.uni-kl.de
181912027Sjungma@eit.uni-kl.de// assignment operators
182012027Sjungma@eit.uni-kl.de
182112027Sjungma@eit.uni-kl.deinline
182212027Sjungma@eit.uni-kl.desc_ufix_fast&
182312027Sjungma@eit.uni-kl.desc_ufix_fast::operator = ( const sc_ufix_fast& a )
182412027Sjungma@eit.uni-kl.de{
182512027Sjungma@eit.uni-kl.de    sc_fxnum_fast::operator = ( a );
182612027Sjungma@eit.uni-kl.de    return *this;
182712027Sjungma@eit.uni-kl.de}
182812027Sjungma@eit.uni-kl.de
182912027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP_T(op,tp)                                                  \
183012027Sjungma@eit.uni-kl.deinline                                                                        \
183112027Sjungma@eit.uni-kl.desc_ufix_fast&                                                                 \
183212027Sjungma@eit.uni-kl.desc_ufix_fast::operator op ( tp a )                                            \
183312027Sjungma@eit.uni-kl.de{                                                                             \
183412027Sjungma@eit.uni-kl.de    sc_fxnum_fast::operator op( a );                                          \
183512027Sjungma@eit.uni-kl.de    return *this;                                                             \
183612027Sjungma@eit.uni-kl.de}
183712027Sjungma@eit.uni-kl.de
183812027Sjungma@eit.uni-kl.de#ifndef SC_FX_EXCLUDE_OTHER
183912027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP_OTHER(op)                                                 \
184012027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,int64)                                                       \
184112027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,uint64)                                                      \
184212027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_int_base&)                                          \
184312027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_uint_base&)                                         \
184412027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_signed&)                                            \
184512027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_unsigned&)
184612027Sjungma@eit.uni-kl.de#else
184712027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP_OTHER(op)
184812027Sjungma@eit.uni-kl.de#endif
184912027Sjungma@eit.uni-kl.de
185012027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP(op)                                                       \
185112027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,int)                                                         \
185212027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,unsigned int)                                                \
185312027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,long)                                                        \
185412027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,unsigned long)                                               \
185512027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,float)                                                      \
185612027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,double)                                                      \
185712027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const char*)                                                 \
185812027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_fxval&)                                             \
185912027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_fxval_fast&)                                        \
186012027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_fxnum&)                                             \
186112027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_fxnum_fast&)                                        \
186212027Sjungma@eit.uni-kl.deDEFN_ASN_OP_OTHER(op)
186312027Sjungma@eit.uni-kl.de
186412027Sjungma@eit.uni-kl.deDEFN_ASN_OP(=)
186512027Sjungma@eit.uni-kl.de
186612027Sjungma@eit.uni-kl.deDEFN_ASN_OP(*=)
186712027Sjungma@eit.uni-kl.deDEFN_ASN_OP(/=)
186812027Sjungma@eit.uni-kl.deDEFN_ASN_OP(+=)
186912027Sjungma@eit.uni-kl.deDEFN_ASN_OP(-=)
187012027Sjungma@eit.uni-kl.de
187112027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(<<=,int)
187212027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(>>=,int)
187312027Sjungma@eit.uni-kl.de
187412027Sjungma@eit.uni-kl.de#undef DEFN_ASN_OP_T
187512027Sjungma@eit.uni-kl.de#undef DEFN_ASN_OP_OTHER
187612027Sjungma@eit.uni-kl.de#undef DEFN_ASN_OP
187712027Sjungma@eit.uni-kl.de
187812027Sjungma@eit.uni-kl.de
187912027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP_T(op,op2,tp)                                              \
188012027Sjungma@eit.uni-kl.deinline                                                                        \
188112027Sjungma@eit.uni-kl.desc_ufix_fast&                                                                 \
188212027Sjungma@eit.uni-kl.desc_ufix_fast::operator op ( const tp& b )                                     \
188312027Sjungma@eit.uni-kl.de{                                                                             \
188412027Sjungma@eit.uni-kl.de    SC_FXNUM_FAST_OBSERVER_READ_( *this )                                     \
188512027Sjungma@eit.uni-kl.de    b.observer_read();                                                        \
188612027Sjungma@eit.uni-kl.de    int iwl_c = iwl();                                                        \
188712027Sjungma@eit.uni-kl.de    for( int i = iwl_c - wl(); i < iwl_c; ++ i )                              \
188812027Sjungma@eit.uni-kl.de	set_bit( i, get_bit( i ) op2 b.get_bit( i ) );                        \
188912027Sjungma@eit.uni-kl.de    cast();                                                                   \
189012027Sjungma@eit.uni-kl.de    SC_FXNUM_FAST_OBSERVER_WRITE_( *this )                                    \
189112027Sjungma@eit.uni-kl.de    return *this;                                                             \
189212027Sjungma@eit.uni-kl.de}
189312027Sjungma@eit.uni-kl.de
189412027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(&=,&&,sc_ufix)
189512027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(&=,&&,sc_ufix_fast)
189612027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(|=,||,sc_ufix)
189712027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(|=,||,sc_ufix_fast)
189812027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(^=,!=,sc_ufix)
189912027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(^=,!=,sc_ufix_fast)
190012027Sjungma@eit.uni-kl.de
190112027Sjungma@eit.uni-kl.de#undef DEFN_ASN_OP_T
190212027Sjungma@eit.uni-kl.de
190312027Sjungma@eit.uni-kl.de
190412027Sjungma@eit.uni-kl.de// auto-increment and auto-decrement
190512027Sjungma@eit.uni-kl.de
190612027Sjungma@eit.uni-kl.deinline
190712027Sjungma@eit.uni-kl.deconst sc_fxval_fast
190812027Sjungma@eit.uni-kl.desc_ufix_fast::operator ++ ( int )
190912027Sjungma@eit.uni-kl.de{
191012027Sjungma@eit.uni-kl.de    return sc_fxval_fast( sc_fxnum_fast::operator ++ ( 0 ) );
191112027Sjungma@eit.uni-kl.de}
191212027Sjungma@eit.uni-kl.de
191312027Sjungma@eit.uni-kl.deinline
191412027Sjungma@eit.uni-kl.deconst sc_fxval_fast
191512027Sjungma@eit.uni-kl.desc_ufix_fast::operator -- ( int )
191612027Sjungma@eit.uni-kl.de{
191712027Sjungma@eit.uni-kl.de    return sc_fxval_fast( sc_fxnum_fast::operator -- ( 0 ) );
191812027Sjungma@eit.uni-kl.de}
191912027Sjungma@eit.uni-kl.de
192012027Sjungma@eit.uni-kl.deinline
192112027Sjungma@eit.uni-kl.desc_ufix_fast&
192212027Sjungma@eit.uni-kl.desc_ufix_fast::operator ++ ()
192312027Sjungma@eit.uni-kl.de{
192412027Sjungma@eit.uni-kl.de    sc_fxnum_fast::operator ++ ();
192512027Sjungma@eit.uni-kl.de    return *this;
192612027Sjungma@eit.uni-kl.de}
192712027Sjungma@eit.uni-kl.de
192812027Sjungma@eit.uni-kl.deinline
192912027Sjungma@eit.uni-kl.desc_ufix_fast&
193012027Sjungma@eit.uni-kl.desc_ufix_fast::operator -- ()
193112027Sjungma@eit.uni-kl.de{
193212027Sjungma@eit.uni-kl.de    sc_fxnum_fast::operator -- ();
193312027Sjungma@eit.uni-kl.de    return *this;
193412027Sjungma@eit.uni-kl.de}
193512027Sjungma@eit.uni-kl.de
193612027Sjungma@eit.uni-kl.de} // namespace sc_dt
193712027Sjungma@eit.uni-kl.de
193812027Sjungma@eit.uni-kl.de
193912027Sjungma@eit.uni-kl.de#endif
194012027Sjungma@eit.uni-kl.de
194112027Sjungma@eit.uni-kl.de// Taf!
1942