sc_ufix.h revision 12027
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