diff options
Diffstat (limited to 'src/systemc/ext/dt/fx/sc_ufixed.hh')
-rw-r--r-- | src/systemc/ext/dt/fx/sc_ufixed.hh | 585 |
1 files changed, 585 insertions, 0 deletions
diff --git a/src/systemc/ext/dt/fx/sc_ufixed.hh b/src/systemc/ext/dt/fx/sc_ufixed.hh new file mode 100644 index 000000000..9245b8e6c --- /dev/null +++ b/src/systemc/ext/dt/fx/sc_ufixed.hh @@ -0,0 +1,585 @@ +/***************************************************************************** + + Licensed to Accellera Systems Initiative Inc. (Accellera) under one or + more contributor license agreements. See the NOTICE file distributed + with this work for additional information regarding copyright ownership. + Accellera licenses this file to you under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with the + License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. See the License for the specific language governing + permissions and limitations under the License. + + *****************************************************************************/ + +/***************************************************************************** + + sc_ufixed.h - + + Original Author: Martin Janssen, Synopsys, Inc. + + *****************************************************************************/ + +/***************************************************************************** + + MODIFICATION LOG - modifiers, enter your name, affiliation, date and + changes you are making here. + + Name, Affiliation, Date: + Description of Modification: + + *****************************************************************************/ + +// $Log: sc_ufixed.h,v $ +// Revision 1.2 2011/01/19 18:57:40 acg +// Andy Goodrich: changes for IEEE_1666_2011. +// +// Revision 1.1.1.1 2006/12/15 20:20:04 acg +// SystemC 2.3 +// +// Revision 1.3 2006/01/13 18:53:58 acg +// Andy Goodrich: added $Log command so that CVS comments are reproduced in +// the source. +// + +#ifndef __SYSTEMC_EXT_DT_FX_SC_UFIXED_HH__ +#define __SYSTEMC_EXT_DT_FX_SC_UFIXED_HH__ + +#include "sc_ufix.hh" + +namespace sc_dt +{ + +// classes defined in this module +template <int W, int I, sc_q_mode Q, sc_o_mode O, int N> +class sc_ufixed; +template <int W, int I, sc_q_mode Q, sc_o_mode O, int N> +class sc_ufixed_fast; + + +// ---------------------------------------------------------------------------- +// TEMPLATE CLASS : sc_ufixed +// +// "Constrained" unsigned fixed-point class; arbitrary precision. +// ---------------------------------------------------------------------------- + +template <int W, int I, + sc_q_mode Q=SC_DEFAULT_Q_MODE_, + sc_o_mode O=SC_DEFAULT_O_MODE_, int N=SC_DEFAULT_N_BITS_> +class sc_ufixed : public sc_ufix +{ + public: + // constructors + explicit sc_ufixed(sc_fxnum_observer * =0); + explicit sc_ufixed(const sc_fxcast_switch &, sc_fxnum_observer * =0); + +#define DECL_CTORS_T_A(tp) \ + sc_ufixed(tp, sc_fxnum_observer * =0); \ + sc_ufixed(tp, const sc_fxcast_switch &, sc_fxnum_observer * =0); + +#define DECL_CTORS_T_B(tp) \ + explicit sc_ufixed(tp, sc_fxnum_observer * =0); \ + sc_ufixed(tp, const sc_fxcast_switch &, sc_fxnum_observer * =0); + + DECL_CTORS_T_A(int) + DECL_CTORS_T_A(unsigned int) + DECL_CTORS_T_A(long) + DECL_CTORS_T_A(unsigned long) + DECL_CTORS_T_A(float) + DECL_CTORS_T_A(double) + DECL_CTORS_T_A(const char *) + DECL_CTORS_T_A(const sc_fxval &) + DECL_CTORS_T_A(const sc_fxval_fast &) + DECL_CTORS_T_A(const sc_fxnum &) + DECL_CTORS_T_A(const sc_fxnum_fast &) + + DECL_CTORS_T_B(int64) + DECL_CTORS_T_B(uint64) + DECL_CTORS_T_B(const sc_int_base &) + DECL_CTORS_T_B(const sc_uint_base &) + DECL_CTORS_T_B(const sc_signed &) + DECL_CTORS_T_B(const sc_unsigned &) + +#undef DECL_CTORS_T_A +#undef DECL_CTORS_T_B + // copy constructor + sc_ufixed(const sc_ufixed<W, I, Q, O, N> &); + + // assignment operators + sc_ufixed &operator = (const sc_ufixed<W, I, Q, O, N> &); + +#define DECL_ASN_OP_T(op,tp) sc_ufixed &operator op (tp); + +#define DECL_ASN_OP_OTHER(op) \ + DECL_ASN_OP_T(op, int64) \ + DECL_ASN_OP_T(op, uint64) \ + DECL_ASN_OP_T(op, const sc_int_base &) \ + DECL_ASN_OP_T(op, const sc_uint_base &) \ + DECL_ASN_OP_T(op, const sc_signed &) \ + DECL_ASN_OP_T(op, const sc_unsigned &) + +#define DECL_ASN_OP(op) \ + DECL_ASN_OP_T(op, int) \ + DECL_ASN_OP_T(op, unsigned int) \ + DECL_ASN_OP_T(op, long) \ + DECL_ASN_OP_T(op, unsigned long) \ + DECL_ASN_OP_T(op, float) \ + DECL_ASN_OP_T(op, double) \ + DECL_ASN_OP_T(op, const char *) \ + DECL_ASN_OP_T(op, const sc_fxval &) \ + DECL_ASN_OP_T(op, const sc_fxval_fast &) \ + DECL_ASN_OP_T(op, const sc_fxnum &) \ + DECL_ASN_OP_T(op, const sc_fxnum_fast &) \ + DECL_ASN_OP_OTHER(op) + + DECL_ASN_OP(=) + + DECL_ASN_OP(*=) + DECL_ASN_OP(/=) + DECL_ASN_OP(+=) + DECL_ASN_OP(-=) + + DECL_ASN_OP_T(<<=, int) + DECL_ASN_OP_T(>>=, int) + + DECL_ASN_OP_T(&=, const sc_ufix &) + DECL_ASN_OP_T(&=, const sc_ufix_fast &) + DECL_ASN_OP_T(|=, const sc_ufix &) + DECL_ASN_OP_T(|=, const sc_ufix_fast &) + DECL_ASN_OP_T(^=, const sc_ufix &) + DECL_ASN_OP_T(^=, const sc_ufix_fast &) + +#undef DECL_ASN_OP_T +#undef DECL_ASN_OP_OTHER +#undef DECL_ASN_OP + + // auto-increment and auto-decrement + const sc_fxval operator ++ (int); + const sc_fxval operator -- (int); + + sc_ufixed &operator ++ (); + sc_ufixed &operator -- (); +}; + + +// ---------------------------------------------------------------------------- +// TEMPLATE CLASS : sc_ufixed_fast +// +// "Constrained" unsigned fixed-point class; limited precision. +// ---------------------------------------------------------------------------- + +template <int W, int I, + sc_q_mode Q=SC_DEFAULT_Q_MODE_, + sc_o_mode O=SC_DEFAULT_O_MODE_, int N=SC_DEFAULT_N_BITS_> +class sc_ufixed_fast : public sc_ufix_fast +{ + public: + // constructors + explicit sc_ufixed_fast(sc_fxnum_fast_observer * =0); + explicit sc_ufixed_fast(const sc_fxcast_switch &, + sc_fxnum_fast_observer * =0); + +#define DECL_CTORS_T_A(tp) \ + sc_ufixed_fast(tp, sc_fxnum_fast_observer * =0); \ + sc_ufixed_fast(tp, const sc_fxcast_switch &, sc_fxnum_fast_observer * =0); + +#define DECL_CTORS_T_B(tp) \ + explicit sc_ufixed_fast(tp, sc_fxnum_fast_observer * =0); \ + sc_ufixed_fast(tp, const sc_fxcast_switch &, sc_fxnum_fast_observer * =0); + + DECL_CTORS_T_A(int) + DECL_CTORS_T_A(unsigned int) + DECL_CTORS_T_A(long) + DECL_CTORS_T_A(unsigned long) + DECL_CTORS_T_A(float) + DECL_CTORS_T_A(double) + DECL_CTORS_T_A(const char *) + DECL_CTORS_T_A(const sc_fxval &) + DECL_CTORS_T_A(const sc_fxval_fast &) + DECL_CTORS_T_A(const sc_fxnum &) + DECL_CTORS_T_A(const sc_fxnum_fast &) + + DECL_CTORS_T_B(int64) + DECL_CTORS_T_B(uint64) + DECL_CTORS_T_B(const sc_int_base &) + DECL_CTORS_T_B(const sc_uint_base &) + DECL_CTORS_T_B(const sc_signed &) + DECL_CTORS_T_B(const sc_unsigned &) + +#undef DECL_CTORS_T_A +#undef DECL_CTORS_T_B + // copy constructor + sc_ufixed_fast(const sc_ufixed_fast<W, I, Q, O, N> &); + + // assignment operators + sc_ufixed_fast &operator = (const sc_ufixed_fast<W, I, Q, O, N> &); + +#define DECL_ASN_OP_T(op,tp) sc_ufixed_fast &operator op (tp); + +#define DECL_ASN_OP_OTHER(op) \ + DECL_ASN_OP_T(op, int64) \ + DECL_ASN_OP_T(op, uint64) \ + DECL_ASN_OP_T(op, const sc_int_base &) \ + DECL_ASN_OP_T(op, const sc_uint_base &) \ + DECL_ASN_OP_T(op, const sc_signed &) \ + DECL_ASN_OP_T(op, const sc_unsigned &) + +#define DECL_ASN_OP(op) \ + DECL_ASN_OP_T(op, int) \ + DECL_ASN_OP_T(op, unsigned int) \ + DECL_ASN_OP_T(op, long) \ + DECL_ASN_OP_T(op, unsigned long) \ + DECL_ASN_OP_T(op, float) \ + DECL_ASN_OP_T(op, double) \ + DECL_ASN_OP_T(op, const char *) \ + DECL_ASN_OP_T(op, const sc_fxval &) \ + DECL_ASN_OP_T(op, const sc_fxval_fast &) \ + DECL_ASN_OP_T(op, const sc_fxnum &) \ + DECL_ASN_OP_T(op, const sc_fxnum_fast &) \ + DECL_ASN_OP_OTHER(op) + + DECL_ASN_OP(=) + + DECL_ASN_OP(*=) + DECL_ASN_OP(/=) + DECL_ASN_OP(+=) + DECL_ASN_OP(-=) + + DECL_ASN_OP_T(<<=, int) + DECL_ASN_OP_T(>>=, int) + + DECL_ASN_OP_T(&=, const sc_ufix &) + DECL_ASN_OP_T(&=, const sc_ufix_fast &) + DECL_ASN_OP_T(|=, const sc_ufix &) + DECL_ASN_OP_T(|=, const sc_ufix_fast &) + DECL_ASN_OP_T(^=, const sc_ufix &) + DECL_ASN_OP_T(^=, const sc_ufix_fast &) + +#undef DECL_ASN_OP_T +#undef DECL_ASN_OP_OTHER +#undef DECL_ASN_OP + + // auto-increment and auto-decrement + const sc_fxval_fast operator ++ (int); + const sc_fxval_fast operator -- (int); + + sc_ufixed_fast& operator ++ (); + sc_ufixed_fast& operator -- (); +}; + + +// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII + +// ---------------------------------------------------------------------------- +// TEMPLATE CLASS : sc_ufixed +// +// "Constrained" unsigned fixed-point class; arbitrary precision. +// ---------------------------------------------------------------------------- + +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> +inline sc_ufixed<W, I, Q, O, N>::sc_ufixed(sc_fxnum_observer *observer_) : + sc_ufix(W, I, Q, O, N, observer_) +{} + +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> +inline sc_ufixed<W, I, Q, O, N>::sc_ufixed(const sc_fxcast_switch &cast_sw, + sc_fxnum_observer *observer_) : + sc_ufix(W, I, Q, O, N, cast_sw, observer_) +{} + +#define DEFN_CTORS_T(tp) \ +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> \ +inline sc_ufixed<W, I, Q, O, N>::sc_ufixed( \ + tp a, sc_fxnum_observer *observer_) :\ + sc_ufix(a, W, I, Q, O, N, observer_) \ +{} \ + \ +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> \ +inline sc_ufixed<W, I, Q, O, N>::sc_ufixed( \ + tp a, const sc_fxcast_switch &cast_sw, \ + sc_fxnum_observer *observer_) : \ + sc_ufix(a, W, I, Q, O, N, cast_sw, observer_) \ +{} + +DEFN_CTORS_T(int) +DEFN_CTORS_T(unsigned int) +DEFN_CTORS_T(long) +DEFN_CTORS_T(unsigned long) +DEFN_CTORS_T(float) +DEFN_CTORS_T(double) +DEFN_CTORS_T(const char *) +DEFN_CTORS_T(const sc_fxval &) +DEFN_CTORS_T(const sc_fxval_fast &) +DEFN_CTORS_T(const sc_fxnum &) +DEFN_CTORS_T(const sc_fxnum_fast &) + +DEFN_CTORS_T(int64) +DEFN_CTORS_T(uint64) +DEFN_CTORS_T(const sc_int_base &) +DEFN_CTORS_T(const sc_uint_base &) +DEFN_CTORS_T(const sc_signed &) +DEFN_CTORS_T(const sc_unsigned &) + +#undef DEFN_CTORS_T + +// copy constructor +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> +inline sc_ufixed<W, I, Q, O, N>::sc_ufixed(const sc_ufixed<W, I, Q, O, N> &a) : + sc_ufix(a, W, I, Q, O, N) +{} + +// assignment operators +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> +inline sc_ufixed<W, I, Q, O, N> & +sc_ufixed<W, I, Q, O, N>::operator = (const sc_ufixed<W, I, Q, O, N> &a) +{ + sc_ufix::operator = (a); + return *this; +} + +#define DEFN_ASN_OP_T(op,tp) \ +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> \ +inline sc_ufixed<W, I, Q, O, N> & \ +sc_ufixed<W, I, Q, O, N>::operator op (tp a) \ +{ \ + sc_ufix::operator op (a); \ + return *this; \ +} + +#define DEFN_ASN_OP_OTHER(op) \ +DEFN_ASN_OP_T(op, int64) \ +DEFN_ASN_OP_T(op, uint64) \ +DEFN_ASN_OP_T(op, const sc_int_base &) \ +DEFN_ASN_OP_T(op, const sc_uint_base &) \ +DEFN_ASN_OP_T(op, const sc_signed &) \ +DEFN_ASN_OP_T(op, const sc_unsigned &) + +#define DEFN_ASN_OP(op) \ +DEFN_ASN_OP_T(op, int) \ +DEFN_ASN_OP_T(op, unsigned int) \ +DEFN_ASN_OP_T(op, long) \ +DEFN_ASN_OP_T(op, unsigned long) \ +DEFN_ASN_OP_T(op, float) \ +DEFN_ASN_OP_T(op, double) \ +DEFN_ASN_OP_T(op, const char *) \ +DEFN_ASN_OP_T(op, const sc_fxval &) \ +DEFN_ASN_OP_T(op, const sc_fxval_fast &) \ +DEFN_ASN_OP_T(op, const sc_fxnum &) \ +DEFN_ASN_OP_T(op, const sc_fxnum_fast &) \ +DEFN_ASN_OP_OTHER(op) + +DEFN_ASN_OP(=) + +DEFN_ASN_OP(*=) +DEFN_ASN_OP(/=) +DEFN_ASN_OP(+=) +DEFN_ASN_OP(-=) + +DEFN_ASN_OP_T(<<=, int) +DEFN_ASN_OP_T(>>=, int) + +DEFN_ASN_OP_T(&=, const sc_ufix &) +DEFN_ASN_OP_T(&=, const sc_ufix_fast &) +DEFN_ASN_OP_T(|=, const sc_ufix &) +DEFN_ASN_OP_T(|=, const sc_ufix_fast &) +DEFN_ASN_OP_T(^=, const sc_ufix &) +DEFN_ASN_OP_T(^=, const sc_ufix_fast &) + +#undef DEFN_ASN_OP_T +#undef DEFN_ASN_OP_OTHER +#undef DEFN_ASN_OP + +// auto-increment and auto-decrement +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> +inline const sc_fxval +sc_ufixed<W, I, Q, O, N>::operator ++ (int) +{ + return sc_fxval(sc_ufix::operator ++ (0)); +} + +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> +inline const sc_fxval +sc_ufixed<W, I, Q, O, N>::operator -- (int) +{ + return sc_fxval(sc_ufix::operator -- (0)); +} + +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> +inline sc_ufixed<W, I, Q, O, N> & +sc_ufixed<W, I, Q, O, N>::operator ++ () +{ + sc_ufix::operator ++ (); + return *this; +} + +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> +inline sc_ufixed<W, I, Q, O, N> & +sc_ufixed<W, I, Q, O, N>::operator -- () +{ + sc_ufix::operator -- (); + return *this; +} + + +// ---------------------------------------------------------------------------- +// TEMPLATE CLASS : sc_ufixed_fast +// +// "Constrained" unsigned fixed-point class; limited precision. +// ---------------------------------------------------------------------------- + +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> +inline sc_ufixed_fast<W, I, Q, O, N>::sc_ufixed_fast( + sc_fxnum_fast_observer *observer_) : + sc_ufix_fast(W, I, Q, O, N, observer_) +{} + +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> +inline sc_ufixed_fast<W, I, Q, O, N>::sc_ufixed_fast( + const sc_fxcast_switch &cast_sw, + sc_fxnum_fast_observer *observer_) : + sc_ufix_fast(W, I, Q, O, N, cast_sw, observer_) +{} + +#define DEFN_CTORS_T(tp) \ +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> \ +inline sc_ufixed_fast<W, I, Q, O, N>::sc_ufixed_fast( \ + tp a, sc_fxnum_fast_observer *observer_ ) : \ + sc_ufix_fast(a, W, I, Q, O, N, observer_) \ +{} \ + \ +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> \ +inline sc_ufixed_fast<W, I, Q, O, N>::sc_ufixed_fast( \ + tp a, const sc_fxcast_switch &cast_sw, \ + sc_fxnum_fast_observer *observer_) : \ + sc_ufix_fast(a, W, I, Q, O, N, cast_sw, observer_) \ +{} + +DEFN_CTORS_T(int) +DEFN_CTORS_T(unsigned int) +DEFN_CTORS_T(long) +DEFN_CTORS_T(unsigned long) +DEFN_CTORS_T(float) +DEFN_CTORS_T(double) +DEFN_CTORS_T(const char *) +DEFN_CTORS_T(const sc_fxval &) +DEFN_CTORS_T(const sc_fxval_fast &) +DEFN_CTORS_T(const sc_fxnum &) +DEFN_CTORS_T(const sc_fxnum_fast &) + +DEFN_CTORS_T(int64) +DEFN_CTORS_T(uint64) +DEFN_CTORS_T(const sc_int_base &) +DEFN_CTORS_T(const sc_uint_base &) +DEFN_CTORS_T(const sc_signed &) +DEFN_CTORS_T(const sc_unsigned &) + +#undef DEFN_CTORS_T + +// copy constructor +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> +inline sc_ufixed_fast<W, I, Q, O, N>::sc_ufixed_fast( + const sc_ufixed_fast<W, I, Q, O, N> &a) : + sc_ufix_fast(a, W, I, Q, O, N) +{} + +// assignment operators +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> +inline sc_ufixed_fast<W, I, Q, O, N> & +sc_ufixed_fast<W, I, Q, O, N>::operator = ( + const sc_ufixed_fast<W, I, Q, O, N> &a) +{ + sc_ufix_fast::operator = (a); + return *this; +} + +#define DEFN_ASN_OP_T(op, tp) \ +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> \ +inline sc_ufixed_fast<W, I, Q, O, N> & \ +sc_ufixed_fast<W, I, Q, O, N>::operator op (tp a) \ +{ \ + sc_ufix_fast::operator op (a); \ + return *this; \ +} + +#define DEFN_ASN_OP_OTHER(op) \ +DEFN_ASN_OP_T(op, int64) \ +DEFN_ASN_OP_T(op, uint64) \ +DEFN_ASN_OP_T(op, const sc_int_base &) \ +DEFN_ASN_OP_T(op, const sc_uint_base &) \ +DEFN_ASN_OP_T(op, const sc_signed &) \ +DEFN_ASN_OP_T(op, const sc_unsigned &) + +#define DEFN_ASN_OP(op) \ +DEFN_ASN_OP_T(op, int) \ +DEFN_ASN_OP_T(op, unsigned int) \ +DEFN_ASN_OP_T(op, long) \ +DEFN_ASN_OP_T(op, unsigned long) \ +DEFN_ASN_OP_T(op, float) \ +DEFN_ASN_OP_T(op, double) \ +DEFN_ASN_OP_T(op, const char *) \ +DEFN_ASN_OP_T(op, const sc_fxval &) \ +DEFN_ASN_OP_T(op, const sc_fxval_fast &) \ +DEFN_ASN_OP_T(op, const sc_fxnum &) \ +DEFN_ASN_OP_T(op, const sc_fxnum_fast &) \ +DEFN_ASN_OP_OTHER(op) + +DEFN_ASN_OP(=) + +DEFN_ASN_OP(*=) +DEFN_ASN_OP(/=) +DEFN_ASN_OP(+=) +DEFN_ASN_OP(-=) + +DEFN_ASN_OP_T(<<=, int) +DEFN_ASN_OP_T(>>=, int) + +DEFN_ASN_OP_T(&=, const sc_ufix &) +DEFN_ASN_OP_T(&=, const sc_ufix_fast &) +DEFN_ASN_OP_T(|=, const sc_ufix &) +DEFN_ASN_OP_T(|=, const sc_ufix_fast &) +DEFN_ASN_OP_T(^=, const sc_ufix &) +DEFN_ASN_OP_T(^=, const sc_ufix_fast &) + +#undef DEFN_ASN_OP_T +#undef DEFN_ASN_OP_OTHER +#undef DEFN_ASN_OP + +// auto-increment and auto-decrement +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> +inline const sc_fxval_fast +sc_ufixed_fast<W, I, Q, O, N>::operator ++ (int) +{ + return sc_fxval_fast( sc_ufix_fast::operator ++ (0)); +} + +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> +inline const sc_fxval_fast +sc_ufixed_fast<W, I, Q, O, N>::operator -- (int) +{ + return sc_fxval_fast( sc_ufix_fast::operator -- (0)); +} + +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> +inline sc_ufixed_fast<W, I, Q, O, N> & +sc_ufixed_fast<W, I, Q, O, N>::operator ++ () +{ + sc_ufix_fast::operator ++ (); + return *this; +} + +template<int W, int I, sc_q_mode Q, sc_o_mode O, int N> +inline sc_ufixed_fast<W, I, Q, O, N> & +sc_ufixed_fast<W,I,Q,O,N>::operator -- () +{ + sc_ufix_fast::operator -- (); + return *this; +} + +} // namespace sc_dt + +#endif // __SYSTEMC_EXT_DT_FX_SC_UFIXED_HH__ |