sc_fixed.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_fixed.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_fixed.h,v $ 3912027Sjungma@eit.uni-kl.de// Revision 1.2 2011/01/19 18:57:40 acg 4012027Sjungma@eit.uni-kl.de// Andy Goodrich: changes for IEEE_1666_2011. 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:57 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_FIXED_H 5112027Sjungma@eit.uni-kl.de#define SC_FIXED_H 5212027Sjungma@eit.uni-kl.de 5312027Sjungma@eit.uni-kl.de 5412027Sjungma@eit.uni-kl.de#include "sysc/datatypes/fx/sc_fix.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.detemplate <int W, int I, sc_q_mode Q, sc_o_mode O, int N> class sc_fixed; 6212027Sjungma@eit.uni-kl.detemplate <int W, int I, sc_q_mode Q, sc_o_mode O, int N> class sc_fixed_fast; 6312027Sjungma@eit.uni-kl.de 6412027Sjungma@eit.uni-kl.de 6512027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 6612027Sjungma@eit.uni-kl.de// TEMPLATE CLASS : sc_fixed 6712027Sjungma@eit.uni-kl.de// 6812027Sjungma@eit.uni-kl.de// "Constrained" signed fixed-point class; arbitrary precision. 6912027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 7012027Sjungma@eit.uni-kl.de 7112027Sjungma@eit.uni-kl.detemplate <int W, int I, 7212027Sjungma@eit.uni-kl.de sc_q_mode Q = SC_DEFAULT_Q_MODE_, 7312027Sjungma@eit.uni-kl.de sc_o_mode O = SC_DEFAULT_O_MODE_, int N = SC_DEFAULT_N_BITS_> 7412027Sjungma@eit.uni-kl.declass sc_fixed : public sc_fix 7512027Sjungma@eit.uni-kl.de{ 7612027Sjungma@eit.uni-kl.de 7712027Sjungma@eit.uni-kl.depublic: 7812027Sjungma@eit.uni-kl.de 7912027Sjungma@eit.uni-kl.de // constructors 8012027Sjungma@eit.uni-kl.de 8112027Sjungma@eit.uni-kl.de explicit sc_fixed( sc_fxnum_observer* = 0 ); 8212027Sjungma@eit.uni-kl.de explicit sc_fixed( const sc_fxcast_switch&, sc_fxnum_observer* = 0 ); 8312027Sjungma@eit.uni-kl.de 8412027Sjungma@eit.uni-kl.de#define DECL_CTORS_T_A(tp) \ 8512027Sjungma@eit.uni-kl.de sc_fixed( tp, sc_fxnum_observer* = 0 ); \ 8612027Sjungma@eit.uni-kl.de sc_fixed( tp, const sc_fxcast_switch&, sc_fxnum_observer* = 0 ); 8712027Sjungma@eit.uni-kl.de 8812027Sjungma@eit.uni-kl.de#define DECL_CTORS_T_B(tp) \ 8912027Sjungma@eit.uni-kl.de explicit sc_fixed( tp, sc_fxnum_observer* = 0 ); \ 9012027Sjungma@eit.uni-kl.de sc_fixed( tp, const sc_fxcast_switch&, sc_fxnum_observer* = 0 ); 9112027Sjungma@eit.uni-kl.de 9212027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(int) 9312027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(unsigned int) 9412027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(long) 9512027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(unsigned long) 9612027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(float) 9712027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(double) 9812027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(const char*) 9912027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(const sc_fxval&) 10012027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(const sc_fxval_fast&) 10112027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(const sc_fxnum&) 10212027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(const sc_fxnum_fast&) 10312027Sjungma@eit.uni-kl.de#ifndef SC_FX_EXCLUDE_OTHER 10412027Sjungma@eit.uni-kl.de DECL_CTORS_T_B(int64) 10512027Sjungma@eit.uni-kl.de DECL_CTORS_T_B(uint64) 10612027Sjungma@eit.uni-kl.de DECL_CTORS_T_B(const sc_int_base&) 10712027Sjungma@eit.uni-kl.de DECL_CTORS_T_B(const sc_uint_base&) 10812027Sjungma@eit.uni-kl.de DECL_CTORS_T_B(const sc_signed&) 10912027Sjungma@eit.uni-kl.de DECL_CTORS_T_B(const sc_unsigned&) 11012027Sjungma@eit.uni-kl.de#endif 11112027Sjungma@eit.uni-kl.de 11212027Sjungma@eit.uni-kl.de#undef DECL_CTORS_T_A 11312027Sjungma@eit.uni-kl.de#undef DECL_CTORS_T_B 11412027Sjungma@eit.uni-kl.de 11512027Sjungma@eit.uni-kl.de // copy constructor 11612027Sjungma@eit.uni-kl.de 11712027Sjungma@eit.uni-kl.de sc_fixed( const sc_fixed<W,I,Q,O,N>& ); 11812027Sjungma@eit.uni-kl.de 11912027Sjungma@eit.uni-kl.de 12012027Sjungma@eit.uni-kl.de // assignment operators 12112027Sjungma@eit.uni-kl.de 12212027Sjungma@eit.uni-kl.de sc_fixed& operator = ( const sc_fixed<W,I,Q,O,N>& ); 12312027Sjungma@eit.uni-kl.de 12412027Sjungma@eit.uni-kl.de#define DECL_ASN_OP_T(op,tp) \ 12512027Sjungma@eit.uni-kl.de sc_fixed& operator op ( tp ); 12612027Sjungma@eit.uni-kl.de 12712027Sjungma@eit.uni-kl.de#ifndef SC_FX_EXCLUDE_OTHER 12812027Sjungma@eit.uni-kl.de#define DECL_ASN_OP_OTHER(op) \ 12912027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,int64) \ 13012027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,uint64) \ 13112027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const sc_int_base&) \ 13212027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const sc_uint_base&) \ 13312027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const sc_signed&) \ 13412027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const sc_unsigned&) 13512027Sjungma@eit.uni-kl.de#else 13612027Sjungma@eit.uni-kl.de#define DECL_ASN_OP_OTHER(op) 13712027Sjungma@eit.uni-kl.de#endif 13812027Sjungma@eit.uni-kl.de 13912027Sjungma@eit.uni-kl.de#define DECL_ASN_OP(op) \ 14012027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,int) \ 14112027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,unsigned int) \ 14212027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,long) \ 14312027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,unsigned long) \ 14412027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,float) \ 14512027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,double) \ 14612027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const char*) \ 14712027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const sc_fxval&) \ 14812027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const sc_fxval_fast&) \ 14912027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const sc_fxnum&) \ 15012027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const sc_fxnum_fast&) \ 15112027Sjungma@eit.uni-kl.de DECL_ASN_OP_OTHER(op) 15212027Sjungma@eit.uni-kl.de 15312027Sjungma@eit.uni-kl.de DECL_ASN_OP(=) 15412027Sjungma@eit.uni-kl.de 15512027Sjungma@eit.uni-kl.de DECL_ASN_OP(*=) 15612027Sjungma@eit.uni-kl.de DECL_ASN_OP(/=) 15712027Sjungma@eit.uni-kl.de DECL_ASN_OP(+=) 15812027Sjungma@eit.uni-kl.de DECL_ASN_OP(-=) 15912027Sjungma@eit.uni-kl.de 16012027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(<<=,int) 16112027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(>>=,int) 16212027Sjungma@eit.uni-kl.de 16312027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(&=,const sc_fix&) 16412027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(&=,const sc_fix_fast&) 16512027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(|=,const sc_fix&) 16612027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(|=,const sc_fix_fast&) 16712027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(^=,const sc_fix&) 16812027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(^=,const sc_fix_fast&) 16912027Sjungma@eit.uni-kl.de 17012027Sjungma@eit.uni-kl.de#undef DECL_ASN_OP_T 17112027Sjungma@eit.uni-kl.de#undef DECL_ASN_OP_OTHER 17212027Sjungma@eit.uni-kl.de#undef DECL_ASN_OP 17312027Sjungma@eit.uni-kl.de 17412027Sjungma@eit.uni-kl.de 17512027Sjungma@eit.uni-kl.de // auto-increment and auto-decrement 17612027Sjungma@eit.uni-kl.de 17712027Sjungma@eit.uni-kl.de const sc_fxval operator ++ ( int ); 17812027Sjungma@eit.uni-kl.de const sc_fxval operator -- ( int ); 17912027Sjungma@eit.uni-kl.de 18012027Sjungma@eit.uni-kl.de sc_fixed& operator ++ (); 18112027Sjungma@eit.uni-kl.de sc_fixed& operator -- (); 18212027Sjungma@eit.uni-kl.de 18312027Sjungma@eit.uni-kl.de}; 18412027Sjungma@eit.uni-kl.de 18512027Sjungma@eit.uni-kl.de 18612027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 18712027Sjungma@eit.uni-kl.de// TEMPLATE CLASS : sc_fixed_fast 18812027Sjungma@eit.uni-kl.de// 18912027Sjungma@eit.uni-kl.de// "Constrained" signed fixed-point class; limited precision. 19012027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 19112027Sjungma@eit.uni-kl.de 19212027Sjungma@eit.uni-kl.detemplate <int W, int I, 19312027Sjungma@eit.uni-kl.de sc_q_mode Q = SC_DEFAULT_Q_MODE_, 19412027Sjungma@eit.uni-kl.de sc_o_mode O = SC_DEFAULT_O_MODE_, int N = SC_DEFAULT_N_BITS_> 19512027Sjungma@eit.uni-kl.declass sc_fixed_fast : public sc_fix_fast 19612027Sjungma@eit.uni-kl.de{ 19712027Sjungma@eit.uni-kl.de 19812027Sjungma@eit.uni-kl.depublic: 19912027Sjungma@eit.uni-kl.de 20012027Sjungma@eit.uni-kl.de // constructors 20112027Sjungma@eit.uni-kl.de 20212027Sjungma@eit.uni-kl.de explicit sc_fixed_fast( sc_fxnum_fast_observer* = 0 ); 20312027Sjungma@eit.uni-kl.de explicit sc_fixed_fast( const sc_fxcast_switch&, 20412027Sjungma@eit.uni-kl.de sc_fxnum_fast_observer* = 0 ); 20512027Sjungma@eit.uni-kl.de 20612027Sjungma@eit.uni-kl.de#define DECL_CTORS_T_A(tp) \ 20712027Sjungma@eit.uni-kl.de sc_fixed_fast( tp, sc_fxnum_fast_observer* = 0 ); \ 20812027Sjungma@eit.uni-kl.de sc_fixed_fast( tp, const sc_fxcast_switch&, \ 20912027Sjungma@eit.uni-kl.de sc_fxnum_fast_observer* = 0 ); 21012027Sjungma@eit.uni-kl.de 21112027Sjungma@eit.uni-kl.de#define DECL_CTORS_T_B(tp) \ 21212027Sjungma@eit.uni-kl.de explicit sc_fixed_fast( tp, sc_fxnum_fast_observer* = 0 ); \ 21312027Sjungma@eit.uni-kl.de sc_fixed_fast( tp, const sc_fxcast_switch&, \ 21412027Sjungma@eit.uni-kl.de sc_fxnum_fast_observer* = 0 ); 21512027Sjungma@eit.uni-kl.de 21612027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(int) 21712027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(unsigned int) 21812027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(long) 21912027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(unsigned long) 22012027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(float) 22112027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(double) 22212027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(const char*) 22312027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(const sc_fxval&) 22412027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(const sc_fxval_fast&) 22512027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(const sc_fxnum&) 22612027Sjungma@eit.uni-kl.de DECL_CTORS_T_A(const sc_fxnum_fast&) 22712027Sjungma@eit.uni-kl.de#ifndef SC_FX_EXCLUDE_OTHER 22812027Sjungma@eit.uni-kl.de DECL_CTORS_T_B(int64) 22912027Sjungma@eit.uni-kl.de DECL_CTORS_T_B(uint64) 23012027Sjungma@eit.uni-kl.de DECL_CTORS_T_B(const sc_int_base&) 23112027Sjungma@eit.uni-kl.de DECL_CTORS_T_B(const sc_uint_base&) 23212027Sjungma@eit.uni-kl.de DECL_CTORS_T_B(const sc_signed&) 23312027Sjungma@eit.uni-kl.de DECL_CTORS_T_B(const sc_unsigned&) 23412027Sjungma@eit.uni-kl.de#endif 23512027Sjungma@eit.uni-kl.de 23612027Sjungma@eit.uni-kl.de#undef DECL_CTORS_T_A 23712027Sjungma@eit.uni-kl.de#undef DECL_CTORS_T_B 23812027Sjungma@eit.uni-kl.de 23912027Sjungma@eit.uni-kl.de // copy constructor 24012027Sjungma@eit.uni-kl.de 24112027Sjungma@eit.uni-kl.de sc_fixed_fast( const sc_fixed_fast<W,I,Q,O,N>& ); 24212027Sjungma@eit.uni-kl.de 24312027Sjungma@eit.uni-kl.de 24412027Sjungma@eit.uni-kl.de // assignment operators 24512027Sjungma@eit.uni-kl.de 24612027Sjungma@eit.uni-kl.de sc_fixed_fast& operator = ( const sc_fixed_fast<W,I,Q,O,N>& ); 24712027Sjungma@eit.uni-kl.de 24812027Sjungma@eit.uni-kl.de#define DECL_ASN_OP_T(op,tp) \ 24912027Sjungma@eit.uni-kl.de sc_fixed_fast& operator op ( tp ); 25012027Sjungma@eit.uni-kl.de 25112027Sjungma@eit.uni-kl.de#ifndef SC_FX_EXCLUDE_OTHER 25212027Sjungma@eit.uni-kl.de#define DECL_ASN_OP_OTHER(op) \ 25312027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,int64) \ 25412027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,uint64) \ 25512027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const sc_int_base&) \ 25612027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const sc_uint_base&) \ 25712027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const sc_signed&) \ 25812027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const sc_unsigned&) 25912027Sjungma@eit.uni-kl.de#else 26012027Sjungma@eit.uni-kl.de#define DECL_ASN_OP_OTHER(op) 26112027Sjungma@eit.uni-kl.de#endif 26212027Sjungma@eit.uni-kl.de 26312027Sjungma@eit.uni-kl.de#define DECL_ASN_OP(op) \ 26412027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,int) \ 26512027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,unsigned int) \ 26612027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,long) \ 26712027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,unsigned long) \ 26812027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,float) \ 26912027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,double) \ 27012027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const char*) \ 27112027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const sc_fxval&) \ 27212027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const sc_fxval_fast&) \ 27312027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const sc_fxnum&) \ 27412027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(op,const sc_fxnum_fast&) \ 27512027Sjungma@eit.uni-kl.de DECL_ASN_OP_OTHER(op) 27612027Sjungma@eit.uni-kl.de 27712027Sjungma@eit.uni-kl.de DECL_ASN_OP(=) 27812027Sjungma@eit.uni-kl.de 27912027Sjungma@eit.uni-kl.de DECL_ASN_OP(*=) 28012027Sjungma@eit.uni-kl.de DECL_ASN_OP(/=) 28112027Sjungma@eit.uni-kl.de DECL_ASN_OP(+=) 28212027Sjungma@eit.uni-kl.de DECL_ASN_OP(-=) 28312027Sjungma@eit.uni-kl.de 28412027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(<<=,int) 28512027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(>>=,int) 28612027Sjungma@eit.uni-kl.de 28712027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(&=,const sc_fix&) 28812027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(&=,const sc_fix_fast&) 28912027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(|=,const sc_fix&) 29012027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(|=,const sc_fix_fast&) 29112027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(^=,const sc_fix&) 29212027Sjungma@eit.uni-kl.de DECL_ASN_OP_T(^=,const sc_fix_fast&) 29312027Sjungma@eit.uni-kl.de 29412027Sjungma@eit.uni-kl.de#undef DECL_ASN_OP_T 29512027Sjungma@eit.uni-kl.de#undef DECL_ASN_OP_OTHER 29612027Sjungma@eit.uni-kl.de#undef DECL_ASN_OP 29712027Sjungma@eit.uni-kl.de 29812027Sjungma@eit.uni-kl.de 29912027Sjungma@eit.uni-kl.de // auto-increment and auto-decrement 30012027Sjungma@eit.uni-kl.de 30112027Sjungma@eit.uni-kl.de const sc_fxval_fast operator ++ ( int ); 30212027Sjungma@eit.uni-kl.de const sc_fxval_fast operator -- ( int ); 30312027Sjungma@eit.uni-kl.de 30412027Sjungma@eit.uni-kl.de sc_fixed_fast& operator ++ (); 30512027Sjungma@eit.uni-kl.de sc_fixed_fast& operator -- (); 30612027Sjungma@eit.uni-kl.de 30712027Sjungma@eit.uni-kl.de}; 30812027Sjungma@eit.uni-kl.de 30912027Sjungma@eit.uni-kl.de 31012027Sjungma@eit.uni-kl.de// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 31112027Sjungma@eit.uni-kl.de 31212027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 31312027Sjungma@eit.uni-kl.de// TEMPLATE CLASS : sc_fixed 31412027Sjungma@eit.uni-kl.de// 31512027Sjungma@eit.uni-kl.de// "Constrained" signed fixed-point class; arbitrary precision. 31612027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 31712027Sjungma@eit.uni-kl.de 31812027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> 31912027Sjungma@eit.uni-kl.deinline 32012027Sjungma@eit.uni-kl.desc_fixed<W,I,Q,O,N>::sc_fixed( sc_fxnum_observer* observer_ ) 32112027Sjungma@eit.uni-kl.de: sc_fix( W, I, Q, O, N, observer_ ) 32212027Sjungma@eit.uni-kl.de{} 32312027Sjungma@eit.uni-kl.de 32412027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> 32512027Sjungma@eit.uni-kl.deinline 32612027Sjungma@eit.uni-kl.desc_fixed<W,I,Q,O,N>::sc_fixed( const sc_fxcast_switch& cast_sw, 32712027Sjungma@eit.uni-kl.de sc_fxnum_observer* observer_ ) 32812027Sjungma@eit.uni-kl.de: sc_fix( W, I, Q, O, N, cast_sw, observer_ ) 32912027Sjungma@eit.uni-kl.de{} 33012027Sjungma@eit.uni-kl.de 33112027Sjungma@eit.uni-kl.de#define DEFN_CTORS_T(tp) \ 33212027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> \ 33312027Sjungma@eit.uni-kl.deinline \ 33412027Sjungma@eit.uni-kl.desc_fixed<W,I,Q,O,N>::sc_fixed( tp a, \ 33512027Sjungma@eit.uni-kl.de sc_fxnum_observer* observer_ ) \ 33612027Sjungma@eit.uni-kl.de: sc_fix( a, W, I, Q, O, N, observer_ ) \ 33712027Sjungma@eit.uni-kl.de{} \ 33812027Sjungma@eit.uni-kl.de \ 33912027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> \ 34012027Sjungma@eit.uni-kl.deinline \ 34112027Sjungma@eit.uni-kl.desc_fixed<W,I,Q,O,N>::sc_fixed( tp a, \ 34212027Sjungma@eit.uni-kl.de const sc_fxcast_switch& cast_sw, \ 34312027Sjungma@eit.uni-kl.de sc_fxnum_observer* observer_ ) \ 34412027Sjungma@eit.uni-kl.de: sc_fix( a, W, I, Q, O, N, cast_sw, observer_ ) \ 34512027Sjungma@eit.uni-kl.de{} 34612027Sjungma@eit.uni-kl.de 34712027Sjungma@eit.uni-kl.deDEFN_CTORS_T(int) 34812027Sjungma@eit.uni-kl.deDEFN_CTORS_T(unsigned int) 34912027Sjungma@eit.uni-kl.deDEFN_CTORS_T(long) 35012027Sjungma@eit.uni-kl.deDEFN_CTORS_T(unsigned long) 35112027Sjungma@eit.uni-kl.deDEFN_CTORS_T(float) 35212027Sjungma@eit.uni-kl.deDEFN_CTORS_T(double) 35312027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const char*) 35412027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const sc_fxval&) 35512027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const sc_fxval_fast&) 35612027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const sc_fxnum&) 35712027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const sc_fxnum_fast&) 35812027Sjungma@eit.uni-kl.de#ifndef SC_FX_EXCLUDE_OTHER 35912027Sjungma@eit.uni-kl.deDEFN_CTORS_T(int64) 36012027Sjungma@eit.uni-kl.deDEFN_CTORS_T(uint64) 36112027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const sc_int_base&) 36212027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const sc_uint_base&) 36312027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const sc_signed&) 36412027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const sc_unsigned&) 36512027Sjungma@eit.uni-kl.de#endif 36612027Sjungma@eit.uni-kl.de 36712027Sjungma@eit.uni-kl.de#undef DEFN_CTORS_T 36812027Sjungma@eit.uni-kl.de 36912027Sjungma@eit.uni-kl.de// copy constructor 37012027Sjungma@eit.uni-kl.de 37112027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> 37212027Sjungma@eit.uni-kl.deinline 37312027Sjungma@eit.uni-kl.desc_fixed<W,I,Q,O,N>::sc_fixed( const sc_fixed<W,I,Q,O,N>& a ) 37412027Sjungma@eit.uni-kl.de: sc_fix( a, W, I, Q, O, N ) 37512027Sjungma@eit.uni-kl.de{} 37612027Sjungma@eit.uni-kl.de 37712027Sjungma@eit.uni-kl.de 37812027Sjungma@eit.uni-kl.de// assignment operators 37912027Sjungma@eit.uni-kl.de 38012027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> 38112027Sjungma@eit.uni-kl.deinline 38212027Sjungma@eit.uni-kl.desc_fixed<W,I,Q,O,N>& 38312027Sjungma@eit.uni-kl.desc_fixed<W,I,Q,O,N>::operator = ( const sc_fixed<W,I,Q,O,N>& a ) 38412027Sjungma@eit.uni-kl.de{ 38512027Sjungma@eit.uni-kl.de sc_fix::operator = ( a ); 38612027Sjungma@eit.uni-kl.de return *this; 38712027Sjungma@eit.uni-kl.de} 38812027Sjungma@eit.uni-kl.de 38912027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP_T(op,tp) \ 39012027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> \ 39112027Sjungma@eit.uni-kl.deinline \ 39212027Sjungma@eit.uni-kl.desc_fixed<W,I,Q,O,N>& \ 39312027Sjungma@eit.uni-kl.desc_fixed<W,I,Q,O,N>::operator op ( tp a ) \ 39412027Sjungma@eit.uni-kl.de{ \ 39512027Sjungma@eit.uni-kl.de sc_fix::operator op ( a ); \ 39612027Sjungma@eit.uni-kl.de return *this; \ 39712027Sjungma@eit.uni-kl.de} 39812027Sjungma@eit.uni-kl.de 39912027Sjungma@eit.uni-kl.de#ifndef SC_FX_EXCLUDE_OTHER 40012027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP_OTHER(op) \ 40112027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,int64) \ 40212027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,uint64) \ 40312027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_int_base&) \ 40412027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_uint_base&) \ 40512027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_signed&) \ 40612027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_unsigned&) 40712027Sjungma@eit.uni-kl.de#else 40812027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP_OTHER(op) 40912027Sjungma@eit.uni-kl.de#endif 41012027Sjungma@eit.uni-kl.de 41112027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP(op) \ 41212027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,int) \ 41312027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,unsigned int) \ 41412027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,long) \ 41512027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,unsigned long) \ 41612027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,float) \ 41712027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,double) \ 41812027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const char*) \ 41912027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_fxval&) \ 42012027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_fxval_fast&) \ 42112027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_fxnum&) \ 42212027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_fxnum_fast&) \ 42312027Sjungma@eit.uni-kl.deDEFN_ASN_OP_OTHER(op) 42412027Sjungma@eit.uni-kl.de 42512027Sjungma@eit.uni-kl.deDEFN_ASN_OP(=) 42612027Sjungma@eit.uni-kl.de 42712027Sjungma@eit.uni-kl.deDEFN_ASN_OP(*=) 42812027Sjungma@eit.uni-kl.deDEFN_ASN_OP(/=) 42912027Sjungma@eit.uni-kl.deDEFN_ASN_OP(+=) 43012027Sjungma@eit.uni-kl.deDEFN_ASN_OP(-=) 43112027Sjungma@eit.uni-kl.de 43212027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(<<=,int) 43312027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(>>=,int) 43412027Sjungma@eit.uni-kl.de 43512027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(&=,const sc_fix&) 43612027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(&=,const sc_fix_fast&) 43712027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(|=,const sc_fix&) 43812027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(|=,const sc_fix_fast&) 43912027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(^=,const sc_fix&) 44012027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(^=,const sc_fix_fast&) 44112027Sjungma@eit.uni-kl.de 44212027Sjungma@eit.uni-kl.de#undef DEFN_ASN_OP_T 44312027Sjungma@eit.uni-kl.de#undef DEFN_ASN_OP_OTHER 44412027Sjungma@eit.uni-kl.de#undef DEFN_ASN_OP 44512027Sjungma@eit.uni-kl.de 44612027Sjungma@eit.uni-kl.de 44712027Sjungma@eit.uni-kl.de// auto-increment and auto-decrement 44812027Sjungma@eit.uni-kl.de 44912027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> 45012027Sjungma@eit.uni-kl.deinline 45112027Sjungma@eit.uni-kl.deconst sc_fxval 45212027Sjungma@eit.uni-kl.desc_fixed<W,I,Q,O,N>::operator ++ ( int ) 45312027Sjungma@eit.uni-kl.de{ 45412027Sjungma@eit.uni-kl.de return sc_fxval( sc_fix::operator ++ ( 0 ) ); 45512027Sjungma@eit.uni-kl.de} 45612027Sjungma@eit.uni-kl.de 45712027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> 45812027Sjungma@eit.uni-kl.deinline 45912027Sjungma@eit.uni-kl.deconst sc_fxval 46012027Sjungma@eit.uni-kl.desc_fixed<W,I,Q,O,N>::operator -- ( int ) 46112027Sjungma@eit.uni-kl.de{ 46212027Sjungma@eit.uni-kl.de return sc_fxval( sc_fix::operator -- ( 0 ) ); 46312027Sjungma@eit.uni-kl.de} 46412027Sjungma@eit.uni-kl.de 46512027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> 46612027Sjungma@eit.uni-kl.deinline 46712027Sjungma@eit.uni-kl.desc_fixed<W,I,Q,O,N>& 46812027Sjungma@eit.uni-kl.desc_fixed<W,I,Q,O,N>::operator ++ () 46912027Sjungma@eit.uni-kl.de{ 47012027Sjungma@eit.uni-kl.de sc_fix::operator ++ (); 47112027Sjungma@eit.uni-kl.de return *this; 47212027Sjungma@eit.uni-kl.de} 47312027Sjungma@eit.uni-kl.de 47412027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> 47512027Sjungma@eit.uni-kl.deinline 47612027Sjungma@eit.uni-kl.desc_fixed<W,I,Q,O,N>& 47712027Sjungma@eit.uni-kl.desc_fixed<W,I,Q,O,N>::operator -- () 47812027Sjungma@eit.uni-kl.de{ 47912027Sjungma@eit.uni-kl.de sc_fix::operator -- (); 48012027Sjungma@eit.uni-kl.de return *this; 48112027Sjungma@eit.uni-kl.de} 48212027Sjungma@eit.uni-kl.de 48312027Sjungma@eit.uni-kl.de 48412027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 48512027Sjungma@eit.uni-kl.de// TEMPLATE CLASS : sc_fixed_fast 48612027Sjungma@eit.uni-kl.de// 48712027Sjungma@eit.uni-kl.de// "Constrained" signed fixed-point class; limited precision. 48812027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 48912027Sjungma@eit.uni-kl.de 49012027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> 49112027Sjungma@eit.uni-kl.deinline 49212027Sjungma@eit.uni-kl.desc_fixed_fast<W,I,Q,O,N>::sc_fixed_fast( sc_fxnum_fast_observer* observer_ ) 49312027Sjungma@eit.uni-kl.de: sc_fix_fast( W, I, Q, O, N, observer_ ) 49412027Sjungma@eit.uni-kl.de{} 49512027Sjungma@eit.uni-kl.de 49612027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> 49712027Sjungma@eit.uni-kl.deinline 49812027Sjungma@eit.uni-kl.desc_fixed_fast<W,I,Q,O,N>::sc_fixed_fast( const sc_fxcast_switch& cast_sw, 49912027Sjungma@eit.uni-kl.de sc_fxnum_fast_observer* observer_ ) 50012027Sjungma@eit.uni-kl.de: sc_fix_fast( W, I, Q, O, N, cast_sw, observer_ ) 50112027Sjungma@eit.uni-kl.de{} 50212027Sjungma@eit.uni-kl.de 50312027Sjungma@eit.uni-kl.de#define DEFN_CTORS_T(tp) \ 50412027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> \ 50512027Sjungma@eit.uni-kl.deinline \ 50612027Sjungma@eit.uni-kl.desc_fixed_fast<W,I,Q,O,N>::sc_fixed_fast( tp a, \ 50712027Sjungma@eit.uni-kl.de sc_fxnum_fast_observer* observer_ ) \ 50812027Sjungma@eit.uni-kl.de: sc_fix_fast( a, W, I, Q, O, N, observer_ ) \ 50912027Sjungma@eit.uni-kl.de{} \ 51012027Sjungma@eit.uni-kl.de \ 51112027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> \ 51212027Sjungma@eit.uni-kl.deinline \ 51312027Sjungma@eit.uni-kl.desc_fixed_fast<W,I,Q,O,N>::sc_fixed_fast( tp a, \ 51412027Sjungma@eit.uni-kl.de const sc_fxcast_switch& cast_sw, \ 51512027Sjungma@eit.uni-kl.de sc_fxnum_fast_observer* observer_ ) \ 51612027Sjungma@eit.uni-kl.de: sc_fix_fast( a, W, I, Q, O, N, cast_sw, observer_ ) \ 51712027Sjungma@eit.uni-kl.de{} 51812027Sjungma@eit.uni-kl.de 51912027Sjungma@eit.uni-kl.deDEFN_CTORS_T(int) 52012027Sjungma@eit.uni-kl.deDEFN_CTORS_T(unsigned int) 52112027Sjungma@eit.uni-kl.deDEFN_CTORS_T(long) 52212027Sjungma@eit.uni-kl.deDEFN_CTORS_T(unsigned long) 52312027Sjungma@eit.uni-kl.deDEFN_CTORS_T(float) 52412027Sjungma@eit.uni-kl.deDEFN_CTORS_T(double) 52512027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const char*) 52612027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const sc_fxval&) 52712027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const sc_fxval_fast&) 52812027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const sc_fxnum&) 52912027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const sc_fxnum_fast&) 53012027Sjungma@eit.uni-kl.de#ifndef SC_FX_EXCLUDE_OTHER 53112027Sjungma@eit.uni-kl.deDEFN_CTORS_T(int64) 53212027Sjungma@eit.uni-kl.deDEFN_CTORS_T(uint64) 53312027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const sc_int_base&) 53412027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const sc_uint_base&) 53512027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const sc_signed&) 53612027Sjungma@eit.uni-kl.deDEFN_CTORS_T(const sc_unsigned&) 53712027Sjungma@eit.uni-kl.de#endif 53812027Sjungma@eit.uni-kl.de 53912027Sjungma@eit.uni-kl.de#undef DEFN_CTORS_T 54012027Sjungma@eit.uni-kl.de 54112027Sjungma@eit.uni-kl.de// copy constructor 54212027Sjungma@eit.uni-kl.de 54312027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> 54412027Sjungma@eit.uni-kl.deinline 54512027Sjungma@eit.uni-kl.desc_fixed_fast<W,I,Q,O,N>::sc_fixed_fast( const sc_fixed_fast<W,I,Q,O,N>& a ) 54612027Sjungma@eit.uni-kl.de: sc_fix_fast( a, W, I, Q, O, N ) 54712027Sjungma@eit.uni-kl.de{} 54812027Sjungma@eit.uni-kl.de 54912027Sjungma@eit.uni-kl.de 55012027Sjungma@eit.uni-kl.de// assignment operators 55112027Sjungma@eit.uni-kl.de 55212027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> 55312027Sjungma@eit.uni-kl.deinline 55412027Sjungma@eit.uni-kl.desc_fixed_fast<W,I,Q,O,N>& 55512027Sjungma@eit.uni-kl.desc_fixed_fast<W,I,Q,O,N>::operator = ( const sc_fixed_fast<W,I,Q,O,N>& a ) 55612027Sjungma@eit.uni-kl.de{ 55712027Sjungma@eit.uni-kl.de sc_fix_fast::operator = ( a ); 55812027Sjungma@eit.uni-kl.de return *this; 55912027Sjungma@eit.uni-kl.de} 56012027Sjungma@eit.uni-kl.de 56112027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP_T(op,tp) \ 56212027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> \ 56312027Sjungma@eit.uni-kl.deinline \ 56412027Sjungma@eit.uni-kl.desc_fixed_fast<W,I,Q,O,N>& \ 56512027Sjungma@eit.uni-kl.desc_fixed_fast<W,I,Q,O,N>::operator op ( tp a ) \ 56612027Sjungma@eit.uni-kl.de{ \ 56712027Sjungma@eit.uni-kl.de sc_fix_fast::operator op ( a ); \ 56812027Sjungma@eit.uni-kl.de return *this; \ 56912027Sjungma@eit.uni-kl.de} 57012027Sjungma@eit.uni-kl.de 57112027Sjungma@eit.uni-kl.de#ifndef SC_FX_EXCLUDE_OTHER 57212027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP_OTHER(op) \ 57312027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,int64) \ 57412027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,uint64) \ 57512027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_int_base&) \ 57612027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_uint_base&) \ 57712027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_signed&) \ 57812027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_unsigned&) 57912027Sjungma@eit.uni-kl.de#else 58012027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP_OTHER(op) 58112027Sjungma@eit.uni-kl.de#endif 58212027Sjungma@eit.uni-kl.de 58312027Sjungma@eit.uni-kl.de#define DEFN_ASN_OP(op) \ 58412027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,int) \ 58512027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,unsigned int) \ 58612027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,long) \ 58712027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,unsigned long) \ 58812027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,float) \ 58912027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,double) \ 59012027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const char*) \ 59112027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_fxval&) \ 59212027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_fxval_fast&) \ 59312027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_fxnum&) \ 59412027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(op,const sc_fxnum_fast&) \ 59512027Sjungma@eit.uni-kl.deDEFN_ASN_OP_OTHER(op) 59612027Sjungma@eit.uni-kl.de 59712027Sjungma@eit.uni-kl.deDEFN_ASN_OP(=) 59812027Sjungma@eit.uni-kl.de 59912027Sjungma@eit.uni-kl.deDEFN_ASN_OP(*=) 60012027Sjungma@eit.uni-kl.deDEFN_ASN_OP(/=) 60112027Sjungma@eit.uni-kl.deDEFN_ASN_OP(+=) 60212027Sjungma@eit.uni-kl.deDEFN_ASN_OP(-=) 60312027Sjungma@eit.uni-kl.de 60412027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(<<=,int) 60512027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(>>=,int) 60612027Sjungma@eit.uni-kl.de 60712027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(&=,const sc_fix&) 60812027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(&=,const sc_fix_fast&) 60912027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(|=,const sc_fix&) 61012027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(|=,const sc_fix_fast&) 61112027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(^=,const sc_fix&) 61212027Sjungma@eit.uni-kl.deDEFN_ASN_OP_T(^=,const sc_fix_fast&) 61312027Sjungma@eit.uni-kl.de 61412027Sjungma@eit.uni-kl.de#undef DEFN_ASN_OP_T 61512027Sjungma@eit.uni-kl.de#undef DEFN_ASN_OP_OTHER 61612027Sjungma@eit.uni-kl.de#undef DEFN_ASN_OP 61712027Sjungma@eit.uni-kl.de 61812027Sjungma@eit.uni-kl.de 61912027Sjungma@eit.uni-kl.de// auto-increment and auto-decrement 62012027Sjungma@eit.uni-kl.de 62112027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> 62212027Sjungma@eit.uni-kl.deinline 62312027Sjungma@eit.uni-kl.deconst sc_fxval_fast 62412027Sjungma@eit.uni-kl.desc_fixed_fast<W,I,Q,O,N>::operator ++ ( int ) 62512027Sjungma@eit.uni-kl.de{ 62612027Sjungma@eit.uni-kl.de return sc_fxval_fast( sc_fix_fast::operator ++ ( 0 ) ); 62712027Sjungma@eit.uni-kl.de} 62812027Sjungma@eit.uni-kl.de 62912027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> 63012027Sjungma@eit.uni-kl.deinline 63112027Sjungma@eit.uni-kl.deconst sc_fxval_fast 63212027Sjungma@eit.uni-kl.desc_fixed_fast<W,I,Q,O,N>::operator -- ( int ) 63312027Sjungma@eit.uni-kl.de{ 63412027Sjungma@eit.uni-kl.de return sc_fxval_fast( sc_fix_fast::operator -- ( 0 ) ); 63512027Sjungma@eit.uni-kl.de} 63612027Sjungma@eit.uni-kl.de 63712027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> 63812027Sjungma@eit.uni-kl.deinline 63912027Sjungma@eit.uni-kl.desc_fixed_fast<W,I,Q,O,N>& 64012027Sjungma@eit.uni-kl.desc_fixed_fast<W,I,Q,O,N>::operator ++ () 64112027Sjungma@eit.uni-kl.de{ 64212027Sjungma@eit.uni-kl.de sc_fix_fast::operator ++ (); 64312027Sjungma@eit.uni-kl.de return *this; 64412027Sjungma@eit.uni-kl.de} 64512027Sjungma@eit.uni-kl.de 64612027Sjungma@eit.uni-kl.detemplate<int W, int I, sc_q_mode Q, sc_o_mode O, int N> 64712027Sjungma@eit.uni-kl.deinline 64812027Sjungma@eit.uni-kl.desc_fixed_fast<W,I,Q,O,N>& 64912027Sjungma@eit.uni-kl.desc_fixed_fast<W,I,Q,O,N>::operator -- () 65012027Sjungma@eit.uni-kl.de{ 65112027Sjungma@eit.uni-kl.de sc_fix_fast::operator -- (); 65212027Sjungma@eit.uni-kl.de return *this; 65312027Sjungma@eit.uni-kl.de} 65412027Sjungma@eit.uni-kl.de 65512027Sjungma@eit.uni-kl.de} // namespace sc_dt 65612027Sjungma@eit.uni-kl.de 65712027Sjungma@eit.uni-kl.de 65812027Sjungma@eit.uni-kl.de#endif 65912027Sjungma@eit.uni-kl.de 66012027Sjungma@eit.uni-kl.de// Taf! 661