ネームスペース sc_dt


構成

class  sc_bit
class  sc_bitref_r
class  sc_bitref
class  sc_subref_r
class  sc_subref
class  sc_concref_r
class  sc_concref
class  sc_bv
class  sc_bv_base
class  sc_logic
class  sc_lv
class  sc_lv_base
class  sc_proxy
class  sc_without_context
class  sc_global
class  sc_context
class  sc_fix
class  sc_fix_fast
class  sc_fixed
class  sc_fixed_fast
class  sc_fxcast_switch
class  sc_fxnum_bitref
class  sc_fxnum_fast_bitref
class  sc_fxnum_subref
class  sc_fxnum_fast_subref
class  sc_fxnum
class  sc_fxnum_fast
class  sc_fxnum_observer
class  sc_fxnum_fast_observer
class  sc_fxtype_params
class  sc_fxval
class  sc_fxval_fast
class  sc_fxval_observer
class  sc_fxval_fast_observer
class  sc_ufix
class  sc_ufix_fast
class  sc_ufixed
class  sc_ufixed_fast
union  ieee_double
class  scfx_ieee_double
union  ieee_float
class  scfx_ieee_float
class  word_list
class  scfx_mant
class  scfx_mant_ref
class  scfx_params
class  scfx_pow10
union  scfx_rep_node
union  word_short
class  scfx_index
class  scfx_rep
class  scfx_string
class  sc_bigint
class  sc_biguint
class  sc_int
class  sc_int_bitref_r
class  sc_int_bitref
class  sc_int_subref_r
class  sc_int_subref
class  sc_int_base
class  sc_length_param
class  sc_signed_bitref_r
class  sc_signed_bitref
class  sc_signed_subref_r
class  sc_signed_subref
class  sc_signed
class  sc_uint
class  sc_uint_bitref_r
class  sc_uint_bitref
class  sc_uint_subref_r
class  sc_uint_subref
class  sc_uint_base
class  sc_unsigned_bitref_r
class  sc_unsigned_bitref
class  sc_unsigned_subref_r
class  sc_unsigned_subref
class  sc_unsigned
class  sc_concatref
class  sc_concat_bool
class  sc_value_base
class  sc_generic_base
class  sc_string_rep
class  sc_string_old

型定義

typedef sc_context
< sc_fxcast_switch
sc_fxcast_context
typedef sc_context
< sc_fxtype_params
sc_fxtype_context
typedef unsigned int word
typedef unsigned short half_word
typedef sc_context
< sc_length_param
sc_length_context
typedef unsigned char uchar
typedef int small_type
typedef unsigned int sc_digit
typedef long long int64
typedef unsigned long long uint64
typedef ::std::ios::fmtflags fmtflags
typedef int64 int_type
typedef uint64 uint_type
typedef ::std::istream systemc_istream
typedef ::std::ostream systemc_ostream

列挙型

enum  sc_logic_value_t { Log_0 = 0, Log_1, Log_Z, Log_X }
enum  sc_context_begin { SC_NOW, SC_LATER }
enum  sc_enc { SC_TC_, SC_US_ }
enum  sc_q_mode {
  SC_RND, SC_RND_ZERO, SC_RND_MIN_INF, SC_RND_INF,
  SC_RND_CONV, SC_TRN, SC_TRN_ZERO
}
enum  sc_o_mode {
  SC_SAT, SC_SAT_ZERO, SC_SAT_SYM, SC_WRAP,
  SC_WRAP_SM
}
enum  sc_switch { SC_OFF, SC_ON }
enum  sc_fmt { SC_F, SC_E }
enum  sc_numrep {
  SC_NOBASE = 0, SC_BIN = 2, SC_OCT = 8, SC_DEC = 10,
  SC_HEX = 16, SC_BIN_US, SC_BIN_SM, SC_OCT_US,
  SC_OCT_SM, SC_HEX_US, SC_HEX_SM, SC_CSD
}

関数

void sc_deprecated_sc_bit ()
bool operator== (const sc_bit &a, const sc_bit &b)
bool operator== (const sc_bit &a, int b)
bool operator== (const sc_bit &a, bool b)
bool operator== (const sc_bit &a, char b)
bool operator== (int a, const sc_bit &b)
bool operator== (bool a, const sc_bit &b)
bool operator== (char a, const sc_bit &b)
bool equal (const sc_bit &a, const sc_bit &b)
bool equal (const sc_bit &a, int b)
bool equal (const sc_bit &a, bool b)
bool equal (const sc_bit &a, char b)
bool equal (int a, const sc_bit &b)
bool equal (bool a, const sc_bit &b)
bool equal (char a, const sc_bit &b)
bool operator!= (const sc_bit &a, const sc_bit &b)
bool operator!= (const sc_bit &a, int b)
bool operator!= (const sc_bit &a, bool b)
bool operator!= (const sc_bit &a, char b)
bool operator!= (int a, const sc_bit &b)
bool operator!= (bool a, const sc_bit &b)
bool operator!= (char a, const sc_bit &b)
bool not_equal (const sc_bit &a, const sc_bit &b)
bool not_equal (const sc_bit &a, int b)
bool not_equal (const sc_bit &a, bool b)
bool not_equal (const sc_bit &a, char b)
bool not_equal (int a, const sc_bit &b)
bool not_equal (bool a, const sc_bit &b)
bool not_equal (char a, const sc_bit &b)
const sc_bit operator~ (const sc_bit &a)
const sc_bit b_not (const sc_bit &a)
void b_not (sc_bit &r, const sc_bit &a)
const sc_bit operator| (const sc_bit &a, const sc_bit &b)
const sc_bit operator| (const sc_bit &a, int b)
const sc_bit operator| (const sc_bit &a, bool b)
const sc_bit operator| (const sc_bit &a, char b)
const sc_bit operator| (int a, const sc_bit &b)
const sc_bit operator| (bool a, const sc_bit &b)
const sc_bit operator| (char a, const sc_bit &b)
const sc_bit b_or (const sc_bit &a, const sc_bit &b)
const sc_bit b_or (const sc_bit &a, int b)
const sc_bit b_or (const sc_bit &a, bool b)
const sc_bit b_or (const sc_bit &a, char b)
const sc_bit b_or (int a, const sc_bit &b)
const sc_bit b_or (bool a, const sc_bit &b)
const sc_bit b_or (char a, const sc_bit &b)
void b_or (sc_bit &r, const sc_bit &a, const sc_bit &b)
void b_or (sc_bit &r, const sc_bit &a, int b)
void b_or (sc_bit &r, const sc_bit &a, bool b)
void b_or (sc_bit &r, const sc_bit &a, char b)
void b_or (sc_bit &r, int a, const sc_bit &b)
void b_or (sc_bit &r, bool a, const sc_bit &b)
void b_or (sc_bit &r, char a, const sc_bit &b)
const sc_bit operator & (const sc_bit &a, const sc_bit &b)
const sc_bit operator & (const sc_bit &a, int b)
const sc_bit operator & (const sc_bit &a, bool b)
const sc_bit operator & (const sc_bit &a, char b)
const sc_bit operator & (int a, const sc_bit &b)
const sc_bit operator & (bool a, const sc_bit &b)
const sc_bit operator & (char a, const sc_bit &b)
const sc_bit b_and (const sc_bit &a, const sc_bit &b)
const sc_bit b_and (const sc_bit &a, int b)
const sc_bit b_and (const sc_bit &a, bool b)
const sc_bit b_and (const sc_bit &a, char b)
const sc_bit b_and (int a, const sc_bit &b)
const sc_bit b_and (bool a, const sc_bit &b)
const sc_bit b_and (char a, const sc_bit &b)
void b_and (sc_bit &r, const sc_bit &a, const sc_bit &b)
void b_and (sc_bit &r, const sc_bit &a, int b)
void b_and (sc_bit &r, const sc_bit &a, bool b)
void b_and (sc_bit &r, const sc_bit &a, char b)
void b_and (sc_bit &r, int a, const sc_bit &b)
void b_and (sc_bit &r, bool a, const sc_bit &b)
void b_and (sc_bit &r, char a, const sc_bit &b)
const sc_bit operator^ (const sc_bit &a, const sc_bit &b)
const sc_bit operator^ (const sc_bit &a, int b)
const sc_bit operator^ (const sc_bit &a, bool b)
const sc_bit operator^ (const sc_bit &a, char b)
const sc_bit operator^ (int a, const sc_bit &b)
const sc_bit operator^ (bool a, const sc_bit &b)
const sc_bit operator^ (char a, const sc_bit &b)
const sc_bit b_xor (const sc_bit &a, const sc_bit &b)
const sc_bit b_xor (const sc_bit &a, int b)
const sc_bit b_xor (const sc_bit &a, bool b)
const sc_bit b_xor (const sc_bit &a, char b)
const sc_bit b_xor (int a, const sc_bit &b)
const sc_bit b_xor (bool a, const sc_bit &b)
const sc_bit b_xor (char a, const sc_bit &b)
void b_xor (sc_bit &r, const sc_bit &a, const sc_bit &b)
void b_xor (sc_bit &r, const sc_bit &a, int b)
void b_xor (sc_bit &r, const sc_bit &a, bool b)
void b_xor (sc_bit &r, const sc_bit &a, char b)
void b_xor (sc_bit &r, int a, const sc_bit &b)
void b_xor (sc_bit &r, bool a, const sc_bit &b)
void b_xor (sc_bit &r, char a, const sc_bit &b)
inline::std::ostream & operator<< (::std::ostream &os, const sc_bit &a)
inline::std::istream & operator>> (::std::istream &is, sc_bit &a)
template<class T1, class T2>
const sc_logic operator & (const sc_bitref_r< T1 > &a, const sc_bitref_r< T2 > &b)
template<class T1, class T2>
const sc_logic operator| (const sc_bitref_r< T1 > &a, const sc_bitref_r< T2 > &b)
template<class T1, class T2>
const sc_logic operator^ (const sc_bitref_r< T1 > &a, const sc_bitref_r< T2 > &b)
template<class T1, class T2>
bool operator== (const sc_bitref_r< T1 > &a, const sc_bitref_r< T2 > &b)
template<class T1, class T2>
bool operator!= (const sc_bitref_r< T1 > &a, const sc_bitref_r< T2 > &b)
template<class T1, class T2>
sc_concref_r< sc_bitref_r< T1 >
, sc_bitref_r< T2 > > 
operator, (sc_bitref_r< T1 >, sc_bitref_r< T2 >)
template<class T1, class T2>
sc_concref_r< sc_bitref_r< T1 >
, sc_subref_r< T2 > > 
operator, (sc_bitref_r< T1 >, sc_subref_r< T2 >)
template<class T1, class T2, class T3>
sc_concref_r< sc_bitref_r< T1 >
, sc_concref_r< T2, T3 > > 
operator, (sc_bitref_r< T1 >, sc_concref_r< T2, T3 >)
template<class T1, class T2>
sc_concref_r< sc_bitref_r< T1 >
, T2 > 
operator, (sc_bitref_r< T1 >, const sc_proxy< T2 > &)
template<class T>
sc_concref_r< sc_bitref_r< T >
, sc_lv_base
operator, (sc_bitref_r< T >, const char *)
template<class T>
sc_concref_r< sc_lv_base,
sc_bitref_r< T > > 
operator, (const char *, sc_bitref_r< T >)
template<class T>
sc_concref_r< sc_bitref_r< T >
, sc_lv_base
operator, (sc_bitref_r< T >, const sc_logic &)
template<class T>
sc_concref_r< sc_lv_base,
sc_bitref_r< T > > 
operator, (const sc_logic &, sc_bitref_r< T >)
template<class T>
sc_concref_r< sc_bitref_r< T >
, sc_lv_base
operator, (sc_bitref_r< T >, bool)
template<class T>
sc_concref_r< sc_lv_base,
sc_bitref_r< T > > 
operator, (bool, sc_bitref_r< T >)
template<class T1, class T2>
sc_concref_r< sc_bitref_r< T1 >
, sc_bitref_r< T2 > > 
concat (sc_bitref_r< T1 >, sc_bitref_r< T2 >)
template<class T1, class T2>
sc_concref_r< sc_bitref_r< T1 >
, sc_subref_r< T2 > > 
concat (sc_bitref_r< T1 >, sc_subref_r< T2 >)
template<class T1, class T2, class T3>
sc_concref_r< sc_bitref_r< T1 >
, sc_concref_r< T2, T3 > > 
concat (sc_bitref_r< T1 >, sc_concref_r< T2, T3 >)
template<class T1, class T2>
sc_concref_r< sc_bitref_r< T1 >
, T2 > 
concat (sc_bitref_r< T1 >, const sc_proxy< T2 > &)
template<class T>
sc_concref_r< sc_bitref_r< T >
, sc_lv_base
concat (sc_bitref_r< T >, const char *)
template<class T>
sc_concref_r< sc_lv_base,
sc_bitref_r< T > > 
concat (const char *, sc_bitref_r< T >)
template<class T>
sc_concref_r< sc_bitref_r< T >
, sc_lv_base
concat (sc_bitref_r< T >, const sc_logic &)
template<class T>
sc_concref_r< sc_lv_base,
sc_bitref_r< T > > 
concat (const sc_logic &, sc_bitref_r< T >)
template<class T>
sc_concref_r< sc_bitref_r< T >
, sc_lv_base
concat (sc_bitref_r< T >, bool)
template<class T>
sc_concref_r< sc_lv_base,
sc_bitref_r< T > > 
concat (bool, sc_bitref_r< T >)
template<class T1, class T2>
sc_concref< sc_bitref< T1 >
, sc_bitref< T2 > > 
operator, (sc_bitref< T1 >, sc_bitref< T2 >)
template<class T1, class T2>
sc_concref< sc_bitref< T1 >
, sc_subref< T2 > > 
operator, (sc_bitref< T1 >, sc_subref< T2 >)
template<class T1, class T2, class T3>
sc_concref< sc_bitref< T1 >
, sc_concref< T2, T3 > > 
operator, (sc_bitref< T1 >, sc_concref< T2, T3 >)
template<class T1, class T2>
sc_concref< sc_bitref< T1 >, T2 > operator, (sc_bitref< T1 >, sc_proxy< T2 > &)
template<class T1, class T2>
sc_concref< sc_bitref< T1 >
, sc_bitref< T2 > > 
concat (sc_bitref< T1 >, sc_bitref< T2 >)
template<class T1, class T2>
sc_concref< sc_bitref< T1 >
, sc_subref< T2 > > 
concat (sc_bitref< T1 >, sc_subref< T2 >)
template<class T1, class T2, class T3>
sc_concref< sc_bitref< T1 >
, sc_concref< T2, T3 > > 
concat (sc_bitref< T1 >, sc_concref< T2, T3 >)
template<class T1, class T2>
sc_concref< sc_bitref< T1 >, T2 > concat (sc_bitref< T1 >, sc_proxy< T2 > &)
template<class T>
::std::istream & operator>> (::std::istream &, sc_bitref< T >)
template<class T1, class T2>
sc_concref_r< sc_subref_r< T1 >
, sc_bitref_r< T2 > > 
operator, (sc_subref_r< T1 >, sc_bitref_r< T2 >)
template<class T1, class T2>
sc_concref_r< sc_subref_r< T1 >
, sc_subref_r< T2 > > 
operator, (sc_subref_r< T1 >, sc_subref_r< T2 >)
template<class T1, class T2, class T3>
sc_concref_r< sc_subref_r< T1 >
, sc_concref_r< T2, T3 > > 
operator, (sc_subref_r< T1 >, sc_concref_r< T2, T3 >)
template<class T1, class T2>
sc_concref_r< sc_subref_r< T1 >
, T2 > 
operator, (sc_subref_r< T1 >, const sc_proxy< T2 > &)
template<class T>
sc_concref_r< sc_subref_r< T >
, sc_lv_base
operator, (sc_subref_r< T >, const char *)
template<class T>
sc_concref_r< sc_lv_base,
sc_subref_r< T > > 
operator, (const char *, sc_subref_r< T >)
template<class T>
sc_concref_r< sc_subref_r< T >
, sc_lv_base
operator, (sc_subref_r< T >, const sc_logic &)
template<class T>
sc_concref_r< sc_lv_base,
sc_subref_r< T > > 
operator, (const sc_logic &, sc_subref_r< T >)
template<class T>
sc_concref_r< sc_subref_r< T >
, sc_lv_base
operator, (sc_subref_r< T >, bool)
template<class T>
sc_concref_r< sc_lv_base,
sc_subref_r< T > > 
operator, (bool, sc_subref_r< T >)
template<class T1, class T2>
sc_concref_r< sc_subref_r< T1 >
, sc_bitref_r< T2 > > 
concat (sc_subref_r< T1 >, sc_bitref_r< T2 >)
template<class T1, class T2>
sc_concref_r< sc_subref_r< T1 >
, sc_subref_r< T2 > > 
concat (sc_subref_r< T1 >, sc_subref_r< T2 >)
template<class T1, class T2, class T3>
sc_concref_r< sc_subref_r< T1 >
, sc_concref_r< T2, T3 > > 
concat (sc_subref_r< T1 >, sc_concref_r< T2, T3 >)
template<class T1, class T2>
sc_concref_r< sc_subref_r< T1 >
, T2 > 
concat (sc_subref_r< T1 >, const sc_proxy< T2 > &)
template<class T>
sc_concref_r< sc_subref_r< T >
, sc_lv_base
concat (sc_subref_r< T >, const char *)
template<class T>
sc_concref_r< sc_lv_base,
sc_subref_r< T > > 
concat (const char *, sc_subref_r< T >)
template<class T>
sc_concref_r< sc_subref_r< T >
, sc_lv_base
concat (sc_subref_r< T >, const sc_logic &)
template<class T>
sc_concref_r< sc_lv_base,
sc_subref_r< T > > 
concat (const sc_logic &, sc_subref_r< T >)
template<class T>
sc_concref_r< sc_subref_r< T >
, sc_lv_base
concat (sc_subref_r< T >, bool)
template<class T>
sc_concref_r< sc_lv_base,
sc_subref_r< T > > 
concat (bool, sc_subref_r< T >)
template<class T1, class T2>
sc_concref< sc_subref< T1 >
, sc_bitref< T2 > > 
operator, (sc_subref< T1 >, sc_bitref< T2 >)
template<class T1, class T2>
sc_concref< sc_subref< T1 >
, sc_subref< T2 > > 
operator, (sc_subref< T1 >, sc_subref< T2 >)
template<class T1, class T2, class T3>
sc_concref< sc_subref< T1 >
, sc_concref< T2, T3 > > 
operator, (sc_subref< T1 >, sc_concref< T2, T3 >)
template<class T1, class T2>
sc_concref< sc_subref< T1 >, T2 > operator, (sc_subref< T1 >, sc_proxy< T2 > &)
template<class T1, class T2>
sc_concref< sc_subref< T1 >
, sc_bitref< T2 > > 
concat (sc_subref< T1 >, sc_bitref< T2 >)
template<class T1, class T2>
sc_concref< sc_subref< T1 >
, sc_subref< T2 > > 
concat (sc_subref< T1 >, sc_subref< T2 >)
template<class T1, class T2, class T3>
sc_concref< sc_subref< T1 >
, sc_concref< T2, T3 > > 
concat (sc_subref< T1 >, sc_concref< T2, T3 >)
template<class T1, class T2>
sc_concref< sc_subref< T1 >, T2 > concat (sc_subref< T1 >, sc_proxy< T2 > &)
template<class T>
inline::std::istream & operator>> (::std::istream &, sc_subref< T >)
template<class T1, class T2, class T3>
sc_concref_r< sc_concref_r< T1,
T2 >, sc_bitref_r< T3 > > 
operator, (sc_concref_r< T1, T2 >, sc_bitref_r< T3 >)
template<class T1, class T2, class T3>
sc_concref_r< sc_concref_r< T1,
T2 >, sc_subref_r< T3 > > 
operator, (sc_concref_r< T1, T2 >, sc_subref_r< T3 >)
template<class T1, class T2, class T3, class T4>
sc_concref_r< sc_concref_r< T1,
T2 >, sc_concref_r< T3, T4 > > 
operator, (sc_concref_r< T1, T2 >, sc_concref_r< T3, T4 >)
template<class T1, class T2, class T3>
sc_concref_r< sc_concref_r< T1,
T2 >, T3 > 
operator, (sc_concref_r< T1, T2 >, const sc_proxy< T3 > &)
template<class T1, class T2>
sc_concref_r< sc_concref_r< T1,
T2 >, sc_lv_base
operator, (sc_concref_r< T1, T2 >, const char *)
template<class T1, class T2>
sc_concref_r< sc_lv_base,
sc_concref_r< T1, T2 > > 
operator, (const char *, sc_concref_r< T1, T2 >)
template<class T1, class T2>
sc_concref_r< sc_concref_r< T1,
T2 >, sc_lv_base
operator, (sc_concref_r< T1, T2 >, const sc_logic &)
template<class T1, class T2>
sc_concref_r< sc_lv_base,
sc_concref_r< T1, T2 > > 
operator, (const sc_logic &, sc_concref_r< T1, T2 >)
template<class T1, class T2>
sc_concref_r< sc_concref_r< T1,
T2 >, sc_lv_base
operator, (sc_concref_r< T1, T2 >, bool)
template<class T1, class T2>
sc_concref_r< sc_lv_base,
sc_concref_r< T1, T2 > > 
operator, (bool, sc_concref_r< T1, T2 >)
template<class T1, class T2, class T3>
sc_concref_r< sc_concref_r< T1,
T2 >, sc_bitref_r< T3 > > 
concat (sc_concref_r< T1, T2 >, sc_bitref_r< T3 >)
template<class T1, class T2, class T3>
sc_concref_r< sc_concref_r< T1,
T2 >, sc_subref_r< T3 > > 
concat (sc_concref_r< T1, T2 >, sc_subref_r< T3 >)
template<class T1, class T2, class T3, class T4>
sc_concref_r< sc_concref_r< T1,
T2 >, sc_concref_r< T3, T4 > > 
concat (sc_concref_r< T1, T2 >, sc_concref_r< T3, T4 >)
template<class T1, class T2, class T3>
sc_concref_r< sc_concref_r< T1,
T2 >, T3 > 
concat (sc_concref_r< T1, T2 >, const sc_proxy< T3 > &)
template<class T1, class T2>
sc_concref_r< sc_concref_r< T1,
T2 >, sc_lv_base
concat (sc_concref_r< T1, T2 >, const char *)
template<class T1, class T2>
sc_concref_r< sc_lv_base,
sc_concref_r< T1, T2 > > 
concat (const char *, sc_concref_r< T1, T2 >)
template<class T1, class T2>
sc_concref_r< sc_concref_r< T1,
T2 >, sc_lv_base
concat (sc_concref_r< T1, T2 >, const sc_logic &)
template<class T1, class T2>
sc_concref_r< sc_lv_base,
sc_concref_r< T1, T2 > > 
concat (const sc_logic &, sc_concref_r< T1, T2 >)
template<class T1, class T2>
sc_concref_r< sc_concref_r< T1,
T2 >, sc_lv_base
concat (sc_concref_r< T1, T2 >, bool)
template<class T1, class T2>
sc_concref_r< sc_lv_base,
sc_concref_r< T1, T2 > > 
concat (bool, sc_concref_r< T1, T2 >)
template<class T1, class T2, class T3>
sc_concref< sc_concref< T1, T2 >
, sc_bitref< T3 > > 
operator, (sc_concref< T1, T2 >, sc_bitref< T3 >)
template<class T1, class T2, class T3>
sc_concref< sc_concref< T1, T2 >
, sc_subref< T3 > > 
operator, (sc_concref< T1, T2 >, sc_subref< T3 >)
template<class T1, class T2, class T3, class T4>
sc_concref< sc_concref< T1, T2 >
, sc_concref< T3, T4 > > 
operator, (sc_concref< T1, T2 >, sc_concref< T3, T4 >)
template<class T1, class T2, class T3>
sc_concref< sc_concref< T1, T2 >
, T3 > 
operator, (sc_concref< T1, T2 >, sc_proxy< T3 > &)
template<class T1, class T2, class T3>
sc_concref< sc_concref< T1, T2 >
, sc_bitref< T3 > > 
concat (sc_concref< T1, T2 >, sc_bitref< T3 >)
template<class T1, class T2, class T3>
sc_concref< sc_concref< T1, T2 >
, sc_subref< T3 > > 
concat (sc_concref< T1, T2 >, sc_subref< T3 >)
template<class T1, class T2, class T3, class T4>
sc_concref< sc_concref< T1, T2 >
, sc_concref< T3, T4 > > 
concat (sc_concref< T1, T2 >, sc_concref< T3, T4 >)
template<class T1, class T2, class T3>
sc_concref< sc_concref< T1, T2 >
, T3 > 
concat (sc_concref< T1, T2 >, sc_proxy< T3 > &)
template<class T1, class T2>
inline::std::istream & operator>> (::std::istream &, sc_concref< T1, T2 >)
template<class T1, class T2>
sc_concref_r< T1, sc_bitref_r
< T2 > > 
operator, (const sc_proxy< T1 > &, sc_bitref_r< T2 >)
template<class T1, class T2>
sc_concref_r< T1, sc_subref_r
< T2 > > 
operator, (const sc_proxy< T1 > &, sc_subref_r< T2 >)
template<class T1, class T2, class T3>
sc_concref_r< T1, sc_concref_r
< T2, T3 > > 
operator, (const sc_proxy< T1 > &, sc_concref_r< T2, T3 >)
template<class T1, class T2>
sc_concref_r< T1, T2 > operator, (const sc_proxy< T1 > &, const sc_proxy< T2 > &)
template<class T>
sc_concref_r< T, sc_lv_baseoperator, (const sc_proxy< T > &, const char *)
template<class T>
sc_concref_r< sc_lv_base, T > operator, (const char *, const sc_proxy< T > &)
template<class T>
sc_concref_r< T, sc_lv_baseoperator, (const sc_proxy< T > &, const sc_logic &)
template<class T>
sc_concref_r< sc_lv_base, T > operator, (const sc_logic &, const sc_proxy< T > &)
template<class T>
sc_concref_r< T, sc_lv_baseoperator, (const sc_proxy< T > &, bool)
template<class T>
sc_concref_r< sc_lv_base, T > operator, (bool, const sc_proxy< T > &)
template<class T1, class T2>
sc_concref_r< T1, sc_bitref_r
< T2 > > 
concat (const sc_proxy< T1 > &, sc_bitref_r< T2 >)
template<class T1, class T2>
sc_concref_r< T1, sc_subref_r
< T2 > > 
concat (const sc_proxy< T1 > &, sc_subref_r< T2 >)
template<class T1, class T2, class T3>
sc_concref_r< T1, sc_concref_r
< T2, T3 > > 
concat (const sc_proxy< T1 > &, sc_concref_r< T2, T3 >)
template<class T1, class T2>
sc_concref_r< T1, T2 > concat (const sc_proxy< T1 > &, const sc_proxy< T2 > &)
template<class T>
sc_concref_r< T, sc_lv_baseconcat (const sc_proxy< T > &, const char *)
template<class T>
sc_concref_r< sc_lv_base, T > concat (const char *, const sc_proxy< T > &)
template<class T>
sc_concref_r< T, sc_lv_baseconcat (const sc_proxy< T > &, const sc_logic &)
template<class T>
sc_concref_r< sc_lv_base, T > concat (const sc_logic &, const sc_proxy< T > &)
template<class T>
sc_concref_r< T, sc_lv_baseconcat (const sc_proxy< T > &, bool)
template<class T>
sc_concref_r< sc_lv_base, T > concat (bool, const sc_proxy< T > &)
template<class T1, class T2>
sc_concref< T1, sc_bitref< T2 > > operator, (sc_proxy< T1 > &, sc_bitref< T2 >)
template<class T1, class T2>
sc_concref< T1, sc_subref< T2 > > operator, (sc_proxy< T1 > &, sc_subref< T2 >)
template<class T1, class T2, class T3>
sc_concref< T1, sc_concref< T2,
T3 > > 
operator, (sc_proxy< T1 > &, sc_concref< T2, T3 >)
template<class T1, class T2>
sc_concref< T1, T2 > operator, (sc_proxy< T1 > &, sc_proxy< T2 > &)
template<class T1, class T2>
sc_concref< T1, sc_bitref< T2 > > concat (sc_proxy< T1 > &, sc_bitref< T2 >)
template<class T1, class T2>
sc_concref< T1, sc_subref< T2 > > concat (sc_proxy< T1 > &, sc_subref< T2 >)
template<class T1, class T2, class T3>
sc_concref< T1, sc_concref< T2,
T3 > > 
concat (sc_proxy< T1 > &, sc_concref< T2, T3 >)
template<class T1, class T2>
sc_concref< T1, T2 > concat (sc_proxy< T1 > &, sc_proxy< T2 > &)
template<class X>
inline::std::istream & operator>> (::std::istream &is, sc_bitref< X > a)
template<class X>
inline::std::istream & operator>> (::std::istream &is, sc_subref< X > a)
template<class X, class Y>
inline::std::istream & operator>> (::std::istream &is, sc_concref< X, Y > a)
const std::string convert_to_bin (const char *s)
const std::string convert_to_fmt (const std::string &s, sc_numrep numrep, bool w_prefix)
const sc_logic operator & (const sc_logic &a, const sc_logic &b)
const sc_logic operator & (const sc_logic &a, sc_logic_value_t b)
const sc_logic operator & (const sc_logic &a, bool b)
const sc_logic operator & (const sc_logic &a, char b)
const sc_logic operator & (const sc_logic &a, int b)
const sc_logic operator & (sc_logic_value_t a, const sc_logic &b)
const sc_logic operator & (bool a, const sc_logic &b)
const sc_logic operator & (char a, const sc_logic &b)
const sc_logic operator & (int a, const sc_logic &b)
const sc_logic operator| (const sc_logic &a, const sc_logic &b)
const sc_logic operator| (const sc_logic &a, sc_logic_value_t b)
const sc_logic operator| (const sc_logic &a, bool b)
const sc_logic operator| (const sc_logic &a, char b)
const sc_logic operator| (const sc_logic &a, int b)
const sc_logic operator| (sc_logic_value_t a, const sc_logic &b)
const sc_logic operator| (bool a, const sc_logic &b)
const sc_logic operator| (char a, const sc_logic &b)
const sc_logic operator| (int a, const sc_logic &b)
const sc_logic operator^ (const sc_logic &a, const sc_logic &b)
const sc_logic operator^ (const sc_logic &a, sc_logic_value_t b)
const sc_logic operator^ (const sc_logic &a, bool b)
const sc_logic operator^ (const sc_logic &a, char b)
const sc_logic operator^ (const sc_logic &a, int b)
const sc_logic operator^ (sc_logic_value_t a, const sc_logic &b)
const sc_logic operator^ (bool a, const sc_logic &b)
const sc_logic operator^ (char a, const sc_logic &b)
const sc_logic operator^ (int a, const sc_logic &b)
bool operator== (const sc_logic &a, const sc_logic &b)
bool operator== (const sc_logic &a, sc_logic_value_t b)
bool operator== (const sc_logic &a, bool b)
bool operator== (const sc_logic &a, char b)
bool operator== (const sc_logic &a, int b)
bool operator== (sc_logic_value_t a, const sc_logic &b)
bool operator== (bool a, const sc_logic &b)
bool operator== (char a, const sc_logic &b)
bool operator== (int a, const sc_logic &b)
bool operator!= (const sc_logic &a, const sc_logic &b)
bool operator!= (const sc_logic &a, sc_logic_value_t b)
bool operator!= (const sc_logic &a, bool b)
bool operator!= (const sc_logic &a, char b)
bool operator!= (const sc_logic &a, int b)
bool operator!= (sc_logic_value_t a, const sc_logic &b)
bool operator!= (bool a, const sc_logic &b)
bool operator!= (char a, const sc_logic &b)
bool operator!= (int a, const sc_logic &b)
inline::std::ostream & operator<< (::std::ostream &os, const sc_logic &a)
inline::std::istream & operator>> (::std::istream &is, sc_logic &a)
template<class X, class Y>
X & operator &= (sc_proxy< X > &px, const sc_proxy< Y > &py)
template<class X, class Y>
const sc_lv_base operator & (const sc_proxy< X > &px, const sc_proxy< Y > &py)
template<class X, class Y>
X & operator|= (sc_proxy< X > &px, const sc_proxy< Y > &py)
template<class X, class Y>
const sc_lv_base operator| (const sc_proxy< X > &px, const sc_proxy< Y > &py)
template<class X, class Y>
X & operator^= (sc_proxy< X > &px, const sc_proxy< Y > &py)
template<class X, class Y>
const sc_lv_base operator^ (const sc_proxy< X > &px, const sc_proxy< Y > &py)
template<class X>
const sc_lv_base lrotate (const sc_proxy< X > &x, int n)
template<class X>
const sc_lv_base rrotate (const sc_proxy< X > &x, int n)
template<class X>
const sc_lv_base reverse (const sc_proxy< X > &x)
template<class X, class Y>
bool operator== (const sc_proxy< X > &px, const sc_proxy< Y > &py)
template<class X, class Y>
void assign_p_ (sc_proxy< X > &px, const sc_proxy< Y > &py)
template<class X, class T>
void assign_v_ (sc_proxy< X > &px, const T &a)
template<class X, class Y>
bool operator!= (const sc_proxy< X > &px, const sc_proxy< Y > &py)
template<class X>
void get_words_ (const X &x, int wi, sc_digit &x_dw, sc_digit &x_cw)
template<class X>
void set_words_ (X &x, int wi, sc_digit x_dw, sc_digit x_cw)
template<class X>
void extend_sign_w_ (X &x, int wi, bool sign)
template<class X>
void assign_v_ (sc_proxy< X > &px, const sc_int_base &a)
template<class X>
void assign_v_ (sc_proxy< X > &px, const sc_signed &a)
template<class X>
void assign_v_ (sc_proxy< X > &px, const sc_uint_base &a)
template<class X>
void assign_v_ (sc_proxy< X > &px, const sc_unsigned &a)
template<class X, class Y>
X & b_and_assign_ (sc_proxy< X > &px, const sc_proxy< Y > &py)
template<class X, class Y>
X & b_or_assign_ (sc_proxy< X > &px, const sc_proxy< Y > &py)
template<class X, class Y>
X & b_xor_assign_ (sc_proxy< X > &a, const sc_proxy< Y > &b)
template<class X>
sc_logic_value_t and_reduce (const sc_proxy< X > &a)
template<class X>
sc_logic_value_t nand_reduce (const sc_proxy< X > &a)
template<class X>
sc_logic_value_t or_reduce (const sc_proxy< X > &a)
template<class X>
sc_logic_value_t nor_reduce (const sc_proxy< X > &a)
template<class X>
sc_logic_value_t xor_reduce (const sc_proxy< X > &a)
template<class X>
sc_logic_value_t xnor_reduce (const sc_proxy< X > &a)
template<class X>
inline::std::ostream & operator<< (::std::ostream &os, const sc_proxy< X > &a)
template<class X>
inline::std::istream & operator>> (::std::istream &is, sc_proxy< X > &a)
void b_not (sc_fix &c, const sc_fix &a)
void b_not (sc_fix_fast &c, const sc_fix_fast &a)
bool operator== (const sc_fxcast_switch &a, const sc_fxcast_switch &b)
bool operator!= (const sc_fxcast_switch &a, const sc_fxcast_switch &b)
inline::std::ostream & operator<< (::std::ostream &os, const sc_fxcast_switch &a)
const std::string to_string (sc_enc enc)
const std::string to_string (sc_q_mode q_mode)
const std::string to_string (sc_o_mode o_mode)
const std::string to_string (sc_switch sw)
const std::string to_string (sc_fmt fmt)
inline::std::ostream & operator<< (::std::ostream &os, sc_enc enc)
inline::std::ostream & operator<< (::std::ostream &os, sc_q_mode q_mode)
inline::std::ostream & operator<< (::std::ostream &os, sc_o_mode o_mode)
inline::std::ostream & operator<< (::std::ostream &os, sc_switch sw)
inline::std::ostream & operator<< (::std::ostream &os, sc_fmt fmt)
static void quantization (double &c, const scfx_params &params, bool &q_flag)
static void overflow (double &c, const scfx_params &params, bool &o_flag)
const char * to_string (const scfx_ieee_double &, sc_numrep, int, sc_fmt, const scfx_params *=0)
inline::std::ostream & operator<< (::std::ostream &os, const sc_fxnum_bitref &a)
inline::std::istream & operator>> (::std::istream &is, sc_fxnum_bitref &a)
inline::std::ostream & operator<< (::std::ostream &os, const sc_fxnum_fast_bitref &a)
inline::std::istream & operator>> (::std::istream &is, sc_fxnum_fast_bitref &a)
inline::std::ostream & operator<< (::std::ostream &os, const sc_fxnum_subref &a)
inline::std::istream & operator>> (::std::istream &is, sc_fxnum_subref &a)
inline::std::ostream & operator<< (::std::ostream &os, const sc_fxnum_fast_subref &a)
inline::std::istream & operator>> (::std::istream &is, sc_fxnum_fast_subref &a)
void neg (sc_fxval &c, const sc_fxnum &a)
void neg (sc_fxnum &c, const sc_fxnum &a)
const sc_fxval operator/ (const sc_fxnum &a, const sc_fxnum &b)
const sc_fxval operator/ (const sc_fxnum &a, const sc_fxval &b)
const sc_fxval operator/ (const sc_fxval &a, const sc_fxnum &b)
const sc_fxval operator<< (const sc_fxnum &a, int b)
const sc_fxval operator>> (const sc_fxnum &a, int b)
void lshift (sc_fxval &c, const sc_fxnum &a, int b)
void rshift (sc_fxval &c, const sc_fxnum &a, int b)
void lshift (sc_fxnum &c, const sc_fxnum &a, int b)
void rshift (sc_fxnum &c, const sc_fxnum &a, int b)
inline::std::ostream & operator<< (::std::ostream &os, const sc_fxnum &a)
inline::std::istream & operator>> (::std::istream &is, sc_fxnum &a)
void neg (sc_fxval_fast &c, const sc_fxnum_fast &a)
void neg (sc_fxnum_fast &c, const sc_fxnum_fast &a)
const sc_fxval_fast operator/ (const sc_fxnum_fast &a, const sc_fxnum_fast &b)
const sc_fxval_fast operator/ (const sc_fxnum_fast &a, const sc_fxval_fast &b)
const sc_fxval_fast operator/ (const sc_fxval_fast &a, const sc_fxnum_fast &b)
const sc_fxval_fast operator<< (const sc_fxnum_fast &a, int b)
const sc_fxval_fast operator>> (const sc_fxnum_fast &a, int b)
void lshift (sc_fxval_fast &c, const sc_fxnum_fast &a, int b)
void rshift (sc_fxval_fast &c, const sc_fxnum_fast &a, int b)
void lshift (sc_fxnum_fast &c, const sc_fxnum_fast &a, int b)
void rshift (sc_fxnum_fast &c, const sc_fxnum_fast &a, int b)
inline::std::ostream & operator<< (::std::ostream &os, const sc_fxnum_fast &a)
inline::std::istream & operator>> (::std::istream &is, sc_fxnum_fast &a)
bool operator== (const sc_fxtype_params &a, const sc_fxtype_params &b)
bool operator!= (const sc_fxtype_params &a, const sc_fxtype_params &b)
inline::std::ostream & operator<< (::std::ostream &os, const sc_fxtype_params &a)
static void print_dec (scfx_string &s, scfx_ieee_double id, int w_prefix, sc_fmt fmt)
static void print_other (scfx_string &s, const scfx_ieee_double &id, sc_numrep numrep, int w_prefix, sc_fmt fmt, const scfx_params *params)
void neg (sc_fxval &c, const sc_fxval &a)
const sc_fxval operator/ (const sc_fxval &a, const sc_fxval &b)
 DEFN_BIN_OP_T (/, div, int64) DEFN_BIN_OP_T(/
uint64 DEFN_BIN_OP_T (/, div, const sc_int_base &) DEFN_BIN_OP_T(/
uint64 const sc_uint_baseDEFN_BIN_OP_T (/, div, const sc_signed &) inline const sc_fxval operator<< (const sc_fxval &a
 m_observer (observer_)
void neg (sc_fxval_fast &c, const sc_fxval_fast &a)
const sc_fxval_fast operator/ (const sc_fxval_fast &a, const sc_fxval_fast &b)
const sc_fxval_fast operator<< (const sc_fxval_fast &a, int b)
const sc_fxval_fast operator>> (const sc_fxval_fast &a, int b)
void lshift (sc_fxval_fast &c, const sc_fxval_fast &a, int b)
void rshift (sc_fxval_fast &c, const sc_fxval_fast &a, int b)
inline::std::ostream & operator<< (::std::ostream &os, const sc_fxval_fast &a)
inline::std::istream & operator>> (::std::istream &is, sc_fxval_fast &a)
void b_not (sc_ufix &c, const sc_ufix &a)
void b_not (sc_ufix_fast &c, const sc_ufix_fast &a)
double scfx_pow2 (int exp)
double uint64_to_double (uint64 a)
static int next_pow2_index (std::size_t size)
void complement (scfx_mant &target, const scfx_mant &source, int size)
void inc (scfx_mant &mant)
void sc_trace (sc_core::sc_trace_file *tf, const sc_fxval &object, const std::string &name)
void sc_trace (sc_core::sc_trace_file *tf, const sc_fxval *object, const std::string &name)
void sc_trace (sc_core::sc_trace_file *tf, const sc_fxval_fast &object, const std::string &name)
void sc_trace (sc_core::sc_trace_file *tf, const sc_fxval_fast *object, const std::string &name)
void sc_trace (sc_core::sc_trace_file *tf, const sc_fxnum &object, const std::string &name)
void sc_trace (sc_core::sc_trace_file *tf, const sc_fxnum *object, const std::string &name)
void sc_trace (sc_core::sc_trace_file *tf, const sc_fxnum_fast &object, const std::string &name)
void sc_trace (sc_core::sc_trace_file *tf, const sc_fxnum_fast *object, const std::string &name)
static int n_word (int x)
void print_dec (scfx_string &s, const scfx_rep &num, int w_prefix, sc_fmt fmt)
void print_other (scfx_string &s, const scfx_rep &a, sc_numrep numrep, int w_prefix, sc_fmt fmt, const scfx_params *params)
static int add_mants (int size, scfx_mant &result, const scfx_mant &a, const scfx_mant &b)
static int sub_mants (int size, scfx_mant &result, const scfx_mant &a, const scfx_mant &b)
scfx_repadd_scfx_rep (const scfx_rep &lhs, const scfx_rep &rhs, int max_wl)
static int sub_with_index (scfx_mant &a, int a_msw, int a_lsw, const scfx_mant &b, int b_msw, int b_lsw)
scfx_repsub_scfx_rep (const scfx_rep &lhs, const scfx_rep &rhs, int max_wl)
void multiply (scfx_rep &result, const scfx_rep &lhs, const scfx_rep &rhs, int max_wl)
scfx_repdiv_scfx_rep (const scfx_rep &lhs, const scfx_rep &rhs, int div_wl)
int compare_abs (const scfx_rep &a, const scfx_rep &b)
int cmp_scfx_rep (const scfx_rep &a, const scfx_rep &b)
void align (const scfx_rep &lhs, const scfx_rep &rhs, int &new_wp, int &len_mant, scfx_mant_ref &lhs_mant, scfx_mant_ref &rhs_mant)
int compare_msw_ff (const scfx_rep &lhs, const scfx_rep &rhs)
scfx_repneg_scfx_rep (const scfx_rep &)
scfx_repmult_scfx_rep (const scfx_rep &, const scfx_rep &, int)
scfx_replsh_scfx_rep (const scfx_rep &, int)
scfx_reprsh_scfx_rep (const scfx_rep &, int)
scfx_repquantization_scfx_rep (const scfx_rep &a, const scfx_params &params, bool &q_flag)
scfx_repoverflow_scfx_rep (const scfx_rep &a, const scfx_params &params, bool &o_flag)
void scfx_tc2csd (scfx_string &s, int w_prefix)
void scfx_csd2tc (scfx_string &csd)
int scfx_find_msb (unsigned long x)
int scfx_find_lsb (unsigned long x)
int scfx_parse_sign (const char *&s, bool &sign_char)
sc_numrep scfx_parse_prefix (const char *&s)
int scfx_parse_base (const char *&s)
bool scfx_is_equal (const char *a, const char *b)
bool scfx_is_nan (const char *s)
bool scfx_is_inf (const char *s)
bool scfx_exp_start (const char *s)
bool scfx_is_digit (char c, sc_numrep numrep)
int scfx_to_digit (char c, sc_numrep numrep)
void scfx_print_nan (scfx_string &s)
void scfx_print_inf (scfx_string &s, bool negative)
void scfx_print_prefix (scfx_string &s, sc_numrep numrep)
void scfx_print_exp (scfx_string &s, int exp)
void sc_int_concref_invalid_length (int length)
bool operator== (const sc_int_base &a, const sc_int_base &b)
bool operator!= (const sc_int_base &a, const sc_int_base &b)
bool operator< (const sc_int_base &a, const sc_int_base &b)
bool operator<= (const sc_int_base &a, const sc_int_base &b)
bool operator> (const sc_int_base &a, const sc_int_base &b)
bool operator>= (const sc_int_base &a, const sc_int_base &b)
inline::std::ostream & operator<< (::std::ostream &, const sc_int_bitref_r &)
inline::std::istream & operator>> (::std::istream &, sc_int_bitref &)
inline::std::ostream & operator<< (::std::ostream &, const sc_int_subref_r &)
inline::std::istream & operator>> (::std::istream &, sc_int_subref &)
inline::std::ostream & operator<< (::std::ostream &, const sc_int_base &)
inline::std::istream & operator>> (::std::istream &, sc_int_base &)
bool and_reduce (const sc_int_subref_r &a)
bool nand_reduce (const sc_int_subref_r &a)
bool or_reduce (const sc_int_subref_r &a)
bool nor_reduce (const sc_int_subref_r &a)
bool xor_reduce (const sc_int_subref_r &a)
bool xnor_reduce (const sc_int_subref_r &a)
bool and_reduce (const sc_int_base &a)
bool nand_reduce (const sc_int_base &a)
bool or_reduce (const sc_int_base &a)
bool nor_reduce (const sc_int_base &a)
bool xor_reduce (const sc_int_base &a)
bool xnor_reduce (const sc_int_base &a)
bool operator== (const sc_length_param &, const sc_length_param &)
bool operator!= (const sc_length_param &, const sc_length_param &)
inline::std::ostream & operator<< (::std::ostream &os, const sc_length_param &a)
void add_on_help (small_type &us, int, int und, sc_digit *ud, small_type vs, int, int vnd, const sc_digit *vd)
void mul_on_help_signed (small_type &us, int unb, int und, sc_digit *ud, int vnb, int vnd, const sc_digit *vd)
void mul_on_help_unsigned (small_type &us, int unb, int und, sc_digit *ud, int vnb, int vnd, const sc_digit *vd)
void div_on_help_signed (small_type &us, int unb, int und, sc_digit *ud, int vnb, int vnd, const sc_digit *vd)
void div_on_help_unsigned (small_type &us, int unb, int und, sc_digit *ud, int vnb, int vnd, const sc_digit *vd)
void mod_on_help_signed (small_type &us, int unb, int und, sc_digit *ud, int, int vnd, const sc_digit *vd)
void mod_on_help_unsigned (small_type &us, int unb, int und, sc_digit *ud, int, int vnd, const sc_digit *vd)
void and_on_help (small_type us, int, int und, sc_digit *ud, small_type vs, int, int vnd, const sc_digit *vd)
void or_on_help (small_type us, int, int und, sc_digit *ud, small_type vs, int, int vnd, const sc_digit *vd)
void xor_on_help (small_type us, int, int und, sc_digit *ud, small_type vs, int, int vnd, const sc_digit *vd)
small_type fsm_move (char c, small_type &b, small_type &s, small_type &state)
const char * get_base_and_sign (const char *v, small_type &b, small_type &s)
void parse_binary_bits (const char *src_p, int dst_n, sc_digit *data_p, sc_digit *ctrl_p)
void parse_hex_bits (const char *src_p, int dst_n, sc_digit *data_p, sc_digit *ctrl_p)
small_type vec_from_str (int unb, int und, sc_digit *u, const char *v, sc_numrep base)
void vec_add (int ulen, const sc_digit *u, int vlen, const sc_digit *v, sc_digit *w)
void vec_add_on (int ulen, sc_digit *ubegin, int vlen, const sc_digit *v)
void vec_add_on2 (int ulen, sc_digit *ubegin, int, const sc_digit *v)
void vec_add_small (int ulen, const sc_digit *u, sc_digit v, sc_digit *w)
void vec_add_small_on (int ulen, sc_digit *u, sc_digit v)
void vec_sub (int ulen, const sc_digit *u, int vlen, const sc_digit *v, sc_digit *w)
void vec_sub_on (int ulen, sc_digit *ubegin, int vlen, const sc_digit *v)
void vec_sub_on2 (int ulen, sc_digit *ubegin, int vlen, const sc_digit *v)
void vec_sub_small (int ulen, const sc_digit *u, sc_digit v, sc_digit *w)
void vec_sub_small_on (int ulen, sc_digit *u, sc_digit v)
void vec_mul (int ulen, const sc_digit *u, int vlen, const sc_digit *vbegin, sc_digit *wbegin)
void vec_mul_small (int ulen, const sc_digit *u, sc_digit v, sc_digit *w)
void vec_mul_small_on (int ulen, sc_digit *u, sc_digit v)
void vec_div_large (int ulen, const sc_digit *u, int vlen, const sc_digit *v, sc_digit *w)
void vec_div_small (int ulen, const sc_digit *u, sc_digit v, sc_digit *q)
void vec_rem_large (int ulen, const sc_digit *u, int vlen, const sc_digit *v, sc_digit *w)
sc_digit vec_rem_small (int ulen, const sc_digit *u, sc_digit v)
sc_digit vec_rem_on_small (int ulen, sc_digit *u, sc_digit v)
int vec_to_char (int ulen, const sc_digit *u, int vlen, uchar *v)
void vec_from_char (int ulen, const uchar *u, int vlen, sc_digit *v)
void vec_shift_left (int ulen, sc_digit *u, int nsl)
void vec_shift_right (int ulen, sc_digit *u, int nsr, sc_digit fill)
void vec_reverse (int unb, int und, sc_digit *ud, int l, int r)
void is_valid_base (sc_numrep base)
sc_digit low_half (sc_digit d)
sc_digit high_half (sc_digit d)
sc_digit high_half_masked (sc_digit d)
sc_digit concat (sc_digit h, sc_digit l)
sc_digit one_and_ones (int n)
sc_digit one_and_zeros (int n)
int digit_ord (int i)
int bit_ord (int i)
int vec_cmp (int ulen, const sc_digit *u, int vlen, const sc_digit *v)
int vec_find_first_nonzero (int ulen, const sc_digit *u)
int vec_skip_leading_zeros (int ulen, const sc_digit *u)
int vec_skip_and_cmp (int ulen, const sc_digit *u, int vlen, const sc_digit *v)
void vec_zero (int from, int ulen, sc_digit *u)
void vec_zero (int ulen, sc_digit *u)
void vec_copy (int n, sc_digit *u, const sc_digit *v)
void vec_copy_and_zero (int ulen, sc_digit *u, int vlen, const sc_digit *v)
void vec_complement (int ulen, sc_digit *u)
template<class Type>
void from_uint (int ulen, sc_digit *u, Type v)
template<class Type>
small_type get_sign (Type &u)
small_type mul_signs (small_type us, small_type vs)
template<class Type>
void div_by_zero (Type s)
small_type check_for_zero (small_type s, int ulen, const sc_digit *u)
bool check_for_zero (int ulen, const sc_digit *u)
small_type make_zero (int nd, sc_digit *d)
void trim (small_type added, int nb, int nd, sc_digit *d)
void convert_SM_to_2C_trimmed (small_type added, small_type s, int nb, int nd, sc_digit *d)
void convert_SM_to_2C (small_type s, int nd, sc_digit *d)
void trim_signed (int nb, int nd, sc_digit *d)
small_type convert_signed_2C_to_SM (int nb, int nd, sc_digit *d)
small_type convert_signed_SM_to_2C_to_SM (small_type s, int nb, int nd, sc_digit *d)
void convert_signed_SM_to_2C_trimmed (small_type s, int nb, int nd, sc_digit *d)
void convert_signed_SM_to_2C (small_type s, int nd, sc_digit *d)
void trim_unsigned (int nb, int nd, sc_digit *d)
small_type convert_unsigned_2C_to_SM (int nb, int nd, sc_digit *d)
small_type convert_unsigned_SM_to_2C_to_SM (small_type s, int nb, int nd, sc_digit *d)
void convert_unsigned_SM_to_2C_trimmed (small_type s, int nb, int nd, sc_digit *d)
void convert_unsigned_SM_to_2C (small_type s, int nd, sc_digit *d)
void copy_digits_signed (small_type &us, int unb, int und, sc_digit *ud, int vnb, int vnd, const sc_digit *vd)
void copy_digits_unsigned (small_type &us, int unb, int und, sc_digit *ud, int vnb, int vnd, const sc_digit *vd)
void safe_set (int i, bool v, sc_digit *d)
void is_bad_double (double v)
sc_signed operator+ (const sc_unsigned &u, const sc_int_base &v)
sc_signed operator+ (const sc_int_base &u, const sc_unsigned &v)
sc_signed operator+ (const sc_signed &u, const sc_int_base &v)
sc_signed operator+ (const sc_int_base &u, const sc_signed &v)
sc_signed operator- (const sc_unsigned &u, const sc_int_base &v)
sc_signed operator- (const sc_int_base &u, const sc_unsigned &v)
sc_signed operator- (const sc_signed &u, const sc_int_base &v)
sc_signed operator- (const sc_int_base &u, const sc_signed &v)
sc_signed operator* (const sc_unsigned &u, const sc_int_base &v)
sc_signed operator* (const sc_int_base &u, const sc_unsigned &v)
sc_signed operator* (const sc_signed &u, const sc_int_base &v)
sc_signed operator* (const sc_int_base &u, const sc_signed &v)
sc_signed operator/ (const sc_unsigned &u, const sc_int_base &v)
sc_signed operator/ (const sc_int_base &u, const sc_unsigned &v)
sc_signed operator/ (const sc_signed &u, const sc_int_base &v)
sc_signed operator/ (const sc_int_base &u, const sc_signed &v)
sc_signed operator% (const sc_unsigned &u, const sc_int_base &v)
sc_signed operator% (const sc_int_base &u, const sc_unsigned &v)
sc_signed operator% (const sc_signed &u, const sc_int_base &v)
sc_signed operator% (const sc_int_base &u, const sc_signed &v)
sc_signed operator & (const sc_unsigned &u, const sc_int_base &v)
sc_signed operator & (const sc_int_base &u, const sc_unsigned &v)
sc_signed operator & (const sc_signed &u, const sc_int_base &v)
sc_signed operator & (const sc_int_base &u, const sc_signed &v)
sc_signed operator| (const sc_unsigned &u, const sc_int_base &v)
sc_signed operator| (const sc_int_base &u, const sc_unsigned &v)
sc_signed operator| (const sc_signed &u, const sc_int_base &v)
sc_signed operator| (const sc_int_base &u, const sc_signed &v)
sc_signed operator^ (const sc_unsigned &u, const sc_int_base &v)
sc_signed operator^ (const sc_int_base &u, const sc_unsigned &v)
sc_signed operator^ (const sc_signed &u, const sc_int_base &v)
sc_signed operator^ (const sc_int_base &u, const sc_signed &v)
sc_signed operator<< (const sc_signed &u, const sc_int_base &v)
sc_signed operator>> (const sc_signed &u, const sc_int_base &v)
bool operator== (const sc_signed &u, const sc_int_base &v)
bool operator== (const sc_int_base &u, const sc_signed &v)
bool operator!= (const sc_signed &u, const sc_int_base &v)
bool operator!= (const sc_int_base &u, const sc_signed &v)
bool operator< (const sc_signed &u, const sc_int_base &v)
bool operator< (const sc_int_base &u, const sc_signed &v)
bool operator<= (const sc_signed &u, const sc_int_base &v)
bool operator<= (const sc_int_base &u, const sc_signed &v)
bool operator> (const sc_signed &u, const sc_int_base &v)
bool operator> (const sc_int_base &u, const sc_signed &v)
bool operator>= (const sc_signed &u, const sc_int_base &v)
bool operator>= (const sc_int_base &u, const sc_signed &v)
sc_signed operator+ (const sc_signed &u, const sc_uint_base &v)
sc_signed operator+ (const sc_uint_base &u, const sc_signed &v)
sc_signed operator- (const sc_unsigned &u, const sc_uint_base &v)
sc_signed operator- (const sc_uint_base &u, const sc_unsigned &v)
sc_signed operator- (const sc_signed &u, const sc_uint_base &v)
sc_signed operator- (const sc_uint_base &u, const sc_signed &v)
sc_signed operator* (const sc_signed &u, const sc_uint_base &v)
sc_signed operator* (const sc_uint_base &u, const sc_signed &v)
sc_signed operator/ (const sc_signed &u, const sc_uint_base &v)
sc_signed operator/ (const sc_uint_base &u, const sc_signed &v)
sc_signed operator% (const sc_signed &u, const sc_uint_base &v)
sc_signed operator% (const sc_uint_base &u, const sc_signed &v)
sc_signed operator & (const sc_signed &u, const sc_uint_base &v)
sc_signed operator & (const sc_uint_base &u, const sc_signed &v)
sc_signed operator| (const sc_signed &u, const sc_uint_base &v)
sc_signed operator| (const sc_uint_base &u, const sc_signed &v)
sc_signed operator^ (const sc_signed &u, const sc_uint_base &v)
sc_signed operator^ (const sc_uint_base &u, const sc_signed &v)
sc_signed operator<< (const sc_signed &u, const sc_uint_base &v)
sc_signed operator>> (const sc_signed &u, const sc_uint_base &v)
bool operator== (const sc_signed &u, const sc_uint_base &v)
bool operator== (const sc_uint_base &u, const sc_signed &v)
bool operator!= (const sc_signed &u, const sc_uint_base &v)
bool operator!= (const sc_uint_base &u, const sc_signed &v)
bool operator< (const sc_signed &u, const sc_uint_base &v)
bool operator< (const sc_uint_base &u, const sc_signed &v)
bool operator<= (const sc_signed &u, const sc_uint_base &v)
bool operator<= (const sc_uint_base &u, const sc_signed &v)
bool operator> (const sc_signed &u, const sc_uint_base &v)
bool operator> (const sc_uint_base &u, const sc_signed &v)
bool operator>= (const sc_signed &u, const sc_uint_base &v)
bool operator>= (const sc_uint_base &u, const sc_signed &v)
sc_signed operator+ (const sc_unsigned &u, const sc_signed &v)
sc_signed operator+ (const sc_signed &u, const sc_unsigned &v)
sc_signed operator+ (const sc_signed &u, const sc_signed &v)
sc_signed operator+ (const sc_signed &u, int64 v)
sc_signed operator+ (int64 u, const sc_signed &v)
sc_signed operator+ (const sc_unsigned &u, int64 v)
sc_signed operator+ (int64 u, const sc_unsigned &v)
sc_signed operator+ (const sc_signed &u, uint64 v)
sc_signed operator+ (uint64 u, const sc_signed &v)
sc_signed operator+ (const sc_signed &u, long v)
sc_signed operator+ (long u, const sc_signed &v)
sc_signed operator+ (const sc_unsigned &u, long v)
sc_signed operator+ (long u, const sc_unsigned &v)
sc_signed operator+ (const sc_signed &u, unsigned long v)
sc_signed operator+ (unsigned long u, const sc_signed &v)
sc_signed operator- (const sc_unsigned &u, const sc_unsigned &v)
sc_signed operator- (const sc_unsigned &u, const sc_signed &v)
sc_signed operator- (const sc_signed &u, const sc_unsigned &v)
sc_signed operator- (const sc_signed &u, const sc_signed &v)
sc_signed operator- (const sc_signed &u, int64 v)
sc_signed operator- (int64 u, const sc_signed &v)
sc_signed operator- (const sc_unsigned &u, int64 v)
sc_signed operator- (int64 u, const sc_unsigned &v)
sc_signed operator- (const sc_signed &u, uint64 v)
sc_signed operator- (uint64 u, const sc_signed &v)
sc_signed operator- (const sc_unsigned &u, uint64 v)
sc_signed operator- (uint64 u, const sc_unsigned &v)
sc_signed operator- (const sc_signed &u, long v)
sc_signed operator- (long u, const sc_signed &v)
sc_signed operator- (const sc_unsigned &u, long v)
sc_signed operator- (long u, const sc_unsigned &v)
sc_signed operator- (const sc_signed &u, unsigned long v)
sc_signed operator- (unsigned long u, const sc_signed &v)
sc_signed operator- (const sc_unsigned &u, unsigned long v)
sc_signed operator- (unsigned long u, const sc_unsigned &v)
sc_signed operator* (const sc_unsigned &u, const sc_signed &v)
sc_signed operator* (const sc_signed &u, const sc_unsigned &v)
sc_signed operator* (const sc_signed &u, const sc_signed &v)
sc_signed operator* (const sc_signed &u, int64 v)
sc_signed operator* (int64 u, const sc_signed &v)
sc_signed operator* (const sc_unsigned &u, int64 v)
sc_signed operator* (int64 u, const sc_unsigned &v)
sc_signed operator* (const sc_signed &u, uint64 v)
sc_signed operator* (uint64 u, const sc_signed &v)
sc_signed operator* (const sc_signed &u, long v)
sc_signed operator* (long u, const sc_signed &v)
sc_signed operator* (const sc_unsigned &u, long v)
sc_signed operator* (long u, const sc_unsigned &v)
sc_signed operator* (const sc_signed &u, unsigned long v)
sc_signed operator* (unsigned long u, const sc_signed &v)
sc_signed operator/ (const sc_unsigned &u, const sc_signed &v)
sc_signed operator/ (const sc_signed &u, const sc_unsigned &v)
sc_signed operator/ (const sc_signed &u, const sc_signed &v)
sc_signed operator/ (const sc_signed &u, int64 v)
sc_signed operator/ (int64 u, const sc_signed &v)
sc_signed operator/ (const sc_unsigned &u, int64 v)
sc_signed operator/ (int64 u, const sc_unsigned &v)
sc_signed operator/ (const sc_signed &u, uint64 v)
sc_signed operator/ (uint64 u, const sc_signed &v)
sc_signed operator/ (const sc_signed &u, long v)
sc_signed operator/ (long u, const sc_signed &v)
sc_signed operator/ (const sc_unsigned &u, long v)
sc_signed operator/ (long u, const sc_unsigned &v)
sc_signed operator/ (const sc_signed &u, unsigned long v)
sc_signed operator/ (unsigned long u, const sc_signed &v)
sc_signed operator% (const sc_unsigned &u, const sc_signed &v)
sc_signed operator% (const sc_signed &u, const sc_unsigned &v)
sc_signed operator% (const sc_signed &u, const sc_signed &v)
sc_signed operator% (const sc_signed &u, int64 v)
sc_signed operator% (int64 u, const sc_signed &v)
sc_signed operator% (const sc_unsigned &u, int64 v)
sc_signed operator% (int64 u, const sc_unsigned &v)
sc_signed operator% (const sc_signed &u, uint64 v)
sc_signed operator% (uint64 u, const sc_signed &v)
sc_signed operator% (const sc_signed &u, long v)
sc_signed operator% (long u, const sc_signed &v)
sc_signed operator% (const sc_unsigned &u, long v)
sc_signed operator% (long u, const sc_unsigned &v)
sc_signed operator% (const sc_signed &u, unsigned long v)
sc_signed operator% (unsigned long u, const sc_signed &v)
sc_signed operator & (const sc_unsigned &u, const sc_signed &v)
sc_signed operator & (const sc_signed &u, const sc_unsigned &v)
sc_signed operator & (const sc_signed &u, const sc_signed &v)
sc_signed operator & (const sc_signed &u, int64 v)
sc_signed operator & (int64 u, const sc_signed &v)
sc_signed operator & (const sc_unsigned &u, int64 v)
sc_signed operator & (int64 u, const sc_unsigned &v)
sc_signed operator & (const sc_signed &u, uint64 v)
sc_signed operator & (uint64 u, const sc_signed &v)
sc_signed operator & (const sc_signed &u, long v)
sc_signed operator & (long u, const sc_signed &v)
sc_signed operator & (const sc_unsigned &u, long v)
sc_signed operator & (long u, const sc_unsigned &v)
sc_signed operator & (const sc_signed &u, unsigned long v)
sc_signed operator & (unsigned long u, const sc_signed &v)
sc_signed operator| (const sc_unsigned &u, const sc_signed &v)
sc_signed operator| (const sc_signed &u, const sc_unsigned &v)
sc_signed operator| (const sc_signed &u, const sc_signed &v)
sc_signed operator| (const sc_signed &u, int64 v)
sc_signed operator| (int64 u, const sc_signed &v)
sc_signed operator| (const sc_unsigned &u, int64 v)
sc_signed operator| (int64 u, const sc_unsigned &v)
sc_signed operator| (const sc_signed &u, uint64 v)
sc_signed operator| (uint64 u, const sc_signed &v)
sc_signed operator| (const sc_signed &u, long v)
sc_signed operator| (long u, const sc_signed &v)
sc_signed operator| (const sc_unsigned &u, long v)
sc_signed operator| (long u, const sc_unsigned &v)
sc_signed operator| (const sc_signed &u, unsigned long v)
sc_signed operator| (unsigned long u, const sc_signed &v)
sc_signed operator^ (const sc_unsigned &u, const sc_signed &v)
sc_signed operator^ (const sc_signed &u, const sc_unsigned &v)
sc_signed operator^ (const sc_signed &u, const sc_signed &v)
sc_signed operator^ (const sc_signed &u, int64 v)
sc_signed operator^ (int64 u, const sc_signed &v)
sc_signed operator^ (const sc_unsigned &u, int64 v)
sc_signed operator^ (int64 u, const sc_unsigned &v)
sc_signed operator^ (const sc_signed &u, uint64 v)
sc_signed operator^ (uint64 u, const sc_signed &v)
sc_signed operator^ (const sc_signed &u, long v)
sc_signed operator^ (long u, const sc_signed &v)
sc_signed operator^ (const sc_unsigned &u, long v)
sc_signed operator^ (long u, const sc_unsigned &v)
sc_signed operator^ (const sc_signed &u, unsigned long v)
sc_signed operator^ (unsigned long u, const sc_signed &v)
sc_signed operator<< (const sc_signed &u, const sc_unsigned &v)
sc_signed operator>> (const sc_signed &u, const sc_unsigned &v)
sc_signed operator+ (const sc_signed &u)
sc_signed operator- (const sc_signed &u)
sc_signed operator- (const sc_unsigned &u)
bool operator== (const sc_signed &u, const sc_signed &v)
bool operator== (const sc_signed &u, int64 v)
bool operator== (int64 u, const sc_signed &v)
bool operator== (const sc_signed &u, uint64 v)
bool operator== (uint64 u, const sc_signed &v)
bool operator== (const sc_signed &u, long v)
bool operator== (long u, const sc_signed &v)
bool operator== (const sc_signed &u, unsigned long v)
bool operator== (unsigned long u, const sc_signed &v)
bool operator< (const sc_signed &u, const sc_signed &v)
bool operator< (const sc_signed &u, int64 v)
bool operator< (int64 u, const sc_signed &v)
bool operator< (const sc_signed &u, uint64 v)
bool operator< (uint64 u, const sc_signed &v)
bool operator< (const sc_signed &u, long v)
bool operator< (long u, const sc_signed &v)
bool operator< (const sc_signed &u, unsigned long v)
bool operator< (unsigned long u, const sc_signed &v)
CLASS_TYPE ADD_HELPER (small_type us, int unb, int und, const sc_digit *ud, small_type vs, int vnb, int vnd, const sc_digit *vd)
CLASS_TYPE MUL_HELPER (small_type s, int unb, int und, const sc_digit *ud, int vnb, int vnd, const sc_digit *vd)
CLASS_TYPE DIV_HELPER (small_type s, int unb, int und, const sc_digit *ud, int vnb, int vnd, const sc_digit *vd)
CLASS_TYPE MOD_HELPER (small_type us, int unb, int und, const sc_digit *ud, int vnb, int vnd, const sc_digit *vd)
CLASS_TYPE AND_HELPER (small_type us, int unb, int und, const sc_digit *ud, small_type vs, int vnb, int vnd, const sc_digit *vd)
CLASS_TYPE OR_HELPER (small_type us, int unb, int und, const sc_digit *ud, small_type vs, int vnb, int vnd, const sc_digit *vd)
CLASS_TYPE XOR_HELPER (small_type us, int unb, int und, const sc_digit *ud, small_type vs, int vnb, int vnd, const sc_digit *vd)
CLASS_TYPE operator~ (const CLASS_TYPE &u)
CLASS_TYPE operator<< (const CLASS_TYPE &u, const CLASS_TYPE &v)
CLASS_TYPE operator<< (const CLASS_TYPE &u, int64 v)
CLASS_TYPE operator<< (const CLASS_TYPE &u, uint64 v)
CLASS_TYPE operator<< (const CLASS_TYPE &u, long v)
CLASS_TYPE operator<< (const CLASS_TYPE &u, unsigned long v)
CLASS_TYPE operator>> (const CLASS_TYPE &u, const CLASS_TYPE &v)
CLASS_TYPE operator>> (const CLASS_TYPE &u, int64 v)
CLASS_TYPE operator>> (const CLASS_TYPE &u, uint64 v)
CLASS_TYPE operator>> (const CLASS_TYPE &u, long v)
CLASS_TYPE operator>> (const CLASS_TYPE &u, unsigned long v)
bool operator!= (const CLASS_TYPE &u, const CLASS_TYPE &v)
bool operator!= (const CLASS_TYPE &u, int64 v)
bool operator!= (int64 u, const CLASS_TYPE &v)
bool operator!= (const CLASS_TYPE &u, uint64 v)
bool operator!= (uint64 u, const CLASS_TYPE &v)
bool operator!= (const CLASS_TYPE &u, long v)
bool operator!= (long u, const CLASS_TYPE &v)
bool operator!= (const CLASS_TYPE &u, unsigned long v)
bool operator!= (unsigned long u, const CLASS_TYPE &v)
bool operator<= (const CLASS_TYPE &u, const CLASS_TYPE &v)
bool operator<= (const CLASS_TYPE &u, int64 v)
bool operator<= (int64 u, const CLASS_TYPE &v)
bool operator<= (const CLASS_TYPE &u, uint64 v)
bool operator<= (uint64 u, const CLASS_TYPE &v)
bool operator<= (const CLASS_TYPE &u, long v)
bool operator<= (long u, const CLASS_TYPE &v)
bool operator<= (const CLASS_TYPE &u, unsigned long v)
bool operator<= (unsigned long u, const CLASS_TYPE &v)
bool operator> (const CLASS_TYPE &u, const CLASS_TYPE &v)
bool operator> (const CLASS_TYPE &u, int64 v)
bool operator> (int64 u, const CLASS_TYPE &v)
bool operator> (const CLASS_TYPE &u, uint64 v)
bool operator> (uint64 u, const CLASS_TYPE &v)
bool operator> (const CLASS_TYPE &u, long v)
bool operator> (long u, const CLASS_TYPE &v)
bool operator> (const CLASS_TYPE &u, unsigned long v)
bool operator> (unsigned long u, const CLASS_TYPE &v)
bool operator>= (const CLASS_TYPE &u, const CLASS_TYPE &v)
bool operator>= (const CLASS_TYPE &u, int64 v)
bool operator>= (int64 u, const CLASS_TYPE &v)
bool operator>= (const CLASS_TYPE &u, uint64 v)
bool operator>= (uint64 u, const CLASS_TYPE &v)
bool operator>= (const CLASS_TYPE &u, long v)
bool operator>= (long u, const CLASS_TYPE &v)
bool operator>= (const CLASS_TYPE &u, unsigned long v)
bool operator>= (unsigned long u, const CLASS_TYPE &v)
sc_signed add_signed_friend (small_type us, int unb, int und, const sc_digit *ud, small_type vs, int vnb, int vnd, const sc_digit *vd)
sc_signed sub_signed_friend (small_type us, int unb, int und, const sc_digit *ud, small_type vs, int vnb, int vnd, const sc_digit *vd)
sc_signed mul_signed_friend (small_type s, int unb, int und, const sc_digit *ud, int vnb, int vnd, const sc_digit *vd)
sc_signed div_signed_friend (small_type s, int unb, int und, const sc_digit *ud, int vnb, int vnd, const sc_digit *vd)
sc_signed mod_signed_friend (small_type us, int unb, int und, const sc_digit *ud, int vnb, int vnd, const sc_digit *vd)
sc_signed and_signed_friend (small_type us, int unb, int und, const sc_digit *ud, small_type vs, int vnb, int vnd, const sc_digit *vd)
sc_signed or_signed_friend (small_type us, int unb, int und, const sc_digit *ud, small_type vs, int vnb, int vnd, const sc_digit *vd)
sc_signed xor_signed_friend (small_type us, int unb, int und, const sc_digit *ud, small_type vs, int vnb, int vnd, const sc_digit *vd)
sc_signed operator+ (const sc_unsigned &u, int v)
sc_signed operator+ (int u, const sc_unsigned &v)
sc_signed operator+ (const sc_signed &u, int v)
sc_signed operator+ (const sc_signed &u, unsigned int v)
sc_signed operator+ (int u, const sc_signed &v)
sc_signed operator+ (unsigned int u, const sc_signed &v)
sc_signed operator- (const sc_unsigned &u, int v)
sc_signed operator- (const sc_unsigned &u, unsigned int v)
sc_signed operator- (int u, const sc_unsigned &v)
sc_signed operator- (unsigned int u, const sc_unsigned &v)
sc_signed operator- (const sc_signed &u, int v)
sc_signed operator- (const sc_signed &u, unsigned int v)
sc_signed operator- (int u, const sc_signed &v)
sc_signed operator- (unsigned int u, const sc_signed &v)
sc_signed operator* (const sc_unsigned &u, int v)
sc_signed operator* (int u, const sc_unsigned &v)
sc_signed operator* (const sc_signed &u, int v)
sc_signed operator* (const sc_signed &u, unsigned int v)
sc_signed operator* (int u, const sc_signed &v)
sc_signed operator* (unsigned int u, const sc_signed &v)
sc_signed operator/ (const sc_unsigned &u, int v)
sc_signed operator/ (int u, const sc_unsigned &v)
sc_signed operator/ (const sc_signed &u, int v)
sc_signed operator/ (const sc_signed &u, unsigned int v)
sc_signed operator/ (int u, const sc_signed &v)
sc_signed operator/ (unsigned int u, const sc_signed &v)
sc_signed operator% (const sc_unsigned &u, int v)
sc_signed operator% (int u, const sc_unsigned &v)
sc_signed operator% (const sc_signed &u, int v)
sc_signed operator% (const sc_signed &u, unsigned int v)
sc_signed operator% (int u, const sc_signed &v)
sc_signed operator% (unsigned int u, const sc_signed &v)
sc_signed operator & (const sc_unsigned &u, int v)
sc_signed operator & (int u, const sc_unsigned &v)
sc_signed operator & (const sc_signed &u, int v)
sc_signed operator & (const sc_signed &u, unsigned int v)
sc_signed operator & (int u, const sc_signed &v)
sc_signed operator & (unsigned int u, const sc_signed &v)
sc_signed operator| (const sc_unsigned &u, int v)
sc_signed operator| (int u, const sc_unsigned &v)
sc_signed operator| (const sc_signed &u, int v)
sc_signed operator| (const sc_signed &u, unsigned int v)
sc_signed operator| (int u, const sc_signed &v)
sc_signed operator| (unsigned int u, const sc_signed &v)
sc_signed operator^ (const sc_unsigned &u, int v)
sc_signed operator^ (int u, const sc_unsigned &v)
sc_signed operator^ (const sc_signed &u, int v)
sc_signed operator^ (const sc_signed &u, unsigned int v)
sc_signed operator^ (int u, const sc_signed &v)
sc_signed operator^ (unsigned int u, const sc_signed &v)
sc_unsigned operator<< (const sc_unsigned &u, const sc_signed &v)
sc_signed operator<< (const sc_signed &u, const sc_signed &v)
sc_signed operator<< (const sc_signed &u, int64 v)
sc_signed operator<< (const sc_signed &u, uint64 v)
sc_signed operator<< (const sc_signed &u, long v)
sc_signed operator<< (const sc_signed &u, unsigned long v)
sc_signed operator<< (const sc_signed &u, int v)
sc_signed operator<< (const sc_signed &u, unsigned int v)
sc_unsigned operator>> (const sc_unsigned &u, const sc_signed &v)
sc_signed operator>> (const sc_signed &u, const sc_signed &v)
sc_signed operator>> (const sc_signed &u, int64 v)
sc_signed operator>> (const sc_signed &u, uint64 v)
sc_signed operator>> (const sc_signed &u, long v)
sc_signed operator>> (const sc_signed &u, unsigned long v)
sc_signed operator>> (const sc_signed &u, int v)
sc_signed operator>> (const sc_signed &u, unsigned int v)
bool operator== (const sc_unsigned &u, const sc_signed &v)
bool operator== (const sc_signed &u, const sc_unsigned &v)
bool operator== (const sc_signed &u, int v)
bool operator== (const sc_signed &u, unsigned int v)
bool operator== (int u, const sc_signed &v)
bool operator== (unsigned int u, const sc_signed &v)
bool operator!= (const sc_unsigned &u, const sc_signed &v)
bool operator!= (const sc_signed &u, const sc_unsigned &v)
bool operator!= (const sc_signed &u, const sc_signed &v)
bool operator!= (const sc_signed &u, int64 v)
bool operator!= (const sc_signed &u, uint64 v)
bool operator!= (const sc_signed &u, long v)
bool operator!= (const sc_signed &u, unsigned long v)
bool operator!= (const sc_signed &u, int v)
bool operator!= (const sc_signed &u, unsigned int v)
bool operator!= (int64 u, const sc_signed &v)
bool operator!= (uint64 u, const sc_signed &v)
bool operator!= (long u, const sc_signed &v)
bool operator!= (unsigned long u, const sc_signed &v)
bool operator!= (int u, const sc_signed &v)
bool operator!= (unsigned int u, const sc_signed &v)
bool operator< (const sc_unsigned &u, const sc_signed &v)
bool operator< (const sc_signed &u, const sc_unsigned &v)
bool operator< (const sc_signed &u, int v)
bool operator< (const sc_signed &u, unsigned int v)
bool operator< (int u, const sc_signed &v)
bool operator< (unsigned int u, const sc_signed &v)
bool operator<= (const sc_unsigned &u, const sc_signed &v)
bool operator<= (const sc_signed &u, const sc_unsigned &v)
bool operator<= (const sc_signed &u, const sc_signed &v)
bool operator<= (const sc_signed &u, int64 v)
bool operator<= (const sc_signed &u, uint64 v)
bool operator<= (const sc_signed &u, long v)
bool operator<= (const sc_signed &u, unsigned long v)
bool operator<= (const sc_signed &u, int v)
bool operator<= (const sc_signed &u, unsigned int v)
bool operator<= (int64 u, const sc_signed &v)
bool operator<= (uint64 u, const sc_signed &v)
bool operator<= (long u, const sc_signed &v)
bool operator<= (unsigned long u, const sc_signed &v)
bool operator<= (int u, const sc_signed &v)
bool operator<= (unsigned int u, const sc_signed &v)
bool operator> (const sc_unsigned &u, const sc_signed &v)
bool operator> (const sc_signed &u, const sc_unsigned &v)
bool operator> (const sc_signed &u, const sc_signed &v)
bool operator> (const sc_signed &u, int64 v)
bool operator> (const sc_signed &u, uint64 v)
bool operator> (const sc_signed &u, long v)
bool operator> (const sc_signed &u, unsigned long v)
bool operator> (const sc_signed &u, int v)
bool operator> (const sc_signed &u, unsigned int v)
bool operator> (int64 u, const sc_signed &v)
bool operator> (uint64 u, const sc_signed &v)
bool operator> (long u, const sc_signed &v)
bool operator> (unsigned long u, const sc_signed &v)
bool operator> (int u, const sc_signed &v)
bool operator> (unsigned int u, const sc_signed &v)
bool operator>= (const sc_unsigned &u, const sc_signed &v)
bool operator>= (const sc_signed &u, const sc_unsigned &v)
bool operator>= (const sc_signed &u, const sc_signed &v)
bool operator>= (const sc_signed &u, int64 v)
bool operator>= (const sc_signed &u, uint64 v)
bool operator>= (const sc_signed &u, long v)
bool operator>= (const sc_signed &u, unsigned long v)
bool operator>= (const sc_signed &u, int v)
bool operator>= (const sc_signed &u, unsigned int v)
bool operator>= (int64 u, const sc_signed &v)
bool operator>= (uint64 u, const sc_signed &v)
bool operator>= (long u, const sc_signed &v)
bool operator>= (unsigned long u, const sc_signed &v)
bool operator>= (int u, const sc_signed &v)
bool operator>= (unsigned int u, const sc_signed &v)
sc_signed operator~ (const sc_signed &u)
inline::std::ostream & operator<< (::std::ostream &, const sc_signed_bitref_r &)
inline::std::istream & operator>> (::std::istream &, sc_signed_bitref &)
inline::std::ostream & operator<< (::std::ostream &, const sc_signed_subref_r &)
inline::std::istream & operator>> (::std::istream &, sc_signed_subref &)
inline::std::ostream & operator<< (::std::ostream &, const sc_signed &)
inline::std::istream & operator>> (::std::istream &, sc_signed &)
void sc_uint_concref_invalid_length (int length)
bool operator== (const sc_uint_base &a, const sc_uint_base &b)
bool operator!= (const sc_uint_base &a, const sc_uint_base &b)
bool operator< (const sc_uint_base &a, const sc_uint_base &b)
bool operator<= (const sc_uint_base &a, const sc_uint_base &b)
bool operator> (const sc_uint_base &a, const sc_uint_base &b)
bool operator>= (const sc_uint_base &a, const sc_uint_base &b)
inline::std::ostream & operator<< (::std::ostream &, const sc_uint_bitref_r &)
inline::std::istream & operator>> (::std::istream &, sc_uint_bitref &)
inline::std::ostream & operator<< (::std::ostream &, const sc_uint_subref_r &)
inline::std::istream & operator>> (::std::istream &, sc_uint_subref &)
inline::std::ostream & operator<< (::std::ostream &, const sc_uint_base &)
inline::std::istream & operator>> (::std::istream &, sc_uint_base &)
bool and_reduce (const sc_uint_subref_r &a)
bool nand_reduce (const sc_uint_subref_r &a)
bool or_reduce (const sc_uint_subref_r &a)
bool nor_reduce (const sc_uint_subref_r &a)
bool xor_reduce (const sc_uint_subref_r &a)
bool xnor_reduce (const sc_uint_subref_r &a)
bool and_reduce (const sc_uint_base &a)
bool nand_reduce (const sc_uint_base &a)
bool or_reduce (const sc_uint_base &a)
bool nor_reduce (const sc_uint_base &a)
bool xor_reduce (const sc_uint_base &a)
bool xnor_reduce (const sc_uint_base &a)
sc_unsigned operator<< (const sc_unsigned &u, const sc_int_base &v)
sc_unsigned operator>> (const sc_unsigned &u, const sc_int_base &v)
bool operator== (const sc_unsigned &u, const sc_int_base &v)
bool operator== (const sc_int_base &u, const sc_unsigned &v)
bool operator!= (const sc_unsigned &u, const sc_int_base &v)
bool operator!= (const sc_int_base &u, const sc_unsigned &v)
bool operator< (const sc_unsigned &u, const sc_int_base &v)
bool operator< (const sc_int_base &u, const sc_unsigned &v)
bool operator<= (const sc_unsigned &u, const sc_int_base &v)
bool operator<= (const sc_int_base &u, const sc_unsigned &v)
bool operator> (const sc_unsigned &u, const sc_int_base &v)
bool operator> (const sc_int_base &u, const sc_unsigned &v)
bool operator>= (const sc_unsigned &u, const sc_int_base &v)
bool operator>= (const sc_int_base &u, const sc_unsigned &v)
sc_unsigned operator+ (const sc_unsigned &u, const sc_uint_base &v)
sc_unsigned operator+ (const sc_uint_base &u, const sc_unsigned &v)
sc_unsigned operator* (const sc_unsigned &u, const sc_uint_base &v)
sc_unsigned operator* (const sc_uint_base &u, const sc_unsigned &v)
sc_unsigned operator/ (const sc_unsigned &u, const sc_uint_base &v)
sc_unsigned operator/ (const sc_uint_base &u, const sc_unsigned &v)
sc_unsigned operator% (const sc_unsigned &u, const sc_uint_base &v)
sc_unsigned operator% (const sc_uint_base &u, const sc_unsigned &v)
sc_unsigned operator & (const sc_unsigned &u, const sc_uint_base &v)
sc_unsigned operator & (const sc_uint_base &u, const sc_unsigned &v)
sc_unsigned operator| (const sc_unsigned &u, const sc_uint_base &v)
sc_unsigned operator| (const sc_uint_base &u, const sc_unsigned &v)
sc_unsigned operator^ (const sc_unsigned &u, const sc_uint_base &v)
sc_unsigned operator^ (const sc_uint_base &u, const sc_unsigned &v)
sc_unsigned operator<< (const sc_unsigned &u, const sc_uint_base &v)
sc_unsigned operator>> (const sc_unsigned &u, const sc_uint_base &v)
bool operator== (const sc_unsigned &u, const sc_uint_base &v)
bool operator== (const sc_uint_base &u, const sc_unsigned &v)
bool operator!= (const sc_unsigned &u, const sc_uint_base &v)
bool operator!= (const sc_uint_base &u, const sc_unsigned &v)
bool operator< (const sc_unsigned &u, const sc_uint_base &v)
bool operator< (const sc_uint_base &u, const sc_unsigned &v)
bool operator<= (const sc_unsigned &u, const sc_uint_base &v)
bool operator<= (const sc_uint_base &u, const sc_unsigned &v)
bool operator> (const sc_unsigned &u, const sc_uint_base &v)
bool operator> (const sc_uint_base &u, const sc_unsigned &v)
bool operator>= (const sc_unsigned &u, const sc_uint_base &v)
bool operator>= (const sc_uint_base &u, const sc_unsigned &v)
sc_unsigned operator+ (const sc_unsigned &u, const sc_unsigned &v)
sc_unsigned operator+ (const sc_unsigned &u, uint64 v)
sc_unsigned operator+ (uint64 u, const sc_unsigned &v)
sc_unsigned operator+ (const sc_unsigned &u, unsigned long v)
sc_unsigned operator+ (unsigned long u, const sc_unsigned &v)
sc_unsigned operator* (const sc_unsigned &u, const sc_unsigned &v)
sc_unsigned operator* (const sc_unsigned &u, uint64 v)
sc_unsigned operator* (uint64 u, const sc_unsigned &v)
sc_unsigned operator* (const sc_unsigned &u, unsigned long v)
sc_unsigned operator* (unsigned long u, const sc_unsigned &v)
sc_unsigned operator/ (const sc_unsigned &u, const sc_unsigned &v)
sc_unsigned operator/ (const sc_unsigned &u, uint64 v)
sc_unsigned operator/ (uint64 u, const sc_unsigned &v)
sc_unsigned operator/ (const sc_unsigned &u, unsigned long v)
sc_unsigned operator/ (unsigned long u, const sc_unsigned &v)
sc_unsigned operator% (const sc_unsigned &u, const sc_unsigned &v)
sc_unsigned operator% (const sc_unsigned &u, uint64 v)
sc_unsigned operator% (uint64 u, const sc_unsigned &v)
sc_unsigned operator% (const sc_unsigned &u, unsigned long v)
sc_unsigned operator% (unsigned long u, const sc_unsigned &v)
sc_unsigned operator & (const sc_unsigned &u, const sc_unsigned &v)
sc_unsigned operator & (const sc_unsigned &u, uint64 v)
sc_unsigned operator & (uint64 u, const sc_unsigned &v)
sc_unsigned operator & (const sc_unsigned &u, unsigned long v)
sc_unsigned operator & (unsigned long u, const sc_unsigned &v)
sc_unsigned operator| (const sc_unsigned &u, const sc_unsigned &v)
sc_unsigned operator| (const sc_unsigned &u, uint64 v)
sc_unsigned operator| (uint64 u, const sc_unsigned &v)
sc_unsigned operator| (const sc_unsigned &u, unsigned long v)
sc_unsigned operator| (unsigned long u, const sc_unsigned &v)
sc_unsigned operator^ (const sc_unsigned &u, const sc_unsigned &v)
sc_unsigned operator^ (const sc_unsigned &u, uint64 v)
sc_unsigned operator^ (uint64 u, const sc_unsigned &v)
sc_unsigned operator^ (const sc_unsigned &u, unsigned long v)
sc_unsigned operator^ (unsigned long u, const sc_unsigned &v)
sc_unsigned operator+ (const sc_unsigned &u)
bool operator== (const sc_unsigned &u, const sc_unsigned &v)
bool operator== (const sc_unsigned &u, int64 v)
bool operator== (int64 u, const sc_unsigned &v)
bool operator== (const sc_unsigned &u, uint64 v)
bool operator== (uint64 u, const sc_unsigned &v)
bool operator== (const sc_unsigned &u, long v)
bool operator== (long u, const sc_unsigned &v)
bool operator== (const sc_unsigned &u, unsigned long v)
bool operator== (unsigned long u, const sc_unsigned &v)
bool operator< (const sc_unsigned &u, const sc_unsigned &v)
bool operator< (const sc_unsigned &u, int64 v)
bool operator< (int64 u, const sc_unsigned &v)
bool operator< (const sc_unsigned &u, uint64 v)
bool operator< (uint64 u, const sc_unsigned &v)
bool operator< (const sc_unsigned &u, long v)
bool operator< (long u, const sc_unsigned &v)
bool operator< (const sc_unsigned &u, unsigned long v)
bool operator< (unsigned long u, const sc_unsigned &v)
int compare_unsigned (small_type us, int unb, int und, const sc_digit *ud, small_type vs, int vnb, int vnd, const sc_digit *vd, small_type if_u_signed, small_type if_v_signed)
sc_unsigned add_unsigned_friend (small_type us, int unb, int und, const sc_digit *ud, small_type vs, int vnb, int vnd, const sc_digit *vd)
sc_unsigned sub_unsigned_friend (small_type us, int unb, int und, const sc_digit *ud, small_type vs, int vnb, int vnd, const sc_digit *vd)
sc_unsigned mul_unsigned_friend (small_type s, int unb, int und, const sc_digit *ud, int vnb, int vnd, const sc_digit *vd)
sc_unsigned div_unsigned_friend (small_type s, int unb, int und, const sc_digit *ud, int vnb, int vnd, const sc_digit *vd)
sc_unsigned mod_unsigned_friend (small_type us, int unb, int und, const sc_digit *ud, int vnb, int vnd, const sc_digit *vd)
sc_unsigned and_unsigned_friend (small_type us, int unb, int und, const sc_digit *ud, small_type vs, int vnb, int vnd, const sc_digit *vd)
sc_unsigned or_unsigned_friend (small_type us, int unb, int und, const sc_digit *ud, small_type vs, int vnb, int vnd, const sc_digit *vd)
sc_unsigned xor_unsigned_friend (small_type us, int unb, int und, const sc_digit *ud, small_type vs, int vnb, int vnd, const sc_digit *vd)
sc_unsigned operator+ (const sc_unsigned &u, unsigned int v)
sc_unsigned operator+ (unsigned int u, const sc_unsigned &v)
sc_unsigned operator* (const sc_unsigned &u, unsigned int v)
sc_unsigned operator* (unsigned int u, const sc_unsigned &v)
sc_unsigned operator/ (const sc_unsigned &u, unsigned int v)
sc_unsigned operator/ (unsigned int u, const sc_unsigned &v)
sc_unsigned operator% (const sc_unsigned &u, unsigned int v)
sc_unsigned operator% (unsigned int u, const sc_unsigned &v)
sc_unsigned operator & (const sc_unsigned &u, unsigned int v)
sc_unsigned operator & (unsigned int u, const sc_unsigned &v)
sc_unsigned operator| (const sc_unsigned &u, unsigned int v)
sc_unsigned operator| (unsigned int u, const sc_unsigned &v)
sc_unsigned operator^ (const sc_unsigned &u, unsigned int v)
sc_unsigned operator^ (unsigned int u, const sc_unsigned &v)
sc_unsigned operator<< (const sc_unsigned &u, const sc_unsigned &v)
sc_unsigned operator<< (const sc_unsigned &u, int64 v)
sc_unsigned operator<< (const sc_unsigned &u, uint64 v)
sc_unsigned operator<< (const sc_unsigned &u, long v)
sc_unsigned operator<< (const sc_unsigned &u, unsigned long v)
sc_unsigned operator<< (const sc_unsigned &u, int v)
sc_unsigned operator<< (const sc_unsigned &u, unsigned int v)
sc_unsigned operator>> (const sc_unsigned &u, const sc_unsigned &v)
sc_unsigned operator>> (const sc_unsigned &u, int64 v)
sc_unsigned operator>> (const sc_unsigned &u, uint64 v)
sc_unsigned operator>> (const sc_unsigned &u, long v)
sc_unsigned operator>> (const sc_unsigned &u, unsigned long v)
sc_unsigned operator>> (const sc_unsigned &u, int v)
sc_unsigned operator>> (const sc_unsigned &u, unsigned int v)
bool operator== (const sc_unsigned &u, int v)
bool operator== (const sc_unsigned &u, unsigned int v)
bool operator== (int u, const sc_unsigned &v)
bool operator== (unsigned int u, const sc_unsigned &v)
bool operator!= (const sc_unsigned &u, const sc_unsigned &v)
bool operator!= (const sc_unsigned &u, int64 v)
bool operator!= (const sc_unsigned &u, uint64 v)
bool operator!= (const sc_unsigned &u, long v)
bool operator!= (const sc_unsigned &u, unsigned long v)
bool operator!= (const sc_unsigned &u, int v)
bool operator!= (const sc_unsigned &u, unsigned int v)
bool operator!= (int64 u, const sc_unsigned &v)
bool operator!= (uint64 u, const sc_unsigned &v)
bool operator!= (long u, const sc_unsigned &v)
bool operator!= (unsigned long u, const sc_unsigned &v)
bool operator!= (int u, const sc_unsigned &v)
bool operator!= (unsigned int u, const sc_unsigned &v)
bool operator< (const sc_unsigned &u, int v)
bool operator< (const sc_unsigned &u, unsigned int v)
bool operator< (int u, const sc_unsigned &v)
bool operator< (unsigned int u, const sc_unsigned &v)
bool operator<= (const sc_unsigned &u, const sc_unsigned &v)
bool operator<= (const sc_unsigned &u, int64 v)
bool operator<= (const sc_unsigned &u, uint64 v)
bool operator<= (const sc_unsigned &u, long v)
bool operator<= (const sc_unsigned &u, unsigned long v)
bool operator<= (const sc_unsigned &u, int v)
bool operator<= (const sc_unsigned &u, unsigned int v)
bool operator<= (int64 u, const sc_unsigned &v)
bool operator<= (uint64 u, const sc_unsigned &v)
bool operator<= (long u, const sc_unsigned &v)
bool operator<= (unsigned long u, const sc_unsigned &v)
bool operator<= (int u, const sc_unsigned &v)
bool operator<= (unsigned int u, const sc_unsigned &v)
bool operator> (const sc_unsigned &u, const sc_unsigned &v)
bool operator> (const sc_unsigned &u, int64 v)
bool operator> (const sc_unsigned &u, uint64 v)
bool operator> (const sc_unsigned &u, long v)
bool operator> (const sc_unsigned &u, unsigned long v)
bool operator> (const sc_unsigned &u, int v)
bool operator> (const sc_unsigned &u, unsigned int v)
bool operator> (int64 u, const sc_unsigned &v)
bool operator> (uint64 u, const sc_unsigned &v)
bool operator> (long u, const sc_unsigned &v)
bool operator> (unsigned long u, const sc_unsigned &v)
bool operator> (int u, const sc_unsigned &v)
bool operator> (unsigned int u, const sc_unsigned &v)
bool operator>= (const sc_unsigned &u, const sc_unsigned &v)
bool operator>= (const sc_unsigned &u, int64 v)
bool operator>= (const sc_unsigned &u, uint64 v)
bool operator>= (const sc_unsigned &u, long v)
bool operator>= (const sc_unsigned &u, unsigned long v)
bool operator>= (const sc_unsigned &u, int v)
bool operator>= (const sc_unsigned &u, unsigned int v)
bool operator>= (int64 u, const sc_unsigned &v)
bool operator>= (uint64 u, const sc_unsigned &v)
bool operator>= (long u, const sc_unsigned &v)
bool operator>= (unsigned long u, const sc_unsigned &v)
bool operator>= (int u, const sc_unsigned &v)
bool operator>= (unsigned int u, const sc_unsigned &v)
sc_unsigned operator~ (const sc_unsigned &u)
inline::std::ostream & operator<< (::std::ostream &, const sc_unsigned_bitref_r &)
inline::std::istream & operator>> (::std::istream &, sc_unsigned_bitref &)
inline::std::ostream & operator<< (::std::ostream &, const sc_unsigned_subref_r &)
inline::std::istream & operator>> (::std::istream &, sc_unsigned_subref &)
inline::std::ostream & operator<< (::std::ostream &, const sc_unsigned &)
inline::std::istream & operator>> (::std::istream &, sc_unsigned &)
bool and_reduce (const sc_concatref &a)
bool nand_reduce (const sc_concatref &a)
bool or_reduce (const sc_concatref &a)
bool nor_reduce (const sc_concatref &a)
bool xor_reduce (const sc_concatref &a)
bool xnor_reduce (const sc_concatref &a)
const sc_unsigned operator<< (const sc_concatref &target, uint64 shift)
const sc_unsigned operator<< (const sc_concatref &target, int64 shift)
const sc_unsigned operator<< (const sc_concatref &target, unsigned long shift)
const sc_unsigned operator<< (const sc_concatref &target, unsigned int shift)
const sc_unsigned operator<< (const sc_concatref &target, long shift)
const sc_unsigned operator>> (const sc_concatref &target, uint64 shift)
const sc_unsigned operator>> (const sc_concatref &target, int64 shift)
const sc_unsigned operator>> (const sc_concatref &target, unsigned long shift)
const sc_unsigned operator>> (const sc_concatref &target, unsigned int shift)
const sc_unsigned operator>> (const sc_concatref &target, long shift)
inline::std::ostream & operator<< (::std::ostream &os, const sc_concatref &v)
inline::std::istream & operator>> (::std::istream &is, sc_concatref &a)
sc_dt::sc_concatrefconcat (sc_dt::sc_value_base &a, sc_dt::sc_value_base &b)
const sc_dt::sc_concatrefconcat (const sc_dt::sc_value_base &a, const sc_dt::sc_value_base &b)
const sc_dt::sc_concatrefconcat (const sc_dt::sc_value_base &a, bool b)
const sc_dt::sc_concatrefconcat (bool a, const sc_dt::sc_value_base &b)
sc_dt::sc_concatrefoperator, (sc_dt::sc_value_base &a, sc_dt::sc_value_base &b)
const sc_dt::sc_concatrefoperator, (const sc_dt::sc_value_base &a, const sc_dt::sc_value_base &b)
const sc_dt::sc_concatrefoperator, (const sc_dt::sc_value_base &a, bool b)
const sc_dt::sc_concatrefoperator, (bool a, const sc_dt::sc_value_base &b)
template<class T>
const T sc_min (const T &a, const T &b)
template<class T>
const T sc_max (const T &a, const T &b)
template<class T>
const T sc_abs (const T &a)
int sc_roundup (int n, int m)
const std::string to_string (sc_numrep numrep)
sc_string_old operator+ (const char *s, const sc_string_old &t)
::std::istream & operator>> (::std::istream &is, sc_string_old &s)
sc_numrep sc_io_base (systemc_ostream &stream_object, sc_numrep def_base)
bool sc_io_show_base (systemc_ostream &stream_object)
systemc_ostreamoperator<< (systemc_ostream &os, sc_numrep numrep)
systemc_ostreamoperator<< (systemc_ostream &os, const sc_string_old &a)

変数

const sc_logic sc_logic_0 (Log_0)
const sc_logic sc_logic_1 (Log_1)
const sc_logic sc_logic_Z (Log_Z)
const sc_logic sc_logic_X (Log_X)
const sc_logic SC_LOGIC_0 (Log_0)
const sc_logic SC_LOGIC_1 (Log_1)
const sc_logic SC_LOGIC_Z (Log_Z)
const sc_logic SC_LOGIC_X (Log_X)
static const sc_digit data_array []
static const sc_digit ctrl_array []
const int SC_DIGIT_SIZE = BITS_PER_BYTE * sizeof( sc_digit )
const sc_digit SC_DIGIT_ZERO = (sc_digit)0
const sc_digit SC_DIGIT_ONE = (sc_digit)1
const sc_digit SC_DIGIT_TWO = (sc_digit)2
const int SC_BUILTIN_WL_ = 32
const int SC_BUILTIN_IWL_ = 32
const sc_q_mode SC_BUILTIN_Q_MODE_ = SC_TRN
const sc_o_mode SC_BUILTIN_O_MODE_ = SC_WRAP
const int SC_BUILTIN_N_BITS_ = 0
const int SC_DEFAULT_WL_ = SC_BUILTIN_WL_
const int SC_DEFAULT_IWL_ = SC_BUILTIN_IWL_
const sc_q_mode SC_DEFAULT_Q_MODE_ = SC_BUILTIN_Q_MODE_
const sc_o_mode SC_DEFAULT_O_MODE_ = SC_BUILTIN_O_MODE_
const int SC_DEFAULT_N_BITS_ = SC_BUILTIN_N_BITS_
const sc_switch SC_BUILTIN_CAST_SWITCH_ = SC_ON
const sc_switch SC_DEFAULT_CAST_SWITCH_ = SC_BUILTIN_CAST_SWITCH_
const int SC_BUILTIN_DIV_WL_ = 64
const int SC_BUILTIN_CTE_WL_ = 64
const int SC_BUILTIN_MAX_WL_ = 1024
const int SC_DEFAULT_DIV_WL_ = SC_BUILTIN_DIV_WL_
const int SC_DEFAULT_CTE_WL_ = SC_BUILTIN_CTE_WL_
const int SC_DEFAULT_MAX_WL_ = SC_BUILTIN_MAX_WL_
 div
const unsigned int SCFX_IEEE_DOUBLE_BIAS = 1023U
const int SCFX_IEEE_DOUBLE_E_MAX = 1023
const int SCFX_IEEE_DOUBLE_E_MIN = -1022
const unsigned int SCFX_IEEE_DOUBLE_M_SIZE = 52
const unsigned int SCFX_IEEE_FLOAT_BIAS = 127U
const int SCFX_IEEE_FLOAT_E_MAX = 127
const int SCFX_IEEE_FLOAT_E_MIN = -126
const unsigned int SCFX_IEEE_FLOAT_M_SIZE = 23
static word_listfree_words [32] = { 0 }
const int SCFX_POW10_TABLE_SIZE = 32
static scfx_pow10 pow10_fx
static const int mantissa0_size = SCFX_IEEE_DOUBLE_M_SIZE - bits_in_int
static scfx_rep_nodelist = 0
const int min_mant = 4
const int bits_in_int = sizeof(int) * CHAR_BIT
const int bits_in_word = sizeof(word) * CHAR_BIT
const uint_type mask_int [SC_INTWIDTH][SC_INTWIDTH]
const uint64 UINT64_ZERO = 0ULL
const uint64 UINT64_ONE = 1ULL
const uint64 UINT64_32ONES = 0x00000000ffffffffULL
const small_type NB_DEFAULT_BASE = SC_DEC
const uint64 UINT_ZERO = UINT64_ZERO
const uint64 UINT_ONE = UINT64_ONE


型定義

typedef ::std::ios::fmtflags sc_dt::fmtflags

sc_nbdefs.h176 行で定義されています。

typedef unsigned short sc_dt::half_word

scfx_mant.h64 行で定義されています。

typedef long long sc_dt::int64

sc_nbdefs.h137 行で定義されています。

sc_nbdefs.h187 行で定義されています。

typedef unsigned int sc_dt::sc_digit

sc_nbdefs.h132 行で定義されています。

sc_fxcast_switch.h100 行で定義されています。

sc_fxtype_params.h123 行で定義されています。

sc_length_param.h107 行で定義されています。

typedef int sc_dt::small_type

sc_nbdefs.h77 行で定義されています。

typedef ::std::istream sc_dt::systemc_istream

sc_string.h98 行で定義されています。

typedef ::std::ostream sc_dt::systemc_ostream

sc_string.h99 行で定義されています。

typedef unsigned char sc_dt::uchar

sc_nbdefs.h73 行で定義されています。

typedef unsigned long long sc_dt::uint64

sc_nbdefs.h138 行で定義されています。

sc_nbdefs.h188 行で定義されています。

typedef unsigned int sc_dt::word

scfx_mant.h60 行で定義されています。


列挙型

列挙型の値:
SC_NOW 
SC_LATER 

sc_context.h118 行で定義されています。

00119 {
00120     SC_NOW,
00121     SC_LATER
00122 };

列挙型の値:
SC_TC_ 
SC_US_ 

sc_fxdefs.h64 行で定義されています。

00065 {
00066     SC_TC_,     // two's complement
00067     SC_US_      // unsigned
00068 };

列挙型の値:
SC_F 
SC_E 

sc_fxdefs.h170 行で定義されています。

00171 {
00172     SC_F,       // fixed
00173     SC_E        // scientific
00174 };

列挙型の値:
Log_0 
Log_1 
Log_Z 
Log_X 

sc_logic.h71 行で定義されています。

00072 {
00073     Log_0 = 0,
00074     Log_1,
00075     Log_Z,
00076     Log_X
00077 };

列挙型の値:
SC_NOBASE 
SC_BIN 
SC_OCT 
SC_DEC 
SC_HEX 
SC_BIN_US 
SC_BIN_SM 
SC_OCT_US 
SC_OCT_SM 
SC_HEX_US 
SC_HEX_SM 
SC_CSD 

sc_string.h79 行で定義されています。

00080 {
00081     SC_NOBASE = 0,
00082     SC_BIN    = 2,
00083     SC_OCT    = 8,
00084     SC_DEC    = 10,
00085     SC_HEX    = 16,
00086     SC_BIN_US,
00087     SC_BIN_SM,
00088     SC_OCT_US,
00089     SC_OCT_SM,
00090     SC_HEX_US,
00091     SC_HEX_SM,
00092     SC_CSD
00093 };

列挙型の値:
SC_SAT 
SC_SAT_ZERO 
SC_SAT_SYM 
SC_WRAP 
SC_WRAP_SM 

sc_fxdefs.h117 行で定義されています。

00118 {
00119     SC_SAT,             // saturation
00120     SC_SAT_ZERO,        // saturation to zero
00121     SC_SAT_SYM,         // symmetrical saturation
00122     SC_WRAP,            // wrap-around (*)
00123     SC_WRAP_SM          // sign magnitude wrap-around (*)
00124 };

列挙型の値:
SC_RND 
SC_RND_ZERO 
SC_RND_MIN_INF 
SC_RND_INF 
SC_RND_CONV 
SC_TRN 
SC_TRN_ZERO 

sc_fxdefs.h88 行で定義されています。

00089 {
00090     SC_RND,             // rounding to plus infinity
00091     SC_RND_ZERO,        // rounding to zero
00092     SC_RND_MIN_INF,     // rounding to minus infinity
00093     SC_RND_INF,         // rounding to infinity
00094     SC_RND_CONV,        // convergent rounding
00095     SC_TRN,             // truncation
00096     SC_TRN_ZERO         // truncation to zero
00097 };

列挙型の値:
SC_OFF 
SC_ON 

sc_fxdefs.h146 行で定義されています。

00147 {
00148     SC_OFF,
00149     SC_ON
00150 };


関数

CLASS_TYPE sc_dt::ADD_HELPER ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
small_type  vs,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_signed.cpp4122 行で定義されています。

static int sc_dt::add_mants ( int  size,
scfx_mant &  result,
const scfx_mant &  a,
const scfx_mant &  b 
) [inline, static]

scfx_rep.cpp1228 行で定義されています。

01230 {
01231     unsigned int carry = 0;
01232 
01233     int index = 0;
01234 
01235     do
01236     {
01237         word x = a[index];
01238         word y = b[index];
01239 
01240         y += carry;
01241         carry = y < carry;
01242         y += x;
01243         carry += y < x;
01244         result[index] = y;
01245     }
01246     while( ++ index < size );
01247 
01248     return ( carry ? 1 : 0 );
01249 }

void sc_dt::add_on_help ( small_type &  us,
int  ,
int  und,
sc_digit *  ud,
small_type  vs,
int  ,
int  vnd,
const sc_digit *  vd 
)

sc_nbexterns.cpp62 行で定義されています。

00066 {
00067 
00068   vnd = vec_skip_leading_zeros(vnd, vd);
00069 
00070   if (us == vs) {  // case 3
00071 
00072     if (und >= vnd)
00073       vec_add_on(und, ud, vnd, vd);
00074     else
00075       vec_add_on2(und, ud, vnd, vd);
00076 
00077   }
00078   else {  // case 4
00079 
00080     // vec_cmp expects that und is the number of non-zero digits in ud.
00081     int new_und = vec_skip_leading_zeros(und, ud); 
00082     int cmp_res = vec_cmp(new_und, ud, vnd, vd);
00083 
00084     if (cmp_res == 0)  { // u == v
00085       us = SC_ZERO;
00086       vec_zero(und, ud);
00087       return;
00088     }
00089 
00090     if (cmp_res > 0) // u > v
00091       vec_sub_on(und, ud, vnd, vd);
00092 
00093     else { // u < v
00094       us = -us;
00095       vec_sub_on2(und, ud, vnd, vd);
00096     }
00097 
00098   }
00099 }

scfx_rep * sc_dt::add_scfx_rep ( const scfx_rep &  lhs,
const scfx_rep &  rhs,
int  max_wl 
)

scfx_rep.cpp1279 行で定義されています。

01280 {
01281     scfx_rep& result = *new scfx_rep;
01282 
01283     //
01284     // check for special cases
01285     //
01286 
01287     if( lhs.is_nan() || rhs.is_nan()
01288     ||  ( lhs.is_inf() && rhs.is_inf() && lhs.m_sign != rhs.m_sign ) )
01289     {
01290         result.set_nan();
01291         return &result;
01292     }
01293 
01294     if( lhs.is_inf() )
01295     {
01296         result.set_inf( lhs.m_sign );
01297         return &result;
01298     }
01299 
01300     if( rhs.is_inf() )
01301     {
01302         result.set_inf( rhs.m_sign );
01303         return &result;
01304     }
01305 
01306     //
01307     // align operands if needed
01308     //
01309 
01310     scfx_mant_ref lhs_mant;
01311     scfx_mant_ref rhs_mant;
01312 
01313     int len_mant = lhs.size();
01314     int new_wp = lhs.m_wp;
01315 
01316     align( lhs, rhs, new_wp, len_mant, lhs_mant, rhs_mant );
01317 
01318     //
01319     // size the result mantissa
01320     //
01321 
01322     result.resize_to( len_mant );
01323     result.m_wp = new_wp;
01324 
01325     //
01326     // do it
01327     //
01328 
01329     if( lhs.m_sign == rhs.m_sign )
01330     {
01331         add_mants( len_mant, result.m_mant, lhs_mant, rhs_mant );
01332         result.m_sign = lhs.m_sign;
01333     }
01334     else
01335     {
01336         int cmp = compare_abs( lhs, rhs );
01337 
01338         if( cmp == 1 )
01339         {
01340             sub_mants( len_mant, result.m_mant, lhs_mant, rhs_mant );
01341             result.m_sign = lhs.m_sign;
01342         }
01343         else if ( cmp == -1 )
01344         {
01345             sub_mants( len_mant, result.m_mant, rhs_mant, lhs_mant );
01346             result.m_sign = rhs.m_sign;
01347         }
01348         else
01349         {
01350             result.m_mant.clear();
01351             result.m_sign = 1;
01352         }
01353     }
01354 
01355     result.find_sw();
01356     result.round( max_wl );
01357 
01358     return &result;
01359 }

sc_signed sc_dt::add_signed_friend ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
small_type  vs,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_unsigned sc_dt::add_unsigned_friend ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
small_type  vs,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

void sc_dt::align ( const scfx_rep &  lhs,
const scfx_rep &  rhs,
int &  new_wp,
int &  len_mant,
scfx_mant_ref &  lhs_mant,
scfx_mant_ref &  rhs_mant 
)

scfx_rep.cpp2233 行で定義されています。

02235 {
02236     bool need_lhs = true;
02237     bool need_rhs = true;
02238 
02239     if( lhs.m_wp != rhs.m_wp || lhs.size() != rhs.size() )
02240     {
02241         int lower_bound_lhs = lhs.m_lsw - lhs.m_wp;
02242         int upper_bound_lhs = lhs.m_msw - lhs.m_wp;
02243         int lower_bound_rhs = rhs.m_lsw - rhs.m_wp;
02244         int upper_bound_rhs = rhs.m_msw - rhs.m_wp;
02245 
02246         int lower_bound = sc_min( lower_bound_lhs, lower_bound_rhs );
02247         int upper_bound = sc_max( upper_bound_lhs, upper_bound_rhs );
02248 
02249         new_wp   = -lower_bound;
02250         len_mant = sc_max( min_mant, upper_bound - lower_bound + 1 );
02251 
02252         if( new_wp != lhs.m_wp || len_mant != lhs.size() )
02253         {
02254             lhs_mant = lhs.resize( len_mant, new_wp );
02255             need_lhs = false;
02256         }
02257 
02258         if( new_wp != rhs.m_wp || len_mant != rhs.size() )
02259         {
02260             rhs_mant = rhs.resize( len_mant, new_wp );
02261             need_rhs = false;
02262         }
02263     }
02264 
02265     if( need_lhs )
02266     {
02267         lhs_mant = lhs.m_mant;
02268     }
02269 
02270     if( need_rhs )
02271     {
02272         rhs_mant = rhs.m_mant;
02273     }
02274 }

CLASS_TYPE sc_dt::AND_HELPER ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
small_type  vs,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_signed.cpp4380 行で定義されています。

void sc_dt::and_on_help ( small_type  us,
int  ,
int  und,
sc_digit *  ud,
small_type  vs,
int  ,
int  vnd,
const sc_digit *  vd 
)

sc_nbexterns.cpp584 行で定義されています。

00590 {
00591 
00592   register sc_digit *x = ud;
00593   register const sc_digit *y = vd;
00594   int xnd = und;
00595   int ynd = vnd;
00596 
00597   // Truncate y.
00598   if (xnd < ynd)
00599     ynd = xnd;
00600 
00601   const sc_digit *xend = (x + xnd);
00602   const sc_digit *yend = (y + ynd);
00603 
00604   // x is longer than y.
00605 
00606   small_type s = mul_signs(us, vs);
00607 
00608   if (s > 0) {
00609 
00610     if (us > 0) { // case 2
00611 
00612       while (y < yend)
00613         (*x++) &= (*y++);
00614 
00615       while (x < xend)
00616         (*x++) = 0;
00617 
00618     }
00619     else {  // case 3
00620 
00621       register sc_digit xcarry = 1;
00622       register sc_digit ycarry = 1;
00623 
00624       while (y < yend) {
00625         xcarry += (~(*x) & DIGIT_MASK);
00626         ycarry += (~(*y++) & DIGIT_MASK);
00627         (*x++) = (xcarry & ycarry) & DIGIT_MASK;
00628         xcarry >>= BITS_PER_DIGIT;
00629         ycarry >>= BITS_PER_DIGIT;
00630       }
00631 
00632       while (x < xend) {
00633         xcarry += (~(*x) & DIGIT_MASK);
00634         ycarry += DIGIT_MASK;
00635         (*x++) = (xcarry & ycarry) & DIGIT_MASK;
00636         xcarry >>= BITS_PER_DIGIT;
00637         ycarry >>= BITS_PER_DIGIT;
00638       }
00639 
00640     }
00641   }
00642   else {
00643 
00644     if (us > 0) { // case 4
00645 
00646       register sc_digit ycarry = 1;
00647 
00648       while (y < yend) {
00649         ycarry += (~(*y++) & DIGIT_MASK);
00650         (*x++) &= ycarry & DIGIT_MASK;
00651         ycarry >>= BITS_PER_DIGIT;
00652       }
00653 
00654       while (x < xend) {
00655         ycarry += DIGIT_MASK;
00656         (*x++) &= ycarry & DIGIT_MASK;
00657         ycarry >>= BITS_PER_DIGIT;
00658       }
00659 
00660     }
00661     else {  // case 5
00662 
00663       register sc_digit xcarry = 1;
00664 
00665       while (y < yend) {
00666         xcarry += (~(*x) & DIGIT_MASK);
00667         (*x++) = (xcarry & (*y++)) & DIGIT_MASK;
00668         xcarry >>= BITS_PER_DIGIT;
00669       }
00670 
00671       while (x < xend)
00672         (*x++) = 0;
00673 
00674     }
00675   }
00676 }

bool sc_dt::and_reduce ( const sc_concatref &  a  )  [inline]

sc_concatref.h437 行で定義されています。

00438 {
00439     return a.and_reduce();
00440 }

bool sc_dt::and_reduce ( const sc_uint_base &  a  )  [inline]

sc_uint_base.h1276 行で定義されています。

01277 {
01278     return a.and_reduce();
01279 }

bool sc_dt::and_reduce ( const sc_uint_subref_r &  a  )  [inline]

sc_uint_base.h1093 行で定義されています。

01094 {
01095     return a.and_reduce();
01096 }

bool sc_dt::and_reduce ( const sc_int_base &  a  )  [inline]

sc_int_base.h1305 行で定義されています。

01306 {
01307     return a.and_reduce();
01308 }

bool sc_dt::and_reduce ( const sc_int_subref_r &  a  )  [inline]

sc_int_base.h1122 行で定義されています。

01123 {
01124     return a.and_reduce();
01125 }

template<class X>
sc_logic_value_t sc_dt::and_reduce ( const sc_proxy< X > &  a  )  [inline]

sc_proxy.h1459 行で定義されています。

01460 {
01461     return a.and_reduce();
01462 }

sc_signed sc_dt::and_signed_friend ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
small_type  vs,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_unsigned sc_dt::and_unsigned_friend ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
small_type  vs,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

template<class X, class Y>
void sc_dt::assign_p_ ( sc_proxy< X > &  px,
const sc_proxy< Y > &  py 
) [inline]

sc_proxy.h669 行で定義されています。

00670 {
00671     if( (void*) &px != (void*) &py ) {
00672         X& x = px.back_cast();
00673         const Y& y = py.back_cast();
00674         int sz = x.size();
00675         int min_sz = sc_min( sz, y.size() );
00676         int i = 0;
00677         for( ; i < min_sz; ++ i ) {
00678             set_words_( x, i, y.get_word( i ), y.get_cword( i ) );
00679         }
00680         // extend with zeros
00681         extend_sign_w_( x, i, false );
00682         x.clean_tail();
00683     }
00684 }

template<class X>
void sc_dt::assign_v_ ( sc_proxy< X > &  px,
const sc_unsigned &  a 
) [inline]

sc_proxy.h769 行で定義されています。

00770 {
00771     X& x = px.back_cast();
00772         int i;
00773     int len_x = x.length();
00774     int len_a = a.length();
00775     if ( len_a > len_x ) len_a = len_x;
00776     for( i = 0 ; i < len_a; ++ i ) {
00777         x.set_bit( i, sc_logic_value_t( (bool) a[i] ) );
00778     }
00779     for( ; i < len_x; ++ i ) {
00780         x.set_bit( i, sc_logic_value_t( false ) );
00781     }
00782 }

template<class X>
void sc_dt::assign_v_ ( sc_proxy< X > &  px,
const sc_uint_base &  a 
) [inline]

sc_proxy.h751 行で定義されています。

00752 {
00753     X& x = px.back_cast();
00754         int i;
00755     int len_x = x.length();
00756     int len_a = a.length();
00757     if ( len_a > len_x ) len_a = len_x;
00758     for( i = 0 ; i < len_a; ++ i ) {
00759         x.set_bit( i, sc_logic_value_t( (bool) a[i] ) );
00760     }
00761     for( ; i < len_x; ++ i ) {
00762         x.set_bit( i, sc_logic_value_t( false ) );
00763     }
00764 }

template<class X>
void sc_dt::assign_v_ ( sc_proxy< X > &  px,
const sc_signed &  a 
) [inline]

sc_proxy.h732 行で定義されています。

00733 {
00734     X& x = px.back_cast();
00735         int i;
00736     bool sign = a < 0;
00737     int len_x = x.length();
00738     int len_a = a.length();
00739     if ( len_a > len_x ) len_a = len_x;
00740     for( i = 0 ; i < len_a; ++ i ) {
00741         x.set_bit( i, sc_logic_value_t( (bool) a[i] ) );
00742     }
00743     for( ; i < len_x; ++ i ) {
00744         x.set_bit( i, sc_logic_value_t( sign ) );
00745     }
00746 }

template<class X>
void sc_dt::assign_v_ ( sc_proxy< X > &  px,
const sc_int_base &  a 
) [inline]

sc_proxy.h713 行で定義されています。

00714 {
00715     X& x = px.back_cast();
00716         int i;
00717     bool sign = a < 0;
00718     int len_x = x.length();
00719     int len_a = a.length();
00720     if ( len_a > len_x ) len_a = len_x;
00721     for( i = 0 ; i < len_a; ++ i ) {
00722         x.set_bit( i, sc_logic_value_t( (bool) a[i] ) );
00723     }
00724     for( ; i < len_x; ++ i ) {
00725         x.set_bit( i, sc_logic_value_t( sign ) );
00726     }
00727 }

template<class X, class T>
void sc_dt::assign_v_ ( sc_proxy< X > &  px,
const T &  a 
) [inline]

sc_proxy.h695 行で定義されています。

00696 {
00697     X& x = px.back_cast();
00698     int i;
00699     int len_x = x.length();
00700     int len_a = a.length();
00701     if ( len_a > len_x ) len_a = len_x;
00702     for( i = 0 ; i < len_a; ++ i ) {
00703         x.set_bit( i, sc_logic_value_t( (bool) a[i] ) );
00704     }
00705     for( ; i < len_x; ++ i ) {
00706         x.set_bit( i, sc_logic_value_t( false ) );
00707     }
00708 }

void sc_dt::b_and ( sc_bit &  r,
char  a,
const sc_bit &  b 
) [inline]

sc_bit.h666 行で定義されています。

00667         { r = ( a & b ); }

void sc_dt::b_and ( sc_bit &  r,
bool  a,
const sc_bit &  b 
) [inline]

sc_bit.h663 行で定義されています。

00664         { r = ( a & b ); }

void sc_dt::b_and ( sc_bit &  r,
int  a,
const sc_bit &  b 
) [inline]

sc_bit.h660 行で定義されています。

00661         { r = ( a & b ); }

void sc_dt::b_and ( sc_bit &  r,
const sc_bit &  a,
char  b 
) [inline]

sc_bit.h657 行で定義されています。

00658         { r = ( a & b ); }

void sc_dt::b_and ( sc_bit &  r,
const sc_bit &  a,
bool  b 
) [inline]

sc_bit.h654 行で定義されています。

00655         { r = ( a & b ); }

void sc_dt::b_and ( sc_bit &  r,
const sc_bit &  a,
int  b 
) [inline]

sc_bit.h651 行で定義されています。

00652         { r = ( a & b ); }

void sc_dt::b_and ( sc_bit &  r,
const sc_bit &  a,
const sc_bit &  b 
) [inline]

sc_bit.h648 行で定義されています。

00649         { r = ( a & b ); }

const sc_bit sc_dt::b_and ( char  a,
const sc_bit &  b 
) [inline]

sc_bit.h643 行で定義されています。

00644         { return ( a & b ); }

const sc_bit sc_dt::b_and ( bool  a,
const sc_bit &  b 
) [inline]

sc_bit.h640 行で定義されています。

00641         { return ( a & b ); }

const sc_bit sc_dt::b_and ( int  a,
const sc_bit &  b 
) [inline]

sc_bit.h637 行で定義されています。

00638         { return ( a & b ); }

const sc_bit sc_dt::b_and ( const sc_bit &  a,
char  b 
) [inline]

sc_bit.h634 行で定義されています。

00635         { return ( a & b ); }

const sc_bit sc_dt::b_and ( const sc_bit &  a,
bool  b 
) [inline]

sc_bit.h631 行で定義されています。

00632         { return ( a & b ); }

const sc_bit sc_dt::b_and ( const sc_bit &  a,
int  b 
) [inline]

sc_bit.h628 行で定義されています。

00629         { return ( a & b ); }

const sc_bit sc_dt::b_and ( const sc_bit &  a,
const sc_bit &  b 
) [inline]

sc_bit.h625 行で定義されています。

00626         { return ( a & b ); }

template<class X, class Y>
X& sc_dt::b_and_assign_ ( sc_proxy< X > &  px,
const sc_proxy< Y > &  py 
) [inline]

sc_proxy.h992 行で定義されています。

00993 {
00994     X& x = px.back_cast();
00995     const Y& y = py.back_cast();
00996     assert( x.length() == y.length() );
00997     int sz = x.size();
00998     for( int i = 0; i < sz; ++ i ) {
00999         sc_digit x_dw, x_cw, y_dw, y_cw;
01000         get_words_( x, i, x_dw, x_cw );
01001         get_words_( y, i, y_dw, y_cw );
01002         sc_digit cw = x_dw & y_cw | x_cw & y_dw | x_cw & y_cw;
01003         sc_digit dw = cw | x_dw & y_dw;
01004         set_words_( x, i, dw, cw );
01005     }
01006     // tail cleaning not needed
01007     return x;
01008 }

void sc_dt::b_not ( sc_ufix_fast &  c,
const sc_ufix_fast &  a 
) [inline]

sc_ufix.h1747 行で定義されています。

01748 {
01749     SC_FXNUM_FAST_OBSERVER_READ_( a )
01750     int iwl_c = c.iwl();
01751     for( int i = iwl_c - c.wl(); i < iwl_c; ++ i )
01752         c.set_bit( i, ! a.get_bit( i ) );
01753     c.cast();
01754     SC_FXNUM_FAST_OBSERVER_WRITE_( c )
01755 }

void sc_dt::b_not ( sc_ufix &  c,
const sc_ufix &  a 
) [inline]

sc_ufix.h1035 行で定義されています。

01036 {
01037     SC_FXNUM_OBSERVER_READ_( a )
01038     int iwl_c = c.iwl();
01039     for( int i = iwl_c - c.wl(); i < iwl_c; ++ i )
01040         c.set_bit( i, ! a.get_bit( i ) );
01041     c.cast();
01042     SC_FXNUM_OBSERVER_WRITE_( c )
01043 }

void sc_dt::b_not ( sc_fix_fast &  c,
const sc_fix_fast &  a 
) [inline]

sc_fix.h1744 行で定義されています。

01745 {
01746     SC_FXNUM_FAST_OBSERVER_READ_( a )
01747     int iwl_c = c.iwl();
01748     for( int i = iwl_c - c.wl(); i < iwl_c; ++ i )
01749         c.set_bit( i, ! a.get_bit( i ) );
01750     c.cast();
01751     SC_FXNUM_FAST_OBSERVER_WRITE_( c )
01752 }

void sc_dt::b_not ( sc_fix &  c,
const sc_fix &  a 
) [inline]

sc_fix.h1032 行で定義されています。

01033 {
01034     SC_FXNUM_OBSERVER_READ_( a )
01035     int iwl_c = c.iwl();
01036     for( int i = iwl_c - c.wl(); i < iwl_c; ++ i )
01037         c.set_bit( i, ! a.get_bit( i ) );
01038     c.cast();
01039     SC_FXNUM_OBSERVER_WRITE_( c )
01040 }

void sc_dt::b_not ( sc_bit &  r,
const sc_bit &  a 
) [inline]

sc_bit.h522 行で定義されています。

00523         { r = ( ~ a ); }

const sc_bit sc_dt::b_not ( const sc_bit &  a  )  [inline]

sc_bit.h517 行で定義されています。

00518         { return ( ~ a ); }

void sc_dt::b_or ( sc_bit &  r,
char  a,
const sc_bit &  b 
) [inline]

sc_bit.h594 行で定義されています。

00595         { r = ( a | b ); }

void sc_dt::b_or ( sc_bit &  r,
bool  a,
const sc_bit &  b 
) [inline]

sc_bit.h591 行で定義されています。

00592         { r = ( a | b ); }

void sc_dt::b_or ( sc_bit &  r,
int  a,
const sc_bit &  b 
) [inline]

sc_bit.h588 行で定義されています。

00589         { r = ( a | b ); }

void sc_dt::b_or ( sc_bit &  r,
const sc_bit &  a,
char  b 
) [inline]

sc_bit.h585 行で定義されています。

00586         { r = ( a | b ); }

void sc_dt::b_or ( sc_bit &  r,
const sc_bit &  a,
bool  b 
) [inline]

sc_bit.h582 行で定義されています。

00583         { r = ( a | b ); }

void sc_dt::b_or ( sc_bit &  r,
const sc_bit &  a,
int  b 
) [inline]

sc_bit.h579 行で定義されています。

00580         { r = ( a | b ); }

void sc_dt::b_or ( sc_bit &  r,
const sc_bit &  a,
const sc_bit &  b 
) [inline]

sc_bit.h576 行で定義されています。

00577         { r = ( a | b ); }

const sc_bit sc_dt::b_or ( char  a,
const sc_bit &  b 
) [inline]

sc_bit.h571 行で定義されています。

00572         { return ( a | b ); }

const sc_bit sc_dt::b_or ( bool  a,
const sc_bit &  b 
) [inline]

sc_bit.h568 行で定義されています。

00569         { return ( a | b ); }

const sc_bit sc_dt::b_or ( int  a,
const sc_bit &  b 
) [inline]

sc_bit.h565 行で定義されています。

00566         { return ( a | b ); }

const sc_bit sc_dt::b_or ( const sc_bit &  a,
char  b 
) [inline]

sc_bit.h562 行で定義されています。

00563         { return ( a | b ); }

const sc_bit sc_dt::b_or ( const sc_bit &  a,
bool  b 
) [inline]

sc_bit.h559 行で定義されています。

00560         { return ( a | b ); }

const sc_bit sc_dt::b_or ( const sc_bit &  a,
int  b 
) [inline]

sc_bit.h556 行で定義されています。

00557         { return ( a | b ); }

const sc_bit sc_dt::b_or ( const sc_bit &  a,
const sc_bit &  b 
) [inline]

sc_bit.h553 行で定義されています。

00554         { return ( a | b ); }

template<class X, class Y>
X& sc_dt::b_or_assign_ ( sc_proxy< X > &  px,
const sc_proxy< Y > &  py 
) [inline]

sc_proxy.h1016 行で定義されています。

01017 {
01018     X& x = px.back_cast();
01019     const Y& y = py.back_cast();
01020     assert( x.length() == y.length() );
01021     int sz = x.size();
01022     for( int i = 0; i < sz; ++ i ) {
01023         sc_digit x_dw, x_cw, y_dw, y_cw;
01024         get_words_( x, i, x_dw, x_cw );
01025         get_words_( y, i, y_dw, y_cw );
01026         sc_digit cw = x_cw & y_cw | x_cw & ~y_dw | ~x_dw & y_cw;
01027         sc_digit dw = cw | x_dw | y_dw;
01028         set_words_( x, i, dw, cw );
01029     }
01030     // tail cleaning not needed
01031     return x;
01032 }

void sc_dt::b_xor ( sc_bit &  r,
char  a,
const sc_bit &  b 
) [inline]

sc_bit.h738 行で定義されています。

00739         { r = ( a ^ b ); }

void sc_dt::b_xor ( sc_bit &  r,
bool  a,
const sc_bit &  b 
) [inline]

sc_bit.h735 行で定義されています。

00736         { r = ( a ^ b ); }

void sc_dt::b_xor ( sc_bit &  r,
int  a,
const sc_bit &  b 
) [inline]

sc_bit.h732 行で定義されています。

00733         { r = ( a ^ b ); }

void sc_dt::b_xor ( sc_bit &  r,
const sc_bit &  a,
char  b 
) [inline]

sc_bit.h729 行で定義されています。

00730         { r = ( a ^ b ); }

void sc_dt::b_xor ( sc_bit &  r,
const sc_bit &  a,
bool  b 
) [inline]

sc_bit.h726 行で定義されています。

00727         { r = ( a ^ b ); }

void sc_dt::b_xor ( sc_bit &  r,
const sc_bit &  a,
int  b 
) [inline]

sc_bit.h723 行で定義されています。

00724         { r = ( a ^ b ); }

void sc_dt::b_xor ( sc_bit &  r,
const sc_bit &  a,
const sc_bit &  b 
) [inline]

sc_bit.h720 行で定義されています。

00721         { r = ( a ^ b ); }

const sc_bit sc_dt::b_xor ( char  a,
const sc_bit &  b 
) [inline]

sc_bit.h715 行で定義されています。

00716         { return ( a ^ b ); }

const sc_bit sc_dt::b_xor ( bool  a,
const sc_bit &  b 
) [inline]

sc_bit.h712 行で定義されています。

00713         { return ( a ^ b ); }

const sc_bit sc_dt::b_xor ( int  a,
const sc_bit &  b 
) [inline]

sc_bit.h709 行で定義されています。

00710         { return ( a ^ b ); }

const sc_bit sc_dt::b_xor ( const sc_bit &  a,
char  b 
) [inline]

sc_bit.h706 行で定義されています。

00707         { return ( a ^ b ); }

const sc_bit sc_dt::b_xor ( const sc_bit &  a,
bool  b 
) [inline]

sc_bit.h703 行で定義されています。

00704         { return ( a ^ b ); }

const sc_bit sc_dt::b_xor ( const sc_bit &  a,
int  b 
) [inline]

sc_bit.h700 行で定義されています。

00701         { return ( a ^ b ); }

const sc_bit sc_dt::b_xor ( const sc_bit &  a,
const sc_bit &  b 
) [inline]

sc_bit.h697 行で定義されています。

00698         { return ( a ^ b ); }

template<class X, class Y>
X& sc_dt::b_xor_assign_ ( sc_proxy< X > &  a,
const sc_proxy< Y > &  b 
) [inline]

sc_proxy.h1040 行で定義されています。

01041 {
01042     X& x = a.back_cast();
01043     const Y& y = b.back_cast();
01044     assert( x.length() == y.length() );
01045     int sz = x.size();
01046     for( int i = 0; i < sz; ++ i ) {
01047         sc_digit x_dw, x_cw, y_dw, y_cw;
01048         get_words_( x, i, x_dw, x_cw );
01049         get_words_( y, i, y_dw, y_cw );
01050         sc_digit cw = x_cw | y_cw;
01051         sc_digit dw = cw | x_dw ^ y_dw;
01052         set_words_( x, i, dw, cw );
01053     }
01054     // tail cleaning not needed
01055     return x;
01056 }

int sc_dt::bit_ord ( int  i  )  [inline]

sc_nbutils.h344 行で定義されています。

00345 {
00346   return (i % BITS_PER_DIGIT);
00347 }

bool sc_dt::check_for_zero ( int  ulen,
const sc_digit *  u 
) [inline]

sc_nbutils.h669 行で定義されています。

00670 {
00671 
00672 #ifdef DEBUG_SYSTEMC
00673   // assert(ulen >= 0);
00674   assert((ulen > 0) && (u != NULL));
00675 #endif
00676 
00677   if (vec_find_first_nonzero(ulen, u) < 0)
00678     return true;
00679 
00680   return false;
00681 
00682 }

small_type sc_dt::check_for_zero ( small_type  s,
int  ulen,
const sc_digit *  u 
) [inline]

sc_nbutils.h650 行で定義されています。

00651 {
00652 
00653 #ifdef DEBUG_SYSTEMC
00654   // assert(ulen >= 0);
00655   assert((ulen > 0) && (u != NULL));
00656 #endif
00657 
00658   if (vec_find_first_nonzero(ulen, u) < 0)
00659     return SC_ZERO;  
00660 
00661   return s;
00662 
00663 }

int sc_dt::cmp_scfx_rep ( const scfx_rep &  a,
const scfx_rep &  b 
)

scfx_rep.cpp1850 行で定義されています。

01851 {
01852     // handle special cases
01853 
01854     if( a.is_nan() || b.is_nan() )
01855     {
01856 #if 0
01857         if( a.is_nan() && b.is_nan() )
01858         {
01859             return 0;
01860         }
01861 #endif
01862         return 2;
01863     }
01864 
01865     if( a.is_inf() || b.is_inf() )
01866     {
01867         if( a.is_inf() )
01868         {
01869             if( ! a.is_neg() )
01870             {
01871                 if( b.is_inf() && ! b.is_neg() )
01872                 {
01873                     return 0;
01874                 }
01875                 else
01876                 {
01877                     return 1;
01878                 }
01879             }
01880             else
01881             {
01882                 if( b.is_inf() && b.is_neg() )
01883                 {
01884                     return 0;
01885                 }
01886                 else
01887                 {
01888                     return -1;
01889                 }
01890             }
01891         }
01892         if( b.is_inf() )
01893         {
01894             if( ! b.is_neg() )
01895             {
01896                 return -1;
01897             }
01898             else
01899             {
01900                 return 1;
01901             }
01902         }
01903     }
01904   
01905     if( a.is_zero() && b.is_zero() )
01906     {
01907         return 0;
01908     }
01909 
01910     // compare sign
01911 
01912     if( a.m_sign != b.m_sign )
01913     {
01914         return a.m_sign;
01915     }
01916 
01917     return ( a.m_sign * compare_abs( a, b ) );
01918 }

int sc_dt::compare_abs ( const scfx_rep &  a,
const scfx_rep &  b 
)

scfx_rep.cpp1773 行で定義されています。

01774 {
01775     // check for zero
01776 
01777     word a_word = a.m_mant[a.m_msw];
01778     word b_word = b.m_mant[b.m_msw];
01779   
01780     if( a_word == 0 || b_word == 0 )
01781     {
01782         if( a_word != 0 )
01783             return 1;
01784         if( b_word != 0 )
01785             return -1;
01786         return 0;
01787     }
01788 
01789     // compare msw index
01790 
01791     int a_msw = a.m_msw - a.m_wp;
01792     int b_msw = b.m_msw - b.m_wp;
01793 
01794     if( a_msw > b_msw )
01795         return 1;
01796 
01797     if( a_msw < b_msw )
01798         return -1;
01799 
01800     // compare content
01801 
01802     int a_i = a.m_msw;
01803     int b_i = b.m_msw;
01804 
01805     while( a_i >= a.m_lsw && b_i >= b.m_lsw )
01806     {
01807         a_word = a.m_mant[a_i];
01808         b_word = b.m_mant[b_i];
01809         if( a_word > b_word )
01810             return 1;
01811         if( a_word < b_word )
01812             return -1;
01813         -- a_i;
01814         -- b_i;
01815     }
01816 
01817     bool a_zero = true;
01818     while( a_i >= a.m_lsw )
01819     {
01820         a_zero = a_zero && ( a.m_mant[a_i] == 0 );
01821         -- a_i;
01822     }
01823   
01824     bool b_zero = true;
01825     while( b_i >= b.m_lsw )
01826     {
01827         b_zero = b_zero && ( b.m_mant[b_i] == 0 );
01828         -- b_i;
01829     }
01830 
01831     // assertion: a_zero || b_zero == true
01832 
01833     if( ! a_zero && b_zero )
01834         return 1;
01835 
01836     if( a_zero && ! b_zero )
01837         return -1;
01838 
01839     return 0;
01840 }

int sc_dt::compare_msw_ff ( const scfx_rep &  lhs,
const scfx_rep &  rhs 
)

scfx_rep.cpp2282 行で定義されています。

02283 {
02284     // special case: rhs.m_mant[rhs.m_msw + 1] == 1
02285     if( rhs.m_msw < rhs.size() - 1 && rhs.m_mant[rhs.m_msw + 1 ] != 0 )
02286     {
02287         return -1;
02288     }
02289 
02290     int lhs_size = lhs.m_msw - lhs.m_lsw + 1;
02291     int rhs_size = rhs.m_msw - rhs.m_lsw + 1;
02292 
02293     int size = sc_min( lhs_size, rhs_size );
02294 
02295     int lhs_index = lhs.m_msw;
02296     int rhs_index = rhs.m_msw;
02297 
02298     int i;
02299 
02300     for( i = 0;
02301          i < size && lhs.m_mant[lhs_index] == rhs.m_mant[rhs_index];
02302          i ++ )
02303     {
02304         lhs_index --;
02305         rhs_index --;
02306     }
02307 
02308     if( i == size )
02309     {
02310         if( lhs_size == rhs_size )
02311         {
02312             return 0;
02313         }
02314 
02315         if( lhs_size < rhs_size )
02316         {
02317             return -1;
02318         }
02319         else
02320         {
02321             return 1;
02322         }
02323   }
02324 
02325   if( lhs.m_mant[lhs_index] < rhs.m_mant[rhs_index] )
02326   {
02327       return -1;
02328   } else {
02329       return 1;
02330   }
02331 }

int sc_dt::compare_unsigned ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
small_type  vs,
int  vnb,
int  vnd,
const sc_digit *  vd,
small_type  if_u_signed,
small_type  if_v_signed 
)

sc_unsigned.cpp1975 行で定義されています。

01981 {
01982 
01983   if (us == vs) {
01984 
01985     if (us == SC_ZERO)
01986       return 0;
01987 
01988     else {
01989 
01990       int cmp_res = vec_skip_and_cmp(und, ud, vnd, vd);
01991 
01992       if (us == SC_POS)
01993         return cmp_res;
01994       else
01995         return -cmp_res;
01996 
01997     }
01998   }
01999   else {
02000 
02001     if (us == SC_ZERO)
02002       return -vs;
02003 
02004     if (vs == SC_ZERO)
02005       return us;
02006 
02007     int cmp_res;
02008 
02009     int nd = (us == SC_NEG ? und : vnd);
02010 
02011 #ifdef SC_MAX_NBITS
02012     sc_digit d[MAX_NDIGITS];
02013 #else
02014     sc_digit *d = new sc_digit[nd];
02015 #endif
02016 
02017     if (us == SC_NEG) {
02018 
02019       vec_copy(nd, d, ud);
02020       vec_complement(nd, d);
02021       trim(if_u_signed, unb, nd, d);
02022       cmp_res = vec_skip_and_cmp(nd, d, vnd, vd);
02023 
02024     }
02025     else {
02026 
02027       vec_copy(nd, d, vd);
02028       vec_complement(nd, d);
02029       trim(if_v_signed, vnb, nd, d);
02030       cmp_res = vec_skip_and_cmp(und, ud, nd, d);
02031 
02032     }
02033 
02034 #ifndef SC_MAX_NBITS
02035     delete [] d;
02036 #endif
02037 
02038     return cmp_res;
02039 
02040   }
02041 }

void sc_dt::complement ( scfx_mant &  target,
const scfx_mant &  source,
int  size 
) [inline]

scfx_mant.h341 行で定義されています。

00342 {
00343     for( int i = 0; i < size; i ++ )
00344     {
00345         target[i] = ~source[i];
00346     }
00347 }

const sc_dt::sc_concatref& sc_dt::concat ( bool  a,
const sc_dt::sc_value_base b 
) [inline]

sc_concatref.h745 行で定義されています。

00746 {
00747     const sc_dt::sc_concat_bool* a_p;        // Proxy for boolean value.
00748     sc_dt::sc_concatref*         result_p;   // Proxy for the concatenation.
00749 
00750     a_p = sc_dt::sc_concat_bool::allocate(a);
00751     result_p = sc_dt::sc_concatref::m_pool.allocate();
00752     result_p->initialize( *a_p, b );
00753     return *result_p;
00754 }

const sc_dt::sc_concatref& sc_dt::concat ( const sc_dt::sc_value_base a,
bool  b 
) [inline]

sc_concatref.h732 行で定義されています。

00733 {
00734     const sc_dt::sc_concat_bool* b_p;        // Proxy for boolean value.
00735     sc_dt::sc_concatref*         result_p;   // Proxy for the concatenation.
00736 
00737     b_p = sc_dt::sc_concat_bool::allocate(b);
00738     result_p = sc_dt::sc_concatref::m_pool.allocate();
00739     result_p->initialize( a, *b_p );
00740     return *result_p;
00741 }

const sc_dt::sc_concatref& sc_dt::concat ( const sc_dt::sc_value_base a,
const sc_dt::sc_value_base b 
) [inline]

sc_concatref.h720 行で定義されています。

00722 {
00723     sc_dt::sc_concatref* result_p;     // Proxy for the concatenation.
00724 
00725     result_p = sc_dt::sc_concatref::m_pool.allocate();
00726     result_p->initialize( a, b );
00727     return *result_p;
00728 }

sc_dt::sc_concatref& sc_dt::concat ( sc_dt::sc_value_base a,
sc_dt::sc_value_base b 
) [inline]

sc_concatref.h708 行で定義されています。

00710 {
00711     sc_dt::sc_concatref* result_p;     // Proxy for the concatenation.
00712 
00713     result_p = sc_dt::sc_concatref::m_pool.allocate();
00714     result_p->initialize( a, b );
00715     return *result_p;
00716 }

sc_digit sc_dt::concat ( sc_digit  h,
sc_digit  l 
) [inline]

sc_nbutils.h309 行で定義されています。

00310 {
00311   return ((h << BITS_PER_HALF_DIGIT) | l);
00312 }

template<class T1, class T2>
sc_concref< T1, T2 > sc_dt::concat ( sc_proxy< T1 > &  a,
sc_proxy< T2 > &  b 
) [inline]

sc_bit_proxies.h3854 行で定義されています。

03855 {
03856     return sc_concref<T1,T2>(
03857         a.back_cast(), b.back_cast() );
03858 }

template<class T1, class T2, class T3>
sc_concref< T1, sc_concref< T2, T3 > > sc_dt::concat ( sc_proxy< T1 > &  a,
sc_concref< T2, T3 >  b 
) [inline]

sc_bit_proxies.h3845 行で定義されています。

03846 {
03847     return sc_concref<T1,sc_concref<T2,T3> >(
03848         a.back_cast(), *b.clone(), 2 );
03849 }

template<class T1, class T2>
sc_concref< T1, sc_subref< T2 > > sc_dt::concat ( sc_proxy< T1 > &  a,
sc_subref< T2 >  b 
) [inline]

sc_bit_proxies.h3836 行で定義されています。

03837 {
03838     return sc_concref<T1,sc_subref<T2> >(
03839         a.back_cast(), *b.clone(), 2 );
03840 }

template<class T1, class T2>
sc_concref< T1, sc_bitref< T2 > > sc_dt::concat ( sc_proxy< T1 > &  a,
sc_bitref< T2 >  b 
) [inline]

sc_bit_proxies.h3827 行で定義されています。

03828 {
03829     return sc_concref<T1,sc_bitref<T2> >(
03830         a.back_cast(), *b.clone(), 2 );
03831 }

template<class T>
sc_concref_r< sc_lv_base, T > sc_dt::concat ( bool  a,
const sc_proxy< T > &  b 
) [inline]

sc_lv_base.h1691 行で定義されています。

01692 {
01693     return sc_concref_r<sc_lv_base,T>(
01694         *new sc_lv_base( sc_logic( a ), 1 ), b.back_cast(), 1 );
01695 }

template<class T>
sc_concref_r< T, sc_lv_base > sc_dt::concat ( const sc_proxy< T > &  a,
bool  b 
) [inline]

sc_lv_base.h1682 行で定義されています。

01683 {
01684     return sc_concref_r<T,sc_lv_base>(
01685         a.back_cast(), *new sc_lv_base( sc_logic( b ), 1 ), 2 );
01686 }

template<class T>
sc_concref_r< sc_lv_base, T > sc_dt::concat ( const sc_logic &  a,
const sc_proxy< T > &  b 
) [inline]

sc_lv_base.h1673 行で定義されています。

01674 {
01675     return sc_concref_r<sc_lv_base,T>(
01676         *new sc_lv_base( a, 1 ), b.back_cast(), 1 );
01677 }

template<class T>
sc_concref_r< T, sc_lv_base > sc_dt::concat ( const sc_proxy< T > &  a,
const sc_logic &  b 
) [inline]

sc_lv_base.h1664 行で定義されています。

01665 {
01666     return sc_concref_r<T,sc_lv_base>(
01667         a.back_cast(), *new sc_lv_base( b, 1 ), 2 );
01668 }

template<class T>
sc_concref_r< sc_lv_base, T > sc_dt::concat ( const char *  a,
const sc_proxy< T > &  b 
) [inline]

sc_lv_base.h1655 行で定義されています。

01656 {
01657     return sc_concref_r<sc_lv_base,T>(
01658         *new sc_lv_base( a ), b.back_cast(), 1 );
01659 }

template<class T>
sc_concref_r< T, sc_lv_base > sc_dt::concat ( const sc_proxy< T > &  a,
const char *  b 
) [inline]

sc_lv_base.h1646 行で定義されています。

01647 {
01648     return sc_concref_r<T,sc_lv_base>(
01649         a.back_cast(), *new sc_lv_base( b ), 2 );
01650 }

template<class T1, class T2>
sc_concref_r< T1, T2 > sc_dt::concat ( const sc_proxy< T1 > &  a,
const sc_proxy< T2 > &  b 
) [inline]

sc_bit_proxies.h3628 行で定義されています。

03629 {
03630     return sc_concref_r<T1,T2>(
03631         a.back_cast(), b.back_cast() );
03632 }

template<class T1, class T2, class T3>
sc_concref_r< T1, sc_concref_r< T2, T3 > > sc_dt::concat ( const sc_proxy< T1 > &  a,
sc_concref_r< T2, T3 >  b 
) [inline]

sc_bit_proxies.h3619 行で定義されています。

03620 {
03621     return sc_concref_r<T1,sc_concref_r<T2,T3> >(
03622         a.back_cast(), *b.clone(), 2 );
03623 }

template<class T1, class T2>
sc_concref_r< T1, sc_subref_r< T2 > > sc_dt::concat ( const sc_proxy< T1 > &  a,
sc_subref_r< T2 >  b 
) [inline]

sc_bit_proxies.h3610 行で定義されています。

03611 {
03612     return sc_concref_r<T1,sc_subref_r<T2> >(
03613         a.back_cast(), *b.clone(), 2 );
03614 }

template<class T1, class T2>
sc_concref_r< T1, sc_bitref_r< T2 > > sc_dt::concat ( const sc_proxy< T1 > &  a,
sc_bitref_r< T2 >  b 
) [inline]

sc_bit_proxies.h3601 行で定義されています。

03602 {
03603     return sc_concref_r<T1,sc_bitref_r<T2> >(
03604         a.back_cast(), *b.clone(), 2 );
03605 }

template<class T1, class T2, class T3>
sc_concref< sc_concref< T1, T2 >, T3 > sc_dt::concat ( sc_concref< T1, T2 >  a,
sc_proxy< T3 > &  b 
) [inline]

sc_bit_proxies.h3535 行で定義されています。

03536 {
03537     return sc_concref<sc_concref<T1,T2>,T3>(
03538         *a.clone(), b.back_cast(), 1 );
03539 }

template<class T1, class T2, class T3, class T4>
sc_concref< sc_concref< T1, T2 >, sc_concref< T3, T4 > > sc_dt::concat ( sc_concref< T1, T2 >  a,
sc_concref< T3, T4 >  b 
) [inline]

sc_bit_proxies.h3526 行で定義されています。

03527 {
03528     return sc_concref<sc_concref<T1,T2>,sc_concref<T3,T4> >(
03529         *a.clone(), *b.clone(), 3 );
03530 }

template<class T1, class T2, class T3>
sc_concref< sc_concref< T1, T2 >, sc_subref< T3 > > sc_dt::concat ( sc_concref< T1, T2 >  a,
sc_subref< T3 >  b 
) [inline]

sc_bit_proxies.h3517 行で定義されています。

03518 {
03519     return sc_concref<sc_concref<T1,T2>,sc_subref<T3> >(
03520         *a.clone(), *b.clone(), 3 );
03521 }

template<class T1, class T2, class T3>
sc_concref< sc_concref< T1, T2 >, sc_bitref< T3 > > sc_dt::concat ( sc_concref< T1, T2 >  a,
sc_bitref< T3 >  b 
) [inline]

sc_bit_proxies.h3508 行で定義されています。

03509 {
03510     return sc_concref<sc_concref<T1,T2>,sc_bitref<T3> >(
03511         *a.clone(), *b.clone(), 3 );
03512 }

template<class T1, class T2>
sc_concref_r< sc_lv_base, sc_concref_r< T1, T2 > > sc_dt::concat ( bool  a,
sc_concref_r< T1, T2 >  b 
) [inline]

sc_lv_base.h1458 行で定義されています。

01459 {
01460     return sc_concref_r<sc_lv_base,sc_concref_r<T1,T2> >(
01461         *new sc_lv_base( sc_logic( a ), 1 ), *b.clone(), 3 );
01462 }

template<class T1, class T2>
sc_concref_r< sc_concref_r< T1, T2 >, sc_lv_base > sc_dt::concat ( sc_concref_r< T1, T2 >  a,
bool  b 
) [inline]

sc_lv_base.h1449 行で定義されています。

01450 {
01451     return sc_concref_r<sc_concref_r<T1,T2>,sc_lv_base>(
01452         *a.clone(), *new sc_lv_base( sc_logic( b ), 1 ), 3 );
01453 }

template<class T1, class T2>
sc_concref_r< sc_lv_base, sc_concref_r< T1, T2 > > sc_dt::concat ( const sc_logic &  a,
sc_concref_r< T1, T2 >  b 
) [inline]

sc_lv_base.h1440 行で定義されています。

01441 {
01442     return sc_concref_r<sc_lv_base,sc_concref_r<T1,T2> >(
01443         *new sc_lv_base( a, 1 ), *b.clone(), 3 );
01444 }

template<class T1, class T2>
sc_concref_r< sc_concref_r< T1, T2 >, sc_lv_base > sc_dt::concat ( sc_concref_r< T1, T2 >  a,
const sc_logic &  b 
) [inline]

sc_lv_base.h1431 行で定義されています。

01432 {
01433     return sc_concref_r<sc_concref_r<T1,T2>,sc_lv_base>(
01434         *a.clone(), *new sc_lv_base( b, 1 ), 3 );
01435 }

template<class T1, class T2>
sc_concref_r< sc_lv_base, sc_concref_r< T1, T2 > > sc_dt::concat ( const char *  a,
sc_concref_r< T1, T2 >  b 
) [inline]

sc_lv_base.h1422 行で定義されています。

01423 {
01424     return sc_concref_r<sc_lv_base,sc_concref_r<T1,T2> >(
01425         *new sc_lv_base( a ), *b.clone(), 3 );
01426 }

template<class T1, class T2>
sc_concref_r< sc_concref_r< T1, T2 >, sc_lv_base > sc_dt::concat ( sc_concref_r< T1, T2 >  a,
const char *  b 
) [inline]

sc_lv_base.h1413 行で定義されています。

01414 {
01415     return sc_concref_r<sc_concref_r<T1,T2>,sc_lv_base>(
01416         *a.clone(), *new sc_lv_base( b ), 3 );
01417 }

template<class T1, class T2, class T3>
sc_concref_r< sc_concref_r< T1, T2 >, T3 > sc_dt::concat ( sc_concref_r< T1, T2 >  a,
const sc_proxy< T3 > &  b 
) [inline]

sc_bit_proxies.h3290 行で定義されています。

03291 {
03292     return sc_concref_r<sc_concref_r<T1,T2>,T3>(
03293         *a.clone(), b.back_cast(), 1 );
03294 }

template<class T1, class T2, class T3, class T4>
sc_concref_r< sc_concref_r< T1, T2 >, sc_concref_r< T3, T4 > > sc_dt::concat ( sc_concref_r< T1, T2 >  a,
sc_concref_r< T3, T4 >  b 
) [inline]

sc_bit_proxies.h3281 行で定義されています。

03282 {
03283     return sc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> >(
03284         *a.clone(), *b.clone(), 3 );
03285 }

template<class T1, class T2, class T3>
sc_concref_r< sc_concref_r< T1, T2 >, sc_subref_r< T3 > > sc_dt::concat ( sc_concref_r< T1, T2 >  a,
sc_subref_r< T3 >  b 
) [inline]

sc_bit_proxies.h3272 行で定義されています。

03273 {
03274     return sc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> >(
03275         *a.clone(), *b.clone(), 3 );
03276 }

template<class T1, class T2, class T3>
sc_concref_r< sc_concref_r< T1, T2 >, sc_bitref_r< T3 > > sc_dt::concat ( sc_concref_r< T1, T2 >  a,
sc_bitref_r< T3 >  b 
) [inline]

sc_bit_proxies.h3263 行で定義されています。

03264 {
03265     return sc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> >(
03266         *a.clone(), *b.clone(), 3 );
03267 }

template<class T1, class T2>
sc_concref< sc_subref< T1 >, T2 > sc_dt::concat ( sc_subref< T1 >  a,
sc_proxy< T2 > &  b 
) [inline]

sc_bit_proxies.h2990 行で定義されています。

02991 {
02992     return sc_concref<sc_subref<T1>,T2>(
02993         *a.clone(), b.back_cast(), 1 );
02994 }

template<class T1, class T2, class T3>
sc_concref< sc_subref< T1 >, sc_concref< T2, T3 > > sc_dt::concat ( sc_subref< T1 >  a,
sc_concref< T2, T3 >  b 
) [inline]

sc_bit_proxies.h2981 行で定義されています。

02982 {
02983     return sc_concref<sc_subref<T1>,sc_concref<T2,T3> >(
02984         *a.clone(), *b.clone(), 3 );
02985 }

template<class T1, class T2>
sc_concref< sc_subref< T1 >, sc_subref< T2 > > sc_dt::concat ( sc_subref< T1 >  a,
sc_subref< T2 >  b 
) [inline]

sc_bit_proxies.h2972 行で定義されています。

02973 {
02974     return sc_concref<sc_subref<T1>,sc_subref<T2> >(
02975         *a.clone(), *b.clone(), 3 );
02976 }

template<class T1, class T2>
sc_concref< sc_subref< T1 >, sc_bitref< T2 > > sc_dt::concat ( sc_subref< T1 >  a,
sc_bitref< T2 >  b 
) [inline]

sc_bit_proxies.h2963 行で定義されています。

02964 {
02965     return sc_concref<sc_subref<T1>,sc_bitref<T2> >(
02966         *a.clone(), *b.clone(), 3 );
02967 }

template<class T>
sc_concref_r< sc_lv_base, sc_subref_r< T > > sc_dt::concat ( bool  a,
sc_subref_r< T >  b 
) [inline]

sc_lv_base.h1181 行で定義されています。

01182 {
01183     return sc_concref_r<sc_lv_base,sc_subref_r<T> >(
01184         *new sc_lv_base( sc_logic( a ), 1 ), *b.clone(), 3 );
01185 }

template<class T>
sc_concref_r< sc_subref_r< T >, sc_lv_base > sc_dt::concat ( sc_subref_r< T >  a,
bool  b 
) [inline]

sc_lv_base.h1172 行で定義されています。

01173 {
01174     return sc_concref_r<sc_subref_r<T>,sc_lv_base>(
01175         *a.clone(), *new sc_lv_base( sc_logic( b ), 1 ), 3 );
01176 }

template<class T>
sc_concref_r< sc_lv_base, sc_subref_r< T > > sc_dt::concat ( const sc_logic &  a,
sc_subref_r< T >  b 
) [inline]

sc_lv_base.h1163 行で定義されています。

01164 {
01165     return sc_concref_r<sc_lv_base,sc_subref_r<T> >(
01166         *new sc_lv_base( a, 1 ), *b.clone(), 3 );
01167 }

template<class T>
sc_concref_r< sc_subref_r< T >, sc_lv_base > sc_dt::concat ( sc_subref_r< T >  a,
const sc_logic &  b 
) [inline]

sc_lv_base.h1154 行で定義されています。

01155 {
01156     return sc_concref_r<sc_subref_r<T>,sc_lv_base>(
01157         *a.clone(), *new sc_lv_base( b, 1 ), 3 );
01158 }

template<class T>
sc_concref_r< sc_lv_base, sc_subref_r< T > > sc_dt::concat ( const char *  a,
sc_subref_r< T >  b 
) [inline]

sc_lv_base.h1145 行で定義されています。

01146 {
01147     return sc_concref_r<sc_lv_base,sc_subref_r<T> >(
01148         *new sc_lv_base( a ), *b.clone(), 3 );
01149 }

template<class T>
sc_concref_r< sc_subref_r< T >, sc_lv_base > sc_dt::concat ( sc_subref_r< T >  a,
const char *  b 
) [inline]

sc_lv_base.h1136 行で定義されています。

01137 {
01138     return sc_concref_r<sc_subref_r<T>,sc_lv_base>(
01139         *a.clone(), *new sc_lv_base( b ), 3 );
01140 }

template<class T1, class T2>
sc_concref_r< sc_subref_r< T1 >, T2 > sc_dt::concat ( sc_subref_r< T1 >  a,
const sc_proxy< T2 > &  b 
) [inline]

sc_bit_proxies.h2739 行で定義されています。

02740 {
02741     return sc_concref_r<sc_subref_r<T1>,T2>(
02742         *a.clone(), b.back_cast(), 1 );
02743 }

template<class T1, class T2, class T3>
sc_concref_r< sc_subref_r< T1 >, sc_concref_r< T2, T3 > > sc_dt::concat ( sc_subref_r< T1 >  a,
sc_concref_r< T2, T3 >  b 
) [inline]

sc_bit_proxies.h2730 行で定義されています。

02731 {
02732     return sc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> >(
02733         *a.clone(), *b.clone(), 3 );
02734 }

template<class T1, class T2>
sc_concref_r< sc_subref_r< T1 >, sc_subref_r< T2 > > sc_dt::concat ( sc_subref_r< T1 >  a,
sc_subref_r< T2 >  b 
) [inline]

sc_bit_proxies.h2721 行で定義されています。

02722 {
02723     return sc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> >(
02724         *a.clone(), *b.clone(), 3 );
02725 }

template<class T1, class T2>
sc_concref_r< sc_subref_r< T1 >, sc_bitref_r< T2 > > sc_dt::concat ( sc_subref_r< T1 >  a,
sc_bitref_r< T2 >  b 
) [inline]

sc_bit_proxies.h2712 行で定義されています。

02713 {
02714     return sc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> >(
02715         *a.clone(), *b.clone(), 3 );
02716 }

template<class T1, class T2>
sc_concref< sc_bitref< T1 >, T2 > sc_dt::concat ( sc_bitref< T1 >  a,
sc_proxy< T2 > &  b 
) [inline]

sc_bit_proxies.h2484 行で定義されています。

02485 {
02486     return sc_concref<sc_bitref<T1>,T2>(
02487         *a.clone(), b.back_cast(), 1 );
02488 }

template<class T1, class T2, class T3>
sc_concref< sc_bitref< T1 >, sc_concref< T2, T3 > > sc_dt::concat ( sc_bitref< T1 >  a,
sc_concref< T2, T3 >  b 
) [inline]

sc_bit_proxies.h2475 行で定義されています。

02476 {
02477     return sc_concref<sc_bitref<T1>,sc_concref<T2,T3> >(
02478         *a.clone(), *b.clone(), 3 );
02479 }

template<class T1, class T2>
sc_concref< sc_bitref< T1 >, sc_subref< T2 > > sc_dt::concat ( sc_bitref< T1 >  a,
sc_subref< T2 >  b 
) [inline]

sc_bit_proxies.h2466 行で定義されています。

02467 {
02468     return sc_concref<sc_bitref<T1>,sc_subref<T2> >(
02469         *a.clone(), *b.clone(), 3 );
02470 }

template<class T1, class T2>
sc_concref< sc_bitref< T1 >, sc_bitref< T2 > > sc_dt::concat ( sc_bitref< T1 >  a,
sc_bitref< T2 >  b 
) [inline]

sc_bit_proxies.h2457 行で定義されています。

02458 {
02459     return sc_concref<sc_bitref<T1>,sc_bitref<T2> >(
02460         *a.clone(), *b.clone(), 3 );
02461 }

template<class T>
sc_concref_r< sc_lv_base, sc_bitref_r< T > > sc_dt::concat ( bool  a,
sc_bitref_r< T >  b 
) [inline]

sc_lv_base.h949 行で定義されています。

00950 {
00951     return sc_concref_r<sc_lv_base,sc_bitref_r<T> >(
00952         *new sc_lv_base( sc_logic( a ), 1 ), *b.clone(), 3 );
00953 }

template<class T>
sc_concref_r< sc_bitref_r< T >, sc_lv_base > sc_dt::concat ( sc_bitref_r< T >  a,
bool  b 
) [inline]

sc_lv_base.h940 行で定義されています。

00941 {
00942     return sc_concref_r<sc_bitref_r<T>,sc_lv_base>(
00943         *a.clone(), *new sc_lv_base( sc_logic( b ), 1 ) );
00944 }

template<class T>
sc_concref_r< sc_lv_base, sc_bitref_r< T > > sc_dt::concat ( const sc_logic &  a,
sc_bitref_r< T >  b 
) [inline]

sc_lv_base.h931 行で定義されています。

00932 {
00933     return sc_concref_r<sc_lv_base,sc_bitref_r<T> >(
00934         *new sc_lv_base( a, 1 ), *b.clone(), 3 );
00935 }

template<class T>
sc_concref_r< sc_bitref_r< T >, sc_lv_base > sc_dt::concat ( sc_bitref_r< T >  a,
const sc_logic &  b 
) [inline]

sc_lv_base.h922 行で定義されています。

00923 {
00924     return sc_concref_r<sc_bitref_r<T>,sc_lv_base>(
00925         *a.clone(), *new sc_lv_base( b, 1 ) );
00926 }

template<class T>
sc_concref_r< sc_lv_base, sc_bitref_r< T > > sc_dt::concat ( const char *  a,
sc_bitref_r< T >  b 
) [inline]

sc_lv_base.h913 行で定義されています。

00914 {
00915     return sc_concref_r<sc_lv_base,sc_bitref_r<T> >(
00916         *new sc_lv_base( a ), *b.clone(), 3 );
00917 }

template<class T>
sc_concref_r< sc_bitref_r< T >, sc_lv_base > sc_dt::concat ( sc_bitref_r< T >  a,
const char *  b 
) [inline]

sc_lv_base.h904 行で定義されています。

00905 {
00906     return sc_concref_r<sc_bitref_r<T>,sc_lv_base>(
00907         *a.clone(), *new sc_lv_base( b ), 3 );
00908 }

template<class T1, class T2>
sc_concref_r< sc_bitref_r< T1 >, T2 > sc_dt::concat ( sc_bitref_r< T1 >  a,
const sc_proxy< T2 > &  b 
) [inline]

sc_bit_proxies.h2081 行で定義されています。

02082 {
02083     return sc_concref_r<sc_bitref_r<T1>,T2>(
02084         *a.clone(), b.back_cast(), 1 );
02085 }

template<class T1, class T2, class T3>
sc_concref_r< sc_bitref_r< T1 >, sc_concref_r< T2, T3 > > sc_dt::concat ( sc_bitref_r< T1 >  a,
sc_concref_r< T2, T3 >  b 
) [inline]

sc_bit_proxies.h2072 行で定義されています。

02073 {
02074     return sc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >(
02075         *a.clone(), *b.clone(), 3 );
02076 }

template<class T1, class T2>
sc_concref_r< sc_bitref_r< T1 >, sc_subref_r< T2 > > sc_dt::concat ( sc_bitref_r< T1 >  a,
sc_subref_r< T2 >  b 
) [inline]

sc_bit_proxies.h2063 行で定義されています。

02064 {
02065     return sc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >(
02066         *a.clone(), *b.clone(), 3 );
02067 }

template<class T1, class T2>
sc_concref_r< sc_bitref_r< T1 >, sc_bitref_r< T2 > > sc_dt::concat ( sc_bitref_r< T1 >  a,
sc_bitref_r< T2 >  b 
) [inline]

sc_bit_proxies.h2054 行で定義されています。

02055 {
02056     return sc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >(
02057         *a.clone(), *b.clone(), 3 );
02058 }

small_type sc_dt::convert_signed_2C_to_SM ( int  nb,
int  nd,
sc_digit *  d 
) [inline]

sc_nbutils.h759 行で定義されています。

00760 {
00761 
00762 #ifdef DEBUG_SYSTEMC
00763   assert((nb > 0) && (nd > 0) && (d != NULL));
00764 #endif
00765 
00766   small_type s;
00767 
00768   int xnb = bit_ord(nb - 1) + 1;
00769 
00770   // Test the sign bit.  
00771   if (d[nd - 1] & one_and_zeros(xnb - 1)) {
00772     s = SC_NEG;
00773     vec_complement(nd, d);
00774   }
00775   else
00776     s = SC_POS;
00777 
00778   // Trim the last digit.
00779   d[nd - 1] &= one_and_ones(xnb);
00780 
00781   // Check if the new number is zero.
00782   if (s == SC_POS)
00783     return check_for_zero(s, nd, d);
00784 
00785   return s;
00786 
00787 }

void sc_dt::convert_signed_SM_to_2C ( small_type  s,
int  nd,
sc_digit *  d 
) [inline]

sc_nbutils.h814 行で定義されています。

00815 {
00816   convert_SM_to_2C(s, nd, d);
00817 }

small_type sc_dt::convert_signed_SM_to_2C_to_SM ( small_type  s,
int  nb,
int  nd,
sc_digit *  d 
) [inline]

sc_nbutils.h795 行で定義されています。

00796 {
00797   convert_SM_to_2C(s, nd, d);
00798   return convert_signed_2C_to_SM(nb, nd, d);
00799 }

void sc_dt::convert_signed_SM_to_2C_trimmed ( small_type  s,
int  nb,
int  nd,
sc_digit *  d 
) [inline]

sc_nbutils.h805 行で定義されています。

00806 {
00807   convert_SM_to_2C_trimmed(1, s, nb, nd, d);
00808 }

void sc_dt::convert_SM_to_2C ( small_type  s,
int  nd,
sc_digit *  d 
) [inline]

sc_nbutils.h730 行で定義されています。

00731 {
00732   if (s == SC_NEG)
00733     vec_complement(nd, d);
00734 }

void sc_dt::convert_SM_to_2C_trimmed ( small_type  added,
small_type  s,
int  nb,
int  nd,
sc_digit *  d 
) [inline]

sc_nbutils.h717 行で定義されています。

00719 {
00720   if (s == SC_NEG) {
00721     vec_complement(nd, d);
00722     trim(added, nb, nd, d);
00723   }
00724 }

const std::string sc_dt::convert_to_bin ( const char *  s  ) 

sc_bv_base.cpp302 行で定義されています。

00303 {
00304     // Beware: logic character strings cannot start with '0x' or '0X',
00305     //         because this is seen as a hexadecimal encoding prefix!
00306 
00307     if( s == 0 ) {
00308         SC_REPORT_ERROR(sc_core::SC_ID_CANNOT_CONVERT_, 
00309             "character string is zero" );
00310     }
00311     if( *s == 0 ) {
00312         SC_REPORT_ERROR(sc_core::SC_ID_CANNOT_CONVERT_, 
00313             "character string is empty");
00314     }
00315 
00316     int n = strlen( s );
00317     int i = 0;
00318     if( s[0] == '-' || s[0] == '+' ) {
00319         ++ i;
00320     }
00321     if( n > (i + 2) && s[i] == '0' )
00322     {
00323         if (s[i+1] == 'b' || s[i+1] == 'B' )
00324         {
00325             if ( s[i+2] == '0' || s[i+2] == '1' )
00326             {
00327                 std::string str( &s[2] );
00328                 str += "F";
00329                 return str;
00330             }
00331         }
00332         if ( s[i+1] == 'b' || s[i+1] == 'B' ||
00333              s[i+1] == 'c' || s[i+1] == 'C' ||
00334              s[i+1] == 'd' || s[i+1] == 'D' ||
00335              s[i+1] == 'o' || s[i+1] == 'O' ||
00336              s[i+1] == 'x' || s[i+1] == 'X') 
00337         {
00338             try {
00339                 // worst case length = n * 4
00340                 sc_fix a( s, n * 4, n * 4, SC_TRN, SC_WRAP, 0, SC_ON );
00341                 std::string str = a.to_bin();
00342                 str += "F"; // mark the string as formatted
00343                 // get rid of prefix (0b) and redundant leading bits
00344                 const char* p = str.c_str() + 2;
00345                 while( p[1] && p[0] == p[1] ) {
00346                     ++ p;
00347                 }
00348                 return std::string( p );
00349             } catch( sc_core::sc_report ) {
00350                 char msg[BUFSIZ];
00351                 std::sprintf( msg, "character string '%s' is not valid", s );
00352                 SC_REPORT_ERROR( sc_core::SC_ID_CANNOT_CONVERT_, msg );
00353                 // never reached
00354                 return std::string();
00355             }
00356         }
00357 
00358     }
00359 
00360     // bin by default
00361 
00362     std::string str( s );
00363     str += "U"; // mark the string as unformatted
00364     return str;
00365 }

const std::string sc_dt::convert_to_fmt ( const std::string &  s,
sc_numrep  numrep,
bool  w_prefix 
)

sc_bv_base.cpp370 行で定義されています。

00371 {
00372     int n = s.length();
00373     std::string str("0bus");
00374     // str += "0bus";
00375     str += s;
00376     sc_ufix a( str.c_str(), n, n, SC_TRN, SC_WRAP, 0, SC_ON );
00377     return a.to_string( numrep, w_prefix );
00378 }

small_type sc_dt::convert_unsigned_2C_to_SM ( int  nb,
int  nd,
sc_digit *  d 
) [inline]

sc_nbutils.h842 行で定義されています。

00843 {
00844   trim_unsigned(nb, nd, d);
00845   return check_for_zero(SC_POS, nd, d);
00846 }

void sc_dt::convert_unsigned_SM_to_2C ( small_type  s,
int  nd,
sc_digit *  d 
) [inline]

sc_nbutils.h873 行で定義されています。

00874 {
00875   convert_SM_to_2C(s, nd, d);
00876 }

small_type sc_dt::convert_unsigned_SM_to_2C_to_SM ( small_type  s,
int  nb,
int  nd,
sc_digit *  d 
) [inline]

sc_nbutils.h854 行で定義されています。

00855 {
00856   convert_SM_to_2C(s, nd, d);
00857   return convert_unsigned_2C_to_SM(nb, nd, d);
00858 }

void sc_dt::convert_unsigned_SM_to_2C_trimmed ( small_type  s,
int  nb,
int  nd,
sc_digit *  d 
) [inline]

sc_nbutils.h864 行で定義されています。

00865 {
00866   convert_SM_to_2C_trimmed(0, s, nb, nd, d);
00867 }

void sc_dt::copy_digits_signed ( small_type &  us,
int  unb,
int  und,
sc_digit *  ud,
int  vnb,
int  vnd,
const sc_digit *  vd 
) [inline]

sc_nbutils.h886 行で定義されています。

00889 {
00890 
00891   if (und <= vnd) {
00892 
00893     vec_copy(und, ud, vd);
00894 
00895     if (unb <= vnb)
00896       us = convert_signed_SM_to_2C_to_SM(us, unb, und, ud);
00897 
00898   }
00899   else // und > vnd
00900     vec_copy_and_zero(und, ud, vnd, vd);
00901 
00902 }

void sc_dt::copy_digits_unsigned ( small_type &  us,
int  unb,
int  und,
sc_digit *  ud,
int  vnb,
int  vnd,
const sc_digit *  vd 
) [inline]

sc_nbutils.h907 行で定義されています。

00910 {
00911 
00912   if (und <= vnd)
00913     vec_copy(und, ud, vd);
00914 
00915   else // und > vnd
00916     vec_copy_and_zero(und, ud, vnd, vd);
00917 
00918   us = convert_unsigned_SM_to_2C_to_SM(us, unb, und, ud);
00919 
00920 }

uint64 const sc_uint_base& sc_dt::DEFN_BIN_OP_T ( ,
div  ,
const sc_signed &   
) const

Type Constraints

uint64 sc_dt::DEFN_BIN_OP_T ( ,
div  ,
const sc_int_base &   
)

Type Constraints

sc_dt::DEFN_BIN_OP_T ( ,
div  ,
int64   
)

int sc_dt::digit_ord ( int  i  )  [inline]

sc_nbutils.h336 行で定義されています。

00337 {
00338   return (i / BITS_PER_DIGIT);
00339 }

template<class Type>
void sc_dt::div_by_zero ( Type  s  )  [inline]

sc_nbutils.h633 行で定義されています。

00634 {
00635   if (s == 0) {
00636       SC_REPORT_ERROR( sc_core::SC_ID_OPERATION_FAILED_,
00637                        "div_by_zero<Type>( Type ) : division by zero" );
00638   }
00639 }

CLASS_TYPE sc_dt::DIV_HELPER ( small_type  s,
int  unb,
int  und,
const sc_digit *  ud,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_signed.cpp4259 行で定義されています。

void sc_dt::div_on_help_signed ( small_type &  us,
int  unb,
int  und,
sc_digit *  ud,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_nbexterns.cpp279 行で定義されています。

00284 {
00285 #define CONVERT_SM_to_2C_to_SM convert_signed_SM_to_2C_to_SM
00286 #define COPY_DIGITS copy_digits_signed
00287 
00288   {  // Body of div_on_help
00289 
00290     int old_und = und;
00291     
00292     und = vec_skip_leading_zeros(und, ud);
00293     vnd = vec_skip_leading_zeros(vnd, vd);
00294     
00295     int cmp_res = vec_cmp(und, ud, vnd, vd);
00296     
00297     if (cmp_res < 0) { // u < v => u / v = 0 - case 4
00298       us = SC_ZERO;
00299       vec_zero(old_und, ud);
00300       return;
00301     }
00302     
00303     sc_digit vd0 = (*vd);
00304     
00305     if ((cmp_res > 0) && (vnd == 1) && (vd0 == 1))  {
00306       us = CONVERT_SM_to_2C_to_SM(us, unb, old_und, ud);
00307       return;
00308     }
00309     
00310     // One extra digit for d is allocated to simplify vec_div_*().
00311     int nd = sc_max(und, vnd) + 1;
00312     
00313 #ifdef SC_MAX_NBITS
00314     sc_digit d[MAX_NDIGITS + 1];
00315 #else
00316     sc_digit *d = new sc_digit[nd];
00317 #endif
00318     
00319     vec_zero(nd, d);
00320     
00321     // u = v => u / v = 1 - case 3
00322     if (cmp_res == 0)
00323       d[0] = 1;
00324     
00325     else if ((vnd == 1) && (und == 1))
00326       d[0] = (*ud) / vd0;
00327     
00328     else if ((vnd == 1) && (vd0 < HALF_DIGIT_RADIX))
00329       vec_div_small(und, ud, vd0, d);
00330     
00331     else
00332       vec_div_large(und, ud, vnd, vd, d);
00333     
00334     COPY_DIGITS(us, unb, old_und, ud, sc_max(unb, vnb), nd - 1, d);
00335     
00336 #ifndef SC_MAX_NBITS
00337     delete [] d;
00338 #endif
00339     
00340   }
00341   
00342 #undef COPY_DIGITS
00343 #undef CONVERT_SM_to_2C_to_SM
00344 
00345 }

void sc_dt::div_on_help_unsigned ( small_type &  us,
int  unb,
int  und,
sc_digit *  ud,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_nbexterns.cpp349 行で定義されています。

00354 {
00355 #define CONVERT_SM_to_2C_to_SM convert_unsigned_SM_to_2C_to_SM
00356 #define COPY_DIGITS copy_digits_unsigned
00357 
00358   {  // Body of div_on_help
00359 
00360     int old_und = und;
00361     
00362     und = vec_skip_leading_zeros(und, ud);
00363     vnd = vec_skip_leading_zeros(vnd, vd);
00364     
00365     int cmp_res = vec_cmp(und, ud, vnd, vd);
00366     
00367     if (cmp_res < 0) { // u < v => u / v = 0 - case 4
00368       us = SC_ZERO;
00369       vec_zero(old_und, ud);
00370       return;
00371     }
00372     
00373     sc_digit vd0 = (*vd);
00374     
00375     if ((cmp_res > 0) && (vnd == 1) && (vd0 == 1))  {
00376       us = CONVERT_SM_to_2C_to_SM(us, unb, old_und, ud);
00377       return;
00378     }
00379     
00380     // One extra digit for d is allocated to simplify vec_div_*().
00381     int nd = sc_max(und, vnd) + 1;
00382     
00383 #ifdef SC_MAX_NBITS
00384     sc_digit d[MAX_NDIGITS + 1];
00385 #else
00386     sc_digit *d = new sc_digit[nd];
00387 #endif
00388     
00389     vec_zero(nd, d);
00390     
00391     // u = v => u / v = 1 - case 3
00392     if (cmp_res == 0)
00393       d[0] = 1;
00394     
00395     else if ((vnd == 1) && (und == 1))
00396       d[0] = (*ud) / vd0;
00397     
00398     else if ((vnd == 1) && (vd0 < HALF_DIGIT_RADIX))
00399       vec_div_small(und, ud, vd0, d);
00400     
00401     else
00402       vec_div_large(und, ud, vnd, vd, d);
00403     
00404     COPY_DIGITS(us, unb, old_und, ud, sc_max(unb, vnb), nd - 1, d);
00405     
00406 #ifndef SC_MAX_NBITS
00407     delete [] d;
00408 #endif
00409     
00410   }
00411   
00412 #undef COPY_DIGITS
00413 #undef CONVERT_SM_to_2C_to_SM
00414 
00415 }

scfx_rep * sc_dt::div_scfx_rep ( const scfx_rep &  lhs,
const scfx_rep &  rhs,
int  div_wl 
)

scfx_rep.cpp1598 行で定義されています。

01599 {
01600     scfx_rep& result = *new scfx_rep;
01601 
01602     //
01603     // check for special cases
01604     //
01605 
01606     if( lhs.is_nan() || rhs.is_nan() || lhs.is_inf() && rhs.is_inf() ||
01607         lhs.is_zero() && rhs.is_zero() )
01608     {
01609         result.set_nan();
01610         return &result;
01611     }
01612 
01613     if( lhs.is_inf() || rhs.is_zero() )
01614     {
01615         result.set_inf( lhs.m_sign * rhs.m_sign );
01616         return &result;
01617     }
01618 
01619     if( lhs.is_zero() || rhs.is_inf() )
01620     {
01621         result.set_zero( lhs.m_sign * rhs.m_sign );
01622         return &result;
01623     }
01624 
01625     //
01626     // do it
01627     //
01628 
01629     // compute one bit more for rounding
01630     div_wl ++;
01631 
01632     result.resize_to( sc_max( n_word( div_wl ) + 1, min_mant ) );
01633     result.m_mant.clear();
01634     result.m_sign = lhs.m_sign * rhs.m_sign;
01635 
01636     int msb_lhs = scfx_find_msb( lhs.m_mant[lhs.m_msw] )
01637                 + ( lhs.m_msw - lhs.m_wp ) * bits_in_word;
01638     int msb_rhs = scfx_find_msb( rhs.m_mant[rhs.m_msw] )
01639                 + ( rhs.m_msw - rhs.m_wp ) * bits_in_word;
01640 
01641     int msb_res = msb_lhs - msb_rhs;
01642     int to_shift = -msb_res % bits_in_word;
01643     int result_index;
01644 
01645     int c = ( msb_res % bits_in_word >= 0 ) ? 1 : 0;
01646 
01647     result_index = (result.size() - c) * bits_in_word + msb_res % bits_in_word;
01648     result.m_wp   = (result.size() - c) - msb_res / bits_in_word;
01649 
01650     scfx_rep remainder = lhs;
01651 
01652     // align msb from remainder to msb from rhs
01653     remainder.lshift( to_shift );
01654 
01655     // make sure msw( remainder ) < size - 1
01656     if( remainder.m_msw == remainder.size() - 1 )
01657         remainder.resize_to( remainder.size() + 1, 1 );
01658 
01659     // make sure msw( remainder ) >= msw( rhs )!
01660     int msw_diff = rhs.m_msw - remainder.m_msw;
01661     if (msw_diff > 0)
01662         remainder.resize_to( remainder.size() + msw_diff, -1 );
01663 
01664     int counter;
01665 
01666     for( counter = div_wl; counter && ! remainder.is_zero(); counter -- )
01667     {
01668         if( compare_msw_ff( rhs, remainder ) <= 0 )
01669         {
01670             result.set_bin( result_index );
01671             sub_with_index( remainder.m_mant, remainder.m_msw, remainder.m_lsw,
01672                             rhs.m_mant, rhs.m_msw, rhs.m_lsw );
01673         }
01674         result_index --;
01675         remainder.shift_left( 1 );
01676         remainder.m_lsw = remainder.find_lsw();
01677     }
01678 
01679     // perform convergent rounding, if needed
01680     if( counter == 0 )
01681     {
01682         int index = result_index + 1 - result.m_wp * bits_in_word;
01683 
01684         scfx_index x = result.calc_indices( index );
01685         scfx_index x1 = result.calc_indices( index + 1 );
01686 
01687         if( result.o_bit_at( x ) && result.o_bit_at( x1 ) )
01688             result.q_incr( x );
01689 
01690         result.m_r_flag = true;
01691     }
01692 
01693     result.find_sw();
01694 
01695     return &result;
01696 }

sc_signed sc_dt::div_signed_friend ( small_type  s,
int  unb,
int  und,
const sc_digit *  ud,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_unsigned sc_dt::div_unsigned_friend ( small_type  s,
int  unb,
int  und,
const sc_digit *  ud,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

bool sc_dt::equal ( char  a,
const sc_bit &  b 
) [inline]

sc_bit.h451 行で定義されています。

00452         { return ( a == b ); }

bool sc_dt::equal ( bool  a,
const sc_bit &  b 
) [inline]

sc_bit.h448 行で定義されています。

00449         { return ( a == b ); }

bool sc_dt::equal ( int  a,
const sc_bit &  b 
) [inline]

sc_bit.h445 行で定義されています。

00446         { return ( a == b ); }

bool sc_dt::equal ( const sc_bit &  a,
char  b 
) [inline]

sc_bit.h442 行で定義されています。

00443         { return ( a == b ); }

bool sc_dt::equal ( const sc_bit &  a,
bool  b 
) [inline]

sc_bit.h439 行で定義されています。

00440         { return ( a == b ); }

bool sc_dt::equal ( const sc_bit &  a,
int  b 
) [inline]

sc_bit.h436 行で定義されています。

00437         { return ( a == b ); }

bool sc_dt::equal ( const sc_bit &  a,
const sc_bit &  b 
) [inline]

sc_bit.h433 行で定義されています。

00434         { return ( a == b ); }

template<class X>
void sc_dt::extend_sign_w_ ( X &  x,
int  wi,
bool  sign 
) [inline]

sc_proxy.h654 行で定義されています。

00655 {
00656     int sz = x.size();
00657     unsigned int sgn = (sign ? ~SC_DIGIT_ZERO : SC_DIGIT_ZERO);
00658     for( int i = wi; i < sz; ++ i ) {
00659         set_words_( x, i, sgn, SC_DIGIT_ZERO );
00660     }
00661 }

template<class Type>
void sc_dt::from_uint ( int  ulen,
sc_digit *  u,
Type  v 
) [inline]

sc_nbutils.h546 行で定義されています。

00547 {
00548 
00549 #ifdef DEBUG_SYSTEMC
00550   // assert((ulen <= 0) || (u != NULL));
00551   assert((ulen > 0) && (u != NULL));
00552   assert(v >= 0);
00553 #endif
00554 
00555   register int i = 0;
00556 
00557   while (v && (i < ulen)) {
00558 #ifndef WIN32
00559     u[i++] = static_cast<sc_digit>( v & DIGIT_MASK );
00560 #else
00561     u[i++] = ((sc_digit) v) & DIGIT_MASK;
00562 #endif
00563     v >>= BITS_PER_DIGIT;
00564   }
00565 
00566   vec_zero(i, ulen, u);
00567 
00568 }

small_type sc_dt::fsm_move ( char  c,
small_type &  b,
small_type &  s,
small_type &  state 
)

sc_nbutils.cpp65 行で定義されています。

00066 {
00067 
00068   // Possible regular expressions (REs):
00069   // Let N = any digit depending on the base.
00070   //    1. [0|1|..|9]N*
00071   //    2. [+|-][0|1|..|9]N*
00072   //    3. 0[b|B|d|D|o|O|x|X][0|1|..|F]N*
00073   //    4. [+|-]?0[b|B|d|D|o|O|x|X][0|1|..|F]N*
00074   //
00075   // The finite state machine (FMS) to parse these regular expressions
00076   // has 4 states, 0 to 3. 0 is the initial state and 3 is the final
00077   // state.
00078   //
00079   // Default sign = SC_POS, default base = NB_DEFAULT_BASE.
00080 
00081   switch (state) {
00082 
00083   case 0: // The initial state.
00084     switch (c) { 
00085     case '0': s = SC_POS; state = 1; return 0; // RE 1 or 3
00086     case '+': s = SC_POS; state = 2; return 1; // RE 2
00087     case '-': s = SC_NEG; state = 2; return 1; // RE 2
00088     default:  s = SC_POS; b = NB_DEFAULT_BASE; state = 3; return 0; // RE 1
00089     }
00090     // break; //unreachable code
00091   case 1: // 0...
00092     switch (c) {
00093     case 'x': case 'X': b = SC_HEX; state = 3; return 2; // RE 3 or 4
00094     case 'd': case 'D': b = SC_DEC; state = 3; return 2; // RE 3 or 4
00095     case 'o': case 'O': b = SC_OCT; state = 3; return 2; // RE 3 or 4
00096     case 'b': case 'B': b = SC_BIN; state = 3; return 2; // RE 3 or 4
00097     default:  b = NB_DEFAULT_BASE; state = 3; return 0; // RE 1
00098     }
00099     // break; //unreachable code
00100   case 2: // +... or -...
00101     switch (c) {
00102     case '0': state = 1; return 0; // RE 2 or 4
00103     default:  b = NB_DEFAULT_BASE; state = 3; return 0; // RE 2
00104     }
00105     // break; //unreachable code
00106   case 3: // The final state.
00107     break;
00108 
00109   default:
00110     // Any other state is not possible.
00111     assert((0 <= state) && (state <= 3));
00112 
00113   } // switch
00114 
00115   return 0;
00116 
00117 }  

const char * sc_dt::get_base_and_sign ( const char *  v,
small_type &  b,
small_type &  s 
)

sc_nbutils.cpp125 行で定義されています。

00126 {
00127 
00128 #ifdef DEBUG_SYSTEMC
00129   assert(v != NULL);
00130 #endif
00131 
00132   const small_type STATE_START = 0;
00133   const small_type STATE_FINISH = 3;
00134 
00135   // Default sign = SC_POS, default base = 10.
00136   s = SC_POS;
00137   b = NB_DEFAULT_BASE;
00138 
00139   small_type state = STATE_START;
00140   small_type nskip = 0; // Skip that many chars.
00141   const char *u = v;
00142 
00143   while (*u) {
00144     if (isspace(*u))  // Skip white space.
00145       ++u;
00146     else {
00147       nskip += fsm_move(*u, b, s, state);
00148       if (state == STATE_FINISH)
00149         break;
00150       else
00151         ++u;
00152     }
00153   }
00154 
00155 #ifdef DEBUG_SYSTEMC
00156   // Test to see if the above loop executed more than it should
00157   // have. The max number of skipped chars is equal to the length of
00158   // the longest format specifier, e.g., "-0x".
00159   assert(nskip <= 3);
00160 #endif
00161 
00162   v += nskip;
00163 
00164   // Handles empty strings or strings without any digits after the
00165   // base or base and sign specifier.
00166   if (*v == '\0') { 
00167       char msg[BUFSIZ];
00168       std::sprintf( msg,
00169                "get_base_and_sign( const char* v, small_type&, small_type& ) : "
00170                "v = \"\" is not valid" );
00171       SC_REPORT_ERROR( sc_core::SC_ID_CONVERSION_FAILED_, msg );
00172   }
00173 
00174   return v;
00175 
00176 }

template<class Type>
small_type sc_dt::get_sign ( Type &  u  )  [inline]

sc_nbutils.h576 行で定義されています。

00577 {
00578   if (u > 0)
00579     return SC_POS;
00580 
00581   else if (u == 0)
00582     return SC_ZERO;
00583 
00584   else {
00585     u = -u;
00586     return SC_NEG;
00587   }
00588 }

template<class X>
void sc_dt::get_words_ ( const X &  x,
int  wi,
sc_digit &  x_dw,
sc_digit &  x_cw 
) [inline]

sc_proxy.h636 行で定義されています。

00637 {
00638     x_dw = x.get_word( wi );
00639     x_cw = x.get_cword( wi );
00640 }

sc_digit sc_dt::high_half ( sc_digit  d  )  [inline]

sc_nbutils.h293 行で定義されています。

00294 {
00295   return (d >> BITS_PER_HALF_DIGIT);
00296 }

sc_digit sc_dt::high_half_masked ( sc_digit  d  )  [inline]

sc_nbutils.h300 行で定義されています。

00301 {
00302   return (high_half(d) & HALF_DIGIT_MASK);
00303 }

void sc_dt::inc ( scfx_mant &  mant  )  [inline]

scfx_mant.h356 行で定義されています。

00357 {
00358     for( int i = 0; i < mant.size(); i ++ )
00359     {
00360         if( ++ mant[i] )
00361         {
00362             break;
00363         }
00364     }
00365 }

void sc_dt::is_bad_double ( double  v  )  [inline]

sc_nbutils.h954 行で定義されています。

00955 {
00956 // Windows throws exception.
00957 #if !defined(WIN32) && !defined(i386) && !defined(__x86_64__) && !defined( __EDG__ )
00958 #if defined( __hpux ) && defined( isfinite )
00959   // HP-UX 11.00 does not have finite anymore
00960   if( ! isfinite( v ) ) {
00961 #else
00962   if (! finite(v)) {
00963 #endif
00964       SC_REPORT_ERROR( sc_core::SC_ID_VALUE_NOT_VALID_,
00965                        "is_bad_double( double v ) : "
00966                        "v is not finite - NaN or Inf" );
00967   }
00968 #endif
00969 }

void sc_dt::is_valid_base ( sc_numrep  base  )  [inline]

sc_nbutils.h68 行で定義されています。

00069 {
00070   switch (base) {
00071     case SC_NOBASE: case SC_BIN: 
00072     case SC_OCT: case SC_DEC: 
00073     case SC_HEX: 
00074         break;
00075     case SC_BIN_US: case SC_BIN_SM: 
00076     case SC_OCT_US: case SC_OCT_SM:
00077     case SC_HEX_US: case SC_HEX_SM:
00078       SC_REPORT_ERROR( sc_core::SC_ID_NOT_IMPLEMENTED_,
00079                        "is_valid_base( sc_numrep base ) : "
00080                        "base ending in _US and _SM is not supported yet" );
00081     default:
00082       char msg[BUFSIZ];
00083       std::sprintf( msg, "is_valid_base( sc_numrep base ) : "
00084                "base = %s is not valid",
00085                to_string( base ).c_str() );
00086       SC_REPORT_ERROR( sc_core::SC_ID_VALUE_NOT_VALID_, msg );
00087   }
00088 }

sc_digit sc_dt::low_half ( sc_digit  d  )  [inline]

sc_nbutils.h281 行で定義されています。

00282 {
00283   return (d & HALF_DIGIT_MASK);
00284 }

template<class X>
const sc_lv_base sc_dt::lrotate ( const sc_proxy< X > &  x,
int  n 
) [inline]

sc_lv_base.h726 行で定義されています。

00727 {
00728     sc_lv_base a( x.back_cast() );
00729     return a.lrotate( n );
00730 }

scfx_rep * sc_dt::lsh_scfx_rep ( const scfx_rep &  a,
int  b 
) [inline]

scfx_rep.h377 行で定義されています。

00378 {
00379     scfx_rep& c = *new scfx_rep( a );
00380     c.lshift( b );
00381     return &c;
00382 }

void sc_dt::lshift ( sc_fxval_fast &  c,
const sc_fxval_fast &  a,
int  b 
) [inline]

sc_fxval.h1836 行で定義されています。

01837 {
01838     SC_FXVAL_FAST_OBSERVER_READ_( a )
01839     c.m_val = a.m_val * scfx_pow2( b );
01840     SC_FXVAL_FAST_OBSERVER_WRITE_( c )
01841 }

void sc_dt::lshift ( sc_fxnum_fast &  c,
const sc_fxnum_fast &  a,
int  b 
) [inline]

sc_fxnum.h4086 行で定義されています。

04087 {
04088     SC_FXNUM_FAST_OBSERVER_READ_( a )
04089     c.m_val = a.m_val * scfx_pow2( b );
04090     c.cast();
04091     SC_FXNUM_FAST_OBSERVER_WRITE_( c )
04092 }

void sc_dt::lshift ( sc_fxval_fast &  c,
const sc_fxnum_fast &  a,
int  b 
) [inline]

sc_fxnum.h4070 行で定義されています。

04071 {
04072     SC_FXNUM_FAST_OBSERVER_READ_( a )
04073     c.set_val( a.m_val * scfx_pow2( b ) );
04074 }

void sc_dt::lshift ( sc_fxnum &  c,
const sc_fxnum &  a,
int  b 
) [inline]

sc_fxnum.h2974 行で定義されています。

02975 {
02976     SC_FXNUM_OBSERVER_READ_( a )
02977     delete c.m_rep;
02978     c.m_rep = sc_dt::lsh_scfx_rep( *a.m_rep, b );
02979     c.cast();
02980     SC_FXNUM_OBSERVER_WRITE_( c )
02981 }

void sc_dt::lshift ( sc_fxval &  c,
const sc_fxnum &  a,
int  b 
) [inline]

sc_fxnum.h2958 行で定義されています。

02959 {
02960     SC_FXNUM_OBSERVER_READ_( a )
02961     c.set_rep( sc_dt::lsh_scfx_rep( *a.m_rep, b ) );
02962 }

sc_dt::m_observer ( observer_   ) 

sc_fxval.h1552 行で定義されています。

small_type sc_dt::make_zero ( int  nd,
sc_digit *  d 
) [inline]

sc_nbutils.h686 行で定義されています。

00687 {
00688   vec_zero(nd, d);
00689   return SC_ZERO;
00690 }

CLASS_TYPE sc_dt::MOD_HELPER ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_signed.cpp4317 行で定義されています。

void sc_dt::mod_on_help_signed ( small_type &  us,
int  unb,
int  und,
sc_digit *  ud,
int  ,
int  vnd,
const sc_digit *  vd 
)

sc_nbexterns.cpp423 行で定義されています。

00428 {
00429 
00430 #define COPY_DIGITS copy_digits_signed
00431 
00432   { // Body of mod_on_help
00433 
00434     int old_und = und;
00435     
00436     und = vec_skip_leading_zeros(und, ud);
00437     vnd = vec_skip_leading_zeros(vnd, vd);
00438     
00439     int cmp_res = vec_cmp(und, ud, vnd, vd);
00440     
00441     // u < v => u % v = u - case 4
00442     if (cmp_res < 0) 
00443       return;
00444     
00445     // u = v => u % v = 0 - case 3
00446     if (cmp_res == 0) { 
00447       us = SC_ZERO;
00448       vec_zero(old_und, ud);
00449       return;
00450     }
00451     
00452     // else if u > v - case 5
00453     
00454     sc_digit vd0 = (*vd);
00455     
00456     if ((vnd == 1) && (vd0 == 1)) {
00457       us = SC_ZERO;
00458       vec_zero(old_und, ud);
00459       return;
00460     }
00461     
00462     // One extra digit for d is allocated to simplify vec_div_*().
00463     int nd = sc_max(und, vnd) + 1;
00464     
00465 #ifdef SC_MAX_NBITS
00466     sc_digit d[MAX_NDIGITS + 1];
00467 #else
00468     sc_digit *d = new sc_digit[nd];
00469 #endif
00470     
00471     vec_zero(nd, d);
00472     
00473     if ((vnd == 1) && (und == 1))
00474       d[0] = (*ud) % vd0;
00475     
00476     if ((vnd == 1) && (vd0 < HALF_DIGIT_RADIX))
00477       d[0] = vec_rem_small(und, ud, vd0);
00478     
00479     else
00480       vec_rem_large(und, ud, vnd, vd, d);
00481     
00482     us = check_for_zero(us, nd - 1, d);
00483     
00484     if (us == SC_ZERO)
00485       vec_zero(old_und, ud);
00486     else
00487       COPY_DIGITS(us, unb, old_und, ud, sc_min(unb, vnd), nd - 1, d);
00488     
00489 #ifndef SC_MAX_NBITS
00490     delete [] d;
00491 #endif
00492     
00493   }
00494   
00495 #undef COPY_DIGITS
00496   
00497 }

void sc_dt::mod_on_help_unsigned ( small_type &  us,
int  unb,
int  und,
sc_digit *  ud,
int  ,
int  vnd,
const sc_digit *  vd 
)

sc_nbexterns.cpp501 行で定義されています。

00506 {
00507 
00508 #define COPY_DIGITS copy_digits_unsigned
00509 
00510   { // Body of mod_on_help
00511 
00512     int old_und = und;
00513     
00514     und = vec_skip_leading_zeros(und, ud);
00515     vnd = vec_skip_leading_zeros(vnd, vd);
00516     
00517     int cmp_res = vec_cmp(und, ud, vnd, vd);
00518     
00519     // u < v => u % v = u - case 4
00520     if (cmp_res < 0) 
00521       return;
00522     
00523     // u = v => u % v = 0 - case 3
00524     if (cmp_res == 0) { 
00525       us = SC_ZERO;
00526       vec_zero(old_und, ud);
00527       return;
00528     }
00529     
00530     // else if u > v - case 5
00531     
00532     sc_digit vd0 = (*vd);
00533     
00534     if ((vnd == 1) && (vd0 == 1)) {
00535       us = SC_ZERO;
00536       vec_zero(old_und, ud);
00537       return;
00538     }
00539     
00540     // One extra digit for d is allocated to simplify vec_div_*().
00541     int nd = sc_max(und, vnd) + 1;
00542     
00543 #ifdef SC_MAX_NBITS
00544     sc_digit d[MAX_NDIGITS + 1];
00545 #else
00546     sc_digit *d = new sc_digit[nd];
00547 #endif
00548     
00549     vec_zero(nd, d);
00550     
00551     if ((vnd == 1) && (und == 1))
00552       d[0] = (*ud) % vd0;
00553     
00554     if ((vnd == 1) && (vd0 < HALF_DIGIT_RADIX))
00555       d[0] = vec_rem_small(und, ud, vd0);
00556     
00557     else
00558       vec_rem_large(und, ud, vnd, vd, d);
00559     
00560     us = check_for_zero(us, nd - 1, d);
00561     
00562     if (us == SC_ZERO)
00563       vec_zero(old_und, ud);
00564     else
00565       COPY_DIGITS(us, unb, old_und, ud, sc_min(unb, vnd), nd - 1, d);
00566     
00567 #ifndef SC_MAX_NBITS
00568     delete [] d;
00569 #endif
00570     
00571   }
00572   
00573 #undef COPY_DIGITS
00574   
00575 }

sc_signed sc_dt::mod_signed_friend ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_unsigned sc_dt::mod_unsigned_friend ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

CLASS_TYPE sc_dt::MUL_HELPER ( small_type  s,
int  unb,
int  und,
const sc_digit *  ud,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_signed.cpp4201 行で定義されています。

void sc_dt::mul_on_help_signed ( small_type &  us,
int  unb,
int  und,
sc_digit *  ud,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_nbexterns.cpp125 行で定義されています。

00130 {
00131 #define CONVERT_SM_to_2C_to_SM convert_signed_SM_to_2C_to_SM
00132 #define COPY_DIGITS copy_digits_signed
00133 
00134   {  // Body of mul_on_help
00135 
00136     int old_und = und;
00137 
00138     und = vec_skip_leading_zeros(und, ud);
00139     vnd = vec_skip_leading_zeros(vnd, vd);
00140     
00141     sc_digit ud0 = (*ud);
00142     sc_digit vd0 = (*vd);
00143     
00144     if ((vnd == 1) && (vd0 == 1)) {
00145       us = CONVERT_SM_to_2C_to_SM(us, unb, old_und, ud);
00146       return;
00147     }
00148     
00149     if ((und == 1) && (ud0 == 1)) {
00150       COPY_DIGITS(us, unb, old_und, ud, vnb, vnd, vd);
00151       return;
00152     }
00153     
00154     if ((und == 1) && (vnd == 1) && 
00155         (ud0 < HALF_DIGIT_RADIX) && (vd0 < HALF_DIGIT_RADIX)) {
00156       
00157       sc_digit d = ud0 * vd0;
00158       COPY_DIGITS(us, unb, old_und, ud, unb + vnb, 1, &d);
00159       return;
00160       
00161     }
00162     
00163     int nd = und + vnd;
00164     
00165 #ifdef SC_MAX_NBITS
00166     sc_digit d[MAX_NDIGITS];
00167 #else
00168     sc_digit *d = new sc_digit[nd];
00169 #endif
00170   
00171     vec_zero(nd, d);
00172     
00173     if ((und == 1) && (ud0 < HALF_DIGIT_RADIX))
00174       vec_mul_small(vnd, vd, ud0, d);
00175     
00176     else if ((vnd == 1) && (vd0 < HALF_DIGIT_RADIX))
00177       vec_mul_small(und, ud, vd0, d);
00178     
00179     else if (vnd < und)
00180       vec_mul(und, ud, vnd, vd, d);
00181     
00182     else
00183       vec_mul(vnd, vd, und, ud, d);
00184     
00185     COPY_DIGITS(us, unb, old_und, ud, unb + vnb, nd, d);
00186     
00187 #ifndef SC_MAX_NBITS
00188     delete [] d;
00189 #endif
00190     
00191   }
00192 
00193 #undef COPY_DIGITS
00194 #undef CONVERT_SM_to_2C_to_SM
00195 
00196 }

void sc_dt::mul_on_help_unsigned ( small_type &  us,
int  unb,
int  und,
sc_digit *  ud,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_nbexterns.cpp200 行で定義されています。

00205 {
00206 #define CONVERT_SM_to_2C_to_SM convert_unsigned_SM_to_2C_to_SM
00207 #define COPY_DIGITS copy_digits_unsigned
00208 
00209   {  // Body of mul_on_help
00210 
00211     int old_und = und;
00212 
00213     und = vec_skip_leading_zeros(und, ud);
00214     vnd = vec_skip_leading_zeros(vnd, vd);
00215     
00216     sc_digit ud0 = (*ud);
00217     sc_digit vd0 = (*vd);
00218     
00219     if ((vnd == 1) && (vd0 == 1)) {
00220       us = CONVERT_SM_to_2C_to_SM(us, unb, old_und, ud);
00221       return;
00222     }
00223     
00224     if ((und == 1) && (ud0 == 1)) {
00225       COPY_DIGITS(us, unb, old_und, ud, vnb, vnd, vd);
00226       return;
00227     }
00228     
00229     if ((und == 1) && (vnd == 1) && 
00230         (ud0 < HALF_DIGIT_RADIX) && (vd0 < HALF_DIGIT_RADIX)) {
00231       
00232       sc_digit d = ud0 * vd0;
00233       COPY_DIGITS(us, unb, old_und, ud, unb + vnb, 1, &d);
00234       return;
00235       
00236     }
00237     
00238     int nd = und + vnd;
00239     
00240 #ifdef SC_MAX_NBITS
00241     sc_digit d[MAX_NDIGITS];
00242 #else
00243     sc_digit *d = new sc_digit[nd];
00244 #endif
00245   
00246     vec_zero(nd, d);
00247     
00248     if ((und == 1) && (ud0 < HALF_DIGIT_RADIX))
00249       vec_mul_small(vnd, vd, ud0, d);
00250     
00251     else if ((vnd == 1) && (vd0 < HALF_DIGIT_RADIX))
00252       vec_mul_small(und, ud, vd0, d);
00253     
00254     else if (vnd < und)
00255       vec_mul(und, ud, vnd, vd, d);
00256     
00257     else
00258       vec_mul(vnd, vd, und, ud, d);
00259     
00260     COPY_DIGITS(us, unb, old_und, ud, unb + vnb, nd, d);
00261     
00262 #ifndef SC_MAX_NBITS
00263     delete [] d;
00264 #endif
00265     
00266   }
00267 
00268 #undef COPY_DIGITS
00269 #undef CONVERT_SM_to_2C_to_SM
00270 
00271 }

sc_signed sc_dt::mul_signed_friend ( small_type  s,
int  unb,
int  und,
const sc_digit *  ud,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

small_type sc_dt::mul_signs ( small_type  us,
small_type  vs 
) [inline]

sc_nbutils.h597 行で定義されています。

00598 {
00599   if ((us == SC_ZERO) || (vs == SC_ZERO))
00600     return SC_ZERO;
00601 
00602   if (us == vs)
00603     return SC_POS;
00604 
00605   return SC_NEG;
00606 }

sc_unsigned sc_dt::mul_unsigned_friend ( small_type  s,
int  unb,
int  und,
const sc_digit *  ud,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

scfx_rep * sc_dt::mult_scfx_rep ( const scfx_rep &  a,
const scfx_rep &  b,
int  max_wl = SC_DEFAULT_MAX_WL_ 
) [inline]

scfx_rep.h368 行で定義されています。

00369 {
00370     scfx_rep& c = *new scfx_rep;
00371     sc_dt::multiply( c, a, b, max_wl );
00372     return &c;
00373 }

void sc_dt::multiply ( scfx_rep &  result,
const scfx_rep &  lhs,
const scfx_rep &  rhs,
int  max_wl 
)

scfx_rep.cpp1517 行で定義されています。

01519 {
01520     //
01521     // check for special cases
01522     //
01523 
01524     if( lhs.is_nan() || rhs.is_nan()
01525     ||  lhs.is_inf() && rhs.is_zero()
01526     ||  lhs.is_zero() && rhs.is_inf() )
01527     {
01528         result.set_nan();
01529         return;
01530     }
01531 
01532     if( lhs.is_inf() || rhs.is_inf() )
01533     {
01534         result.set_inf( lhs.m_sign * rhs.m_sign );
01535         return;
01536     }
01537     
01538     if( lhs.is_zero() || rhs.is_zero() ) {
01539         result.set_zero( lhs.m_sign * rhs.m_sign );
01540         return;
01541     }
01542 
01543     //
01544     // do it
01545     //
01546 
01547     int len_lhs = lhs.m_msw - lhs.m_lsw + 1;
01548     int len_rhs = rhs.m_msw - rhs.m_lsw + 1;
01549 
01550     int new_size = sc_max( min_mant, len_lhs + len_rhs );
01551     int new_wp   = ( lhs.m_wp - lhs.m_lsw ) + ( rhs.m_wp - rhs.m_lsw );
01552     int new_sign = lhs.m_sign * rhs.m_sign;
01553 
01554     result.resize_to( new_size );
01555     result.m_mant.clear();
01556     result.m_wp    = new_wp;
01557     result.m_sign  = new_sign;
01558     result.m_state = scfx_rep::normal;
01559 
01560     half_word *s1 = lhs.m_mant.half_addr( lhs.m_lsw );
01561     half_word *s2 = rhs.m_mant.half_addr( rhs.m_lsw );
01562 
01563     half_word *t = result.m_mant.half_addr();
01564 
01565     len_lhs <<= 1;
01566     len_rhs <<= 1;
01567 
01568     int i1, i2;
01569 
01570     for( i1 = 0; i1 * half_word_incr < len_lhs; i1 += half_word_incr )
01571     {
01572         register word_short ls;
01573         ls.l = 0;
01574 
01575         half_word v1 = s1[i1];
01576 
01577         for( i2  = 0; i2 * half_word_incr < len_rhs; i2 += half_word_incr )
01578         {
01579             ls.l  += v1 * s2[i2];
01580             ls.s.l = ls.s.u + ( ( t[i2] += ls.s.l ) < ls.s.l );
01581             ls.s.u = 0;
01582         }
01583 
01584         t[i2] = ls.s.l;
01585         t += half_word_incr;
01586     }
01587 
01588     result.find_sw();
01589     result.round( max_wl );
01590 }

static int sc_dt::n_word ( int  x  )  [inline, static]

scfx_rep.cpp73 行で定義されています。

00074 {
00075     return ( x + bits_in_word - 1 ) / bits_in_word;
00076 }

bool sc_dt::nand_reduce ( const sc_concatref &  a  )  [inline]

sc_concatref.h444 行で定義されています。

00445 {
00446     return a.nand_reduce();
00447 }

bool sc_dt::nand_reduce ( const sc_uint_base &  a  )  [inline]

sc_uint_base.h1283 行で定義されています。

01284 {
01285     return a.nand_reduce();
01286 }

bool sc_dt::nand_reduce ( const sc_uint_subref_r &  a  )  [inline]

sc_uint_base.h1100 行で定義されています。

01101 {
01102     return a.nand_reduce();
01103 }

bool sc_dt::nand_reduce ( const sc_int_base &  a  )  [inline]

sc_int_base.h1312 行で定義されています。

01313 {
01314     return a.nand_reduce();
01315 }

bool sc_dt::nand_reduce ( const sc_int_subref_r &  a  )  [inline]

sc_int_base.h1129 行で定義されています。

01130 {
01131     return a.nand_reduce();
01132 }

template<class X>
sc_logic_value_t sc_dt::nand_reduce ( const sc_proxy< X > &  a  )  [inline]

sc_proxy.h1467 行で定義されています。

01468 {
01469     return a.nand_reduce();
01470 }

void sc_dt::neg ( sc_fxval_fast &  c,
const sc_fxval_fast &  a 
) [inline]

sc_fxval.h1659 行で定義されています。

01660 {
01661     SC_FXVAL_FAST_OBSERVER_READ_( a )
01662     c.m_val = - a.m_val;
01663     SC_FXVAL_FAST_OBSERVER_WRITE_( c )
01664 }

void sc_dt::neg ( sc_fxval &  c,
const sc_fxval &  a 
) [inline]

sc_fxval.h904 行で定義されています。

00905 {
00906     SC_FXVAL_OBSERVER_READ_( a )
00907     delete c.m_rep;
00908     c.m_rep = sc_dt::neg_scfx_rep( *a.m_rep );
00909     SC_FXVAL_OBSERVER_WRITE_( c )
00910 }

void sc_dt::neg ( sc_fxnum_fast &  c,
const sc_fxnum_fast &  a 
) [inline]

sc_fxnum.h3793 行で定義されています。

03794 {
03795     SC_FXNUM_FAST_OBSERVER_READ_( a )
03796     c.m_val = - a.m_val;
03797     c.cast();
03798     SC_FXNUM_FAST_OBSERVER_WRITE_( c )
03799 }

void sc_dt::neg ( sc_fxval_fast &  c,
const sc_fxnum_fast &  a 
) [inline]

sc_fxnum.h3785 行で定義されています。

03786 {
03787     SC_FXNUM_FAST_OBSERVER_READ_( a )
03788     c.set_val( - a.m_val );
03789 }

void sc_dt::neg ( sc_fxnum &  c,
const sc_fxnum &  a 
) [inline]

sc_fxnum.h2670 行で定義されています。

02671 {
02672     SC_FXNUM_OBSERVER_READ_( a )
02673     delete c.m_rep;
02674     c.m_rep = sc_dt::neg_scfx_rep( *a.m_rep );
02675     c.cast();
02676     SC_FXNUM_OBSERVER_WRITE_( c )
02677 }

void sc_dt::neg ( sc_fxval &  c,
const sc_fxnum &  a 
) [inline]

sc_fxnum.h2662 行で定義されています。

02663 {
02664     SC_FXNUM_OBSERVER_READ_( a )
02665     c.set_rep( sc_dt::neg_scfx_rep( *a.m_rep ) );
02666 }

scfx_rep * sc_dt::neg_scfx_rep ( const scfx_rep &  a  )  [inline]

scfx_rep.h359 行で定義されています。

00360 {
00361     scfx_rep& c = *new scfx_rep( a );
00362     c.m_sign = - c.m_sign;
00363     return &c;
00364 }

static int sc_dt::next_pow2_index ( std::size_t  size  )  [inline, static]

scfx_mant.cpp64 行で定義されています。

00065 {
00066     int index = scfx_find_msb( size );
00067     // If this was a power of 2 we are one bucket too low.
00068     if( ~ (1 << index) & size ) index ++;
00069     // If this is a 64-bit machine and we are using 32-bit words go down
00070         // one slot size, as all the slots are 2x in size.
00071     if ( index != 0 && ( sizeof(word_list) != sizeof(word) ) ) 
00072         {
00073                 index -= 1;
00074         }
00075     return index;
00076 }

bool sc_dt::nor_reduce ( const sc_concatref &  a  )  [inline]

sc_concatref.h458 行で定義されています。

00459 {
00460     return a.nor_reduce();
00461 }

bool sc_dt::nor_reduce ( const sc_uint_base &  a  )  [inline]

sc_uint_base.h1297 行で定義されています。

01298 {
01299     return a.nor_reduce();
01300 }

bool sc_dt::nor_reduce ( const sc_uint_subref_r &  a  )  [inline]

sc_uint_base.h1114 行で定義されています。

01115 {
01116     return a.nor_reduce();
01117 }

bool sc_dt::nor_reduce ( const sc_int_base &  a  )  [inline]

sc_int_base.h1326 行で定義されています。

01327 {
01328     return a.nor_reduce();
01329 }

bool sc_dt::nor_reduce ( const sc_int_subref_r &  a  )  [inline]

sc_int_base.h1143 行で定義されています。

01144 {
01145     return a.nor_reduce();
01146 }

template<class X>
sc_logic_value_t sc_dt::nor_reduce ( const sc_proxy< X > &  a  )  [inline]

sc_proxy.h1483 行で定義されています。

01484 {
01485     return a.nor_reduce();
01486 }

bool sc_dt::not_equal ( char  a,
const sc_bit &  b 
) [inline]

sc_bit.h497 行で定義されています。

00498         { return ( a != b ); }

bool sc_dt::not_equal ( bool  a,
const sc_bit &  b 
) [inline]

sc_bit.h494 行で定義されています。

00495         { return ( a != b ); }

bool sc_dt::not_equal ( int  a,
const sc_bit &  b 
) [inline]

sc_bit.h491 行で定義されています。

00492         { return ( a != b ); }

bool sc_dt::not_equal ( const sc_bit &  a,
char  b 
) [inline]

sc_bit.h488 行で定義されています。

00489         { return ( a != b ); }

bool sc_dt::not_equal ( const sc_bit &  a,
bool  b 
) [inline]

sc_bit.h485 行で定義されています。

00486         { return ( a != b ); }

bool sc_dt::not_equal ( const sc_bit &  a,
int  b 
) [inline]

sc_bit.h482 行で定義されています。

00483         { return ( a != b ); }

bool sc_dt::not_equal ( const sc_bit &  a,
const sc_bit &  b 
) [inline]

sc_bit.h479 行で定義されています。

00480         { return ( a != b ); }

sc_digit sc_dt::one_and_ones ( int  n  )  [inline]

sc_nbutils.h317 行で定義されています。

00318 {
00319   return (((sc_digit) 1 << n) - 1);
00320 }

sc_digit sc_dt::one_and_zeros ( int  n  )  [inline]

sc_nbutils.h325 行で定義されています。

00326 {
00327   return ((sc_digit) 1 << n);
00328 }

sc_unsigned sc_dt::operator & ( unsigned int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1500 行で定義されています。

01501     { return operator&((unsigned long) u,  v); }

sc_unsigned sc_dt::operator & ( const sc_unsigned &  u,
unsigned int  v 
) [inline]

sc_unsigned.h1492 行で定義されています。

01493     { return operator&(u, (unsigned long) v); }

sc_unsigned sc_dt::operator & ( unsigned long  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1328 行で定義されています。

01329 {
01330 
01331   if ((u == 0) || (v.sgn == SC_ZERO)) // case 1
01332     return sc_unsigned();
01333 
01334   CONVERT_LONG(u);
01335 
01336   // other cases
01337   return and_unsigned_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
01338                              v.sgn, v.nbits, v.ndigits, v.digit);
01339 
01340 }

sc_unsigned sc_dt::operator & ( const sc_unsigned &  u,
unsigned long  v 
)

sc_unsigned.cpp1312 行で定義されています。

01313 {
01314 
01315   if ((u.sgn == SC_ZERO) || (v == 0)) // case 1
01316     return sc_unsigned();
01317 
01318   CONVERT_LONG(v);
01319 
01320   // other cases
01321   return and_unsigned_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01322                              vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
01323 
01324 }

sc_unsigned sc_dt::operator & ( uint64  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1296 行で定義されています。

01297 {
01298 
01299   if ((u == 0) || (v.sgn == SC_ZERO)) // case 1
01300     return sc_unsigned();
01301 
01302   CONVERT_INT64(u);
01303 
01304   // other cases
01305   return and_unsigned_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
01306                              v.sgn, v.nbits, v.ndigits, v.digit);
01307 
01308 }

sc_unsigned sc_dt::operator & ( const sc_unsigned &  u,
uint64  v 
)

sc_unsigned.cpp1280 行で定義されています。

01281 {
01282 
01283   if ((u.sgn == SC_ZERO) || (v == 0)) // case 1
01284     return sc_unsigned();
01285 
01286   CONVERT_INT64(v);
01287 
01288   // other cases
01289   return and_unsigned_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01290                              vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
01291   
01292 }

sc_unsigned sc_dt::operator & ( const sc_unsigned &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1266 行で定義されています。

01267 {
01268 
01269   if ((u.sgn == SC_ZERO) || (v.sgn == SC_ZERO)) // case 1
01270     return sc_unsigned();
01271 
01272   // other cases
01273   return and_unsigned_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01274                              v.sgn, v.nbits, v.ndigits, v.digit);
01275 
01276 }

sc_unsigned sc_dt::operator & ( const sc_uint_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp677 行で定義されています。

00678 { return operator&((uint64) u, v); }

sc_unsigned sc_dt::operator & ( const sc_unsigned &  u,
const sc_uint_base &  v 
)

sc_unsigned.cpp674 行で定義されています。

00675 { return operator&(u, (uint64) v); }

sc_signed sc_dt::operator & ( unsigned int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1697 行で定義されています。

01698     { return operator&((unsigned long) u, v); }

sc_signed sc_dt::operator & ( int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1695 行で定義されています。

01696     { return operator&((long) u, v); }

sc_signed sc_dt::operator & ( const sc_signed &  u,
unsigned int  v 
) [inline]

sc_signed.h1688 行で定義されています。

01689     { return operator&(u, (unsigned long) v); }

sc_signed sc_dt::operator & ( const sc_signed &  u,
int  v 
) [inline]

sc_signed.h1686 行で定義されています。

01687     { return operator&(u, (long) v); }

sc_signed sc_dt::operator & ( int  u,
const sc_unsigned &  v 
) [inline]

sc_signed.h1678 行で定義されています。

01679     { return operator&((long) u, v); }

sc_signed sc_dt::operator & ( const sc_unsigned &  u,
int  v 
) [inline]

sc_signed.h1673 行で定義されています。

01674     { return operator&(u, (long) v); }

sc_signed sc_dt::operator & ( unsigned long  u,
const sc_signed &  v 
)

sc_signed.cpp2893 行で定義されています。

02894 {
02895 
02896   if ((u == 0) || (v.sgn == SC_ZERO)) // case 1
02897     return sc_signed();
02898 
02899   CONVERT_LONG(u);
02900 
02901   // other cases
02902   return and_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
02903                            v.sgn, v.nbits, v.ndigits, v.digit);
02904 
02905 }

sc_signed sc_dt::operator & ( const sc_signed &  u,
unsigned long  v 
)

sc_signed.cpp2877 行で定義されています。

02878 {
02879 
02880   if ((u.sgn == SC_ZERO) || (v == 0)) // case 1
02881     return sc_signed();
02882 
02883   CONVERT_LONG(v);
02884 
02885   // other cases
02886   return and_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02887                            vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
02888 
02889 }

sc_signed sc_dt::operator & ( long  u,
const sc_unsigned &  v 
)

sc_signed.cpp2861 行で定義されています。

02862 {
02863 
02864   if ((u == 0) || (v.sgn == SC_ZERO)) // case 1
02865     return sc_signed();
02866 
02867   CONVERT_LONG(u);
02868 
02869   // other cases
02870   return and_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
02871                            v.sgn, v.nbits, v.ndigits, v.digit);
02872 
02873 }

sc_signed sc_dt::operator & ( const sc_unsigned &  u,
long  v 
)

sc_signed.cpp2845 行で定義されています。

02846 {
02847 
02848   if ((u.sgn == SC_ZERO) || (v == 0)) // case 1
02849     return sc_signed();
02850 
02851   CONVERT_LONG(v);
02852 
02853   // other cases
02854   return and_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02855                            vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
02856 
02857 }

sc_signed sc_dt::operator & ( long  u,
const sc_signed &  v 
)

sc_signed.cpp2829 行で定義されています。

02830 {
02831 
02832   if ((u == 0) || (v.sgn == SC_ZERO)) // case 1
02833     return sc_signed();
02834 
02835   CONVERT_LONG(u);
02836 
02837   // other cases
02838   return and_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
02839                            v.sgn, v.nbits, v.ndigits, v.digit);
02840 
02841 }

sc_signed sc_dt::operator & ( const sc_signed &  u,
long  v 
)

sc_signed.cpp2813 行で定義されています。

02814 {
02815 
02816   if ((u.sgn == SC_ZERO) || (v == 0)) // case 1
02817     return sc_signed();
02818 
02819   CONVERT_LONG(v);
02820 
02821   // other cases
02822   return and_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02823                            vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
02824 
02825 }

sc_signed sc_dt::operator & ( uint64  u,
const sc_signed &  v 
)

sc_signed.cpp2797 行で定義されています。

02798 {
02799 
02800   if ((u == 0) || (v.sgn == SC_ZERO)) // case 1
02801     return sc_signed();
02802 
02803   CONVERT_INT64(u);
02804 
02805   // other cases
02806   return and_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
02807                            v.sgn, v.nbits, v.ndigits, v.digit);
02808 
02809 }

sc_signed sc_dt::operator & ( const sc_signed &  u,
uint64  v 
)

sc_signed.cpp2781 行で定義されています。

02782 {
02783 
02784   if ((u.sgn == SC_ZERO) || (v == 0)) // case 1
02785     return sc_signed();
02786 
02787   CONVERT_INT64(v);
02788 
02789   // other cases
02790   return and_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02791                            vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
02792   
02793 }

sc_signed sc_dt::operator & ( int64  u,
const sc_unsigned &  v 
)

sc_signed.cpp2765 行で定義されています。

02766 {
02767 
02768   if ((u == 0) || (v.sgn == SC_ZERO)) // case 1
02769     return sc_signed();
02770 
02771   CONVERT_INT64(u);
02772 
02773   // other cases
02774   return and_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
02775                            v.sgn, v.nbits, v.ndigits, v.digit);
02776 
02777 }

sc_signed sc_dt::operator & ( const sc_unsigned &  u,
int64  v 
)

sc_signed.cpp2749 行で定義されています。

02750 {
02751 
02752   if ((u.sgn == SC_ZERO) || (v == 0)) // case 1
02753     return sc_signed();
02754 
02755   CONVERT_INT64(v);
02756 
02757   // other cases
02758   return and_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02759                            vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
02760 
02761 }

sc_signed sc_dt::operator & ( int64  u,
const sc_signed &  v 
)

sc_signed.cpp2733 行で定義されています。

02734 {
02735 
02736   if ((u == 0) || (v.sgn == SC_ZERO)) // case 1
02737     return sc_signed();
02738 
02739   CONVERT_INT64(u);
02740 
02741   // other cases
02742   return and_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
02743                            v.sgn, v.nbits, v.ndigits, v.digit);
02744 
02745 }

sc_signed sc_dt::operator & ( const sc_signed &  u,
int64  v 
)

sc_signed.cpp2717 行で定義されています。

02718 {
02719 
02720   if ((u.sgn == SC_ZERO) || (v == 0)) // case 1
02721     return sc_signed();
02722 
02723   CONVERT_INT64(v);
02724 
02725   // other cases
02726   return and_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02727                            vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
02728 
02729 }

sc_signed sc_dt::operator & ( const sc_signed &  u,
const sc_signed &  v 
)

sc_signed.cpp2703 行で定義されています。

02704 {
02705 
02706   if ((u.sgn == SC_ZERO) || (v.sgn == SC_ZERO)) // case 1
02707     return sc_signed();
02708 
02709   // other cases
02710   return and_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02711                            v.sgn, v.nbits, v.ndigits, v.digit);
02712 
02713 }

sc_signed sc_dt::operator & ( const sc_signed &  u,
const sc_unsigned &  v 
)

sc_signed.cpp2689 行で定義されています。

02690 {
02691 
02692   if ((u.sgn == SC_ZERO) || (v.sgn == SC_ZERO)) // case 1
02693     return sc_signed();
02694 
02695   // other cases
02696   return and_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02697                            v.sgn, v.nbits, v.ndigits, v.digit);
02698 
02699 }

sc_signed sc_dt::operator & ( const sc_unsigned &  u,
const sc_signed &  v 
)

sc_signed.cpp2675 行で定義されています。

02676 {
02677 
02678   if ((u.sgn == SC_ZERO) || (v.sgn == SC_ZERO)) // case 1
02679     return sc_signed();
02680 
02681   // other cases
02682   return and_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02683                            v.sgn, v.nbits, v.ndigits, v.digit);
02684 
02685 }

sc_signed sc_dt::operator & ( const sc_uint_base &  u,
const sc_signed &  v 
)

sc_signed.cpp942 行で定義されています。

00943 { return operator&((uint64) u, v); }

sc_signed sc_dt::operator & ( const sc_signed &  u,
const sc_uint_base &  v 
)

sc_signed.cpp938 行で定義されています。

00939 { return operator&(u, (uint64) v); }

sc_signed sc_dt::operator & ( const sc_int_base &  u,
const sc_signed &  v 
)

sc_signed.cpp733 行で定義されています。

00734 { return operator&((int64) u, v); }

sc_signed sc_dt::operator & ( const sc_signed &  u,
const sc_int_base &  v 
)

sc_signed.cpp729 行で定義されています。

00730 { return operator&(u, (int64) v); }

sc_signed sc_dt::operator & ( const sc_int_base &  u,
const sc_unsigned &  v 
)

sc_signed.cpp725 行で定義されています。

00726 { return operator & ( SCAST<int64>( u ), v ); }

sc_signed sc_dt::operator & ( const sc_unsigned &  u,
const sc_int_base &  v 
)

sc_signed.cpp721 行で定義されています。

00722 { return operator & ( u, SCAST<int64>( v ) ); }

template<class X, class Y>
const sc_lv_base sc_dt::operator & ( const sc_proxy< X > &  px,
const sc_proxy< Y > &  py 
) [inline]

sc_lv_base.h405 行で定義されています。

00406 {
00407     sc_lv_base a( px.back_cast() );
00408     return ( a &= py.back_cast() );
00409 }

const sc_logic sc_dt::operator & ( int  a,
const sc_logic &  b 
) [inline]

sc_logic.h402 行で定義されています。

00403         { return ( sc_logic( a ) & b ); }

const sc_logic sc_dt::operator & ( char  a,
const sc_logic &  b 
) [inline]

sc_logic.h399 行で定義されています。

00400         { return ( sc_logic( a ) & b ); }

const sc_logic sc_dt::operator & ( bool  a,
const sc_logic &  b 
) [inline]

sc_logic.h396 行で定義されています。

00397         { return ( sc_logic( a ) & b ); }

const sc_logic sc_dt::operator & ( sc_logic_value_t  a,
const sc_logic &  b 
) [inline]

sc_logic.h393 行で定義されています。

00394         { return ( sc_logic( a ) & b ); }

const sc_logic sc_dt::operator & ( const sc_logic &  a,
int  b 
) [inline]

sc_logic.h390 行で定義されています。

00391         { return ( a & sc_logic( b ) ); }

const sc_logic sc_dt::operator & ( const sc_logic &  a,
char  b 
) [inline]

sc_logic.h387 行で定義されています。

00388         { return ( a & sc_logic( b ) ); }

const sc_logic sc_dt::operator & ( const sc_logic &  a,
bool  b 
) [inline]

sc_logic.h384 行で定義されています。

00385         { return ( a & sc_logic( b ) ); }

const sc_logic sc_dt::operator & ( const sc_logic &  a,
sc_logic_value_t  b 
) [inline]

sc_logic.h381 行で定義されています。

00382         { return ( a & sc_logic( b ) ); }

const sc_logic sc_dt::operator & ( const sc_logic &  a,
const sc_logic &  b 
) [inline]

sc_logic.h378 行で定義されています。

00379         { return sc_logic( sc_logic::and_table[a.m_val][b.m_val] ); }

template<class T1, class T2>
const sc_logic sc_dt::operator & ( const sc_bitref_r< T1 > &  a,
const sc_bitref_r< T2 > &  b 
) [inline]

sc_bit_proxies.h1919 行で定義されています。

01920 {
01921     return sc_logic( sc_logic::and_table[a.value()][b.value()] );
01922 }

const sc_bit sc_dt::operator & ( char  a,
const sc_bit &  b 
) [inline]

sc_bit.h620 行で定義されています。

00621         { return ( sc_bit( a ) & b ); }

const sc_bit sc_dt::operator & ( bool  a,
const sc_bit &  b 
) [inline]

sc_bit.h617 行で定義されています。

00618         { return ( sc_bit( a ) & b ); }

const sc_bit sc_dt::operator & ( int  a,
const sc_bit &  b 
) [inline]

sc_bit.h614 行で定義されています。

00615         { return ( sc_bit( a ) & b ); }

const sc_bit sc_dt::operator & ( const sc_bit &  a,
char  b 
) [inline]

sc_bit.h611 行で定義されています。

00612         { return ( a & sc_bit( b ) ); }

const sc_bit sc_dt::operator & ( const sc_bit &  a,
bool  b 
) [inline]

sc_bit.h608 行で定義されています。

00609         { return ( a & sc_bit( b ) ); }

const sc_bit sc_dt::operator & ( const sc_bit &  a,
int  b 
) [inline]

sc_bit.h605 行で定義されています。

00606         { return ( a & sc_bit( b ) ); }

const sc_bit sc_dt::operator & ( const sc_bit &  a,
const sc_bit &  b 
) [inline]

sc_bit.h602 行で定義されています。

00603         { return sc_bit( a.m_val && b.m_val ); }

template<class X, class Y>
X & sc_dt::operator &= ( sc_proxy< X > &  px,
const sc_proxy< Y > &  py 
) [inline]

sc_lv_base.h368 行で定義されています。

00369 {
00370     X& x = px.back_cast();
00371     sc_lv_base a( x.length() );
00372     a = py.back_cast();
00373     return b_and_assign_( x, a );
00374 }

bool sc_dt::operator!= ( unsigned int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1721 行で定義されています。

01722     { return operator!=((unsigned long) u,  v); }

bool sc_dt::operator!= ( int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1719 行で定義されています。

01720     { return operator!=((long) u,  v); }

bool sc_dt::operator!= ( unsigned long  u,
const sc_unsigned &  v 
)

bool sc_dt::operator!= ( long  u,
const sc_unsigned &  v 
)

bool sc_dt::operator!= ( uint64  u,
const sc_unsigned &  v 
)

bool sc_dt::operator!= ( int64  u,
const sc_unsigned &  v 
)

bool sc_dt::operator!= ( const sc_unsigned &  u,
unsigned int  v 
) [inline]

sc_unsigned.h1712 行で定義されています。

01713     { return operator!=(u, (unsigned long) v); }

bool sc_dt::operator!= ( const sc_unsigned &  u,
int  v 
) [inline]

sc_unsigned.h1710 行で定義されています。

01711     { return operator!=(u, (long) v); }

bool sc_dt::operator!= ( const sc_unsigned &  u,
unsigned long  v 
)

bool sc_dt::operator!= ( const sc_unsigned &  u,
long  v 
)

bool sc_dt::operator!= ( const sc_unsigned &  u,
uint64  v 
)

bool sc_dt::operator!= ( const sc_unsigned &  u,
int64  v 
)

bool sc_dt::operator!= ( const sc_unsigned &  u,
const sc_unsigned &  v 
)

bool sc_dt::operator!= ( const sc_uint_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp728 行で定義されています。

00729 { return operator!=((uint64) u, v); }

bool sc_dt::operator!= ( const sc_unsigned &  u,
const sc_uint_base &  v 
)

sc_unsigned.cpp725 行で定義されています。

00726 { return operator!=(u, (uint64) v); }

bool sc_dt::operator!= ( const sc_int_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp589 行で定義されています。

00590 { return operator!=((int64) u, v); }

bool sc_dt::operator!= ( const sc_unsigned &  u,
const sc_int_base &  v 
)

sc_unsigned.cpp586 行で定義されています。

00587 { return operator!=(u, (int64) v); }

bool sc_dt::operator!= ( const sc_uint_base &  a,
const sc_uint_base &  b 
) [inline]

sc_uint_base.h692 行で定義されています。

00693         { return a.m_val != b.m_val; }

bool sc_dt::operator!= ( unsigned int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1949 行で定義されています。

01950     { return operator!=((unsigned long) u, v); }

bool sc_dt::operator!= ( int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1947 行で定義されています。

01948     { return operator!=((long) u, v); }

bool sc_dt::operator!= ( unsigned long  u,
const sc_signed &  v 
)

bool sc_dt::operator!= ( long  u,
const sc_signed &  v 
)

bool sc_dt::operator!= ( uint64  u,
const sc_signed &  v 
)

bool sc_dt::operator!= ( int64  u,
const sc_signed &  v 
)

bool sc_dt::operator!= ( const sc_signed &  u,
unsigned int  v 
) [inline]

sc_signed.h1940 行で定義されています。

01941     { return operator!=(u, (unsigned long) v); }

bool sc_dt::operator!= ( const sc_signed &  u,
int  v 
) [inline]

sc_signed.h1938 行で定義されています。

01939     { return operator!=(u, (long) v); }

bool sc_dt::operator!= ( const sc_signed &  u,
unsigned long  v 
)

bool sc_dt::operator!= ( const sc_signed &  u,
long  v 
)

bool sc_dt::operator!= ( const sc_signed &  u,
uint64  v 
)

bool sc_dt::operator!= ( const sc_signed &  u,
int64  v 
)

bool sc_dt::operator!= ( const sc_signed &  u,
const sc_signed &  v 
)

bool sc_dt::operator!= ( const sc_signed &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1761 行で定義されています。

01762 {
01763   return (! operator==(u, v));
01764 }

bool sc_dt::operator!= ( const sc_unsigned &  u,
const sc_signed &  v 
)

sc_unsigned.cpp1754 行で定義されています。

01755 {
01756   return (! operator==(u, v));
01757 }

bool sc_dt::operator!= ( unsigned long  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6808 行で定義されています。

bool sc_dt::operator!= ( const CLASS_TYPE &  u,
unsigned long  v 
)

sc_signed.cpp6801 行で定義されています。

bool sc_dt::operator!= ( long  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6794 行で定義されています。

bool sc_dt::operator!= ( const CLASS_TYPE &  u,
long  v 
)

sc_signed.cpp6787 行で定義されています。

bool sc_dt::operator!= ( uint64  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6780 行で定義されています。

bool sc_dt::operator!= ( const CLASS_TYPE &  u,
uint64  v 
)

sc_signed.cpp6773 行で定義されています。

bool sc_dt::operator!= ( int64  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6766 行で定義されています。

bool sc_dt::operator!= ( const CLASS_TYPE &  u,
int64  v 
)

sc_signed.cpp6759 行で定義されています。

bool sc_dt::operator!= ( const CLASS_TYPE &  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6752 行で定義されています。

bool sc_dt::operator!= ( const sc_uint_base &  u,
const sc_signed &  v 
)

sc_signed.cpp1008 行で定義されています。

01009 { return operator!=((uint64) u, v); }

bool sc_dt::operator!= ( const sc_signed &  u,
const sc_uint_base &  v 
)

sc_signed.cpp1004 行で定義されています。

01005 { return operator!=(u, (uint64) v); }

bool sc_dt::operator!= ( const sc_int_base &  u,
const sc_signed &  v 
)

sc_signed.cpp815 行で定義されています。

00816 { return operator!=((int64) u, v); }

bool sc_dt::operator!= ( const sc_signed &  u,
const sc_int_base &  v 
)

sc_signed.cpp811 行で定義されています。

00812 { return operator!=(u, (int64) v); }

bool sc_dt::operator!= ( const sc_length_param &  a,
const sc_length_param &  b 
) [inline]

sc_length_param.h157 行で定義されています。

00158 {
00159     return ( a.m_len != b.m_len );
00160 }

bool sc_dt::operator!= ( const sc_int_base &  a,
const sc_int_base &  b 
) [inline]

sc_int_base.h706 行で定義されています。

00707         { return a.m_val != b.m_val; }

bool sc_dt::operator!= ( const sc_fxtype_params &  a,
const sc_fxtype_params &  b 
) [inline]

sc_fxtype_params.h233 行で定義されています。

00234 {
00235     return ( a.m_wl     != b.m_wl     ||
00236              a.m_iwl    != b.m_iwl    ||
00237              a.m_q_mode != b.m_q_mode ||
00238              a.m_o_mode != b.m_o_mode ||
00239              a.m_n_bits != b.m_n_bits );
00240 }

bool sc_dt::operator!= ( const sc_fxcast_switch &  a,
const sc_fxcast_switch &  b 
) [inline]

sc_fxcast_switch.h149 行で定義されています。

00150 {
00151     return ( a.m_sw != b.m_sw );
00152 }

template<class X, class Y>
bool sc_dt::operator!= ( const sc_proxy< X > &  px,
const sc_proxy< Y > &  py 
) [inline]

sc_proxy.h1260 行で定義されています。

01261 {
01262     return !( px == py );
01263 }

bool sc_dt::operator!= ( int  a,
const sc_logic &  b 
) [inline]

sc_logic.h520 行で定義されています。

00521         { return ( sc_logic( a ) != b ); }

bool sc_dt::operator!= ( char  a,
const sc_logic &  b 
) [inline]

sc_logic.h517 行で定義されています。

00518         { return ( sc_logic( a ) != b ); }

bool sc_dt::operator!= ( bool  a,
const sc_logic &  b 
) [inline]

sc_logic.h514 行で定義されています。

00515         { return ( sc_logic( a ) != b ); }

bool sc_dt::operator!= ( sc_logic_value_t  a,
const sc_logic &  b 
) [inline]

sc_logic.h511 行で定義されています。

00512         { return ( sc_logic( a ) != b ); }

bool sc_dt::operator!= ( const sc_logic &  a,
int  b 
) [inline]

sc_logic.h508 行で定義されています。

00509         { return ( a != sc_logic( b ) ); }

bool sc_dt::operator!= ( const sc_logic &  a,
char  b 
) [inline]

sc_logic.h505 行で定義されています。

00506         { return ( a != sc_logic( b ) ); }

bool sc_dt::operator!= ( const sc_logic &  a,
bool  b 
) [inline]

sc_logic.h502 行で定義されています。

00503         { return ( a != sc_logic( b ) ); }

bool sc_dt::operator!= ( const sc_logic &  a,
sc_logic_value_t  b 
) [inline]

sc_logic.h499 行で定義されています。

00500         { return ( a != sc_logic( b ) ); }

bool sc_dt::operator!= ( const sc_logic &  a,
const sc_logic &  b 
) [inline]

sc_logic.h496 行で定義されています。

00497         { return ( (int) a.m_val != b.m_val ); }

template<class T1, class T2>
bool sc_dt::operator!= ( const sc_bitref_r< T1 > &  a,
const sc_bitref_r< T2 > &  b 
) [inline]

sc_bit_proxies.h1960 行で定義されています。

01961 {
01962     return ( (int) a.value() != b.value() );
01963 }

bool sc_dt::operator!= ( char  a,
const sc_bit &  b 
) [inline]

sc_bit.h474 行で定義されています。

00475         { return ( sc_bit( a ) != b ); }

bool sc_dt::operator!= ( bool  a,
const sc_bit &  b 
) [inline]

sc_bit.h471 行で定義されています。

00472         { return ( sc_bit( a ) != b ); }

bool sc_dt::operator!= ( int  a,
const sc_bit &  b 
) [inline]

sc_bit.h468 行で定義されています。

00469         { return ( sc_bit( a ) != b ); }

bool sc_dt::operator!= ( const sc_bit &  a,
char  b 
) [inline]

sc_bit.h465 行で定義されています。

00466         { return ( a != sc_bit( b ) ); }

bool sc_dt::operator!= ( const sc_bit &  a,
bool  b 
) [inline]

sc_bit.h462 行で定義されています。

00463         { return ( a != sc_bit( b ) ); }

bool sc_dt::operator!= ( const sc_bit &  a,
int  b 
) [inline]

sc_bit.h459 行で定義されています。

00460         { return ( a != sc_bit( b ) ); }

bool sc_dt::operator!= ( const sc_bit &  a,
const sc_bit &  b 
) [inline]

sc_bit.h456 行で定義されています。

00457         { return ( a.m_val != b.m_val ); }

sc_unsigned sc_dt::operator% ( unsigned int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1458 行で定義されています。

01459     { return operator%((unsigned long) u,  v); }

sc_unsigned sc_dt::operator% ( const sc_unsigned &  u,
unsigned int  v 
) [inline]

sc_unsigned.h1450 行で定義されています。

01451     { return operator%(u, (unsigned long) v); }

sc_unsigned sc_dt::operator% ( unsigned long  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1234 行で定義されています。

01235 {
01236 
01237   if ((u == 0) || (v.sgn == SC_ZERO)) {
01238     div_by_zero(v.sgn);  // case 1
01239     return sc_unsigned();  // case 2
01240   }
01241 
01242   CONVERT_LONG(u);
01243 
01244   // other cases
01245   return mod_unsigned_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
01246                              v.nbits, v.ndigits, v.digit);
01247 
01248 }

sc_unsigned sc_dt::operator% ( const sc_unsigned &  u,
unsigned long  v 
)

sc_unsigned.cpp1216 行で定義されています。

01217 {
01218 
01219   if ((u.sgn == SC_ZERO) || (v == 0)) {
01220     div_by_zero(v);  // case 1
01221     return sc_unsigned();  // case 2
01222   }
01223 
01224   CONVERT_LONG_2(v);
01225 
01226   // other cases
01227   return mod_unsigned_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01228                              BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
01229 
01230 }

sc_unsigned sc_dt::operator% ( uint64  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1198 行で定義されています。

01199 {
01200 
01201   if ((u == 0) || (v.sgn == SC_ZERO)) {
01202     div_by_zero(v.sgn);  // case 1
01203     return sc_unsigned();  // case 2
01204   }
01205 
01206   CONVERT_INT64(u);
01207 
01208   // other cases
01209   return mod_unsigned_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
01210                              v.nbits, v.ndigits, v.digit);
01211 
01212 }

sc_unsigned sc_dt::operator% ( const sc_unsigned &  u,
uint64  v 
)

sc_unsigned.cpp1180 行で定義されています。

01181 {
01182 
01183   if ((u.sgn == SC_ZERO) || (v == 0)) {
01184     div_by_zero(v);  // case 1
01185     return sc_unsigned();  // case 2
01186   }
01187 
01188   CONVERT_INT64_2(v);
01189 
01190   // other cases
01191   return mod_unsigned_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01192                              BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
01193 
01194 }

sc_unsigned sc_dt::operator% ( const sc_unsigned &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1165 行で定義されています。

01166 {
01167 
01168   if ((u.sgn == SC_ZERO) || (v.sgn == SC_ZERO)) {
01169     div_by_zero(v.sgn);  // case 1
01170     return sc_unsigned();  // case 2
01171   }
01172 
01173   // other cases
01174   return mod_unsigned_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01175                              v.nbits, v.ndigits, v.digit);
01176 }

sc_unsigned sc_dt::operator% ( const sc_uint_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp667 行で定義されています。

00668 { return operator%((uint64) u, v); }

sc_unsigned sc_dt::operator% ( const sc_unsigned &  u,
const sc_uint_base &  v 
)

sc_unsigned.cpp664 行で定義されています。

00665 { return operator%(u, (uint64) v); }

sc_signed sc_dt::operator% ( unsigned int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1641 行で定義されています。

01642     { return operator%((unsigned long) u, v); }

sc_signed sc_dt::operator% ( int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1639 行で定義されています。

01640     { return operator%((long) u, v); }

sc_signed sc_dt::operator% ( const sc_signed &  u,
unsigned int  v 
) [inline]

sc_signed.h1632 行で定義されています。

01633     { return operator%(u, (unsigned long) v); }

sc_signed sc_dt::operator% ( const sc_signed &  u,
int  v 
) [inline]

sc_signed.h1630 行で定義されています。

01631     { return operator%(u, (long) v); }

sc_signed sc_dt::operator% ( int  u,
const sc_unsigned &  v 
) [inline]

sc_signed.h1622 行で定義されています。

01623     { return operator%((long) u, v); }

sc_signed sc_dt::operator% ( const sc_unsigned &  u,
int  v 
) [inline]

sc_signed.h1617 行で定義されています。

01618     { return operator%(u, (long) v); }

sc_signed sc_dt::operator% ( unsigned long  u,
const sc_signed &  v 
)

sc_signed.cpp2643 行で定義されています。

02644 {
02645 
02646   if ((u == 0) || (v.sgn == SC_ZERO)) {
02647     div_by_zero(v.sgn);  // case 1
02648     return sc_signed();  // case 2
02649   }
02650 
02651   CONVERT_LONG(u);
02652 
02653   // other cases
02654   return mod_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
02655                            v.nbits, v.ndigits, v.digit);
02656 
02657 }

sc_signed sc_dt::operator% ( const sc_signed &  u,
unsigned long  v 
)

sc_signed.cpp2625 行で定義されています。

02626 {
02627 
02628   if ((u.sgn == SC_ZERO) || (v == 0)) {
02629     div_by_zero(v);  // case 1
02630     return sc_signed();  // case 2
02631   }
02632 
02633   CONVERT_LONG_2(v);
02634 
02635   // other cases
02636   return mod_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02637                            BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
02638 
02639 }

sc_signed sc_dt::operator% ( long  u,
const sc_unsigned &  v 
)

sc_signed.cpp2605 行で定義されています。

02606 {
02607 
02608   small_type us = get_sign(u);
02609 
02610   if ((us == SC_ZERO) || (v.sgn == SC_ZERO)) {
02611     div_by_zero(v.sgn);  // case 1
02612     return sc_signed();  // case 2
02613   }
02614 
02615   CONVERT_LONG_2(u);
02616 
02617   // other cases
02618   return mod_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
02619                            v.nbits, v.ndigits, v.digit);
02620 
02621 }

sc_signed sc_dt::operator% ( const sc_unsigned &  u,
long  v 
)

sc_signed.cpp2586 行で定義されています。

02587 {
02588 
02589   small_type vs = get_sign(v);
02590 
02591   if ((u.sgn == SC_ZERO) || (vs == SC_ZERO)) {
02592     div_by_zero(v);  // case 1
02593     return sc_signed();  // case 2
02594   }
02595 
02596   CONVERT_LONG_2(v);
02597 
02598   // other cases
02599   return mod_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02600                            BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
02601 }

sc_signed sc_dt::operator% ( long  u,
const sc_signed &  v 
)

sc_signed.cpp2566 行で定義されています。

02567 {
02568 
02569   small_type us = get_sign(u);
02570 
02571   if ((us == SC_ZERO) || (v.sgn == SC_ZERO)) {
02572     div_by_zero(v.sgn);  // case 1
02573     return sc_signed();  // case 2
02574   }
02575 
02576   CONVERT_LONG_2(u);
02577 
02578   // other cases
02579   return mod_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
02580                            v.nbits, v.ndigits, v.digit);
02581 
02582 }

sc_signed sc_dt::operator% ( const sc_signed &  u,
long  v 
)

sc_signed.cpp2547 行で定義されています。

02548 {
02549 
02550   small_type vs = get_sign(v);
02551 
02552   if ((u.sgn == SC_ZERO) || (vs == SC_ZERO)) {
02553     div_by_zero(v);  // case 1
02554     return sc_signed();  // case 2
02555   }
02556 
02557   CONVERT_LONG_2(v);
02558 
02559   // other cases
02560   return mod_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02561                            BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
02562 }

sc_signed sc_dt::operator% ( uint64  u,
const sc_signed &  v 
)

sc_signed.cpp2529 行で定義されています。

02530 {
02531 
02532   if ((u == 0) || (v.sgn == SC_ZERO)) {
02533     div_by_zero(v.sgn);  // case 1
02534     return sc_signed();  // case 2
02535   }
02536 
02537   CONVERT_INT64(u);
02538 
02539   // other cases
02540   return mod_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
02541                            v.nbits, v.ndigits, v.digit);
02542 
02543 }

sc_signed sc_dt::operator% ( const sc_signed &  u,
uint64  v 
)

sc_signed.cpp2511 行で定義されています。

02512 {
02513 
02514   if ((u.sgn == SC_ZERO) || (v == 0)) {
02515     div_by_zero(v);  // case 1
02516     return sc_signed();  // case 2
02517   }
02518 
02519   CONVERT_INT64_2(v);
02520 
02521   // other cases
02522   return mod_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02523                            BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
02524 
02525 }

sc_signed sc_dt::operator% ( int64  u,
const sc_unsigned &  v 
)

sc_signed.cpp2491 行で定義されています。

02492 {
02493 
02494   small_type us = get_sign(u);
02495 
02496   if ((us == SC_ZERO) || (v.sgn == SC_ZERO)) {
02497     div_by_zero(v.sgn);  // case 1
02498     return sc_signed();  // case 2
02499   }
02500 
02501   CONVERT_INT64_2(u);
02502 
02503   // other cases
02504   return mod_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
02505                            v.nbits, v.ndigits, v.digit);
02506 
02507 }

sc_signed sc_dt::operator% ( const sc_unsigned &  u,
int64  v 
)

sc_signed.cpp2471 行で定義されています。

02472 {
02473 
02474   small_type vs = get_sign(v);
02475 
02476   if ((u.sgn == SC_ZERO) || (vs == SC_ZERO)) {
02477     div_by_zero(v);  // case 1
02478     return sc_signed();  // case 2
02479   }
02480 
02481   CONVERT_INT64_2(v);
02482 
02483   // other cases
02484   return mod_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02485                            BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
02486 
02487 }

sc_signed sc_dt::operator% ( int64  u,
const sc_signed &  v 
)

sc_signed.cpp2451 行で定義されています。

02452 {
02453 
02454   small_type us = get_sign(u);
02455 
02456   if ((us == SC_ZERO) || (v.sgn == SC_ZERO)) {
02457     div_by_zero(v.sgn);  // case 1
02458     return sc_signed();  // case 2
02459   }
02460 
02461   CONVERT_INT64_2(u);
02462 
02463   // other cases
02464   return mod_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
02465                            v.nbits, v.ndigits, v.digit);
02466 
02467 }

sc_signed sc_dt::operator% ( const sc_signed &  u,
int64  v 
)

sc_signed.cpp2431 行で定義されています。

02432 {
02433 
02434   small_type vs = get_sign(v);
02435 
02436   if ((u.sgn == SC_ZERO) || (vs == SC_ZERO)) {
02437     div_by_zero(v);  // case 1
02438     return sc_signed();  // case 2
02439   }
02440 
02441   CONVERT_INT64_2(v);
02442 
02443   // other cases
02444   return mod_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02445                            BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
02446 
02447 }

sc_signed sc_dt::operator% ( const sc_signed &  u,
const sc_signed &  v 
)

sc_signed.cpp2416 行で定義されています。

02417 {
02418 
02419   if ((u.sgn == SC_ZERO) || (v.sgn == SC_ZERO)) {
02420     div_by_zero(v.sgn);  // case 1
02421     return sc_signed();  // case 2
02422   }
02423 
02424   // other cases
02425   return mod_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02426                            v.nbits, v.ndigits, v.digit);
02427 }

sc_signed sc_dt::operator% ( const sc_signed &  u,
const sc_unsigned &  v 
)

sc_signed.cpp2401 行で定義されています。

02402 {
02403 
02404   if ((u.sgn == SC_ZERO) || (v.sgn == SC_ZERO)) {
02405     div_by_zero(v.sgn);  // case 1
02406     return sc_signed();  // case 2
02407   }
02408 
02409   // other cases
02410   return mod_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02411                            v.nbits, v.ndigits, v.digit);
02412 }

sc_signed sc_dt::operator% ( const sc_unsigned &  u,
const sc_signed &  v 
)

sc_signed.cpp2386 行で定義されています。

02387 {
02388 
02389   if ((u.sgn == SC_ZERO) || (v.sgn == SC_ZERO)) {
02390     div_by_zero(v.sgn);  // case 1
02391     return sc_signed();  // case 2
02392   }
02393 
02394   // other cases
02395   return mod_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02396                            v.nbits, v.ndigits, v.digit);
02397 }

sc_signed sc_dt::operator% ( const sc_uint_base &  u,
const sc_signed &  v 
)

sc_signed.cpp929 行で定義されています。

00930 { return operator%((uint64) u, v); }

sc_signed sc_dt::operator% ( const sc_signed &  u,
const sc_uint_base &  v 
)

sc_signed.cpp925 行で定義されています。

00926 { return operator%(u, (uint64) v); }

sc_signed sc_dt::operator% ( const sc_int_base &  u,
const sc_signed &  v 
)

sc_signed.cpp712 行で定義されています。

00713 { return operator%((int64) u, v); }

sc_signed sc_dt::operator% ( const sc_signed &  u,
const sc_int_base &  v 
)

sc_signed.cpp708 行で定義されています。

00709 { return operator%(u, (int64) v); }

sc_signed sc_dt::operator% ( const sc_int_base &  u,
const sc_unsigned &  v 
)

sc_signed.cpp704 行で定義されています。

00705 { return operator % ( SCAST<int64>( u ), v ); }

sc_signed sc_dt::operator% ( const sc_unsigned &  u,
const sc_int_base &  v 
)

sc_signed.cpp700 行で定義されています。

00701 { return operator % ( u, SCAST<int64>( v ) ); }

sc_unsigned sc_dt::operator* ( unsigned int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1378 行で定義されています。

01379     { return operator*((unsigned long) u,  v); }

sc_unsigned sc_dt::operator* ( const sc_unsigned &  u,
unsigned int  v 
) [inline]

sc_unsigned.h1370 行で定義されています。

01371     { return operator*(u, (unsigned long) v); }

sc_unsigned sc_dt::operator* ( unsigned long  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1017 行で定義されています。

01018 {
01019 
01020   small_type s = mul_signs(v.sgn, get_sign(u));
01021 
01022   if (s == SC_ZERO) // case 1
01023     return sc_unsigned();
01024 
01025   CONVERT_LONG_2(u);
01026 
01027   // cases 2-4
01028   return mul_unsigned_friend(s, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, 
01029                              v.nbits, v.ndigits, v.digit);
01030   
01031 }

sc_unsigned sc_dt::operator* ( const sc_unsigned &  u,
unsigned long  v 
)

sc_unsigned.cpp1000 行で定義されています。

01001 {
01002 
01003   small_type s = mul_signs(u.sgn, get_sign(v));
01004 
01005   if (s == SC_ZERO) // case 1
01006     return sc_unsigned();
01007 
01008   CONVERT_LONG_2(v);
01009 
01010   // else cases 2-4
01011   return mul_unsigned_friend(s, u.nbits, u.ndigits, u.digit, 
01012                              BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
01013   
01014 }

sc_unsigned sc_dt::operator* ( uint64  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp982 行で定義されています。

00983 {
00984 
00985   small_type s = mul_signs(v.sgn, get_sign(u));
00986 
00987   if (s == SC_ZERO) // case 1
00988     return sc_unsigned();
00989 
00990   CONVERT_INT64_2(u);
00991 
00992   // cases 2-4
00993   return mul_unsigned_friend(s, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, 
00994                              v.nbits, v.ndigits, v.digit);
00995   
00996 }

sc_unsigned sc_dt::operator* ( const sc_unsigned &  u,
uint64  v 
)

sc_unsigned.cpp964 行で定義されています。

00965 {
00966 
00967   small_type s = mul_signs(u.sgn, get_sign(v));
00968 
00969   if (s == SC_ZERO) // case 1
00970     return sc_unsigned();
00971 
00972   CONVERT_INT64_2(v);
00973 
00974   // cases 2-4
00975   return mul_unsigned_friend(s, u.nbits, u.ndigits, u.digit, 
00976                              BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
00977   
00978 }

sc_unsigned sc_dt::operator* ( const sc_unsigned &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp948 行で定義されています。

00949 {
00950  
00951   small_type s = mul_signs(u.sgn, v.sgn);
00952 
00953   if (s == SC_ZERO) // case 1
00954     return sc_unsigned();
00955 
00956   // cases 2-4
00957   return mul_unsigned_friend(s, u.nbits, u.ndigits, u.digit,
00958                              v.nbits, v.ndigits, v.digit);
00959 
00960 }

sc_unsigned sc_dt::operator* ( const sc_uint_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp647 行で定義されています。

00648 { return operator*((uint64) u, v); }

sc_unsigned sc_dt::operator* ( const sc_unsigned &  u,
const sc_uint_base &  v 
)

sc_unsigned.cpp644 行で定義されています。

00645 { return operator*(u, (uint64) v); }

sc_signed sc_dt::operator* ( unsigned int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1533 行で定義されています。

01534     { return operator*((unsigned long) u, v); }

sc_signed sc_dt::operator* ( int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1531 行で定義されています。

01532     { return operator*((long) u, v); }

sc_signed sc_dt::operator* ( const sc_signed &  u,
unsigned int  v 
) [inline]

sc_signed.h1524 行で定義されています。

01525     { return operator*(u, (unsigned long) v); }

sc_signed sc_dt::operator* ( const sc_signed &  u,
int  v 
) [inline]

sc_signed.h1522 行で定義されています。

01523     { return operator*(u, (long) v); }

sc_signed sc_dt::operator* ( int  u,
const sc_unsigned &  v 
) [inline]

sc_signed.h1514 行で定義されています。

01515     { return operator*((long) u, v); }

sc_signed sc_dt::operator* ( const sc_unsigned &  u,
int  v 
) [inline]

sc_signed.h1509 行で定義されています。

01510     { return operator*(u, (long) v); }

sc_signed sc_dt::operator* ( unsigned long  u,
const sc_signed &  v 
)

sc_signed.cpp2042 行で定義されています。

02043 {
02044 
02045   small_type s = mul_signs(v.sgn, get_sign(u));
02046 
02047   if (s == SC_ZERO) // case 1
02048     return sc_signed();
02049 
02050   CONVERT_LONG_2(u);
02051 
02052   // cases 2-4
02053   return mul_signed_friend(s, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, 
02054                            v.nbits, v.ndigits, v.digit);
02055   
02056 }

sc_signed sc_dt::operator* ( const sc_signed &  u,
unsigned long  v 
)

sc_signed.cpp2025 行で定義されています。

02026 {
02027 
02028   small_type s = mul_signs(u.sgn, get_sign(v));
02029 
02030   if (s == SC_ZERO) // case 1
02031     return sc_signed();
02032 
02033   CONVERT_LONG_2(v);
02034 
02035   // else cases 2-4
02036   return mul_signed_friend(s, u.nbits, u.ndigits, u.digit, 
02037                            BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
02038   
02039 }

sc_signed sc_dt::operator* ( long  u,
const sc_unsigned &  v 
)

sc_signed.cpp2007 行で定義されています。

02008 {
02009 
02010   small_type s = mul_signs(v.sgn, get_sign(u));
02011 
02012   if (s == SC_ZERO) // case 1
02013     return sc_signed();
02014 
02015   CONVERT_LONG_2(u);
02016 
02017   // cases 2-4
02018   return mul_signed_friend(s, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, 
02019                            v.nbits, v.ndigits, v.digit);
02020   
02021 }

sc_signed sc_dt::operator* ( const sc_unsigned &  u,
long  v 
)

sc_signed.cpp1989 行で定義されています。

01990 {
01991 
01992   small_type s = mul_signs(u.sgn, get_sign(v));
01993 
01994   if (s == SC_ZERO) // case 1
01995     return sc_signed();
01996 
01997   CONVERT_LONG_2(v);
01998 
01999   // cases 2-4
02000   return mul_signed_friend(s, u.nbits, u.ndigits, u.digit, 
02001                            BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
02002   
02003 }

sc_signed sc_dt::operator* ( long  u,
const sc_signed &  v 
)

sc_signed.cpp1971 行で定義されています。

01972 {
01973 
01974   small_type s = mul_signs(v.sgn, get_sign(u));
01975 
01976   if (s == SC_ZERO) // case 1
01977     return sc_signed();
01978 
01979   CONVERT_LONG_2(u);
01980 
01981   // cases 2-4
01982   return mul_signed_friend(s, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, 
01983                            v.nbits, v.ndigits, v.digit);
01984   
01985 }

sc_signed sc_dt::operator* ( const sc_signed &  u,
long  v 
)

sc_signed.cpp1953 行で定義されています。

01954 {
01955 
01956   small_type s = mul_signs(u.sgn, get_sign(v));
01957 
01958   if (s == SC_ZERO) // case 1
01959     return sc_signed();
01960 
01961   CONVERT_LONG_2(v);
01962 
01963   // cases 2-4
01964   return mul_signed_friend(s, u.nbits, u.ndigits, u.digit, 
01965                            BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
01966   
01967 }

sc_signed sc_dt::operator* ( uint64  u,
const sc_signed &  v 
)

sc_signed.cpp1935 行で定義されています。

01936 {
01937 
01938   small_type s = mul_signs(v.sgn, get_sign(u));
01939 
01940   if (s == SC_ZERO) // case 1
01941     return sc_signed();
01942 
01943   CONVERT_INT64_2(u);
01944 
01945   // cases 2-4
01946   return mul_signed_friend(s, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, 
01947                            v.nbits, v.ndigits, v.digit);
01948   
01949 }

sc_signed sc_dt::operator* ( const sc_signed &  u,
uint64  v 
)

sc_signed.cpp1917 行で定義されています。

01918 {
01919 
01920   small_type s = mul_signs(u.sgn, get_sign(v));
01921 
01922   if (s == SC_ZERO) // case 1
01923     return sc_signed();
01924 
01925   CONVERT_INT64_2(v);
01926 
01927   // cases 2-4
01928   return mul_signed_friend(s, u.nbits, u.ndigits, u.digit, 
01929                            BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
01930   
01931 }

sc_signed sc_dt::operator* ( int64  u,
const sc_unsigned &  v 
)

sc_signed.cpp1899 行で定義されています。

01900 {
01901 
01902   small_type s = mul_signs(v.sgn, get_sign(u));
01903 
01904   if (s == SC_ZERO) // case 1
01905     return sc_signed();
01906 
01907   CONVERT_INT64_2(u);
01908 
01909   // cases 2-4
01910   return mul_signed_friend(s, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, 
01911                            v.nbits, v.ndigits, v.digit);
01912   
01913 }

sc_signed sc_dt::operator* ( const sc_unsigned &  u,
int64  v 
)

sc_signed.cpp1881 行で定義されています。

01882 {
01883 
01884   small_type s = mul_signs(u.sgn, get_sign(v));
01885 
01886   if (s == SC_ZERO) // case 1
01887     return sc_signed();
01888 
01889   CONVERT_INT64_2(v);
01890 
01891   // cases 2-4
01892   return mul_signed_friend(s, u.nbits, u.ndigits, u.digit, 
01893                            BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
01894   
01895 }

sc_signed sc_dt::operator* ( int64  u,
const sc_signed &  v 
)

sc_signed.cpp1863 行で定義されています。

01864 {
01865 
01866   small_type s = mul_signs(v.sgn, get_sign(u));
01867 
01868   if (s == SC_ZERO) // case 1
01869     return sc_signed();
01870 
01871   CONVERT_INT64_2(u);
01872 
01873   // cases 2-4
01874   return mul_signed_friend(s, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, 
01875                            v.nbits, v.ndigits, v.digit);
01876   
01877 }

sc_signed sc_dt::operator* ( const sc_signed &  u,
int64  v 
)

sc_signed.cpp1845 行で定義されています。

01846 {
01847 
01848   small_type s = mul_signs(u.sgn, get_sign(v));
01849 
01850   if (s == SC_ZERO) // case 1
01851     return sc_signed();
01852 
01853   CONVERT_INT64_2(v);
01854 
01855   // cases 2-4
01856   return mul_signed_friend(s, u.nbits, u.ndigits, u.digit, 
01857                            BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
01858   
01859 }

sc_signed sc_dt::operator* ( const sc_signed &  u,
const sc_signed &  v 
)

sc_signed.cpp1829 行で定義されています。

01830 {
01831  
01832   small_type s = mul_signs(u.sgn, v.sgn);
01833 
01834   if (s == SC_ZERO) // case 1
01835     return sc_signed();
01836 
01837   // cases 2-4
01838   return mul_signed_friend(s, u.nbits, u.ndigits, u.digit,
01839                            v.nbits, v.ndigits, v.digit);
01840 
01841 }

sc_signed sc_dt::operator* ( const sc_signed &  u,
const sc_unsigned &  v 
)

sc_signed.cpp1813 行で定義されています。

01814 {
01815  
01816   small_type s = mul_signs(u.sgn, v.sgn);
01817 
01818   if (s == SC_ZERO) // case 1
01819     return sc_signed();
01820 
01821   // cases 2-4
01822   return mul_signed_friend(s, u.nbits, u.ndigits, u.digit,
01823                            v.nbits, v.ndigits, v.digit);
01824 
01825 }

sc_signed sc_dt::operator* ( const sc_unsigned &  u,
const sc_signed &  v 
)

sc_signed.cpp1797 行で定義されています。

01798 {
01799  
01800   small_type s = mul_signs(u.sgn, v.sgn);
01801 
01802   if (s == SC_ZERO) // case 1
01803     return sc_signed();
01804 
01805   // cases 2-4
01806   return mul_signed_friend(s, u.nbits, u.ndigits, u.digit,
01807                            v.nbits, v.ndigits, v.digit);
01808 
01809 }

sc_signed sc_dt::operator* ( const sc_uint_base &  u,
const sc_signed &  v 
)

sc_signed.cpp903 行で定義されています。

00904 { return operator*((uint64) u, v); }

sc_signed sc_dt::operator* ( const sc_signed &  u,
const sc_uint_base &  v 
)

sc_signed.cpp899 行で定義されています。

00900 { return operator*(u, (uint64) v); }

sc_signed sc_dt::operator* ( const sc_int_base &  u,
const sc_signed &  v 
)

sc_signed.cpp670 行で定義されています。

00671 { return operator*((int64) u, v); }

sc_signed sc_dt::operator* ( const sc_signed &  u,
const sc_int_base &  v 
)

sc_signed.cpp666 行で定義されています。

00667 { return operator*(u, (int64) v); }

sc_signed sc_dt::operator* ( const sc_int_base &  u,
const sc_unsigned &  v 
)

sc_signed.cpp662 行で定義されています。

00663 { return operator * ( SCAST<int64>( u ), v ); }

sc_signed sc_dt::operator* ( const sc_unsigned &  u,
const sc_int_base &  v 
)

sc_signed.cpp658 行で定義されています。

00659 { return operator * ( u, SCAST<int64>( v ) ); }

sc_string_old sc_dt::operator+ ( const char *  s,
const sc_string_old &  t 
)

sc_string.cpp261 行で定義されています。

00262 {
00263     int len = strlen(s);
00264     sc_string_rep* r = new sc_string_rep( len + t.length() + 1 );
00265     strcpy( r->str, s );
00266     strcpy( r->str + len, t );
00267     return sc_string_old(r);
00268 }

sc_unsigned sc_dt::operator+ ( unsigned int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1300 行で定義されています。

01301     { return operator+((unsigned long) u,  v); }

sc_unsigned sc_dt::operator+ ( const sc_unsigned &  u,
unsigned int  v 
) [inline]

sc_unsigned.h1292 行で定義されています。

01293     { return operator+(u, (unsigned long) v); }

sc_unsigned sc_dt::operator+ ( const sc_unsigned &  u  ) 

sc_unsigned.cpp1607 行で定義されています。

01608 {
01609   return sc_unsigned(u);
01610 }

sc_unsigned sc_dt::operator+ ( unsigned long  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp894 行で定義されています。

00895 {
00896 
00897   if (u == 0) // case 1
00898     return sc_unsigned(v);
00899 
00900   CONVERT_LONG(u);
00901 
00902   if (v.sgn == SC_ZERO)  // case 2
00903     return sc_unsigned(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, false);
00904 
00905   // cases 3 and 4
00906   return add_unsigned_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
00907                              v.sgn, v.nbits, v.ndigits, v.digit);
00908 
00909 }

sc_unsigned sc_dt::operator+ ( const sc_unsigned &  u,
unsigned long  v 
)

sc_unsigned.cpp875 行で定義されています。

00876 {
00877 
00878   if (v == 0) // case 2
00879     return sc_unsigned(u);
00880 
00881   CONVERT_LONG(v);
00882 
00883   if (u.sgn == SC_ZERO)  // case 1
00884     return sc_unsigned(vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd, false);
00885 
00886   // cases 3 and 4
00887   return add_unsigned_friend(u.sgn, u.nbits, u.ndigits, u.digit,
00888                              vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
00889 
00890 }

sc_unsigned sc_dt::operator+ ( uint64  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp855 行で定義されています。

00856 {
00857 
00858   if (u == 0) // case 1
00859     return sc_unsigned(v);
00860 
00861   CONVERT_INT64(u);
00862 
00863   if (v.sgn == SC_ZERO)  // case 2
00864     return sc_unsigned(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, false);
00865 
00866   // cases 3 and 4
00867 
00868   return add_unsigned_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
00869                              v.sgn, v.nbits, v.ndigits, v.digit);
00870 
00871 }

sc_unsigned sc_dt::operator+ ( const sc_unsigned &  u,
uint64  v 
)

sc_unsigned.cpp836 行で定義されています。

00837 {
00838 
00839   if (v == 0)  // case 2
00840     return sc_unsigned(u);
00841 
00842   CONVERT_INT64(v);
00843 
00844   if (u.sgn == SC_ZERO)  // case 1
00845     return sc_unsigned(vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd, false);
00846 
00847   // cases 3 and 4
00848   return add_unsigned_friend(u.sgn, u.nbits, u.ndigits, u.digit,
00849                              vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
00850 
00851 }

sc_unsigned sc_dt::operator+ ( const sc_unsigned &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp819 行で定義されています。

00820 {
00821 
00822   if (u.sgn == SC_ZERO) // case 1
00823     return sc_unsigned(v);
00824 
00825   if (v.sgn == SC_ZERO) // case 2
00826     return sc_unsigned(u);
00827 
00828   // cases 3 and 4
00829   return add_unsigned_friend(u.sgn, u.nbits, u.ndigits, u.digit,
00830                              v.sgn, v.nbits, v.ndigits, v.digit);
00831   
00832 }

sc_unsigned sc_dt::operator+ ( const sc_uint_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp633 行で定義されています。

00634 { return operator+((uint64) u, v); }

sc_unsigned sc_dt::operator+ ( const sc_unsigned &  u,
const sc_uint_base &  v 
)

sc_unsigned.cpp630 行で定義されています。

00631 { return operator+(u, (uint64) v); }

sc_signed sc_dt::operator+ ( unsigned int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1414 行で定義されています。

01415     { return operator+((unsigned long) u, v); }

sc_signed sc_dt::operator+ ( int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1412 行で定義されています。

01413     { return operator+((long) u, v); }

sc_signed sc_dt::operator+ ( const sc_signed &  u,
unsigned int  v 
) [inline]

sc_signed.h1405 行で定義されています。

01406     { return operator+(u, (unsigned long) v); }

sc_signed sc_dt::operator+ ( const sc_signed &  u,
int  v 
) [inline]

sc_signed.h1403 行で定義されています。

01404     { return operator+(u, (long) v); }

sc_signed sc_dt::operator+ ( int  u,
const sc_unsigned &  v 
) [inline]

sc_signed.h1395 行で定義されています。

01396     { return operator+((long) u, v); }

sc_signed sc_dt::operator+ ( const sc_unsigned &  u,
int  v 
) [inline]

sc_signed.h1390 行で定義されています。

01391     { return operator+(u, (long) v); }

sc_signed sc_dt::operator+ ( const sc_signed &  u  ) 

sc_signed.cpp3544 行で定義されています。

03545 {
03546   return sc_signed(u);
03547 }

sc_signed sc_dt::operator+ ( unsigned long  u,
const sc_signed &  v 
)

sc_signed.cpp1370 行で定義されています。

01371 {
01372 
01373   if (u == 0) // case 1
01374     return sc_signed(v);
01375 
01376   CONVERT_LONG(u);
01377 
01378   if (v.sgn == SC_ZERO)  // case 2
01379     return sc_signed(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, false);
01380 
01381   // cases 3 and 4
01382   return add_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
01383                            v.sgn, v.nbits, v.ndigits, v.digit);
01384 
01385 }

sc_signed sc_dt::operator+ ( const sc_signed &  u,
unsigned long  v 
)

sc_signed.cpp1351 行で定義されています。

01352 {
01353 
01354   if (v == 0) // case 2
01355     return sc_signed(u);
01356 
01357   CONVERT_LONG(v);
01358 
01359   if (u.sgn == SC_ZERO)  // case 1
01360     return sc_signed(vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd, false);
01361 
01362   // cases 3 and 4
01363   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01364                            vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
01365 
01366 }

sc_signed sc_dt::operator+ ( long  u,
const sc_unsigned &  v 
)

sc_signed.cpp1332 行で定義されています。

01333 {
01334 
01335   if (u == 0) // case 1
01336     return sc_signed(v);
01337 
01338   CONVERT_LONG(u);
01339 
01340   if (v.sgn == SC_ZERO)  // case 2
01341     return sc_signed(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, false);
01342 
01343   // cases 3 and 4
01344   return add_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
01345                            v.sgn, v.nbits, v.ndigits, v.digit);
01346 
01347 }

sc_signed sc_dt::operator+ ( const sc_unsigned &  u,
long  v 
)

sc_signed.cpp1313 行で定義されています。

01314 {
01315 
01316   if (v == 0)  // case 2
01317     return sc_signed(u);
01318 
01319   CONVERT_LONG(v);
01320 
01321   if (u.sgn == SC_ZERO)  // case 1
01322     return sc_signed(vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd, false);
01323 
01324   // cases 3 and 4
01325   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01326                            vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
01327 
01328 }

sc_signed sc_dt::operator+ ( long  u,
const sc_signed &  v 
)

sc_signed.cpp1294 行で定義されています。

01295 {
01296 
01297   if (u == 0) // case 1
01298     return sc_signed(v);
01299 
01300   CONVERT_LONG(u);
01301 
01302   if (v.sgn == SC_ZERO)  // case 2
01303     return sc_signed(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, false);
01304 
01305   // cases 3 and 4
01306   return add_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
01307                            v.sgn, v.nbits, v.ndigits, v.digit);
01308 
01309 }

sc_signed sc_dt::operator+ ( const sc_signed &  u,
long  v 
)

sc_signed.cpp1275 行で定義されています。

01276 {
01277 
01278   if (v == 0)  // case 2
01279     return sc_signed(u);
01280 
01281   CONVERT_LONG(v);
01282 
01283   if (u.sgn == SC_ZERO)  // case 1
01284     return sc_signed(vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd, false);
01285 
01286   // cases 3 and 4
01287   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01288                            vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
01289 
01290 }

sc_signed sc_dt::operator+ ( uint64  u,
const sc_signed &  v 
)

sc_signed.cpp1255 行で定義されています。

01256 {
01257 
01258   if (u == 0) // case 1
01259     return sc_signed(v);
01260 
01261   CONVERT_INT64(u);
01262 
01263   if (v.sgn == SC_ZERO)  // case 2
01264     return sc_signed(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, false);
01265 
01266   // cases 3 and 4
01267 
01268   return add_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
01269                            v.sgn, v.nbits, v.ndigits, v.digit);
01270 
01271 }

sc_signed sc_dt::operator+ ( const sc_signed &  u,
uint64  v 
)

sc_signed.cpp1236 行で定義されています。

01237 {
01238 
01239   if (v == 0)  // case 2
01240     return sc_signed(u);
01241 
01242   CONVERT_INT64(v);
01243 
01244   if (u.sgn == SC_ZERO)  // case 1
01245     return sc_signed(vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd, false);
01246 
01247   // cases 3 and 4
01248   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01249                            vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
01250 
01251 }

sc_signed sc_dt::operator+ ( int64  u,
const sc_unsigned &  v 
)

sc_signed.cpp1216 行で定義されています。

01217 {
01218 
01219   if (u == 0) // case 1
01220     return sc_signed(v);
01221 
01222   CONVERT_INT64(u);
01223 
01224   if (v.sgn == SC_ZERO)  // case 2
01225     return sc_signed(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, false);
01226 
01227   // cases 3 and 4
01228 
01229   return add_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
01230                            v.sgn, v.nbits, v.ndigits, v.digit);
01231 
01232 }

sc_signed sc_dt::operator+ ( const sc_unsigned &  u,
int64  v 
)

sc_signed.cpp1197 行で定義されています。

01198 {
01199 
01200   if (v == 0)  // case 2
01201     return sc_signed(u);
01202 
01203   CONVERT_INT64(v);
01204 
01205   if (u.sgn == SC_ZERO)  // case 1
01206     return sc_signed(vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd, false);
01207 
01208   // cases 3 and 4
01209   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01210                            vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
01211 
01212 }

sc_signed sc_dt::operator+ ( int64  u,
const sc_signed &  v 
)

sc_signed.cpp1177 行で定義されています。

01178 {
01179 
01180   if (u == 0) // case 1
01181     return sc_signed(v);
01182 
01183   CONVERT_INT64(u);
01184 
01185   if (v.sgn == SC_ZERO)  // case 2
01186     return sc_signed(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, false);
01187 
01188   // cases 3 and 4
01189 
01190   return add_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
01191                            v.sgn, v.nbits, v.ndigits, v.digit);
01192 
01193 }

sc_signed sc_dt::operator+ ( const sc_signed &  u,
int64  v 
)

sc_signed.cpp1158 行で定義されています。

01159 {
01160 
01161   if (v == 0)  // case 2
01162     return sc_signed(u);
01163 
01164   CONVERT_INT64(v);
01165 
01166   if (u.sgn == SC_ZERO)  // case 1
01167     return sc_signed(vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd, false);
01168 
01169   // cases 3 and 4
01170   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01171                            vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
01172 
01173 }

sc_signed sc_dt::operator+ ( const sc_signed &  u,
const sc_signed &  v 
)

sc_signed.cpp1141 行で定義されています。

01142 {
01143 
01144   if (u.sgn == SC_ZERO) // case 1
01145     return sc_signed(v);
01146 
01147   if (v.sgn == SC_ZERO) // case 2
01148     return sc_signed(u);
01149 
01150   // cases 3 and 4
01151   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01152                            v.sgn, v.nbits, v.ndigits, v.digit);
01153   
01154 }

sc_signed sc_dt::operator+ ( const sc_signed &  u,
const sc_unsigned &  v 
)

sc_signed.cpp1124 行で定義されています。

01125 {
01126 
01127   if (u.sgn == SC_ZERO) // case 1
01128     return sc_signed(v);
01129 
01130   if (v.sgn == SC_ZERO) // case 2
01131     return sc_signed(u);
01132 
01133   // cases 3 and 4
01134   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01135                            v.sgn, v.nbits, v.ndigits, v.digit);
01136 
01137 }

sc_signed sc_dt::operator+ ( const sc_unsigned &  u,
const sc_signed &  v 
)

sc_signed.cpp1107 行で定義されています。

01108 {
01109 
01110   if (u.sgn == SC_ZERO) // case 1
01111     return sc_signed(v);
01112 
01113   if (v.sgn == SC_ZERO) // case 2
01114     return sc_signed(u);
01115 
01116   // cases 3 and 4
01117   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01118                            v.sgn, v.nbits, v.ndigits, v.digit);
01119 
01120 }

sc_signed sc_dt::operator+ ( const sc_uint_base &  u,
const sc_signed &  v 
)

sc_signed.cpp869 行で定義されています。

00870 { return operator+((uint64) u, v); }

sc_signed sc_dt::operator+ ( const sc_signed &  u,
const sc_uint_base &  v 
)

sc_signed.cpp865 行で定義されています。

00866 { return operator+(u, (uint64) v); }

sc_signed sc_dt::operator+ ( const sc_int_base &  u,
const sc_signed &  v 
)

sc_signed.cpp628 行で定義されています。

00629 { return operator+((int64) u, v); }

sc_signed sc_dt::operator+ ( const sc_signed &  u,
const sc_int_base &  v 
)

sc_signed.cpp624 行で定義されています。

00625 { return operator+(u, (int64) v); }

sc_signed sc_dt::operator+ ( const sc_int_base &  u,
const sc_unsigned &  v 
)

sc_signed.cpp620 行で定義されています。

00621 { return operator + ( SCAST<int64>( u ), v ); }

sc_signed sc_dt::operator+ ( const sc_unsigned &  u,
const sc_int_base &  v 
)

sc_signed.cpp616 行で定義されています。

00617 { return operator + ( u, SCAST<int64>( v ) ); }

const sc_dt::sc_concatref& sc_dt::operator, ( bool  a,
const sc_dt::sc_value_base b 
) [inline]

sc_concatref.h793 行で定義されています。

00794 {
00795     const sc_dt::sc_concat_bool* a_p;      // Proxy for boolean value.
00796     sc_dt::sc_concatref*         result_p; // Proxy for the concatenation.
00797 
00798     a_p = sc_dt::sc_concat_bool::allocate(a);
00799     result_p = sc_dt::sc_concatref::m_pool.allocate();
00800     result_p->initialize( *a_p, b );
00801     return *result_p;
00802 }

const sc_dt::sc_concatref& sc_dt::operator, ( const sc_dt::sc_value_base a,
bool  b 
) [inline]

sc_concatref.h780 行で定義されています。

00781 {
00782     const sc_dt::sc_concat_bool* b_p;      // Proxy for boolean value.
00783     sc_dt::sc_concatref*         result_p; // Proxy for the concatenation.
00784 
00785     b_p = sc_dt::sc_concat_bool::allocate(b);
00786     result_p = sc_dt::sc_concatref::m_pool.allocate();
00787     result_p->initialize( a, *b_p );
00788     return *result_p;
00789 }

const sc_dt::sc_concatref& sc_dt::operator, ( const sc_dt::sc_value_base a,
const sc_dt::sc_value_base b 
) [inline]

sc_concatref.h768 行で定義されています。

00770 {
00771     sc_dt::sc_concatref* result_p;     // Proxy for the concatenation.
00772 
00773     result_p = sc_dt::sc_concatref::m_pool.allocate();
00774     result_p->initialize( a, b );
00775     return *result_p;
00776 }

sc_dt::sc_concatref& sc_dt::operator, ( sc_dt::sc_value_base a,
sc_dt::sc_value_base b 
) [inline]

sc_concatref.h756 行で定義されています。

00758 {
00759     sc_dt::sc_concatref* result_p;     // Proxy for the concatenation.
00760 
00761     result_p = sc_dt::sc_concatref::m_pool.allocate();
00762     result_p->initialize( a, b );
00763     return *result_p;
00764 }

template<class T1, class T2>
sc_concref< T1, T2 > sc_dt::operator, ( sc_proxy< T1 > &  a,
sc_proxy< T2 > &  b 
) [inline]

sc_bit_proxies.h3817 行で定義されています。

03818 {
03819     return sc_concref<T1,T2>(
03820         a.back_cast(), b.back_cast() );
03821 }

template<class T1, class T2, class T3>
sc_concref< T1, sc_concref< T2, T3 > > sc_dt::operator, ( sc_proxy< T1 > &  a,
sc_concref< T2, T3 >  b 
) [inline]

sc_bit_proxies.h3808 行で定義されています。

03809 {
03810     return sc_concref<T1,sc_concref<T2,T3> >(
03811         a.back_cast(), *b.clone(), 2 );
03812 }

template<class T1, class T2>
sc_concref< T1, sc_subref< T2 > > sc_dt::operator, ( sc_proxy< T1 > &  a,
sc_subref< T2 >  b 
) [inline]

sc_bit_proxies.h3799 行で定義されています。

03800 {
03801     return sc_concref<T1,sc_subref<T2> >(
03802         a.back_cast(), *b.clone(), 2 );
03803 }

template<class T1, class T2>
sc_concref< T1, sc_bitref< T2 > > sc_dt::operator, ( sc_proxy< T1 > &  a,
sc_bitref< T2 >  b 
) [inline]

sc_bit_proxies.h3790 行で定義されています。

03791 {
03792     return sc_concref<T1,sc_bitref<T2> >(
03793         a.back_cast(), *b.clone(), 2 );
03794 }

template<class T>
sc_concref_r< sc_lv_base, T > sc_dt::operator, ( bool  a,
const sc_proxy< T > &  b 
) [inline]

sc_lv_base.h1636 行で定義されています。

01637 {
01638     return sc_concref_r<sc_lv_base,T>(
01639         *new sc_lv_base( sc_logic( a ), 1 ), b.back_cast(), 1 );
01640 }

template<class T>
sc_concref_r< T, sc_lv_base > sc_dt::operator, ( const sc_proxy< T > &  a,
bool  b 
) [inline]

sc_lv_base.h1627 行で定義されています。

01628 {
01629     return sc_concref_r<T,sc_lv_base>(
01630         a.back_cast(), *new sc_lv_base( sc_logic( b ), 1 ), 2 );
01631 }

template<class T>
sc_concref_r< sc_lv_base, T > sc_dt::operator, ( const sc_logic &  a,
const sc_proxy< T > &  b 
) [inline]

sc_lv_base.h1618 行で定義されています。

01619 {
01620     return sc_concref_r<sc_lv_base,T>(
01621         *new sc_lv_base( a, 1 ), b.back_cast(), 1 );
01622 }

template<class T>
sc_concref_r< T, sc_lv_base > sc_dt::operator, ( const sc_proxy< T > &  a,
const sc_logic &  b 
) [inline]

sc_lv_base.h1609 行で定義されています。

01610 {
01611     return sc_concref_r<T,sc_lv_base>(
01612         a.back_cast(), *new sc_lv_base( b, 1 ), 2 );
01613 }

template<class T>
sc_concref_r< sc_lv_base, T > sc_dt::operator, ( const char *  a,
const sc_proxy< T > &  b 
) [inline]

sc_lv_base.h1600 行で定義されています。

01601 {
01602     return sc_concref_r<sc_lv_base,T>(
01603         *new sc_lv_base( a ), b.back_cast(), 1 );
01604 }

template<class T>
sc_concref_r< T, sc_lv_base > sc_dt::operator, ( const sc_proxy< T > &  a,
const char *  b 
) [inline]

sc_lv_base.h1591 行で定義されています。

01592 {
01593     return sc_concref_r<T,sc_lv_base>(
01594         a.back_cast(), *new sc_lv_base( b ), 2 );
01595 }

template<class T1, class T2>
sc_concref_r< T1, T2 > sc_dt::operator, ( const sc_proxy< T1 > &  a,
const sc_proxy< T2 > &  b 
) [inline]

sc_bit_proxies.h3591 行で定義されています。

03592 {
03593     return sc_concref_r<T1,T2>(
03594         a.back_cast(), b.back_cast() );
03595 }

template<class T1, class T2, class T3>
sc_concref_r< T1, sc_concref_r< T2, T3 > > sc_dt::operator, ( const sc_proxy< T1 > &  a,
sc_concref_r< T2, T3 >  b 
) [inline]

sc_bit_proxies.h3582 行で定義されています。

03583 {
03584     return sc_concref_r<T1,sc_concref_r<T2,T3> >(
03585         a.back_cast(), *b.clone(), 2 );
03586 }

template<class T1, class T2>
sc_concref_r< T1, sc_subref_r< T2 > > sc_dt::operator, ( const sc_proxy< T1 > &  a,
sc_subref_r< T2 >  b 
) [inline]

sc_bit_proxies.h3573 行で定義されています。

03574 {
03575     return sc_concref_r<T1,sc_subref_r<T2> >(
03576         a.back_cast(), *b.clone(), 2 );
03577 }

template<class T1, class T2>
sc_concref_r< T1, sc_bitref_r< T2 > > sc_dt::operator, ( const sc_proxy< T1 > &  a,
sc_bitref_r< T2 >  b 
) [inline]

sc_bit_proxies.h3564 行で定義されています。

03565 {
03566     return sc_concref_r<T1,sc_bitref_r<T2> >(
03567         a.back_cast(), *b.clone(), 2 );
03568 }

template<class T1, class T2, class T3>
sc_concref< sc_concref< T1, T2 >, T3 > sc_dt::operator, ( sc_concref< T1, T2 >  a,
sc_proxy< T3 > &  b 
) [inline]

sc_bit_proxies.h3498 行で定義されています。

03499 {
03500     return sc_concref<sc_concref<T1,T2>,T3>(
03501         *a.clone(), b.back_cast(), 1 );
03502 }

template<class T1, class T2, class T3, class T4>
sc_concref< sc_concref< T1, T2 >, sc_concref< T3, T4 > > sc_dt::operator, ( sc_concref< T1, T2 >  a,
sc_concref< T3, T4 >  b 
) [inline]

sc_bit_proxies.h3489 行で定義されています。

03490 {
03491     return sc_concref<sc_concref<T1,T2>,sc_concref<T3,T4> >(
03492         *a.clone(), *b.clone(), 3 );
03493 }

template<class T1, class T2, class T3>
sc_concref< sc_concref< T1, T2 >, sc_subref< T3 > > sc_dt::operator, ( sc_concref< T1, T2 >  a,
sc_subref< T3 >  b 
) [inline]

sc_bit_proxies.h3480 行で定義されています。

03481 {
03482     return sc_concref<sc_concref<T1,T2>,sc_subref<T3> >(
03483         *a.clone(), *b.clone(), 3 );
03484 }

template<class T1, class T2, class T3>
sc_concref< sc_concref< T1, T2 >, sc_bitref< T3 > > sc_dt::operator, ( sc_concref< T1, T2 >  a,
sc_bitref< T3 >  b 
) [inline]

sc_bit_proxies.h3471 行で定義されています。

03472 {
03473     return sc_concref<sc_concref<T1,T2>,sc_bitref<T3> >(
03474         *a.clone(), *b.clone(), 3 );
03475 }

template<class T1, class T2>
sc_concref_r< sc_lv_base, sc_concref_r< T1, T2 > > sc_dt::operator, ( bool  a,
sc_concref_r< T1, T2 >  b 
) [inline]

sc_lv_base.h1403 行で定義されています。

01404 {
01405     return sc_concref_r<sc_lv_base,sc_concref_r<T1,T2> >(
01406         *new sc_lv_base( sc_logic( a ), 1 ), *b.clone(), 3 );
01407 }

template<class T1, class T2>
sc_concref_r< sc_concref_r< T1, T2 >, sc_lv_base > sc_dt::operator, ( sc_concref_r< T1, T2 >  a,
bool  b 
) [inline]

sc_lv_base.h1394 行で定義されています。

01395 {
01396     return sc_concref_r<sc_concref_r<T1,T2>,sc_lv_base>(
01397         *a.clone(), *new sc_lv_base( sc_logic( b ), 1 ), 3 );
01398 }

template<class T1, class T2>
sc_concref_r< sc_lv_base, sc_concref_r< T1, T2 > > sc_dt::operator, ( const sc_logic &  a,
sc_concref_r< T1, T2 >  b 
) [inline]

sc_lv_base.h1385 行で定義されています。

01386 {
01387     return sc_concref_r<sc_lv_base,sc_concref_r<T1,T2> >(
01388         *new sc_lv_base( a, 1 ), *b.clone(), 3 );
01389 }

template<class T1, class T2>
sc_concref_r< sc_concref_r< T1, T2 >, sc_lv_base > sc_dt::operator, ( sc_concref_r< T1, T2 >  a,
const sc_logic &  b 
) [inline]

sc_lv_base.h1376 行で定義されています。

01377 {
01378     return sc_concref_r<sc_concref_r<T1,T2>,sc_lv_base>(
01379         *a.clone(), *new sc_lv_base( b, 1 ), 3 );
01380 }

template<class T1, class T2>
sc_concref_r< sc_lv_base, sc_concref_r< T1, T2 > > sc_dt::operator, ( const char *  a,
sc_concref_r< T1, T2 >  b 
) [inline]

sc_lv_base.h1367 行で定義されています。

01368 {
01369     return sc_concref_r<sc_lv_base,sc_concref_r<T1,T2> >(
01370         *new sc_lv_base( a ), *b.clone(), 3 );
01371 }

template<class T1, class T2>
sc_concref_r< sc_concref_r< T1, T2 >, sc_lv_base > sc_dt::operator, ( sc_concref_r< T1, T2 >  a,
const char *  b 
) [inline]

sc_lv_base.h1358 行で定義されています。

01359 {
01360     return sc_concref_r<sc_concref_r<T1,T2>,sc_lv_base>(
01361         *a.clone(), *new sc_lv_base( b ), 3 );
01362 }

template<class T1, class T2, class T3>
sc_concref_r< sc_concref_r< T1, T2 >, T3 > sc_dt::operator, ( sc_concref_r< T1, T2 >  a,
const sc_proxy< T3 > &  b 
) [inline]

sc_bit_proxies.h3253 行で定義されています。

03254 {
03255     return sc_concref_r<sc_concref_r<T1,T2>,T3>(
03256         *a.clone(), b.back_cast(), 1 );
03257 }

template<class T1, class T2, class T3, class T4>
sc_concref_r< sc_concref_r< T1, T2 >, sc_concref_r< T3, T4 > > sc_dt::operator, ( sc_concref_r< T1, T2 >  a,
sc_concref_r< T3, T4 >  b 
) [inline]

sc_bit_proxies.h3244 行で定義されています。

03245 {
03246     return sc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> >(
03247         *a.clone(), *b.clone(), 3 );
03248 }

template<class T1, class T2, class T3>
sc_concref_r< sc_concref_r< T1, T2 >, sc_subref_r< T3 > > sc_dt::operator, ( sc_concref_r< T1, T2 >  a,
sc_subref_r< T3 >  b 
) [inline]

sc_bit_proxies.h3235 行で定義されています。

03236 {
03237     return sc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> >(
03238         *a.clone(), *b.clone(), 3 );
03239 }

template<class T1, class T2, class T3>
sc_concref_r< sc_concref_r< T1, T2 >, sc_bitref_r< T3 > > sc_dt::operator, ( sc_concref_r< T1, T2 >  a,
sc_bitref_r< T3 >  b 
) [inline]

sc_bit_proxies.h3226 行で定義されています。

03227 {
03228     return sc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> >(
03229         *a.clone(), *b.clone(), 3 );
03230 }

template<class T1, class T2>
sc_concref< sc_subref< T1 >, T2 > sc_dt::operator, ( sc_subref< T1 >  a,
sc_proxy< T2 > &  b 
) [inline]

sc_bit_proxies.h2953 行で定義されています。

02954 {
02955     return sc_concref<sc_subref<T1>,T2>(
02956         *a.clone(), b.back_cast(), 1 );
02957 }

template<class T1, class T2, class T3>
sc_concref< sc_subref< T1 >, sc_concref< T2, T3 > > sc_dt::operator, ( sc_subref< T1 >  a,
sc_concref< T2, T3 >  b 
) [inline]

sc_bit_proxies.h2944 行で定義されています。

02945 {
02946     return sc_concref<sc_subref<T1>,sc_concref<T2,T3> >(
02947         *a.clone(), *b.clone(), 3 );
02948 }

template<class T1, class T2>
sc_concref< sc_subref< T1 >, sc_subref< T2 > > sc_dt::operator, ( sc_subref< T1 >  a,
sc_subref< T2 >  b 
) [inline]

sc_bit_proxies.h2935 行で定義されています。

02936 {
02937     return sc_concref<sc_subref<T1>,sc_subref<T2> >(
02938         *a.clone(), *b.clone(), 3 );
02939 }

template<class T1, class T2>
sc_concref< sc_subref< T1 >, sc_bitref< T2 > > sc_dt::operator, ( sc_subref< T1 >  a,
sc_bitref< T2 >  b 
) [inline]

sc_bit_proxies.h2926 行で定義されています。

02927 {
02928     return sc_concref<sc_subref<T1>,sc_bitref<T2> >(
02929         *a.clone(), *b.clone(), 3 );
02930 }

template<class T>
sc_concref_r< sc_lv_base, sc_subref_r< T > > sc_dt::operator, ( bool  a,
sc_subref_r< T >  b 
) [inline]

sc_lv_base.h1126 行で定義されています。

01127 {
01128     return sc_concref_r<sc_lv_base,sc_subref_r<T> >(
01129         *new sc_lv_base( sc_logic( a ), 1 ), *b.clone(), 3 );
01130 }

template<class T>
sc_concref_r< sc_subref_r< T >, sc_lv_base > sc_dt::operator, ( sc_subref_r< T >  a,
bool  b 
) [inline]

sc_lv_base.h1117 行で定義されています。

01118 {
01119     return sc_concref_r<sc_subref_r<T>,sc_lv_base>(
01120         *a.clone(), *new sc_lv_base( sc_logic( b ), 1 ), 3 );
01121 }

template<class T>
sc_concref_r< sc_lv_base, sc_subref_r< T > > sc_dt::operator, ( const sc_logic &  a,
sc_subref_r< T >  b 
) [inline]

sc_lv_base.h1108 行で定義されています。

01109 {
01110     return sc_concref_r<sc_lv_base,sc_subref_r<T> >(
01111         *new sc_lv_base( a, 1 ), *b.clone(), 3 );
01112 }

template<class T>
sc_concref_r< sc_subref_r< T >, sc_lv_base > sc_dt::operator, ( sc_subref_r< T >  a,
const sc_logic &  b 
) [inline]

sc_lv_base.h1099 行で定義されています。

01100 {
01101     return sc_concref_r<sc_subref_r<T>,sc_lv_base>(
01102         *a.clone(), *new sc_lv_base( b, 1 ), 3 );
01103 }

template<class T>
sc_concref_r< sc_lv_base, sc_subref_r< T > > sc_dt::operator, ( const char *  a,
sc_subref_r< T >  b 
) [inline]

sc_lv_base.h1090 行で定義されています。

01091 {
01092     return sc_concref_r<sc_lv_base,sc_subref_r<T> >(
01093         *new sc_lv_base( a ), *b.clone(), 3 );
01094 }

template<class T>
sc_concref_r< sc_subref_r< T >, sc_lv_base > sc_dt::operator, ( sc_subref_r< T >  a,
const char *  b 
) [inline]

sc_lv_base.h1081 行で定義されています。

01082 {
01083     return sc_concref_r<sc_subref_r<T>,sc_lv_base>(
01084         *a.clone(), *new sc_lv_base( b ), 3 );
01085 }

template<class T1, class T2>
sc_concref_r< sc_subref_r< T1 >, T2 > sc_dt::operator, ( sc_subref_r< T1 >  a,
const sc_proxy< T2 > &  b 
) [inline]

sc_bit_proxies.h2702 行で定義されています。

02703 {
02704     return sc_concref_r<sc_subref_r<T1>,T2>(
02705         *a.clone(), b.back_cast(), 1 );
02706 }

template<class T1, class T2, class T3>
sc_concref_r< sc_subref_r< T1 >, sc_concref_r< T2, T3 > > sc_dt::operator, ( sc_subref_r< T1 >  a,
sc_concref_r< T2, T3 >  b 
) [inline]

sc_bit_proxies.h2693 行で定義されています。

02694 {
02695     return sc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> >(
02696         *a.clone(), *b.clone(), 3 );
02697 }

template<class T1, class T2>
sc_concref_r< sc_subref_r< T1 >, sc_subref_r< T2 > > sc_dt::operator, ( sc_subref_r< T1 >  a,
sc_subref_r< T2 >  b 
) [inline]

sc_bit_proxies.h2684 行で定義されています。

02685 {
02686     return sc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> >(
02687         *a.clone(), *b.clone(), 3 );
02688 }

template<class T1, class T2>
sc_concref_r< sc_subref_r< T1 >, sc_bitref_r< T2 > > sc_dt::operator, ( sc_subref_r< T1 >  a,
sc_bitref_r< T2 >  b 
) [inline]

sc_bit_proxies.h2675 行で定義されています。

02676 {
02677     return sc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> >(
02678         *a.clone(), *b.clone(), 3 );
02679 }

template<class T1, class T2>
sc_concref< sc_bitref< T1 >, T2 > sc_dt::operator, ( sc_bitref< T1 >  a,
sc_proxy< T2 > &  b 
) [inline]

sc_bit_proxies.h2447 行で定義されています。

02448 {
02449     return sc_concref<sc_bitref<T1>,T2>(
02450         *a.clone(), b.back_cast(), 1 );
02451 }

template<class T1, class T2, class T3>
sc_concref< sc_bitref< T1 >, sc_concref< T2, T3 > > sc_dt::operator, ( sc_bitref< T1 >  a,
sc_concref< T2, T3 >  b 
) [inline]

sc_bit_proxies.h2438 行で定義されています。

02439 {
02440     return sc_concref<sc_bitref<T1>,sc_concref<T2,T3> >(
02441         *a.clone(), *b.clone(), 3 );
02442 }

template<class T1, class T2>
sc_concref< sc_bitref< T1 >, sc_subref< T2 > > sc_dt::operator, ( sc_bitref< T1 >  a,
sc_subref< T2 >  b 
) [inline]

sc_bit_proxies.h2429 行で定義されています。

02430 {
02431     return sc_concref<sc_bitref<T1>,sc_subref<T2> >(
02432         *a.clone(), *b.clone(), 3 );
02433 }

template<class T1, class T2>
sc_concref< sc_bitref< T1 >, sc_bitref< T2 > > sc_dt::operator, ( sc_bitref< T1 >  a,
sc_bitref< T2 >  b 
) [inline]

sc_bit_proxies.h2420 行で定義されています。

02421 {
02422     return sc_concref<sc_bitref<T1>,sc_bitref<T2> >(
02423         *a.clone(), *b.clone(), 3 );
02424 }

template<class T>
sc_concref_r< sc_lv_base, sc_bitref_r< T > > sc_dt::operator, ( bool  a,
sc_bitref_r< T >  b 
) [inline]

sc_lv_base.h894 行で定義されています。

00895 {
00896     return sc_concref_r<sc_lv_base,sc_bitref_r<T> >(
00897         *new sc_lv_base( sc_logic( a ), 1 ), *b.clone(), 3 );
00898 }

template<class T>
sc_concref_r< sc_bitref_r< T >, sc_lv_base > sc_dt::operator, ( sc_bitref_r< T >  a,
bool  b 
) [inline]

sc_lv_base.h885 行で定義されています。

00886 {
00887     return sc_concref_r<sc_bitref_r<T>,sc_lv_base>(
00888         *a.clone(), *new sc_lv_base( sc_logic( b ), 1 ) );
00889 }

template<class T>
sc_concref_r< sc_lv_base, sc_bitref_r< T > > sc_dt::operator, ( const sc_logic &  a,
sc_bitref_r< T >  b 
) [inline]

sc_lv_base.h876 行で定義されています。

00877 {
00878     return sc_concref_r<sc_lv_base,sc_bitref_r<T> >(
00879         *new sc_lv_base( a, 1 ), *b.clone(), 3 );
00880 }

template<class T>
sc_concref_r< sc_bitref_r< T >, sc_lv_base > sc_dt::operator, ( sc_bitref_r< T >  a,
const sc_logic &  b 
) [inline]

sc_lv_base.h867 行で定義されています。

00868 {
00869     return sc_concref_r<sc_bitref_r<T>,sc_lv_base>(
00870         *a.clone(), *new sc_lv_base( b, 1 ) );
00871 }

template<class T>
sc_concref_r< sc_lv_base, sc_bitref_r< T > > sc_dt::operator, ( const char *  a,
sc_bitref_r< T >  b 
) [inline]

sc_lv_base.h858 行で定義されています。

00859 {
00860     return sc_concref_r<sc_lv_base,sc_bitref_r<T> >(
00861         *new sc_lv_base( a ), *b.clone(), 3 );
00862 }

template<class T>
sc_concref_r< sc_bitref_r< T >, sc_lv_base > sc_dt::operator, ( sc_bitref_r< T >  a,
const char *  b 
) [inline]

sc_lv_base.h849 行で定義されています。

00850 {
00851     return sc_concref_r<sc_bitref_r<T>,sc_lv_base>(
00852         *a.clone(), *new sc_lv_base( b ), 3 );
00853 }

template<class T1, class T2>
sc_concref_r< sc_bitref_r< T1 >, T2 > sc_dt::operator, ( sc_bitref_r< T1 >  a,
const sc_proxy< T2 > &  b 
) [inline]

sc_bit_proxies.h2044 行で定義されています。

02045 {
02046     return sc_concref_r<sc_bitref_r<T1>,T2>(
02047         *a.clone(), b.back_cast(), 1 );
02048 }

template<class T1, class T2, class T3>
sc_concref_r< sc_bitref_r< T1 >, sc_concref_r< T2, T3 > > sc_dt::operator, ( sc_bitref_r< T1 >  a,
sc_concref_r< T2, T3 >  b 
) [inline]

sc_bit_proxies.h2035 行で定義されています。

02036 {
02037     return sc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >(
02038         *a.clone(), *b.clone(), 3 );
02039 }

template<class T1, class T2>
sc_concref_r< sc_bitref_r< T1 >, sc_subref_r< T2 > > sc_dt::operator, ( sc_bitref_r< T1 >  a,
sc_subref_r< T2 >  b 
) [inline]

sc_bit_proxies.h2026 行で定義されています。

02027 {
02028     return sc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >(
02029         *a.clone(), *b.clone(), 3 );
02030 }

template<class T1, class T2>
sc_concref_r< sc_bitref_r< T1 >, sc_bitref_r< T2 > > sc_dt::operator, ( sc_bitref_r< T1 >  a,
sc_bitref_r< T2 >  b 
) [inline]

sc_bit_proxies.h2017 行で定義されています。

02018 {
02019     return sc_concref_r<sc_bitref_r<T1>,sc_bitref_r<T2> >(
02020         *a.clone(), *b.clone(), 3 );
02021 }

sc_signed sc_dt::operator- ( unsigned int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1477 行で定義されています。

01478     { return operator-((unsigned long) u, v); }

sc_signed sc_dt::operator- ( int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1475 行で定義されています。

01476     { return operator-((long) u, v); }

sc_signed sc_dt::operator- ( const sc_signed &  u,
unsigned int  v 
) [inline]

sc_signed.h1468 行で定義されています。

01469     { return operator-(u, (unsigned long) v); }

sc_signed sc_dt::operator- ( const sc_signed &  u,
int  v 
) [inline]

sc_signed.h1466 行で定義されています。

01467     { return operator-(u, (long) v); }

sc_signed sc_dt::operator- ( unsigned int  u,
const sc_unsigned &  v 
) [inline]

sc_signed.h1458 行で定義されています。

01459     { return operator-((unsigned long) u, v); }

sc_signed sc_dt::operator- ( int  u,
const sc_unsigned &  v 
) [inline]

sc_signed.h1456 行で定義されています。

01457     { return operator-((long) u, v); }

sc_signed sc_dt::operator- ( const sc_unsigned &  u,
unsigned int  v 
) [inline]

sc_signed.h1449 行で定義されています。

01450     { return operator-(u, (unsigned long) v); }

sc_signed sc_dt::operator- ( const sc_unsigned &  u,
int  v 
) [inline]

sc_signed.h1447 行で定義されています。

01448     { return operator-(u, (long) v); }

sc_signed sc_dt::operator- ( const sc_unsigned &  u  ) 

sc_signed.cpp3556 行で定義されています。

03557 {
03558   return sc_signed(u, -u.sgn);
03559 }

sc_signed sc_dt::operator- ( const sc_signed &  u  ) 

sc_signed.cpp3550 行で定義されています。

03551 {
03552   return sc_signed(u, -u.sgn);
03553 }

sc_signed sc_dt::operator- ( unsigned long  u,
const sc_unsigned &  v 
)

sc_signed.cpp1766 行で定義されています。

01767 {
01768   if (u == 0) // case 1
01769     return sc_signed(v, -v.sgn);
01770 
01771   CONVERT_LONG(u);
01772 
01773   if (v.sgn == SC_ZERO) // case 2
01774     return sc_signed(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, false);
01775 
01776   // cases 3 and 4
01777   return add_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
01778                            -v.sgn, v.nbits, v.ndigits, v.digit);
01779 
01780 }

sc_signed sc_dt::operator- ( const sc_unsigned &  u,
unsigned long  v 
)

sc_signed.cpp1747 行で定義されています。

01748 {
01749 
01750   if (v == 0) // case 1
01751     return sc_signed(u);
01752 
01753   CONVERT_LONG(v);
01754 
01755   if (u.sgn == SC_ZERO) // case 2
01756     return sc_signed(-vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd, false);
01757 
01758   // cases 3 and 4
01759   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01760                            -vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
01761 
01762 }

sc_signed sc_dt::operator- ( unsigned long  u,
const sc_signed &  v 
)

sc_signed.cpp1729 行で定義されています。

01730 {
01731   if (u == 0) // case 1
01732     return sc_signed(v, -v.sgn);
01733 
01734   CONVERT_LONG(u);
01735 
01736   if (v.sgn == SC_ZERO) // case 2
01737     return sc_signed(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, false);
01738 
01739   // cases 3 and 4
01740   return add_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
01741                            -v.sgn, v.nbits, v.ndigits, v.digit);
01742 
01743 }

sc_signed sc_dt::operator- ( const sc_signed &  u,
unsigned long  v 
)

sc_signed.cpp1710 行で定義されています。

01711 {
01712 
01713   if (v == 0) // case 1
01714     return sc_signed(u);
01715 
01716   CONVERT_LONG(v);
01717 
01718   if (u.sgn == SC_ZERO) // case 2
01719     return sc_signed(-vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd, false);
01720 
01721   // cases 3 and 4
01722   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01723                            -vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
01724 
01725 }

sc_signed sc_dt::operator- ( long  u,
const sc_unsigned &  v 
)

sc_signed.cpp1691 行で定義されています。

01692 {
01693 
01694   if (u == 0) // case 1
01695     return sc_signed(v, -v.sgn);
01696 
01697   CONVERT_LONG(u);
01698 
01699   if (v.sgn == SC_ZERO) // case 2
01700     return sc_signed(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, false);
01701 
01702   // cases 3 and 4
01703   return add_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
01704                            -v.sgn, v.nbits, v.ndigits, v.digit);
01705 
01706 }

sc_signed sc_dt::operator- ( const sc_unsigned &  u,
long  v 
)

sc_signed.cpp1672 行で定義されています。

01673 {
01674 
01675   if (v == 0) // case 1
01676     return sc_signed(u);
01677 
01678   CONVERT_LONG(v);
01679 
01680   if (u.sgn == SC_ZERO) // case 2
01681     return sc_signed(-vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd, false);
01682 
01683   // cases 3 and 4
01684   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01685                            -vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
01686 
01687 }

sc_signed sc_dt::operator- ( long  u,
const sc_signed &  v 
)

sc_signed.cpp1653 行で定義されています。

01654 {
01655 
01656   if (u == 0) // case 1
01657     return sc_signed(v, -v.sgn);
01658 
01659   CONVERT_LONG(u);
01660 
01661   if (v.sgn == SC_ZERO) // case 2
01662     return sc_signed(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, false);
01663 
01664   // cases 3 and 4
01665   return add_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
01666                            -v.sgn, v.nbits, v.ndigits, v.digit);
01667 
01668 }

sc_signed sc_dt::operator- ( const sc_signed &  u,
long  v 
)

sc_signed.cpp1634 行で定義されています。

01635 {
01636 
01637   if (v == 0) // case 1
01638     return sc_signed(u);
01639 
01640   CONVERT_LONG(v);
01641 
01642   if (u.sgn == SC_ZERO) // case 2
01643     return sc_signed(-vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd, false);
01644 
01645   // cases 3 and 4
01646   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01647                            -vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
01648 
01649 }

sc_signed sc_dt::operator- ( uint64  u,
const sc_unsigned &  v 
)

sc_signed.cpp1615 行で定義されています。

01616 {
01617 
01618   if (u == 0) // case 1
01619     return sc_signed(v, -v.sgn);
01620 
01621   CONVERT_INT64(u);
01622 
01623   if (v.sgn == SC_ZERO) // case 2
01624     return sc_signed(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, false);
01625 
01626   // cases 3 and 4
01627   return add_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
01628                            -v.sgn, v.nbits, v.ndigits, v.digit);
01629 
01630 }

sc_signed sc_dt::operator- ( const sc_unsigned &  u,
uint64  v 
)

sc_signed.cpp1595 行で定義されています。

01596 {
01597 
01598   if (v == 0) // case 1
01599     return sc_signed(u);
01600 
01601   CONVERT_INT64(v);
01602 
01603   if (u.sgn == SC_ZERO) // case 2
01604     return sc_signed(-vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd, false);
01605 
01606   // cases 3 and 4
01607 
01608   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01609                            -vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
01610 
01611 }

sc_signed sc_dt::operator- ( uint64  u,
const sc_signed &  v 
)

sc_signed.cpp1576 行で定義されています。

01577 {
01578 
01579   if (u == 0) // case 1
01580     return sc_signed(v, -v.sgn);
01581 
01582   CONVERT_INT64(u);
01583 
01584   if (v.sgn == SC_ZERO) // case 2
01585     return sc_signed(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, false);
01586 
01587   // cases 3 and 4
01588   return add_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
01589                            -v.sgn, v.nbits, v.ndigits, v.digit);
01590 
01591 }

sc_signed sc_dt::operator- ( const sc_signed &  u,
uint64  v 
)

sc_signed.cpp1556 行で定義されています。

01557 {
01558 
01559   if (v == 0) // case 1
01560     return sc_signed(u);
01561 
01562   CONVERT_INT64(v);
01563 
01564   if (u.sgn == SC_ZERO) // case 2
01565     return sc_signed(-vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd, false);
01566 
01567   // cases 3 and 4
01568 
01569   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01570                            -vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
01571 
01572 }

sc_signed sc_dt::operator- ( int64  u,
const sc_unsigned &  v 
)

sc_signed.cpp1536 行で定義されています。

01537 {
01538 
01539   if (u == 0) // case 1
01540     return sc_signed(v, -v.sgn);
01541 
01542   CONVERT_INT64(u);
01543 
01544   if (v.sgn == SC_ZERO) // case 2
01545     return sc_signed(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, false);
01546 
01547   // cases 3 and 4
01548 
01549   return add_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
01550                            -v.sgn, v.nbits, v.ndigits, v.digit);
01551 
01552 }

sc_signed sc_dt::operator- ( const sc_unsigned &  u,
int64  v 
)

sc_signed.cpp1517 行で定義されています。

01518 {
01519 
01520   if (v == 0) // case 1
01521     return sc_signed(u);
01522 
01523   CONVERT_INT64(v);
01524 
01525   if (u.sgn == SC_ZERO) // case 2
01526     return sc_signed(-vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd, false);
01527 
01528   // cases 3 and 4
01529   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01530                            -vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
01531 
01532 }

sc_signed sc_dt::operator- ( int64  u,
const sc_signed &  v 
)

sc_signed.cpp1497 行で定義されています。

01498 {
01499 
01500   if (u == 0) // case 1
01501     return sc_signed(v, -v.sgn);
01502 
01503   CONVERT_INT64(u);
01504 
01505   if (v.sgn == SC_ZERO) // case 2
01506     return sc_signed(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, false);
01507 
01508   // cases 3 and 4
01509 
01510   return add_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
01511                            -v.sgn, v.nbits, v.ndigits, v.digit);
01512 
01513 }

sc_signed sc_dt::operator- ( const sc_signed &  u,
int64  v 
)

sc_signed.cpp1478 行で定義されています。

01479 {
01480 
01481   if (v == 0) // case 1
01482     return sc_signed(u);
01483 
01484   CONVERT_INT64(v);
01485 
01486   if (u.sgn == SC_ZERO) // case 2
01487     return sc_signed(-vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd, false);
01488 
01489   // cases 3 and 4
01490   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01491                            -vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
01492 
01493 }

sc_signed sc_dt::operator- ( const sc_signed &  u,
const sc_signed &  v 
)

sc_signed.cpp1461 行で定義されています。

01462 {
01463 
01464   if (v.sgn == SC_ZERO)  // case 1
01465     return sc_signed(u);
01466 
01467   if (u.sgn == SC_ZERO) // case 2
01468     return sc_signed(v, -v.sgn);
01469 
01470   // cases 3 and 4
01471   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01472                            -v.sgn, v.nbits, v.ndigits, v.digit);
01473 
01474 }

sc_signed sc_dt::operator- ( const sc_signed &  u,
const sc_unsigned &  v 
)

sc_signed.cpp1444 行で定義されています。

01445 {
01446 
01447   if (v.sgn == SC_ZERO)  // case 1
01448     return sc_signed(u);
01449 
01450   if (u.sgn == SC_ZERO) // case 2
01451     return sc_signed(v, -v.sgn);
01452 
01453   // cases 3 and 4
01454   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01455                            -v.sgn, v.nbits, v.ndigits, v.digit);
01456 
01457 }

sc_signed sc_dt::operator- ( const sc_unsigned &  u,
const sc_signed &  v 
)

sc_signed.cpp1427 行で定義されています。

01428 {
01429 
01430   if (v.sgn == SC_ZERO)  // case 1
01431     return sc_signed(u);
01432 
01433   if (u.sgn == SC_ZERO) // case 2
01434     return sc_signed(v, -v.sgn);
01435 
01436   // cases 3 and 4
01437   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01438                            -v.sgn, v.nbits, v.ndigits, v.digit);
01439 
01440 }

sc_signed sc_dt::operator- ( const sc_unsigned &  u,
const sc_unsigned &  v 
)

sc_signed.cpp1410 行で定義されています。

01411 {
01412 
01413   if (v.sgn == SC_ZERO)  // case 1
01414     return sc_signed(u);
01415 
01416   if (u.sgn == SC_ZERO) // case 2
01417     return sc_signed(v, -v.sgn);
01418 
01419   // cases 3 and 4
01420   return add_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01421                            -v.sgn, v.nbits, v.ndigits, v.digit);
01422 
01423 }

sc_signed sc_dt::operator- ( const sc_uint_base &  u,
const sc_signed &  v 
)

sc_signed.cpp890 行で定義されています。

00891 { return operator-((uint64) u, v); }

sc_signed sc_dt::operator- ( const sc_signed &  u,
const sc_uint_base &  v 
)

sc_signed.cpp886 行で定義されています。

00887 { return operator-(u, (uint64) v); }

sc_signed sc_dt::operator- ( const sc_uint_base &  u,
const sc_unsigned &  v 
)

sc_signed.cpp882 行で定義されています。

00883 { return operator-((uint64) u, v); }

sc_signed sc_dt::operator- ( const sc_unsigned &  u,
const sc_uint_base &  v 
)

sc_signed.cpp878 行で定義されています。

00879 { return operator-(u, (uint64) v); }

sc_signed sc_dt::operator- ( const sc_int_base &  u,
const sc_signed &  v 
)

sc_signed.cpp649 行で定義されています。

00650 { return operator-((int64) u, v); }

sc_signed sc_dt::operator- ( const sc_signed &  u,
const sc_int_base &  v 
)

sc_signed.cpp645 行で定義されています。

00646 { return operator-(u, (int64) v); }

sc_signed sc_dt::operator- ( const sc_int_base &  u,
const sc_unsigned &  v 
)

sc_signed.cpp641 行で定義されています。

00642 { return operator-((int64) u, v); }

sc_signed sc_dt::operator- ( const sc_unsigned &  u,
const sc_int_base &  v 
)

sc_signed.cpp637 行で定義されています。

00638 { return operator-(u, (int64) v); }

sc_unsigned sc_dt::operator/ ( unsigned int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1418 行で定義されています。

01419     { return operator/((unsigned long) u,  v); }

sc_unsigned sc_dt::operator/ ( const sc_unsigned &  u,
unsigned int  v 
) [inline]

sc_unsigned.h1410 行で定義されています。

01411     { return operator/(u, (unsigned long) v); }

sc_unsigned sc_dt::operator/ ( unsigned long  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1129 行で定義されています。

01130 {
01131 
01132   small_type s = mul_signs(v.sgn, get_sign(u));
01133 
01134   if (s == SC_ZERO) {
01135     div_by_zero(v.sgn);  // case 1
01136     return sc_unsigned();  // case 2
01137 
01138   }
01139 
01140   CONVERT_LONG_2(u);
01141 
01142   // other cases
01143   return div_unsigned_friend(s, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, 
01144                              v.nbits, v.ndigits, v.digit);
01145   
01146 }

sc_unsigned sc_dt::operator/ ( const sc_unsigned &  u,
unsigned long  v 
)

sc_unsigned.cpp1109 行で定義されています。

01110 {
01111 
01112   small_type s = mul_signs(u.sgn, get_sign(v));
01113 
01114   if (s == SC_ZERO) {
01115     div_by_zero(v);  // case 1
01116     return sc_unsigned();  // case 2
01117   }
01118 
01119   CONVERT_LONG_2(v);
01120 
01121   // other cases
01122   return div_unsigned_friend(s, u.nbits, u.ndigits, u.digit, 
01123                              BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
01124   
01125 }

sc_unsigned sc_dt::operator/ ( uint64  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1088 行で定義されています。

01089 {
01090 
01091   small_type s = mul_signs(v.sgn, get_sign(u));
01092 
01093   if (s == SC_ZERO) {
01094     div_by_zero(v.sgn);  // case 1
01095     return sc_unsigned();  // case 2
01096 
01097   }
01098 
01099   CONVERT_INT64_2(u);
01100 
01101   // other cases
01102   return div_unsigned_friend(s, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, 
01103                              v.nbits, v.ndigits, v.digit);
01104   
01105 }

sc_unsigned sc_dt::operator/ ( const sc_unsigned &  u,
uint64  v 
)

sc_unsigned.cpp1068 行で定義されています。

01069 {
01070 
01071   small_type s = mul_signs(u.sgn, get_sign(v));
01072 
01073   if (s == SC_ZERO) {
01074     div_by_zero(v);  // case 1
01075     return sc_unsigned();  // case 2
01076   }
01077 
01078   CONVERT_INT64_2(v);
01079 
01080   // other cases
01081   return div_unsigned_friend(s, u.nbits, u.ndigits, u.digit, 
01082                              BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
01083   
01084 }

sc_unsigned sc_dt::operator/ ( const sc_unsigned &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1050 行で定義されています。

01051 {
01052 
01053   small_type s = mul_signs(u.sgn, v.sgn);
01054 
01055   if (s == SC_ZERO) {
01056     div_by_zero(v.sgn); // case 1
01057     return sc_unsigned();  // case 2
01058   }
01059 
01060   // other cases
01061   return div_unsigned_friend(s, u.nbits, u.ndigits, u.digit,
01062                              v.nbits, v.ndigits, v.digit);
01063 
01064 }

sc_unsigned sc_dt::operator/ ( const sc_uint_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp657 行で定義されています。

00658 { return operator/((uint64) u, v); }

sc_unsigned sc_dt::operator/ ( const sc_unsigned &  u,
const sc_uint_base &  v 
)

sc_unsigned.cpp654 行で定義されています。

00655 { return operator/(u, (uint64) v); }

sc_signed sc_dt::operator/ ( unsigned int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1587 行で定義されています。

01588     { return operator/((unsigned long) u, v); }

sc_signed sc_dt::operator/ ( int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1585 行で定義されています。

01586     { return operator/((long) u, v); }

sc_signed sc_dt::operator/ ( const sc_signed &  u,
unsigned int  v 
) [inline]

sc_signed.h1578 行で定義されています。

01579     { return operator/(u, (unsigned long) v); }

sc_signed sc_dt::operator/ ( const sc_signed &  u,
int  v 
) [inline]

sc_signed.h1576 行で定義されています。

01577     { return operator/(u, (long) v); }

sc_signed sc_dt::operator/ ( int  u,
const sc_unsigned &  v 
) [inline]

sc_signed.h1568 行で定義されています。

01569     { return operator/((long) u, v); }

sc_signed sc_dt::operator/ ( const sc_unsigned &  u,
int  v 
) [inline]

sc_signed.h1563 行で定義されています。

01564     { return operator/(u, (long) v); }

sc_signed sc_dt::operator/ ( unsigned long  u,
const sc_signed &  v 
)

sc_signed.cpp2350 行で定義されています。

02351 {
02352 
02353   small_type s = mul_signs(v.sgn, get_sign(u));
02354 
02355   if (s == SC_ZERO) {
02356     div_by_zero(v.sgn);  // case 1
02357     return sc_signed();  // case 2
02358 
02359   }
02360 
02361   CONVERT_LONG_2(u);
02362 
02363   // other cases
02364   return div_signed_friend(s, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, 
02365                            v.nbits, v.ndigits, v.digit);
02366   
02367 }

sc_signed sc_dt::operator/ ( const sc_signed &  u,
unsigned long  v 
)

sc_signed.cpp2330 行で定義されています。

02331 {
02332 
02333   small_type s = mul_signs(u.sgn, get_sign(v));
02334 
02335   if (s == SC_ZERO) {
02336     div_by_zero(v);  // case 1
02337     return sc_signed();  // case 2
02338   }
02339 
02340   CONVERT_LONG_2(v);
02341 
02342   // other cases
02343   return div_signed_friend(s, u.nbits, u.ndigits, u.digit, 
02344                            BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
02345   
02346 }

sc_signed sc_dt::operator/ ( long  u,
const sc_unsigned &  v 
)

sc_signed.cpp2310 行で定義されています。

02311 {
02312 
02313   small_type s = mul_signs(v.sgn, get_sign(u));
02314 
02315   if (s == SC_ZERO) {
02316     div_by_zero(v.sgn);  // case 1
02317     return sc_signed();  // case 2
02318   }
02319 
02320   CONVERT_LONG_2(u);
02321 
02322   // other cases
02323   return div_signed_friend(s, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, 
02324                            v.nbits, v.ndigits, v.digit);
02325   
02326 }

sc_signed sc_dt::operator/ ( const sc_unsigned &  u,
long  v 
)

sc_signed.cpp2290 行で定義されています。

02291 {
02292 
02293   small_type s = mul_signs(u.sgn, get_sign(v));
02294 
02295   if (s == SC_ZERO) {
02296     div_by_zero(v);  // case 1
02297     return sc_signed();  // case 2
02298   }
02299 
02300   CONVERT_LONG_2(v);
02301 
02302   // other cases
02303   return div_signed_friend(s, u.nbits, u.ndigits, u.digit, 
02304                            BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
02305   
02306 }

sc_signed sc_dt::operator/ ( long  u,
const sc_signed &  v 
)

sc_signed.cpp2270 行で定義されています。

02271 {
02272 
02273   small_type s = mul_signs(v.sgn, get_sign(u));
02274 
02275   if (s == SC_ZERO) {
02276     div_by_zero(v.sgn);  // case 1
02277     return sc_signed();  // case 2
02278   }
02279 
02280   CONVERT_LONG_2(u);
02281 
02282   // other cases
02283   return div_signed_friend(s, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, 
02284                            v.nbits, v.ndigits, v.digit);
02285   
02286 }

sc_signed sc_dt::operator/ ( const sc_signed &  u,
long  v 
)

sc_signed.cpp2250 行で定義されています。

02251 {
02252 
02253   small_type s = mul_signs(u.sgn, get_sign(v));
02254 
02255   if (s == SC_ZERO) {
02256     div_by_zero(v);  // case 1
02257     return sc_signed();  // case 2
02258   }
02259 
02260   CONVERT_LONG_2(v);
02261 
02262   // other cases
02263   return div_signed_friend(s, u.nbits, u.ndigits, u.digit, 
02264                            BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
02265   
02266 }

sc_signed sc_dt::operator/ ( uint64  u,
const sc_signed &  v 
)

sc_signed.cpp2229 行で定義されています。

02230 {
02231 
02232   small_type s = mul_signs(v.sgn, get_sign(u));
02233 
02234   if (s == SC_ZERO) {
02235     div_by_zero(v.sgn);  // case 1
02236     return sc_signed();  // case 2
02237 
02238   }
02239 
02240   CONVERT_INT64_2(u);
02241 
02242   // other cases
02243   return div_signed_friend(s, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, 
02244                            v.nbits, v.ndigits, v.digit);
02245   
02246 }

sc_signed sc_dt::operator/ ( const sc_signed &  u,
uint64  v 
)

sc_signed.cpp2209 行で定義されています。

02210 {
02211 
02212   small_type s = mul_signs(u.sgn, get_sign(v));
02213 
02214   if (s == SC_ZERO) {
02215     div_by_zero(v);  // case 1
02216     return sc_signed();  // case 2
02217   }
02218 
02219   CONVERT_INT64_2(v);
02220 
02221   // other cases
02222   return div_signed_friend(s, u.nbits, u.ndigits, u.digit, 
02223                            BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
02224   
02225 }

sc_signed sc_dt::operator/ ( int64  u,
const sc_unsigned &  v 
)

sc_signed.cpp2189 行で定義されています。

02190 {
02191 
02192   small_type s = mul_signs(v.sgn, get_sign(u));
02193 
02194   if (s == SC_ZERO) {
02195     div_by_zero(v.sgn);  // case 1
02196     return sc_signed();  // case 2
02197   }
02198 
02199   CONVERT_INT64_2(u);
02200 
02201   // other cases
02202   return div_signed_friend(s, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, 
02203                            v.nbits, v.ndigits, v.digit);
02204   
02205 }

sc_signed sc_dt::operator/ ( const sc_unsigned &  u,
int64  v 
)

sc_signed.cpp2169 行で定義されています。

02170 {
02171 
02172   small_type s = mul_signs(u.sgn, get_sign(v));
02173 
02174   if (s == SC_ZERO) {
02175     div_by_zero(v);  // case 1
02176     return sc_signed();  // case 2
02177   }
02178 
02179   CONVERT_INT64_2(v);
02180 
02181   // other cases
02182   return div_signed_friend(s, u.nbits, u.ndigits, u.digit, 
02183                            BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
02184   
02185 }

sc_signed sc_dt::operator/ ( int64  u,
const sc_signed &  v 
)

sc_signed.cpp2149 行で定義されています。

02150 {
02151 
02152   small_type s = mul_signs(v.sgn, get_sign(u));
02153 
02154   if (s == SC_ZERO) {
02155     div_by_zero(v.sgn);  // case 1
02156     return sc_signed();  // case 2
02157   }
02158 
02159   CONVERT_INT64_2(u);
02160 
02161   // other cases
02162   return div_signed_friend(s, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, 
02163                            v.nbits, v.ndigits, v.digit);
02164   
02165 }

sc_signed sc_dt::operator/ ( const sc_signed &  u,
int64  v 
)

sc_signed.cpp2129 行で定義されています。

02130 {
02131 
02132   small_type s = mul_signs(u.sgn, get_sign(v));
02133 
02134   if (s == SC_ZERO) {
02135     div_by_zero(v);  // case 1
02136     return sc_signed();  // case 2
02137   }
02138 
02139   CONVERT_INT64_2(v);
02140 
02141   // other cases
02142   return div_signed_friend(s, u.nbits, u.ndigits, u.digit, 
02143                            BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
02144   
02145 }

sc_signed sc_dt::operator/ ( const sc_signed &  u,
const sc_signed &  v 
)

sc_signed.cpp2111 行で定義されています。

02112 {
02113 
02114   small_type s = mul_signs(u.sgn, v.sgn);
02115 
02116   if (s == SC_ZERO) {
02117     div_by_zero(v.sgn); // case 1
02118     return sc_signed();  // case 2
02119   }
02120 
02121   // other cases
02122   return div_signed_friend(s, u.nbits, u.ndigits, u.digit,
02123                            v.nbits, v.ndigits, v.digit);
02124 
02125 }

sc_signed sc_dt::operator/ ( const sc_signed &  u,
const sc_unsigned &  v 
)

sc_signed.cpp2093 行で定義されています。

02094 {
02095 
02096   small_type s = mul_signs(u.sgn, v.sgn);
02097 
02098   if (s == SC_ZERO) {
02099     div_by_zero(v.sgn); // case 1
02100     return sc_signed();  // case 2
02101   }
02102 
02103   // other cases
02104   return div_signed_friend(s, u.nbits, u.ndigits, u.digit,
02105                            v.nbits, v.ndigits, v.digit);
02106 
02107 }

sc_signed sc_dt::operator/ ( const sc_unsigned &  u,
const sc_signed &  v 
)

sc_signed.cpp2075 行で定義されています。

02076 {
02077 
02078   small_type s = mul_signs(u.sgn, v.sgn);
02079 
02080   if (s == SC_ZERO) {
02081     div_by_zero(v.sgn); // case 1
02082     return sc_signed();  // case 2
02083   }
02084 
02085   // other cases
02086   return div_signed_friend(s, u.nbits, u.ndigits, u.digit,
02087                            v.nbits, v.ndigits, v.digit);
02088 
02089 }

sc_signed sc_dt::operator/ ( const sc_uint_base &  u,
const sc_signed &  v 
)

sc_signed.cpp916 行で定義されています。

00917 { return operator/((uint64) u, v); }

sc_signed sc_dt::operator/ ( const sc_signed &  u,
const sc_uint_base &  v 
)

sc_signed.cpp912 行で定義されています。

00913 { return operator/(u, (uint64) v); }

sc_signed sc_dt::operator/ ( const sc_int_base &  u,
const sc_signed &  v 
)

sc_signed.cpp691 行で定義されています。

00692 { return operator/((int64) u, v); }

sc_signed sc_dt::operator/ ( const sc_signed &  u,
const sc_int_base &  v 
)

sc_signed.cpp687 行で定義されています。

00688 { return operator/(u, (int64) v); }

sc_signed sc_dt::operator/ ( const sc_int_base &  u,
const sc_unsigned &  v 
)

sc_signed.cpp683 行で定義されています。

00684 { return operator / ( SCAST<int64>( u ), v ); }

sc_signed sc_dt::operator/ ( const sc_unsigned &  u,
const sc_int_base &  v 
)

sc_signed.cpp679 行で定義されています。

00680 { return operator / ( u, SCAST<int64>( v ) ); }

const sc_fxval_fast sc_dt::operator/ ( const sc_fxval_fast &  a,
const sc_fxval_fast &  b 
) [inline]

sc_fxval.h1724 行で定義されています。

01725 {
01726     SC_FXVAL_FAST_OBSERVER_READ_( a )
01727     SC_FXVAL_FAST_OBSERVER_READ_( b )
01728     return sc_fxval_fast( a.m_val / b.m_val );
01729 }

const sc_fxval sc_dt::operator/ ( const sc_fxval &  a,
const sc_fxval &  b 
) [inline]

sc_fxval.h972 行で定義されています。

00973 {
00974     SC_FXVAL_OBSERVER_READ_( a )
00975     SC_FXVAL_OBSERVER_READ_( b )
00976     return sc_fxval( sc_dt::div_scfx_rep( *a.m_rep, *b.m_rep ) );
00977 }

const sc_fxval_fast sc_dt::operator/ ( const sc_fxval_fast &  a,
const sc_fxnum_fast &  b 
) [inline]

sc_fxnum.h3892 行で定義されています。

03893 {
03894     SC_FXNUM_FAST_OBSERVER_READ_( b )
03895     return sc_fxval_fast( a.get_val() / b.m_val );
03896 }

const sc_fxval_fast sc_dt::operator/ ( const sc_fxnum_fast &  a,
const sc_fxval_fast &  b 
) [inline]

sc_fxnum.h3884 行で定義されています。

03885 {
03886     SC_FXNUM_FAST_OBSERVER_READ_( a )
03887     return sc_fxval_fast( a.m_val / b.get_val() );
03888 }

const sc_fxval_fast sc_dt::operator/ ( const sc_fxnum_fast &  a,
const sc_fxnum_fast &  b 
) [inline]

sc_fxnum.h3875 行で定義されています。

03876 {
03877     SC_FXNUM_FAST_OBSERVER_READ_( a )
03878     SC_FXNUM_FAST_OBSERVER_READ_( b )
03879     return sc_fxval_fast( a.m_val / b.m_val );
03880 }

const sc_fxval sc_dt::operator/ ( const sc_fxval &  a,
const sc_fxnum &  b 
) [inline]

sc_fxnum.h2773 行で定義されています。

02774 {
02775     SC_FXNUM_OBSERVER_READ_( b )
02776     return sc_fxval( sc_dt::div_scfx_rep( *a.get_rep(), *b.m_rep ) );
02777 }

const sc_fxval sc_dt::operator/ ( const sc_fxnum &  a,
const sc_fxval &  b 
) [inline]

sc_fxnum.h2765 行で定義されています。

02766 {
02767     SC_FXNUM_OBSERVER_READ_( a )
02768     return sc_fxval( sc_dt::div_scfx_rep( *a.m_rep, *b.get_rep() ) );
02769 }

const sc_fxval sc_dt::operator/ ( const sc_fxnum &  a,
const sc_fxnum &  b 
) [inline]

sc_fxnum.h2756 行で定義されています。

02757 {
02758     SC_FXNUM_OBSERVER_READ_( a )
02759     SC_FXNUM_OBSERVER_READ_( b )
02760     return sc_fxval( sc_dt::div_scfx_rep( *a.m_rep, *b.m_rep ) );
02761 }

bool sc_dt::operator< ( unsigned int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1750 行で定義されています。

01751     { return operator<((unsigned long) u,  v); }

bool sc_dt::operator< ( int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1748 行で定義されています。

01749     { return operator<((long) u,  v); }

bool sc_dt::operator< ( const sc_unsigned &  u,
unsigned int  v 
) [inline]

sc_unsigned.h1741 行で定義されています。

01742     { return operator<(u, (unsigned long) v); }

bool sc_dt::operator< ( const sc_unsigned &  u,
int  v 
) [inline]

sc_unsigned.h1739 行で定義されています。

01740     { return operator<(u, (long) v); }

bool sc_dt::operator< ( unsigned long  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1895 行で定義されています。

01896 {
01897   CONVERT_LONG(u);
01898   if (compare_unsigned(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
01899                        v.sgn, v.nbits, v.ndigits, v.digit) < 0)
01900     return true;
01901   return false;    
01902 }

bool sc_dt::operator< ( const sc_unsigned &  u,
unsigned long  v 
)

sc_unsigned.cpp1884 行で定義されています。

01885 {
01886   CONVERT_LONG(v);
01887   if (compare_unsigned(u.sgn, u.nbits, u.ndigits, u.digit, 
01888                        vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd) < 0)
01889     return true;
01890   return false;
01891 }

bool sc_dt::operator< ( long  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1871 行で定義されています。

01872 {
01873   if (u < 0)
01874     return true;
01875   CONVERT_LONG(u);
01876   if (compare_unsigned(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
01877                        v.sgn, v.nbits, v.ndigits, v.digit) < 0)
01878     return true;
01879   return false;
01880 }

bool sc_dt::operator< ( const sc_unsigned &  u,
long  v 
)

sc_unsigned.cpp1858 行で定義されています。

01859 {
01860   if (v < 0)
01861     return false;
01862   CONVERT_LONG(v);
01863   if (compare_unsigned(u.sgn, u.nbits, u.ndigits, u.digit, 
01864                        vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd) < 0)
01865     return true;
01866   return false;
01867 }

bool sc_dt::operator< ( uint64  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1847 行で定義されています。

01848 {
01849   CONVERT_INT64(u);
01850   if (compare_unsigned(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
01851                        v.sgn, v.nbits, v.ndigits, v.digit) < 0)
01852     return true;
01853   return false;    
01854 }

bool sc_dt::operator< ( const sc_unsigned &  u,
uint64  v 
)

sc_unsigned.cpp1836 行で定義されています。

01837 {
01838   CONVERT_INT64(v);
01839   if (compare_unsigned(u.sgn, u.nbits, u.ndigits, u.digit, 
01840                        vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd) < 0)
01841     return true;
01842   return false;
01843 }

bool sc_dt::operator< ( int64  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1823 行で定義されています。

01824 {
01825   if (u < 0)
01826     return true;
01827   CONVERT_INT64(u);
01828   if (compare_unsigned(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
01829                        v.sgn, v.nbits, v.ndigits, v.digit) < 0)
01830     return true;
01831   return false;
01832 }

bool sc_dt::operator< ( const sc_unsigned &  u,
int64  v 
)

sc_unsigned.cpp1810 行で定義されています。

01811 {
01812   if (v < 0)
01813     return false;
01814   CONVERT_INT64(v);
01815   if (compare_unsigned(u.sgn, u.nbits, u.ndigits, u.digit, 
01816                        vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd) < 0)
01817     return true;
01818   return false;
01819 }

bool sc_dt::operator< ( const sc_unsigned &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1774 行で定義されています。

01775 {
01776   if (&u == &v)
01777     return false;
01778   if (compare_unsigned(u.sgn, u.nbits, u.ndigits, u.digit, 
01779                        v.sgn, v.nbits, v.ndigits, v.digit) < 0)
01780     return true;
01781   return false;
01782 }

bool sc_dt::operator< ( const sc_uint_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp735 行で定義されています。

00736 { return operator<((uint64) u, v); }

bool sc_dt::operator< ( const sc_unsigned &  u,
const sc_uint_base &  v 
)

sc_unsigned.cpp732 行で定義されています。

00733 { return operator<(u, (uint64) v); }

bool sc_dt::operator< ( const sc_int_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp596 行で定義されています。

00597 { return operator<((int64) u, v); }

bool sc_dt::operator< ( const sc_unsigned &  u,
const sc_int_base &  v 
)

sc_unsigned.cpp593 行で定義されています。

00594 { return operator<(u, (int64) v); }

bool sc_dt::operator< ( const sc_uint_base &  a,
const sc_uint_base &  b 
) [inline]

sc_uint_base.h695 行で定義されています。

00696         { return a.m_val < b.m_val; }

bool sc_dt::operator< ( unsigned int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1978 行で定義されています。

01979     { return operator<((unsigned long) u, v); }

bool sc_dt::operator< ( int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1976 行で定義されています。

01977     { return operator<((long) u, v); }

bool sc_dt::operator< ( const sc_signed &  u,
unsigned int  v 
) [inline]

sc_signed.h1969 行で定義されています。

01970     { return operator<(u, (unsigned long) v); }

bool sc_dt::operator< ( const sc_signed &  u,
int  v 
) [inline]

sc_signed.h1967 行で定義されています。

01968     { return operator<(u, (long) v); }

bool sc_dt::operator< ( const sc_signed &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1798 行で定義されています。

01799 {
01800   if (u.sgn == SC_NEG)
01801     return true;
01802   if (compare_unsigned(u.sgn, u.nbits, u.ndigits, u.digit, 
01803                        v.sgn, v.nbits, v.ndigits, v.digit, 1, 0) < 0)
01804     return true;
01805   return false;
01806 }

bool sc_dt::operator< ( const sc_unsigned &  u,
const sc_signed &  v 
)

sc_unsigned.cpp1786 行で定義されています。

01787 {
01788   if (v.sgn == SC_NEG)
01789     return false;
01790   if (compare_unsigned(u.sgn, u.nbits, u.ndigits, u.digit, 
01791                        v.sgn, v.nbits, v.ndigits, v.digit, 0, 1) < 0)
01792     return true;
01793   return false;
01794 }

bool sc_dt::operator< ( unsigned long  u,
const sc_signed &  v 
)

sc_signed.cpp3967 行で定義されています。

03968 {
03969   CONVERT_LONG(u);
03970 
03971   if (us < v.sgn)
03972     return true;
03973 
03974   if (us > v.sgn)
03975     return false;
03976 
03977   // us == v.sgn
03978 
03979   if (us == SC_POS) {
03980 
03981     if (vec_skip_and_cmp(DIGITS_PER_LONG, ud, v.ndigits, v.digit) < 0)
03982       return true;
03983 
03984   }
03985 
03986   return false;    
03987 }

bool sc_dt::operator< ( const sc_signed &  u,
unsigned long  v 
)

sc_signed.cpp3943 行で定義されています。

03944 {
03945   CONVERT_LONG(v);
03946 
03947   if (u.sgn < vs)
03948     return true;
03949 
03950   if (u.sgn > vs)
03951     return false;
03952 
03953   // u.sgn == vs
03954 
03955   if (vs == SC_POS) {
03956 
03957     if (vec_skip_and_cmp(u.ndigits, u.digit, DIGITS_PER_LONG, vd) < 0)
03958       return true;
03959     
03960   }
03961 
03962   return false;
03963 }

bool sc_dt::operator< ( long  u,
const sc_signed &  v 
)

sc_signed.cpp3913 行で定義されています。

03914 {
03915   CONVERT_LONG(u);
03916 
03917   if (us < v.sgn)
03918     return true;
03919 
03920   if (us > v.sgn)
03921     return false;
03922 
03923   // us == v.sgn
03924 
03925   if (us == SC_POS) {
03926 
03927     if (vec_skip_and_cmp(DIGITS_PER_LONG, ud, v.ndigits, v.digit) < 0)
03928       return true;
03929 
03930   }
03931   else if (us == SC_NEG) {
03932 
03933     if (vec_skip_and_cmp(DIGITS_PER_LONG, ud, v.ndigits, v.digit) > 0)
03934       return true;
03935 
03936   }
03937 
03938   return false;
03939 }

bool sc_dt::operator< ( const sc_signed &  u,
long  v 
)

sc_signed.cpp3881 行で定義されています。

03882 {
03883 
03884   CONVERT_LONG(v);
03885 
03886   if (u.sgn < vs)
03887     return true;
03888 
03889   if (u.sgn > vs)
03890     return false;
03891 
03892   // u.sgn == vs
03893 
03894   if (vs == SC_POS) {
03895 
03896     if (vec_skip_and_cmp(u.ndigits, u.digit, DIGITS_PER_LONG, vd) < 0)
03897       return true;
03898 
03899   }
03900   else if (vs == SC_NEG) {
03901 
03902     if (vec_skip_and_cmp(u.ndigits, u.digit, DIGITS_PER_LONG, vd) > 0)
03903       return true;
03904 
03905   }
03906 
03907   return false;
03908 
03909 }

bool sc_dt::operator< ( uint64  u,
const sc_signed &  v 
)

sc_signed.cpp3855 行で定義されています。

03856 {
03857 
03858   CONVERT_INT64(u);
03859 
03860   if (us < v.sgn)
03861     return true;
03862 
03863   if (us > v.sgn)
03864     return false;
03865 
03866   // us == v.sgn
03867 
03868   if (us == SC_POS) {
03869 
03870     if (vec_skip_and_cmp(DIGITS_PER_INT64, ud, v.ndigits, v.digit) < 0)
03871       return true;
03872 
03873   }
03874 
03875   return false;    
03876 
03877 }

bool sc_dt::operator< ( const sc_signed &  u,
uint64  v 
)

sc_signed.cpp3829 行で定義されています。

03830 {
03831 
03832   CONVERT_INT64(v);
03833 
03834   if (u.sgn < vs)
03835     return true;
03836 
03837   if (u.sgn > vs)
03838     return false;
03839 
03840   // u.sgn == vs
03841 
03842   if (vs == SC_POS) {
03843 
03844     if (vec_skip_and_cmp(u.ndigits, u.digit, DIGITS_PER_INT64, vd) < 0)
03845       return true;
03846     
03847   }
03848 
03849   return false;
03850 
03851 }

bool sc_dt::operator< ( int64  u,
const sc_signed &  v 
)

sc_signed.cpp3797 行で定義されています。

03798 {
03799 
03800   CONVERT_INT64(u);
03801 
03802   if (us < v.sgn)
03803     return true;
03804 
03805   if (us > v.sgn)
03806     return false;
03807 
03808   // us == v.sgn
03809 
03810   if (us == SC_POS) {
03811 
03812     if (vec_skip_and_cmp(DIGITS_PER_INT64, ud, v.ndigits, v.digit) < 0)
03813       return true;
03814 
03815   }
03816   else if (us == SC_NEG) {
03817 
03818     if (vec_skip_and_cmp(DIGITS_PER_INT64, ud, v.ndigits, v.digit) > 0)
03819       return true;
03820 
03821   }
03822 
03823   return false;
03824 
03825 }

bool sc_dt::operator< ( const sc_signed &  u,
int64  v 
)

sc_signed.cpp3765 行で定義されています。

03766 {
03767 
03768   CONVERT_INT64(v);
03769 
03770   if (u.sgn < vs)
03771     return true;
03772 
03773   if (u.sgn > vs)
03774     return false;
03775 
03776   // u.sgn == vs
03777 
03778   if (vs == SC_POS) {
03779 
03780     if (vec_skip_and_cmp(u.ndigits, u.digit, DIGITS_PER_INT64, vd) < 0)
03781       return true;
03782 
03783   }
03784   else if (vs == SC_NEG) {
03785 
03786     if (vec_skip_and_cmp(u.ndigits, u.digit, DIGITS_PER_INT64, vd) > 0)
03787       return true;
03788 
03789   }
03790 
03791   return false;
03792 
03793 }

bool sc_dt::operator< ( const sc_signed &  u,
const sc_signed &  v 
)

sc_signed.cpp3732 行で定義されています。

03733 {
03734 
03735   if (u.sgn < v.sgn)
03736     return true;
03737 
03738   if (u.sgn > v.sgn)
03739     return false;
03740 
03741   // u.sgn == v.sgn
03742 
03743   if (&u == &v)
03744     return false;
03745 
03746   if (u.sgn == SC_POS) {
03747 
03748     if (vec_skip_and_cmp(u.ndigits, u.digit, v.ndigits, v.digit) < 0)
03749       return true;
03750 
03751   }
03752   else if (u.sgn == SC_NEG) {
03753 
03754     if (vec_skip_and_cmp(u.ndigits, u.digit, v.ndigits, v.digit) > 0)
03755       return true;
03756 
03757   }
03758 
03759   return false;
03760 
03761 }

bool sc_dt::operator< ( const sc_uint_base &  u,
const sc_signed &  v 
)

sc_signed.cpp1017 行で定義されています。

01018 { return operator<((uint64) u, v); }

bool sc_dt::operator< ( const sc_signed &  u,
const sc_uint_base &  v 
)

sc_signed.cpp1013 行で定義されています。

01014 { return operator<(u, (uint64) v); }

bool sc_dt::operator< ( const sc_int_base &  u,
const sc_signed &  v 
)

sc_signed.cpp824 行で定義されています。

00825 { return operator<((int64) u, v); }

bool sc_dt::operator< ( const sc_signed &  u,
const sc_int_base &  v 
)

sc_signed.cpp820 行で定義されています。

00821 { return operator<(u, (int64) v); }

bool sc_dt::operator< ( const sc_int_base &  a,
const sc_int_base &  b 
) [inline]

sc_int_base.h709 行で定義されています。

00710         { return a.m_val < b.m_val; }

systemc_ostream& sc_dt::operator<< ( systemc_ostream &  os,
const sc_string_old &  a 
) [inline]

sc_string.h323 行で定義されています。

00324 {
00325     a.print( os );
00326     return os;
00327 }

systemc_ostream& sc_dt::operator<< ( systemc_ostream &  os,
sc_numrep  numrep 
) [inline]

sc_string.h314 行で定義されています。

00315 {
00316     os << to_string( numrep );
00317     return os;
00318 }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
const sc_concatref &  v 
)

sc_concatref.h544 行で定義されています。

00545 { 
00546     return os << v.value();
00547 }

const sc_unsigned sc_dt::operator<< ( const sc_concatref &  target,
long  shift 
) [inline]

sc_concatref.h507 行で定義されています。

00508 {
00509     return target.value() << (int)shift;
00510 }

const sc_unsigned sc_dt::operator<< ( const sc_concatref &  target,
unsigned int  shift 
) [inline]

sc_concatref.h501 行で定義されています。

00503 {
00504     return target.value() << (int)shift;
00505 }

const sc_unsigned sc_dt::operator<< ( const sc_concatref &  target,
unsigned long  shift 
) [inline]

sc_concatref.h495 行で定義されています。

00497 {
00498     return target.value() << (int)shift;
00499 }

const sc_unsigned sc_dt::operator<< ( const sc_concatref &  target,
int64  shift 
) [inline]

sc_concatref.h490 行で定義されています。

00491 {
00492     return target.value() << (int)shift;
00493 }

const sc_unsigned sc_dt::operator<< ( const sc_concatref &  target,
uint64  shift 
) [inline]

sc_concatref.h485 行で定義されています。

00486 {
00487     return target.value() << (int)shift;
00488 }

std::ostream & sc_dt::operator<< ( ::std::ostream &  os,
const sc_unsigned &  a 
) [inline]

sc_unsigned.h2157 行で定義されています。

02158 {
02159     a.print( os );
02160     return os;
02161 }

std::ostream & sc_dt::operator<< ( ::std::ostream &  os,
const sc_unsigned_subref_r &  a 
) [inline]

sc_unsigned.h2091 行で定義されています。

02092 {
02093     a.print( os );
02094     return os;
02095 }

std::ostream & sc_dt::operator<< ( ::std::ostream &  os,
const sc_unsigned_bitref_r &  a 
) [inline]

sc_unsigned.h2008 行で定義されています。

02009 {
02010     a.print( os );
02011     return os;
02012 }

sc_unsigned sc_dt::operator<< ( const sc_unsigned &  u,
unsigned int  v 
) [inline]

sc_unsigned.h1615 行で定義されています。

01616     { return operator<<(u, (unsigned long) v); }

sc_unsigned sc_dt::operator<< ( const sc_unsigned &  u,
int  v 
) [inline]

sc_unsigned.h1613 行で定義されています。

01614     { return operator<<(u, (long) v); }

sc_unsigned sc_dt::operator<< ( const sc_unsigned &  u,
unsigned long  v 
)

sc_unsigned sc_dt::operator<< ( const sc_unsigned &  u,
long  v 
)

sc_unsigned sc_dt::operator<< ( const sc_unsigned &  u,
uint64  v 
)

sc_unsigned sc_dt::operator<< ( const sc_unsigned &  u,
int64  v 
)

sc_unsigned sc_dt::operator<< ( const sc_unsigned &  u,
const sc_unsigned &  v 
)

sc_unsigned sc_dt::operator<< ( const sc_unsigned &  u,
const sc_uint_base &  v 
)

sc_unsigned.cpp704 行で定義されています。

00705 { return operator<<(u, (uint64) v); }

sc_unsigned sc_dt::operator<< ( const sc_unsigned &  u,
const sc_int_base &  v 
)

sc_unsigned.cpp565 行で定義されています。

00566 { return operator<<(u, (int64) v); }

std::ostream & sc_dt::operator<< ( ::std::ostream &  os,
const sc_uint_base &  a 
) [inline]

sc_uint_base.h1320 行で定義されています。

01321 {
01322     a.print( os );
01323     return os;
01324 }

std::ostream & sc_dt::operator<< ( ::std::ostream &  os,
const sc_uint_subref_r &  a 
) [inline]

sc_uint_base.h1137 行で定義されています。

01138 {
01139     a.print( os );
01140     return os;
01141 }

std::ostream & sc_dt::operator<< ( ::std::ostream &  os,
const sc_uint_bitref_r &  a 
) [inline]

sc_uint_base.h886 行で定義されています。

00887 {
00888     a.print( os );
00889     return os;
00890 }

std::ostream & sc_dt::operator<< ( ::std::ostream &  os,
const sc_signed &  a 
) [inline]

sc_signed.h2351 行で定義されています。

02352 {
02353     a.print( os );
02354     return os;
02355 }

std::ostream & sc_dt::operator<< ( ::std::ostream &  os,
const sc_signed_subref_r &  a 
) [inline]

sc_signed.h2282 行で定義されています。

02283 {
02284     a.print( os );
02285     return os;
02286 }

std::ostream & sc_dt::operator<< ( ::std::ostream &  os,
const sc_signed_bitref_r &  a 
) [inline]

sc_signed.h2214 行で定義されています。

02215 {
02216     a.print( os );
02217     return os;
02218 }

sc_signed sc_dt::operator<< ( const sc_signed &  u,
unsigned int  v 
) [inline]

sc_signed.h1842 行で定義されています。

01843     { return operator<<(u, (unsigned long) v); }

sc_signed sc_dt::operator<< ( const sc_signed &  u,
int  v 
) [inline]

sc_signed.h1840 行で定義されています。

01841     { return operator<<(u, (long) v); }

sc_signed sc_dt::operator<< ( const sc_signed &  u,
unsigned long  v 
)

sc_signed sc_dt::operator<< ( const sc_signed &  u,
long  v 
)

sc_signed sc_dt::operator<< ( const sc_signed &  u,
uint64  v 
)

sc_signed sc_dt::operator<< ( const sc_signed &  u,
int64  v 
)

sc_signed sc_dt::operator<< ( const sc_signed &  u,
const sc_signed &  v 
)

sc_unsigned sc_dt::operator<< ( const sc_unsigned &  u,
const sc_signed &  v 
)

sc_unsigned.cpp1571 行で定義されています。

01572 {
01573   if ((v.sgn == SC_ZERO) || (v.sgn == SC_NEG))
01574     return sc_unsigned(u);
01575 
01576   return operator<<(u, v.to_ulong());
01577 }

CLASS_TYPE sc_dt::operator<< ( const CLASS_TYPE &  u,
unsigned long  v 
)

sc_signed.cpp6518 行で定義されています。

CLASS_TYPE sc_dt::operator<< ( const CLASS_TYPE &  u,
long  v 
)

sc_signed.cpp6509 行で定義されています。

CLASS_TYPE sc_dt::operator<< ( const CLASS_TYPE &  u,
uint64  v 
)

sc_signed.cpp6479 行で定義されています。

CLASS_TYPE sc_dt::operator<< ( const CLASS_TYPE &  u,
int64  v 
)

sc_signed.cpp6469 行で定義されています。

CLASS_TYPE sc_dt::operator<< ( const CLASS_TYPE &  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6424 行で定義されています。

sc_signed sc_dt::operator<< ( const sc_signed &  u,
const sc_unsigned &  v 
)

sc_signed.cpp3508 行で定義されています。

03509 {
03510   if (v.sgn == SC_ZERO)
03511     return sc_signed(u);
03512 
03513   return operator<<(u, v.to_ulong());
03514 }

sc_signed sc_dt::operator<< ( const sc_signed &  u,
const sc_uint_base &  v 
)

sc_signed.cpp977 行で定義されています。

00978 { return operator<<(u, (uint64) v); }

sc_signed sc_dt::operator<< ( const sc_signed &  u,
const sc_int_base &  v 
)

sc_signed.cpp784 行で定義されています。

00785 { return operator<<(u, (int64) v); }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
const sc_length_param &  a 
)

sc_length_param.h181 行で定義されています。

00182 {
00183     a.print( os );
00184     return os;
00185 }

std::ostream & sc_dt::operator<< ( ::std::ostream &  os,
const sc_int_base &  a 
) [inline]

sc_int_base.h1349 行で定義されています。

01350 {
01351     a.print( os );
01352     return os;
01353 }

std::ostream & sc_dt::operator<< ( ::std::ostream &  os,
const sc_int_subref_r &  a 
) [inline]

sc_int_base.h1166 行で定義されています。

01167 {
01168     a.print( os );
01169     return os;
01170 }

std::ostream & sc_dt::operator<< ( ::std::ostream &  os,
const sc_int_bitref_r &  a 
) [inline]

sc_int_base.h906 行で定義されています。

00907 {
00908     a.print( os );
00909     return os;
00910 }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
const sc_fxval_fast &  a 
)

sc_fxval.h2236 行で定義されています。

02237 {
02238     a.print( os );
02239     return os;
02240 }

const sc_fxval_fast sc_dt::operator<< ( const sc_fxval_fast &  a,
int  b 
) [inline]

sc_fxval.h1755 行で定義されています。

01756 {
01757     SC_FXVAL_FAST_OBSERVER_READ_( a )
01758     return sc_fxval_fast( a.m_val * scfx_pow2( b ) );
01759 }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
const sc_fxtype_params &  a 
)

sc_fxtype_params.h322 行で定義されています。

00323 {
00324     a.print( os );
00325     return os;
00326 }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
const sc_fxnum_fast &  a 
)

sc_fxnum.h4710 行で定義されています。

04711 {
04712     a.print( os );
04713     return os;
04714 }

const sc_fxval_fast sc_dt::operator<< ( const sc_fxnum_fast &  a,
int  b 
) [inline]

sc_fxnum.h3921 行で定義されています。

03922 {
03923     SC_FXNUM_FAST_OBSERVER_READ_( a )
03924     return sc_fxval_fast( a.m_val * scfx_pow2( b ) );
03925 }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
const sc_fxnum &  a 
)

sc_fxnum.h3631 行で定義されています。

03632 {
03633     a.print( os );
03634     return os;
03635 }

const sc_fxval sc_dt::operator<< ( const sc_fxnum &  a,
int  b 
) [inline]

sc_fxnum.h2804 行で定義されています。

02805 {
02806     SC_FXNUM_OBSERVER_READ_( a )
02807     return sc_fxval( sc_dt::lsh_scfx_rep( *a.m_rep, b ) );
02808 }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
const sc_fxnum_fast_subref &  a 
)

sc_fxnum.h2514 行で定義されています。

02515 {
02516     a.print( os );
02517     return os;
02518 }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
const sc_fxnum_subref &  a 
)

sc_fxnum.h2163 行で定義されています。

02164 {
02165     a.print( os );
02166     return os;
02167 }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
const sc_fxnum_fast_bitref &  a 
)

sc_fxnum.h1813 行で定義されています。

01814 {
01815     a.print( os );
01816     return os;
01817 }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
const sc_fxnum_bitref &  a 
)

sc_fxnum.h1591 行で定義されています。

01592 {
01593     a.print( os );
01594     return os;
01595 }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
sc_fmt  fmt 
)

sc_fxdefs.h182 行で定義されています。

00183 {
00184     return os << to_string( fmt );
00185 }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
sc_switch  sw 
)

sc_fxdefs.h158 行で定義されています。

00159 {
00160     return os << to_string( sw );
00161 }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
sc_o_mode  o_mode 
)

sc_fxdefs.h134 行で定義されています。

00135 {
00136     return os << to_string( o_mode );
00137 }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
sc_q_mode  q_mode 
)

sc_fxdefs.h105 行で定義されています。

00106 {
00107     return os << to_string( q_mode );
00108 }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
sc_enc  enc 
)

sc_fxdefs.h76 行で定義されています。

00077 {
00078     return os << to_string( enc );
00079 }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
const sc_fxcast_switch &  a 
)

sc_fxcast_switch.h157 行で定義されています。

00158 {
00159     a.print( os );
00160     return os;
00161 }

template<class X>
inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
const sc_proxy< X > &  a 
) [inline]

sc_proxy.h1510 行で定義されています。

01511 {
01512     a.print( os );
01513     return os;
01514 }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
const sc_logic &  a 
)

sc_logic.h581 行で定義されています。

00582 {
00583     a.print( os );
00584     return os;
00585 }

inline ::std::ostream& sc_dt::operator<< ( ::std::ostream &  os,
const sc_bit &  a 
)

sc_bit.h759 行で定義されています。

00760 {
00761     a.print( os );
00762     return os;
00763 }

bool sc_dt::operator<= ( unsigned int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1779 行で定義されています。

01780     { return operator<=((unsigned long) u,  v); }

bool sc_dt::operator<= ( int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1777 行で定義されています。

01778     { return operator<=((long) u,  v); }

bool sc_dt::operator<= ( unsigned long  u,
const sc_unsigned &  v 
)

bool sc_dt::operator<= ( long  u,
const sc_unsigned &  v 
)

bool sc_dt::operator<= ( uint64  u,
const sc_unsigned &  v 
)

bool sc_dt::operator<= ( int64  u,
const sc_unsigned &  v 
)

bool sc_dt::operator<= ( const sc_unsigned &  u,
unsigned int  v 
) [inline]

sc_unsigned.h1770 行で定義されています。

01771     { return operator<=(u, (unsigned long) v); }

bool sc_dt::operator<= ( const sc_unsigned &  u,
int  v 
) [inline]

sc_unsigned.h1768 行で定義されています。

01769     { return operator<=(u, (long) v); }

bool sc_dt::operator<= ( const sc_unsigned &  u,
unsigned long  v 
)

bool sc_dt::operator<= ( const sc_unsigned &  u,
long  v 
)

bool sc_dt::operator<= ( const sc_unsigned &  u,
uint64  v 
)

bool sc_dt::operator<= ( const sc_unsigned &  u,
int64  v 
)

bool sc_dt::operator<= ( const sc_unsigned &  u,
const sc_unsigned &  v 
)

bool sc_dt::operator<= ( const sc_uint_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp742 行で定義されています。

00743 { return operator<=((uint64) u, v); }

bool sc_dt::operator<= ( const sc_unsigned &  u,
const sc_uint_base &  v 
)

sc_unsigned.cpp739 行で定義されています。

00740 { return operator<=(u, (uint64) v); }

bool sc_dt::operator<= ( const sc_int_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp603 行で定義されています。

00604 { return operator<=((int64) u, v); }

bool sc_dt::operator<= ( const sc_unsigned &  u,
const sc_int_base &  v 
)

sc_unsigned.cpp600 行で定義されています。

00601 { return operator<=(u, (int64) v); }

bool sc_dt::operator<= ( const sc_uint_base &  a,
const sc_uint_base &  b 
) [inline]

sc_uint_base.h698 行で定義されています。

00699         { return a.m_val <= b.m_val; }

bool sc_dt::operator<= ( unsigned int  u,
const sc_signed &  v 
) [inline]

sc_signed.h2007 行で定義されています。

02008     { return operator<=((unsigned long) u, v); }

bool sc_dt::operator<= ( int  u,
const sc_signed &  v 
) [inline]

sc_signed.h2005 行で定義されています。

02006     { return operator<=((long) u, v); }

bool sc_dt::operator<= ( unsigned long  u,
const sc_signed &  v 
)

bool sc_dt::operator<= ( long  u,
const sc_signed &  v 
)

bool sc_dt::operator<= ( uint64  u,
const sc_signed &  v 
)

bool sc_dt::operator<= ( int64  u,
const sc_signed &  v 
)

bool sc_dt::operator<= ( const sc_signed &  u,
unsigned int  v 
) [inline]

sc_signed.h1998 行で定義されています。

01999     { return operator<=(u, (unsigned long) v); }

bool sc_dt::operator<= ( const sc_signed &  u,
int  v 
) [inline]

sc_signed.h1996 行で定義されています。

01997     { return operator<=(u, (long) v); }

bool sc_dt::operator<= ( const sc_signed &  u,
unsigned long  v 
)

bool sc_dt::operator<= ( const sc_signed &  u,
long  v 
)

bool sc_dt::operator<= ( const sc_signed &  u,
uint64  v 
)

bool sc_dt::operator<= ( const sc_signed &  u,
int64  v 
)

bool sc_dt::operator<= ( const sc_signed &  u,
const sc_signed &  v 
)

bool sc_dt::operator<= ( const sc_signed &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1917 行で定義されています。

01918 {
01919   return (operator<(u, v) || operator==(u, v));
01920 }

bool sc_dt::operator<= ( const sc_unsigned &  u,
const sc_signed &  v 
)

sc_unsigned.cpp1910 行で定義されています。

01911 {
01912   return (operator<(u, v) || operator==(u, v));
01913 }

bool sc_dt::operator<= ( unsigned long  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6882 行で定義されています。

bool sc_dt::operator<= ( const CLASS_TYPE &  u,
unsigned long  v 
)

sc_signed.cpp6875 行で定義されています。

bool sc_dt::operator<= ( long  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6868 行で定義されています。

bool sc_dt::operator<= ( const CLASS_TYPE &  u,
long  v 
)

sc_signed.cpp6861 行で定義されています。

bool sc_dt::operator<= ( uint64  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6854 行で定義されています。

bool sc_dt::operator<= ( const CLASS_TYPE &  u,
uint64  v 
)

sc_signed.cpp6847 行で定義されています。

bool sc_dt::operator<= ( int64  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6840 行で定義されています。

bool sc_dt::operator<= ( const CLASS_TYPE &  u,
int64  v 
)

sc_signed.cpp6833 行で定義されています。

bool sc_dt::operator<= ( const CLASS_TYPE &  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6826 行で定義されています。

bool sc_dt::operator<= ( const sc_uint_base &  u,
const sc_signed &  v 
)

sc_signed.cpp1026 行で定義されています。

01027 { return operator<=((uint64) u, v); }

bool sc_dt::operator<= ( const sc_signed &  u,
const sc_uint_base &  v 
)

sc_signed.cpp1022 行で定義されています。

01023 { return operator<=(u, (uint64) v); }

bool sc_dt::operator<= ( const sc_int_base &  u,
const sc_signed &  v 
)

sc_signed.cpp833 行で定義されています。

00834 { return operator<=((int64) u, v); }

bool sc_dt::operator<= ( const sc_signed &  u,
const sc_int_base &  v 
)

sc_signed.cpp829 行で定義されています。

00830 { return operator<=(u, (int64) v); }

bool sc_dt::operator<= ( const sc_int_base &  a,
const sc_int_base &  b 
) [inline]

sc_int_base.h712 行で定義されています。

00713         { return a.m_val <= b.m_val; }

bool sc_dt::operator== ( unsigned int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1692 行で定義されています。

01693     { return operator==((unsigned long) u,  v); }

bool sc_dt::operator== ( int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1690 行で定義されています。

01691     { return operator==((long) u,  v); }

bool sc_dt::operator== ( const sc_unsigned &  u,
unsigned int  v 
) [inline]

sc_unsigned.h1683 行で定義されています。

01684     { return operator==(u, (unsigned long) v); }

bool sc_dt::operator== ( const sc_unsigned &  u,
int  v 
) [inline]

sc_unsigned.h1681 行で定義されています。

01682     { return operator==(u, (long) v); }

bool sc_dt::operator== ( unsigned long  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1739 行で定義されています。

01740 {
01741   CONVERT_LONG(u);
01742   if (compare_unsigned(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
01743                        v.sgn, v.nbits, v.ndigits, v.digit) != 0)
01744     return false;
01745   return true;
01746 }

bool sc_dt::operator== ( const sc_unsigned &  u,
unsigned long  v 
)

sc_unsigned.cpp1728 行で定義されています。

01729 {
01730   CONVERT_LONG(v);
01731   if (compare_unsigned(u.sgn, u.nbits, u.ndigits, u.digit, 
01732                        vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd) != 0)
01733     return false;
01734   return true;
01735 }

bool sc_dt::operator== ( long  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1715 行で定義されています。

01716 {
01717   if (u < 0)
01718     return false;
01719   CONVERT_LONG(u);
01720   if (compare_unsigned(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
01721                        v.sgn, v.nbits, v.ndigits, v.digit) != 0)
01722     return false;
01723   return true;
01724 }

bool sc_dt::operator== ( const sc_unsigned &  u,
long  v 
)

sc_unsigned.cpp1702 行で定義されています。

01703 {
01704   if (v < 0)
01705     return false;
01706   CONVERT_LONG(v);
01707   if (compare_unsigned(u.sgn, u.nbits, u.ndigits, u.digit, 
01708                        vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd) != 0)
01709     return false;
01710   return true;
01711 }

bool sc_dt::operator== ( uint64  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1691 行で定義されています。

01692 {
01693   CONVERT_INT64(u);
01694   if (compare_unsigned(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
01695                        v.sgn, v.nbits, v.ndigits, v.digit) != 0)
01696     return false;
01697   return true;
01698 }

bool sc_dt::operator== ( const sc_unsigned &  u,
uint64  v 
)

sc_unsigned.cpp1680 行で定義されています。

01681 {
01682   CONVERT_INT64(v);
01683   if (compare_unsigned(u.sgn, u.nbits, u.ndigits, u.digit, 
01684                        vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd) != 0)
01685     return false;
01686   return true;
01687 }

bool sc_dt::operator== ( int64  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1667 行で定義されています。

01668 {
01669   if (u < 0)
01670     return false;
01671   CONVERT_INT64(u);
01672   if (compare_unsigned(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
01673                        v.sgn, v.nbits, v.ndigits, v.digit) != 0)
01674     return false;
01675   return true;
01676 }

bool sc_dt::operator== ( const sc_unsigned &  u,
int64  v 
)

sc_unsigned.cpp1654 行で定義されています。

01655 {
01656   if (v < 0)
01657     return false;
01658   CONVERT_INT64(v);
01659   if (compare_unsigned(u.sgn, u.nbits, u.ndigits, u.digit, 
01660                        vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd) != 0)
01661     return false;
01662   return true;
01663 }

bool sc_dt::operator== ( const sc_unsigned &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1618 行で定義されています。

01619 {
01620   if (&u == &v)
01621     return true;
01622   if (compare_unsigned(u.sgn, u.nbits, u.ndigits, u.digit, 
01623                        v.sgn, v.nbits, v.ndigits, v.digit) != 0)
01624     return false;
01625   return true;
01626 }

bool sc_dt::operator== ( const sc_uint_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp721 行で定義されています。

00722 { return operator==((uint64) u, v); }

bool sc_dt::operator== ( const sc_unsigned &  u,
const sc_uint_base &  v 
)

sc_unsigned.cpp718 行で定義されています。

00719 { return operator==(u, (uint64) v); }

bool sc_dt::operator== ( const sc_int_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp582 行で定義されています。

00583 { return operator==((int64) u, v); }

bool sc_dt::operator== ( const sc_unsigned &  u,
const sc_int_base &  v 
)

sc_unsigned.cpp579 行で定義されています。

00580 { return operator==(u, (int64) v); }

bool sc_dt::operator== ( const sc_uint_base &  a,
const sc_uint_base &  b 
) [inline]

sc_uint_base.h689 行で定義されています。

00690         { return a.m_val == b.m_val; }

bool sc_dt::operator== ( unsigned int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1920 行で定義されています。

01921     { return operator==((unsigned long) u, v); }

bool sc_dt::operator== ( int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1918 行で定義されています。

01919     { return operator==((long) u, v); }

bool sc_dt::operator== ( const sc_signed &  u,
unsigned int  v 
) [inline]

sc_signed.h1911 行で定義されています。

01912     { return operator==(u, (unsigned long) v); }

bool sc_dt::operator== ( const sc_signed &  u,
int  v 
) [inline]

sc_signed.h1909 行で定義されています。

01910     { return operator==(u, (long) v); }

bool sc_dt::operator== ( const sc_signed &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1642 行で定義されています。

01643 {
01644   if (u.sgn == SC_NEG)
01645     return false;
01646   if (compare_unsigned(u.sgn, u.nbits, u.ndigits, u.digit, 
01647                        v.sgn, v.nbits, v.ndigits, v.digit, 1, 0) != 0)
01648     return false;
01649   return true;
01650 }

bool sc_dt::operator== ( const sc_unsigned &  u,
const sc_signed &  v 
)

sc_unsigned.cpp1630 行で定義されています。

01631 {
01632   if (v.sgn == SC_NEG)
01633     return false;
01634   if (compare_unsigned(u.sgn, u.nbits, u.ndigits, u.digit, 
01635                        v.sgn, v.nbits, v.ndigits, v.digit, 0, 1) != 0)
01636     return false;
01637   return true;
01638 }

bool sc_dt::operator== ( unsigned long  u,
const sc_signed &  v 
)

sc_signed.cpp3704 行で定義されています。

03705 {
03706 
03707   CONVERT_LONG(u);
03708 
03709   if (us != v.sgn)
03710     return false;
03711 
03712   if (vec_skip_and_cmp(DIGITS_PER_LONG, ud, v.ndigits, v.digit) != 0)
03713     return false;
03714 
03715   return true;
03716   
03717 }

bool sc_dt::operator== ( const sc_signed &  u,
unsigned long  v 
)

sc_signed.cpp3687 行で定義されています。

03688 {
03689 
03690   CONVERT_LONG(v);
03691 
03692   if (u.sgn != vs)
03693     return false;
03694 
03695   if (vec_skip_and_cmp(u.ndigits, u.digit, DIGITS_PER_LONG, vd) != 0)
03696     return false;
03697 
03698   return true;
03699   
03700 }

bool sc_dt::operator== ( long  u,
const sc_signed &  v 
)

sc_signed.cpp3670 行で定義されています。

03671 {
03672 
03673   CONVERT_LONG(u);
03674 
03675   if (us != v.sgn)
03676     return false;
03677 
03678   if (vec_skip_and_cmp(DIGITS_PER_LONG, ud, v.ndigits, v.digit) != 0)
03679     return false;
03680 
03681   return true;
03682   
03683 }

bool sc_dt::operator== ( const sc_signed &  u,
long  v 
)

sc_signed.cpp3653 行で定義されています。

03654 {
03655 
03656   CONVERT_LONG(v);
03657 
03658   if (u.sgn != vs)
03659     return false;
03660 
03661   if (vec_skip_and_cmp(u.ndigits, u.digit, DIGITS_PER_LONG, vd) != 0)
03662     return false;
03663 
03664   return true;
03665   
03666 }

bool sc_dt::operator== ( uint64  u,
const sc_signed &  v 
)

sc_signed.cpp3636 行で定義されています。

03637 {
03638 
03639   CONVERT_INT64(u);
03640 
03641   if (us != v.sgn)
03642     return false;
03643 
03644   if (vec_skip_and_cmp(DIGITS_PER_INT64, ud, v.ndigits, v.digit) != 0)
03645     return false;
03646 
03647   return true;
03648   
03649 }

bool sc_dt::operator== ( const sc_signed &  u,
uint64  v 
)

sc_signed.cpp3619 行で定義されています。

03620 {
03621 
03622   CONVERT_INT64(v);
03623 
03624   if (u.sgn != vs)
03625     return false;
03626 
03627   if (vec_skip_and_cmp(u.ndigits, u.digit, DIGITS_PER_INT64, vd) != 0)
03628     return false;
03629 
03630   return true;
03631   
03632 }

bool sc_dt::operator== ( int64  u,
const sc_signed &  v 
)

sc_signed.cpp3602 行で定義されています。

03603 {
03604 
03605   CONVERT_INT64(u);
03606 
03607   if (us != v.sgn)
03608     return false;
03609 
03610   if (vec_skip_and_cmp(DIGITS_PER_INT64, ud, v.ndigits, v.digit) != 0)
03611     return false;
03612 
03613   return true;
03614   
03615 }

bool sc_dt::operator== ( const sc_signed &  u,
int64  v 
)

sc_signed.cpp3585 行で定義されています。

03586 {
03587 
03588   CONVERT_INT64(v);
03589 
03590   if (u.sgn != vs)
03591     return false;
03592 
03593   if (vec_skip_and_cmp(u.ndigits, u.digit, DIGITS_PER_INT64, vd) != 0)
03594     return false;
03595 
03596   return true;
03597   
03598 }

bool sc_dt::operator== ( const sc_signed &  u,
const sc_signed &  v 
)

sc_signed.cpp3567 行で定義されています。

03568 {
03569  
03570   if (u.sgn != v.sgn)
03571     return false;
03572 
03573   if (&u == &v)
03574     return true;
03575   
03576   if (vec_skip_and_cmp(u.ndigits, u.digit, v.ndigits, v.digit) != 0)
03577     return false;
03578 
03579   return true;
03580 
03581 }

bool sc_dt::operator== ( const sc_uint_base &  u,
const sc_signed &  v 
)

sc_signed.cpp999 行で定義されています。

01000 { return operator==((uint64) u, v); }

bool sc_dt::operator== ( const sc_signed &  u,
const sc_uint_base &  v 
)

sc_signed.cpp995 行で定義されています。

00996 { return operator==(u, (uint64) v); }

bool sc_dt::operator== ( const sc_int_base &  u,
const sc_signed &  v 
)

sc_signed.cpp806 行で定義されています。

00807 { return operator==((int64) u, v); }

bool sc_dt::operator== ( const sc_signed &  u,
const sc_int_base &  v 
)

sc_signed.cpp802 行で定義されています。

00803 { return operator==(u, (int64) v); }

bool sc_dt::operator== ( const sc_length_param &  a,
const sc_length_param &  b 
) [inline]

sc_length_param.h150 行で定義されています。

00151 {
00152     return ( a.m_len == b.m_len );
00153 }

bool sc_dt::operator== ( const sc_int_base &  a,
const sc_int_base &  b 
) [inline]

sc_int_base.h703 行で定義されています。

00704         { return a.m_val == b.m_val; }

bool sc_dt::operator== ( const sc_fxtype_params &  a,
const sc_fxtype_params &  b 
) [inline]

sc_fxtype_params.h222 行で定義されています。

00223 {
00224     return ( a.m_wl     == b.m_wl     &&
00225              a.m_iwl    == b.m_iwl    &&
00226              a.m_q_mode == b.m_q_mode &&
00227              a.m_o_mode == b.m_o_mode &&
00228              a.m_n_bits == b.m_n_bits );
00229 }

bool sc_dt::operator== ( const sc_fxcast_switch &  a,
const sc_fxcast_switch &  b 
) [inline]

sc_fxcast_switch.h141 行で定義されています。

00142 {
00143     return ( a.m_sw == b.m_sw );
00144 }

template<class X, class Y>
bool sc_dt::operator== ( const sc_proxy< X > &  px,
const sc_proxy< Y > &  py 
) [inline]

sc_lv_base.h789 行で定義されています。

00790 {
00791     const X& x = px.back_cast();
00792     const Y& y = py.back_cast();
00793     int x_len = x.length();
00794     int y_len = y.length();
00795     if( x_len != y_len ) {
00796         return false;
00797     }
00798     int sz = x.size();
00799     for( int i = 0; i < sz; ++ i ) {
00800         if( x.get_word( i ) != y.get_word( i ) ||
00801             x.get_cword( i ) != y.get_cword( i ) ) {
00802             return false;
00803         }
00804     }
00805     return true;
00806 }

bool sc_dt::operator== ( int  a,
const sc_logic &  b 
) [inline]

sc_logic.h492 行で定義されています。

00493         { return ( sc_logic( a ) == b ); }

bool sc_dt::operator== ( char  a,
const sc_logic &  b 
) [inline]

sc_logic.h489 行で定義されています。

00490         { return ( sc_logic( a ) == b ); }

bool sc_dt::operator== ( bool  a,
const sc_logic &  b 
) [inline]

sc_logic.h486 行で定義されています。

00487         { return ( sc_logic( a ) == b ); }

bool sc_dt::operator== ( sc_logic_value_t  a,
const sc_logic &  b 
) [inline]

sc_logic.h483 行で定義されています。

00484         { return ( sc_logic( a ) == b ); }

bool sc_dt::operator== ( const sc_logic &  a,
int  b 
) [inline]

sc_logic.h480 行で定義されています。

00481         { return ( a == sc_logic( b ) ); }

bool sc_dt::operator== ( const sc_logic &  a,
char  b 
) [inline]

sc_logic.h477 行で定義されています。

00478         { return ( a == sc_logic( b ) ); }

bool sc_dt::operator== ( const sc_logic &  a,
bool  b 
) [inline]

sc_logic.h474 行で定義されています。

00475         { return ( a == sc_logic( b ) ); }

bool sc_dt::operator== ( const sc_logic &  a,
sc_logic_value_t  b 
) [inline]

sc_logic.h471 行で定義されています。

00472         { return ( a == sc_logic( b ) ); }

bool sc_dt::operator== ( const sc_logic &  a,
const sc_logic &  b 
) [inline]

sc_logic.h468 行で定義されています。

00469         { return ( (int) a.m_val == b.m_val ); }

template<class T1, class T2>
bool sc_dt::operator== ( const sc_bitref_r< T1 > &  a,
const sc_bitref_r< T2 > &  b 
) [inline]

sc_bit_proxies.h1952 行で定義されています。

01953 {
01954     return ( (int) a.value() == b.value() );
01955 }

bool sc_dt::operator== ( char  a,
const sc_bit &  b 
) [inline]

sc_bit.h428 行で定義されています。

00429         { return ( sc_bit( a ) == b ); }

bool sc_dt::operator== ( bool  a,
const sc_bit &  b 
) [inline]

sc_bit.h425 行で定義されています。

00426         { return ( sc_bit( a ) == b ); }

bool sc_dt::operator== ( int  a,
const sc_bit &  b 
) [inline]

sc_bit.h422 行で定義されています。

00423         { return ( sc_bit( a ) == b ); }

bool sc_dt::operator== ( const sc_bit &  a,
char  b 
) [inline]

sc_bit.h419 行で定義されています。

00420         { return ( a == sc_bit( b ) ); }

bool sc_dt::operator== ( const sc_bit &  a,
bool  b 
) [inline]

sc_bit.h416 行で定義されています。

00417         { return ( a == sc_bit( b ) ); }

bool sc_dt::operator== ( const sc_bit &  a,
int  b 
) [inline]

sc_bit.h413 行で定義されています。

00414         { return ( a == sc_bit( b ) ); }

bool sc_dt::operator== ( const sc_bit &  a,
const sc_bit &  b 
) [inline]

sc_bit.h410 行で定義されています。

00411         { return ( a.m_val == b.m_val ); }

bool sc_dt::operator> ( unsigned int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1808 行で定義されています。

01809     { return operator>((unsigned long) u,  v); }

bool sc_dt::operator> ( int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1806 行で定義されています。

01807     { return operator>((long) u,  v); }

bool sc_dt::operator> ( unsigned long  u,
const sc_unsigned &  v 
)

bool sc_dt::operator> ( long  u,
const sc_unsigned &  v 
)

bool sc_dt::operator> ( uint64  u,
const sc_unsigned &  v 
)

bool sc_dt::operator> ( int64  u,
const sc_unsigned &  v 
)

bool sc_dt::operator> ( const sc_unsigned &  u,
unsigned int  v 
) [inline]

sc_unsigned.h1799 行で定義されています。

01800     { return operator>(u, (unsigned long) v); }

bool sc_dt::operator> ( const sc_unsigned &  u,
int  v 
) [inline]

sc_unsigned.h1797 行で定義されています。

01798     { return operator>(u, (long) v); }

bool sc_dt::operator> ( const sc_unsigned &  u,
unsigned long  v 
)

bool sc_dt::operator> ( const sc_unsigned &  u,
long  v 
)

bool sc_dt::operator> ( const sc_unsigned &  u,
uint64  v 
)

bool sc_dt::operator> ( const sc_unsigned &  u,
int64  v 
)

bool sc_dt::operator> ( const sc_unsigned &  u,
const sc_unsigned &  v 
)

bool sc_dt::operator> ( const sc_uint_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp749 行で定義されています。

00750 { return operator>((uint64) u, v); }

bool sc_dt::operator> ( const sc_unsigned &  u,
const sc_uint_base &  v 
)

sc_unsigned.cpp746 行で定義されています。

00747 { return operator>(u, (uint64) v); }

bool sc_dt::operator> ( const sc_int_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp610 行で定義されています。

00611 { return operator>((int64) u, v); }

bool sc_dt::operator> ( const sc_unsigned &  u,
const sc_int_base &  v 
)

sc_unsigned.cpp607 行で定義されています。

00608 { return operator>(u, (int64) v); }

bool sc_dt::operator> ( const sc_uint_base &  a,
const sc_uint_base &  b 
) [inline]

sc_uint_base.h701 行で定義されています。

00702         { return a.m_val > b.m_val; }

bool sc_dt::operator> ( unsigned int  u,
const sc_signed &  v 
) [inline]

sc_signed.h2036 行で定義されています。

02037     { return operator>((unsigned long) u, v); }

bool sc_dt::operator> ( int  u,
const sc_signed &  v 
) [inline]

sc_signed.h2034 行で定義されています。

02035     { return operator>((long) u, v); }

bool sc_dt::operator> ( unsigned long  u,
const sc_signed &  v 
)

bool sc_dt::operator> ( long  u,
const sc_signed &  v 
)

bool sc_dt::operator> ( uint64  u,
const sc_signed &  v 
)

bool sc_dt::operator> ( int64  u,
const sc_signed &  v 
)

bool sc_dt::operator> ( const sc_signed &  u,
unsigned int  v 
) [inline]

sc_signed.h2027 行で定義されています。

02028     { return operator>(u, (unsigned long) v); }

bool sc_dt::operator> ( const sc_signed &  u,
int  v 
) [inline]

sc_signed.h2025 行で定義されています。

02026     { return operator>(u, (long) v); }

bool sc_dt::operator> ( const sc_signed &  u,
unsigned long  v 
)

bool sc_dt::operator> ( const sc_signed &  u,
long  v 
)

bool sc_dt::operator> ( const sc_signed &  u,
uint64  v 
)

bool sc_dt::operator> ( const sc_signed &  u,
int64  v 
)

bool sc_dt::operator> ( const sc_signed &  u,
const sc_signed &  v 
)

bool sc_dt::operator> ( const sc_signed &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1937 行で定義されています。

01938 {
01939   return (! (operator<=(u, v)));
01940 }

bool sc_dt::operator> ( const sc_unsigned &  u,
const sc_signed &  v 
)

sc_unsigned.cpp1930 行で定義されています。

01931 {
01932   return (! (operator<=(u, v)));
01933 }

bool sc_dt::operator> ( unsigned long  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6949 行で定義されています。

bool sc_dt::operator> ( const CLASS_TYPE &  u,
unsigned long  v 
)

sc_signed.cpp6942 行で定義されています。

bool sc_dt::operator> ( long  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6935 行で定義されています。

bool sc_dt::operator> ( const CLASS_TYPE &  u,
long  v 
)

sc_signed.cpp6928 行で定義されています。

bool sc_dt::operator> ( uint64  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6921 行で定義されています。

bool sc_dt::operator> ( const CLASS_TYPE &  u,
uint64  v 
)

sc_signed.cpp6914 行で定義されています。

bool sc_dt::operator> ( int64  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6907 行で定義されています。

bool sc_dt::operator> ( const CLASS_TYPE &  u,
int64  v 
)

sc_signed.cpp6900 行で定義されています。

bool sc_dt::operator> ( const CLASS_TYPE &  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6893 行で定義されています。

bool sc_dt::operator> ( const sc_uint_base &  u,
const sc_signed &  v 
)

sc_signed.cpp1035 行で定義されています。

01036 { return operator>((uint64) u, v); }

bool sc_dt::operator> ( const sc_signed &  u,
const sc_uint_base &  v 
)

sc_signed.cpp1031 行で定義されています。

01032 { return operator>(u, (uint64) v); }

bool sc_dt::operator> ( const sc_int_base &  u,
const sc_signed &  v 
)

sc_signed.cpp842 行で定義されています。

00843 { return operator>((int64) u, v); }

bool sc_dt::operator> ( const sc_signed &  u,
const sc_int_base &  v 
)

sc_signed.cpp838 行で定義されています。

00839 { return operator>(u, (int64) v); }

bool sc_dt::operator> ( const sc_int_base &  a,
const sc_int_base &  b 
) [inline]

sc_int_base.h715 行で定義されています。

00716         { return a.m_val > b.m_val; }

bool sc_dt::operator>= ( unsigned int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1837 行で定義されています。

01838     { return operator>=((unsigned long) u,  v); }

bool sc_dt::operator>= ( int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1835 行で定義されています。

01836     { return operator>=((long) u,  v); }

bool sc_dt::operator>= ( unsigned long  u,
const sc_unsigned &  v 
)

bool sc_dt::operator>= ( long  u,
const sc_unsigned &  v 
)

bool sc_dt::operator>= ( uint64  u,
const sc_unsigned &  v 
)

bool sc_dt::operator>= ( int64  u,
const sc_unsigned &  v 
)

bool sc_dt::operator>= ( const sc_unsigned &  u,
unsigned int  v 
) [inline]

sc_unsigned.h1828 行で定義されています。

01829     { return operator>=(u, (unsigned long) v); }

bool sc_dt::operator>= ( const sc_unsigned &  u,
int  v 
) [inline]

sc_unsigned.h1826 行で定義されています。

01827     { return operator>=(u, (long) v); }

bool sc_dt::operator>= ( const sc_unsigned &  u,
unsigned long  v 
)

bool sc_dt::operator>= ( const sc_unsigned &  u,
long  v 
)

bool sc_dt::operator>= ( const sc_unsigned &  u,
uint64  v 
)

bool sc_dt::operator>= ( const sc_unsigned &  u,
int64  v 
)

bool sc_dt::operator>= ( const sc_unsigned &  u,
const sc_unsigned &  v 
)

bool sc_dt::operator>= ( const sc_uint_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp756 行で定義されています。

00757 { return operator>=((uint64) u, v); }

bool sc_dt::operator>= ( const sc_unsigned &  u,
const sc_uint_base &  v 
)

sc_unsigned.cpp753 行で定義されています。

00754 { return operator>=(u, (uint64) v); }

bool sc_dt::operator>= ( const sc_int_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp617 行で定義されています。

00618 { return operator>=((int64) u, v); }

bool sc_dt::operator>= ( const sc_unsigned &  u,
const sc_int_base &  v 
)

sc_unsigned.cpp614 行で定義されています。

00615 { return operator>=(u, (int64) v); }

bool sc_dt::operator>= ( const sc_uint_base &  a,
const sc_uint_base &  b 
) [inline]

sc_uint_base.h704 行で定義されています。

00705         { return a.m_val >= b.m_val; }

bool sc_dt::operator>= ( unsigned int  u,
const sc_signed &  v 
) [inline]

sc_signed.h2065 行で定義されています。

02066     { return operator>=((unsigned long) u, v); }

bool sc_dt::operator>= ( int  u,
const sc_signed &  v 
) [inline]

sc_signed.h2063 行で定義されています。

02064     { return operator>=((long) u, v); }

bool sc_dt::operator>= ( unsigned long  u,
const sc_signed &  v 
)

bool sc_dt::operator>= ( long  u,
const sc_signed &  v 
)

bool sc_dt::operator>= ( uint64  u,
const sc_signed &  v 
)

bool sc_dt::operator>= ( int64  u,
const sc_signed &  v 
)

bool sc_dt::operator>= ( const sc_signed &  u,
unsigned int  v 
) [inline]

sc_signed.h2056 行で定義されています。

02057     { return operator>=(u, (unsigned long) v); }

bool sc_dt::operator>= ( const sc_signed &  u,
int  v 
) [inline]

sc_signed.h2054 行で定義されています。

02055     { return operator>=(u, (long) v); }

bool sc_dt::operator>= ( const sc_signed &  u,
unsigned long  v 
)

bool sc_dt::operator>= ( const sc_signed &  u,
long  v 
)

bool sc_dt::operator>= ( const sc_signed &  u,
uint64  v 
)

bool sc_dt::operator>= ( const sc_signed &  u,
int64  v 
)

bool sc_dt::operator>= ( const sc_signed &  u,
const sc_signed &  v 
)

bool sc_dt::operator>= ( const sc_signed &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1957 行で定義されています。

01958 {
01959   return (! (operator<(u, v)));
01960 }

bool sc_dt::operator>= ( const sc_unsigned &  u,
const sc_signed &  v 
)

sc_unsigned.cpp1950 行で定義されています。

01951 {
01952   return (! (operator<(u, v)));
01953 }

bool sc_dt::operator>= ( unsigned long  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp7016 行で定義されています。

bool sc_dt::operator>= ( const CLASS_TYPE &  u,
unsigned long  v 
)

sc_signed.cpp7009 行で定義されています。

bool sc_dt::operator>= ( long  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp7002 行で定義されています。

bool sc_dt::operator>= ( const CLASS_TYPE &  u,
long  v 
)

sc_signed.cpp6995 行で定義されています。

bool sc_dt::operator>= ( uint64  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6988 行で定義されています。

bool sc_dt::operator>= ( const CLASS_TYPE &  u,
uint64  v 
)

sc_signed.cpp6981 行で定義されています。

bool sc_dt::operator>= ( int64  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6974 行で定義されています。

bool sc_dt::operator>= ( const CLASS_TYPE &  u,
int64  v 
)

sc_signed.cpp6967 行で定義されています。

bool sc_dt::operator>= ( const CLASS_TYPE &  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6960 行で定義されています。

bool sc_dt::operator>= ( const sc_uint_base &  u,
const sc_signed &  v 
)

sc_signed.cpp1044 行で定義されています。

01045 { return operator>=((uint64) u, v); }

bool sc_dt::operator>= ( const sc_signed &  u,
const sc_uint_base &  v 
)

sc_signed.cpp1040 行で定義されています。

01041 { return operator>=(u, (uint64) v); }

bool sc_dt::operator>= ( const sc_int_base &  u,
const sc_signed &  v 
)

sc_signed.cpp851 行で定義されています。

00852 { return operator>=((int64) u, v); }

bool sc_dt::operator>= ( const sc_signed &  u,
const sc_int_base &  v 
)

sc_signed.cpp847 行で定義されています。

00848 { return operator>=(u, (int64) v); }

bool sc_dt::operator>= ( const sc_int_base &  a,
const sc_int_base &  b 
) [inline]

sc_int_base.h718 行で定義されています。

00719         { return a.m_val >= b.m_val; }

::std::istream& sc_dt::operator>> ( ::std::istream &  is,
sc_string_old &  s 
)

sc_string.cpp638 行で定義されています。

00639 {
00640     if( s.rep->ref_count > 1 ) {
00641         -- s.rep->ref_count;
00642         s.rep = new sc_string_rep;
00643     }
00644 
00645     int i = 0;
00646     char* p = s.rep->str;
00647     char c;
00648 
00649     // skip white spaces
00650     while( is.get( c ) && isspace( c ) )
00651         ;
00652 
00653     for( ; is.good() && ! isspace( c ); is.get( c ) ) {
00654         if( i > s.rep->alloc - 2 ) {
00655             s.rep->str[i] = '\0';
00656             s.rep->resize( (int) (s.rep->alloc * 1.5) );
00657             p = s.rep->str + i;
00658         }
00659         *p ++ = c;
00660         i ++;
00661     }
00662     *p = '\0';
00663 
00664     return is;
00665 }

inline ::std::istream& sc_dt::operator>> ( ::std::istream &  is,
sc_concatref &  a 
)

sc_concatref.h551 行で定義されています。

00552 {
00553     sc_unsigned temp(a.concat_length(0));   
00554     temp.scan( is );
00555     a = temp;
00556     return is;
00557 }

const sc_unsigned sc_dt::operator>> ( const sc_concatref &  target,
long  shift 
) [inline]

sc_concatref.h534 行で定義されています。

00535 {
00536     return target.value() >> (int)shift;
00537 }

const sc_unsigned sc_dt::operator>> ( const sc_concatref &  target,
unsigned int  shift 
) [inline]

sc_concatref.h528 行で定義されています。

00530 {
00531     return target.value() >> (int)shift;
00532 }

const sc_unsigned sc_dt::operator>> ( const sc_concatref &  target,
unsigned long  shift 
) [inline]

sc_concatref.h522 行で定義されています。

00524 {
00525     return target.value() >> (int)shift;
00526 }

const sc_unsigned sc_dt::operator>> ( const sc_concatref &  target,
int64  shift 
) [inline]

sc_concatref.h517 行で定義されています。

00518 {
00519     return target.value() >> (int)shift;
00520 }

const sc_unsigned sc_dt::operator>> ( const sc_concatref &  target,
uint64  shift 
) [inline]

sc_concatref.h512 行で定義されています。

00513 {
00514     return target.value() >> (int)shift;
00515 }

std::istream & sc_dt::operator>> ( ::std::istream &  is,
sc_unsigned &  a 
) [inline]

sc_unsigned.h2165 行で定義されています。

02166 {
02167     a.scan( is );
02168     return is;
02169 }

std::istream & sc_dt::operator>> ( ::std::istream &  is,
sc_unsigned_subref &  a 
) [inline]

sc_unsigned.h2117 行で定義されています。

02118 {
02119     a.scan( is );
02120     return is;
02121 }

std::istream & sc_dt::operator>> ( ::std::istream &  is,
sc_unsigned_bitref &  a 
) [inline]

sc_unsigned.h2032 行で定義されています。

02033 {
02034     a.scan( is );
02035     return is;
02036 }

sc_unsigned sc_dt::operator>> ( const sc_unsigned &  u,
unsigned int  v 
) [inline]

sc_unsigned.h1646 行で定義されています。

01647     { return operator>>(u, (unsigned long) v); }

sc_unsigned sc_dt::operator>> ( const sc_unsigned &  u,
int  v 
) [inline]

sc_unsigned.h1644 行で定義されています。

01645     { return operator>>(u, (long) v); }

sc_unsigned sc_dt::operator>> ( const sc_unsigned &  u,
unsigned long  v 
)

sc_unsigned sc_dt::operator>> ( const sc_unsigned &  u,
long  v 
)

sc_unsigned sc_dt::operator>> ( const sc_unsigned &  u,
uint64  v 
)

sc_unsigned sc_dt::operator>> ( const sc_unsigned &  u,
int64  v 
)

sc_unsigned sc_dt::operator>> ( const sc_unsigned &  u,
const sc_unsigned &  v 
)

sc_unsigned sc_dt::operator>> ( const sc_unsigned &  u,
const sc_uint_base &  v 
)

sc_unsigned.cpp711 行で定義されています。

00712 { return operator>>(u, (uint64) v); }

sc_unsigned sc_dt::operator>> ( const sc_unsigned &  u,
const sc_int_base &  v 
)

sc_unsigned.cpp572 行で定義されています。

00573 { return operator>>(u, (int64) v); }

std::istream & sc_dt::operator>> ( ::std::istream &  is,
sc_uint_base &  a 
) [inline]

sc_uint_base.h1328 行で定義されています。

01329 {
01330     a.scan( is );
01331     return is;
01332 }

std::istream & sc_dt::operator>> ( ::std::istream &  is,
sc_uint_subref &  a 
) [inline]

sc_uint_base.h1171 行で定義されています。

01172 {
01173     a.scan( is );
01174     return is;
01175 }

std::istream & sc_dt::operator>> ( ::std::istream &  is,
sc_uint_bitref &  a 
) [inline]

sc_uint_base.h960 行で定義されています。

00961 {
00962     a.scan( is );
00963     return is;
00964 }

std::istream & sc_dt::operator>> ( ::std::istream &  is,
sc_signed &  a 
) [inline]

sc_signed.h2359 行で定義されています。

02360 {
02361     a.scan( is );
02362     return is;
02363 }

std::istream & sc_dt::operator>> ( ::std::istream &  is,
sc_signed_subref &  a 
) [inline]

sc_signed.h2310 行で定義されています。

02311 {
02312     a.scan( is );
02313     return is;
02314 }

std::istream & sc_dt::operator>> ( ::std::istream &  is,
sc_signed_bitref &  a 
) [inline]

sc_signed.h2223 行で定義されています。

02224 {
02225     a.scan( is );
02226     return is;
02227 }

sc_signed sc_dt::operator>> ( const sc_signed &  u,
unsigned int  v 
) [inline]

sc_signed.h1873 行で定義されています。

01874     { return operator>>(u, (unsigned long) v); }

sc_signed sc_dt::operator>> ( const sc_signed &  u,
int  v 
) [inline]

sc_signed.h1871 行で定義されています。

01872     { return operator>>(u, (long) v); }

sc_signed sc_dt::operator>> ( const sc_signed &  u,
unsigned long  v 
)

sc_signed sc_dt::operator>> ( const sc_signed &  u,
long  v 
)

sc_signed sc_dt::operator>> ( const sc_signed &  u,
uint64  v 
)

sc_signed sc_dt::operator>> ( const sc_signed &  u,
int64  v 
)

sc_signed sc_dt::operator>> ( const sc_signed &  u,
const sc_signed &  v 
)

sc_unsigned sc_dt::operator>> ( const sc_unsigned &  u,
const sc_signed &  v 
)

sc_unsigned.cpp1588 行で定義されています。

01589 {
01590 
01591   if ((v.sgn == SC_ZERO) || (v.sgn == SC_NEG))
01592     return sc_unsigned(u);
01593 
01594   return operator>>(u, v.to_long());
01595 
01596 }

CLASS_TYPE sc_dt::operator>> ( const CLASS_TYPE &  u,
unsigned long  v 
)

sc_signed.cpp6676 行で定義されています。

CLASS_TYPE sc_dt::operator>> ( const CLASS_TYPE &  u,
long  v 
)

sc_signed.cpp6666 行で定義されています。

CLASS_TYPE sc_dt::operator>> ( const CLASS_TYPE &  u,
uint64  v 
)

sc_signed.cpp6637 行で定義されています。

CLASS_TYPE sc_dt::operator>> ( const CLASS_TYPE &  u,
int64  v 
)

sc_signed.cpp6627 行で定義されています。

CLASS_TYPE sc_dt::operator>> ( const CLASS_TYPE &  u,
const CLASS_TYPE &  v 
)

sc_signed.cpp6582 行で定義されています。

sc_signed sc_dt::operator>> ( const sc_signed &  u,
const sc_unsigned &  v 
)

sc_signed.cpp3525 行で定義されています。

03526 {
03527 
03528   if (v.sgn == SC_ZERO)
03529     return sc_signed(u);
03530 
03531   return operator>>(u, v.to_ulong());
03532 
03533 }

sc_signed sc_dt::operator>> ( const sc_signed &  u,
const sc_uint_base &  v 
)

sc_signed.cpp986 行で定義されています。

00987 { return operator>>(u, (uint64) v); }

sc_signed sc_dt::operator>> ( const sc_signed &  u,
const sc_int_base &  v 
)

sc_signed.cpp793 行で定義されています。

00794 { return operator>>(u, (int64) v); }

std::istream & sc_dt::operator>> ( ::std::istream &  is,
sc_int_base &  a 
) [inline]

sc_int_base.h1357 行で定義されています。

01358 {
01359     a.scan( is );
01360     return is;
01361 }

std::istream & sc_dt::operator>> ( ::std::istream &  is,
sc_int_subref &  a 
) [inline]

sc_int_base.h1200 行で定義されています。

01201 {
01202     a.scan( is );
01203     return is;
01204 }

std::istream & sc_dt::operator>> ( ::std::istream &  is,
sc_int_bitref &  a 
) [inline]

sc_int_base.h986 行で定義されています。

00987 {
00988     a.scan( is );
00989     return is;
00990 }

inline ::std::istream& sc_dt::operator>> ( ::std::istream &  is,
sc_fxval_fast &  a 
)

sc_fxval.h2244 行で定義されています。

02245 {
02246     a.scan( is );
02247     return is;
02248 }

const sc_fxval_fast sc_dt::operator>> ( const sc_fxval_fast &  a,
int  b 
) [inline]

sc_fxval.h1763 行で定義されています。

01764 {
01765     SC_FXVAL_FAST_OBSERVER_READ_( a )
01766     return sc_fxval_fast( a.m_val * scfx_pow2( -b ) );
01767 }

inline ::std::istream& sc_dt::operator>> ( ::std::istream &  is,
sc_fxnum_fast &  a 
)

sc_fxnum.h4718 行で定義されています。

04719 {
04720     a.scan( is );
04721     return is;
04722 }

const sc_fxval_fast sc_dt::operator>> ( const sc_fxnum_fast &  a,
int  b 
) [inline]

sc_fxnum.h3929 行で定義されています。

03930 {
03931     SC_FXNUM_FAST_OBSERVER_READ_( a )
03932     return sc_fxval_fast( a.m_val * scfx_pow2( -b ) );
03933 }

inline ::std::istream& sc_dt::operator>> ( ::std::istream &  is,
sc_fxnum &  a 
)

sc_fxnum.h3639 行で定義されています。

03640 {
03641     a.scan( is );
03642     return is;
03643 }

const sc_fxval sc_dt::operator>> ( const sc_fxnum &  a,
int  b 
) [inline]

sc_fxnum.h2812 行で定義されています。

02813 {
02814     SC_FXNUM_OBSERVER_READ_( a )
02815     return sc_fxval( sc_dt::rsh_scfx_rep( *a.m_rep, b ) );
02816 }

inline ::std::istream& sc_dt::operator>> ( ::std::istream &  is,
sc_fxnum_fast_subref &  a 
)

sc_fxnum.h2522 行で定義されています。

02523 {
02524     a.scan( is );
02525     return is;
02526 }

inline ::std::istream& sc_dt::operator>> ( ::std::istream &  is,
sc_fxnum_subref &  a 
)

sc_fxnum.h2171 行で定義されています。

02172 {
02173     a.scan( is );
02174     return is;
02175 }

inline ::std::istream& sc_dt::operator>> ( ::std::istream &  is,
sc_fxnum_fast_bitref &  a 
)

sc_fxnum.h1821 行で定義されています。

01822 {
01823     a.scan( is );
01824     return is;
01825 }

inline ::std::istream& sc_dt::operator>> ( ::std::istream &  is,
sc_fxnum_bitref &  a 
)

sc_fxnum.h1599 行で定義されています。

01600 {
01601     a.scan( is );
01602     return is;
01603 }

template<class X>
inline ::std::istream& sc_dt::operator>> ( ::std::istream &  is,
sc_proxy< X > &  a 
) [inline]

sc_proxy.h1519 行で定義されています。

01520 {
01521     a.scan( is );
01522     return is;
01523 }

inline ::std::istream& sc_dt::operator>> ( ::std::istream &  is,
sc_logic &  a 
)

sc_logic.h589 行で定義されています。

00590 {
00591     a.scan( is );
00592     return is;
00593 }

template<class X, class Y>
inline ::std::istream& sc_dt::operator>> ( ::std::istream &  is,
sc_concref< X, Y >  a 
) [inline]

sc_bit_proxies.h3545 行で定義されています。

03546 {
03547     a.scan( is );
03548     return is;
03549 }

template<class X>
inline ::std::istream& sc_dt::operator>> ( ::std::istream &  is,
sc_subref< X >  a 
) [inline]

sc_bit_proxies.h3000 行で定義されています。

03001 {
03002     a.scan( is );
03003     return is;
03004 }

template<class X>
inline ::std::istream& sc_dt::operator>> ( ::std::istream &  is,
sc_bitref< X >  a 
) [inline]

sc_bit_proxies.h2494 行で定義されています。

02495 {
02496     a.scan( is );
02497     return is;
02498 }

template<class T1, class T2>
inline ::std::istream& sc_dt::operator>> ( ::std::istream &  ,
sc_concref< T1, T2 >   
) [inline]

template<class T>
inline ::std::istream& sc_dt::operator>> ( ::std::istream &  ,
sc_subref< T >   
) [inline]

template<class T>
::std::istream& sc_dt::operator>> ( ::std::istream &  ,
sc_bitref< T >   
) [inline]

inline ::std::istream& sc_dt::operator>> ( ::std::istream &  is,
sc_bit &  a 
)

sc_bit.h767 行で定義されています。

00768 {
00769     a.scan( is );
00770     return is;
00771 }

sc_unsigned sc_dt::operator^ ( unsigned int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1580 行で定義されています。

01581     { return operator^((unsigned long) u,  v); }

sc_unsigned sc_dt::operator^ ( const sc_unsigned &  u,
unsigned int  v 
) [inline]

sc_unsigned.h1572 行で定義されています。

01573     { return operator^(u, (unsigned long) v); }

sc_unsigned sc_dt::operator^ ( unsigned long  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1539 行で定義されています。

01540 {
01541   if (u == 0)
01542     return sc_unsigned(v);
01543 
01544   CONVERT_LONG(u);
01545 
01546   if (v.sgn == SC_ZERO)
01547     return sc_unsigned(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, false);
01548 
01549   // other cases
01550   return xor_unsigned_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
01551                              v.sgn, v.nbits, v.ndigits, v.digit);
01552 
01553 }

sc_unsigned sc_dt::operator^ ( const sc_unsigned &  u,
unsigned long  v 
)

sc_unsigned.cpp1521 行で定義されています。

01522 {
01523 
01524   if (v == 0)  // case 1
01525     return sc_unsigned(u);
01526 
01527   CONVERT_LONG(v);
01528 
01529   if (u.sgn == SC_ZERO)  // case 2
01530     return sc_unsigned(vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd, false);
01531 
01532   // other cases
01533   return xor_unsigned_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01534                              vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
01535 
01536 }

sc_unsigned sc_dt::operator^ ( uint64  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1503 行で定義されています。

01504 {
01505   if (u == 0)
01506     return sc_unsigned(v);
01507 
01508   CONVERT_INT64(u);
01509 
01510   if (v.sgn == SC_ZERO)
01511     return sc_unsigned(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, false);
01512 
01513   // other cases
01514   return xor_unsigned_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
01515                              v.sgn, v.nbits, v.ndigits, v.digit);
01516 
01517 }

sc_unsigned sc_dt::operator^ ( const sc_unsigned &  u,
uint64  v 
)

sc_unsigned.cpp1485 行で定義されています。

01486 {
01487 
01488   if (v == 0)  // case 1
01489     return sc_unsigned(u);
01490 
01491   CONVERT_INT64(v);
01492 
01493   if (u.sgn == SC_ZERO)  // case 2
01494     return sc_unsigned(vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd, false);
01495 
01496   // other cases
01497   return xor_unsigned_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01498                              vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
01499 
01500 }

sc_unsigned sc_dt::operator^ ( const sc_unsigned &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1468 行で定義されています。

01469 {
01470 
01471   if (v.sgn == SC_ZERO)  // case 1
01472     return sc_unsigned(u);
01473 
01474   if (u.sgn == SC_ZERO)  // case 2
01475     return sc_unsigned(v);
01476 
01477   // other cases
01478   return xor_unsigned_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01479                              v.sgn, v.nbits, v.ndigits, v.digit);
01480 
01481 }

sc_unsigned sc_dt::operator^ ( const sc_uint_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp697 行で定義されています。

00698 { return operator^((uint64) u, v); }

sc_unsigned sc_dt::operator^ ( const sc_unsigned &  u,
const sc_uint_base &  v 
)

sc_unsigned.cpp694 行で定義されています。

00695 { return operator^(u, (uint64) v); }

sc_signed sc_dt::operator^ ( unsigned int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1805 行で定義されています。

01806     { return operator^((unsigned long) u, v); }

sc_signed sc_dt::operator^ ( int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1803 行で定義されています。

01804     { return operator^((long) u, v); }

sc_signed sc_dt::operator^ ( const sc_signed &  u,
unsigned int  v 
) [inline]

sc_signed.h1796 行で定義されています。

01797     { return operator^(u, (unsigned long) v); }

sc_signed sc_dt::operator^ ( const sc_signed &  u,
int  v 
) [inline]

sc_signed.h1794 行で定義されています。

01795     { return operator^(u, (long) v); }

sc_signed sc_dt::operator^ ( int  u,
const sc_unsigned &  v 
) [inline]

sc_signed.h1786 行で定義されています。

01787     { return operator^((long) u, v); }

sc_signed sc_dt::operator^ ( const sc_unsigned &  u,
int  v 
) [inline]

sc_signed.h1781 行で定義されています。

01782     { return operator^(u, (long) v); }

sc_signed sc_dt::operator^ ( unsigned long  u,
const sc_signed &  v 
)

sc_signed.cpp3476 行で定義されています。

03477 {
03478   if (u == 0)
03479     return sc_signed(v);
03480 
03481   CONVERT_LONG(u);
03482 
03483   if (v.sgn == SC_ZERO)
03484     return sc_signed(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, false);
03485 
03486   // other cases
03487   return xor_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
03488                            v.sgn, v.nbits, v.ndigits, v.digit);
03489 
03490 }

sc_signed sc_dt::operator^ ( const sc_signed &  u,
unsigned long  v 
)

sc_signed.cpp3458 行で定義されています。

03459 {
03460 
03461   if (v == 0)  // case 1
03462     return sc_signed(u);
03463 
03464   CONVERT_LONG(v);
03465 
03466   if (u.sgn == SC_ZERO)  // case 2
03467     return sc_signed(vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd, false);
03468 
03469   // other cases
03470   return xor_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
03471                            vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
03472 
03473 }

sc_signed sc_dt::operator^ ( long  u,
const sc_unsigned &  v 
)

sc_signed.cpp3439 行で定義されています。

03440 {
03441 
03442   if (u == 0)
03443     return sc_signed(v);
03444 
03445   CONVERT_LONG(u);
03446 
03447   if (v.sgn == SC_ZERO)
03448     return sc_signed(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, false);
03449 
03450   // other cases
03451   return xor_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
03452                            v.sgn, v.nbits, v.ndigits, v.digit);
03453 
03454 }

sc_signed sc_dt::operator^ ( const sc_unsigned &  u,
long  v 
)

sc_signed.cpp3420 行で定義されています。

03421 {
03422 
03423   if (v == 0)  // case 1
03424     return sc_signed(u);
03425 
03426   CONVERT_LONG(v);
03427 
03428   if (u.sgn == SC_ZERO)  // case 2
03429     return sc_signed(vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd, false);
03430 
03431   // other cases
03432   return xor_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
03433                            vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
03434 
03435 }

sc_signed sc_dt::operator^ ( long  u,
const sc_signed &  v 
)

sc_signed.cpp3401 行で定義されています。

03402 {
03403 
03404   if (u == 0)
03405     return sc_signed(v);
03406 
03407   CONVERT_LONG(u);
03408 
03409   if (v.sgn == SC_ZERO)
03410     return sc_signed(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, false);
03411 
03412   // other cases
03413   return xor_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
03414                            v.sgn, v.nbits, v.ndigits, v.digit);
03415 
03416 }

sc_signed sc_dt::operator^ ( const sc_signed &  u,
long  v 
)

sc_signed.cpp3382 行で定義されています。

03383 {
03384 
03385   if (v == 0)  // case 1
03386     return sc_signed(u);
03387 
03388   CONVERT_LONG(v);
03389 
03390   if (u.sgn == SC_ZERO)  // case 2
03391     return sc_signed(vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd, false);
03392 
03393   // other cases
03394   return xor_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
03395                            vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
03396 
03397 }

sc_signed sc_dt::operator^ ( uint64  u,
const sc_signed &  v 
)

sc_signed.cpp3364 行で定義されています。

03365 {
03366   if (u == 0)
03367     return sc_signed(v);
03368 
03369   CONVERT_INT64(u);
03370 
03371   if (v.sgn == SC_ZERO)
03372     return sc_signed(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, false);
03373 
03374   // other cases
03375   return xor_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
03376                            v.sgn, v.nbits, v.ndigits, v.digit);
03377 
03378 }

sc_signed sc_dt::operator^ ( const sc_signed &  u,
uint64  v 
)

sc_signed.cpp3346 行で定義されています。

03347 {
03348 
03349   if (v == 0)  // case 1
03350     return sc_signed(u);
03351 
03352   CONVERT_INT64(v);
03353 
03354   if (u.sgn == SC_ZERO)  // case 2
03355     return sc_signed(vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd, false);
03356 
03357   // other cases
03358   return xor_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
03359                            vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
03360 
03361 }

sc_signed sc_dt::operator^ ( int64  u,
const sc_unsigned &  v 
)

sc_signed.cpp3327 行で定義されています。

03328 {
03329 
03330   if (u == 0)
03331     return sc_signed(v);
03332 
03333   CONVERT_INT64(u);
03334 
03335   if (v.sgn == SC_ZERO)
03336     return sc_signed(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, false);
03337 
03338   // other cases
03339   return xor_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
03340                            v.sgn, v.nbits, v.ndigits, v.digit);
03341 
03342 }

sc_signed sc_dt::operator^ ( const sc_unsigned &  u,
int64  v 
)

sc_signed.cpp3308 行で定義されています。

03309 {
03310 
03311   if (v == 0)  // case 1
03312     return sc_signed(u);
03313 
03314   CONVERT_INT64(v);
03315 
03316   if (u.sgn == SC_ZERO)  // case 2
03317     return sc_signed(vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd, false);
03318 
03319   // other cases
03320   return xor_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
03321                            vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
03322 
03323 }

sc_signed sc_dt::operator^ ( int64  u,
const sc_signed &  v 
)

sc_signed.cpp3289 行で定義されています。

03290 {
03291 
03292   if (u == 0)
03293     return sc_signed(v);
03294 
03295   CONVERT_INT64(u);
03296 
03297   if (v.sgn == SC_ZERO)
03298     return sc_signed(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, false);
03299 
03300   // other cases
03301   return xor_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
03302                            v.sgn, v.nbits, v.ndigits, v.digit);
03303 
03304 }

sc_signed sc_dt::operator^ ( const sc_signed &  u,
int64  v 
)

sc_signed.cpp3270 行で定義されています。

03271 {
03272 
03273   if (v == 0)  // case 1
03274     return sc_signed(u);
03275 
03276   CONVERT_INT64(v);
03277 
03278   if (u.sgn == SC_ZERO)  // case 2
03279     return sc_signed(vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd, false);
03280 
03281   // other cases
03282   return xor_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
03283                            vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
03284 
03285 }

sc_signed sc_dt::operator^ ( const sc_signed &  u,
const sc_signed &  v 
)

sc_signed.cpp3253 行で定義されています。

03254 {
03255 
03256   if (v.sgn == SC_ZERO)  // case 1
03257     return sc_signed(u);
03258 
03259   if (u.sgn == SC_ZERO)  // case 2
03260     return sc_signed(v);
03261 
03262   // other cases
03263   return xor_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
03264                            v.sgn, v.nbits, v.ndigits, v.digit);
03265 
03266 }

sc_signed sc_dt::operator^ ( const sc_signed &  u,
const sc_unsigned &  v 
)

sc_signed.cpp3236 行で定義されています。

03237 {
03238 
03239   if (v.sgn == SC_ZERO)  // case 1
03240     return sc_signed(u);
03241 
03242   if (u.sgn == SC_ZERO)  // case 2
03243     return sc_signed(v);
03244 
03245   // other cases
03246   return xor_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
03247                            v.sgn, v.nbits, v.ndigits, v.digit);
03248 
03249 }

sc_signed sc_dt::operator^ ( const sc_unsigned &  u,
const sc_signed &  v 
)

sc_signed.cpp3219 行で定義されています。

03220 {
03221 
03222   if (v.sgn == SC_ZERO)  // case 1
03223     return sc_signed(u);
03224 
03225   if (u.sgn == SC_ZERO)  // case 2
03226     return sc_signed(v);
03227 
03228   // other cases
03229   return xor_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
03230                            v.sgn, v.nbits, v.ndigits, v.digit);
03231 
03232 }

sc_signed sc_dt::operator^ ( const sc_uint_base &  u,
const sc_signed &  v 
)

sc_signed.cpp968 行で定義されています。

00969 { return operator^((uint64) u, v); }

sc_signed sc_dt::operator^ ( const sc_signed &  u,
const sc_uint_base &  v 
)

sc_signed.cpp964 行で定義されています。

00965 { return operator^(u, (uint64) v); }

sc_signed sc_dt::operator^ ( const sc_int_base &  u,
const sc_signed &  v 
)

sc_signed.cpp775 行で定義されています。

00776 { return operator^((int64) u, v); }

sc_signed sc_dt::operator^ ( const sc_signed &  u,
const sc_int_base &  v 
)

sc_signed.cpp771 行で定義されています。

00772 { return operator^(u, (int64) v); }

sc_signed sc_dt::operator^ ( const sc_int_base &  u,
const sc_unsigned &  v 
)

sc_signed.cpp767 行で定義されています。

00768 { return operator ^ ( SCAST<int64>( u ), v ); }

sc_signed sc_dt::operator^ ( const sc_unsigned &  u,
const sc_int_base &  v 
)

sc_signed.cpp763 行で定義されています。

00764 { return operator ^ ( u, SCAST<int64>( v ) ); }

template<class X, class Y>
const sc_lv_base sc_dt::operator^ ( const sc_proxy< X > &  px,
const sc_proxy< Y > &  py 
) [inline]

sc_lv_base.h609 行で定義されています。

00610 {
00611     sc_lv_base a( px.back_cast() );
00612     return ( a ^= py.back_cast() );
00613 }

const sc_logic sc_dt::operator^ ( int  a,
const sc_logic &  b 
) [inline]

sc_logic.h462 行で定義されています。

00463         { return ( sc_logic( a ) ^ b ); }

const sc_logic sc_dt::operator^ ( char  a,
const sc_logic &  b 
) [inline]

sc_logic.h459 行で定義されています。

00460         { return ( sc_logic( a ) ^ b ); }

const sc_logic sc_dt::operator^ ( bool  a,
const sc_logic &  b 
) [inline]

sc_logic.h456 行で定義されています。

00457         { return ( sc_logic( a ) ^ b ); }

const sc_logic sc_dt::operator^ ( sc_logic_value_t  a,
const sc_logic &  b 
) [inline]

sc_logic.h453 行で定義されています。

00454         { return ( sc_logic( a ) ^ b ); }

const sc_logic sc_dt::operator^ ( const sc_logic &  a,
int  b 
) [inline]

sc_logic.h450 行で定義されています。

00451         { return ( a ^ sc_logic( b ) ); }

const sc_logic sc_dt::operator^ ( const sc_logic &  a,
char  b 
) [inline]

sc_logic.h447 行で定義されています。

00448         { return ( a ^ sc_logic( b ) ); }

const sc_logic sc_dt::operator^ ( const sc_logic &  a,
bool  b 
) [inline]

sc_logic.h444 行で定義されています。

00445         { return ( a ^ sc_logic( b ) ); }

const sc_logic sc_dt::operator^ ( const sc_logic &  a,
sc_logic_value_t  b 
) [inline]

sc_logic.h441 行で定義されています。

00442         { return ( a ^ sc_logic( b ) ); }

const sc_logic sc_dt::operator^ ( const sc_logic &  a,
const sc_logic &  b 
) [inline]

sc_logic.h438 行で定義されています。

00439         { return sc_logic( sc_logic::xor_table[a.m_val][b.m_val] ); }

template<class T1, class T2>
const sc_logic sc_dt::operator^ ( const sc_bitref_r< T1 > &  a,
const sc_bitref_r< T2 > &  b 
) [inline]

sc_bit_proxies.h1941 行で定義されています。

01942 {
01943     return sc_logic( sc_logic::xor_table[a.value()][b.value()] );
01944 }

const sc_bit sc_dt::operator^ ( char  a,
const sc_bit &  b 
) [inline]

sc_bit.h692 行で定義されています。

00693         { return ( sc_bit( a ) ^ b ); }

const sc_bit sc_dt::operator^ ( bool  a,
const sc_bit &  b 
) [inline]

sc_bit.h689 行で定義されています。

00690         { return ( sc_bit( a ) ^ b ); }

const sc_bit sc_dt::operator^ ( int  a,
const sc_bit &  b 
) [inline]

sc_bit.h686 行で定義されています。

00687         { return ( sc_bit( a ) ^ b ); }

const sc_bit sc_dt::operator^ ( const sc_bit &  a,
char  b 
) [inline]

sc_bit.h683 行で定義されています。

00684         { return ( a ^ sc_bit( b ) ); }

const sc_bit sc_dt::operator^ ( const sc_bit &  a,
bool  b 
) [inline]

sc_bit.h680 行で定義されています。

00681         { return ( a ^ sc_bit( b ) ); }

const sc_bit sc_dt::operator^ ( const sc_bit &  a,
int  b 
) [inline]

sc_bit.h677 行で定義されています。

00678         { return ( a ^ sc_bit( b ) ); }

const sc_bit sc_dt::operator^ ( const sc_bit &  a,
const sc_bit &  b 
) [inline]

sc_bit.h674 行で定義されています。

00675         { return sc_bit( a.m_val != b.m_val ); }

template<class X, class Y>
X & sc_dt::operator^= ( sc_proxy< X > &  px,
const sc_proxy< Y > &  py 
) [inline]

sc_lv_base.h572 行で定義されています。

00573 {
00574     X& x = px.back_cast();
00575     sc_lv_base a( x.length() );
00576     a = py.back_cast();
00577     return b_xor_assign_( x, a );
00578 }

sc_unsigned sc_dt::operator| ( unsigned int  u,
const sc_unsigned &  v 
) [inline]

sc_unsigned.h1540 行で定義されています。

01541     { return operator|((unsigned long) u,  v); }

sc_unsigned sc_dt::operator| ( const sc_unsigned &  u,
unsigned int  v 
) [inline]

sc_unsigned.h1532 行で定義されています。

01533     { return operator|(u, (unsigned long) v); }

sc_unsigned sc_dt::operator| ( unsigned long  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1433 行で定義されています。

01434 {
01435 
01436   if (u == 0)
01437     return sc_unsigned(v);
01438 
01439   CONVERT_LONG(u);
01440 
01441   if (v.sgn == SC_ZERO)
01442     return sc_unsigned(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, false);
01443 
01444   // other cases
01445   return or_unsigned_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
01446                             v.sgn, v.nbits, v.ndigits, v.digit);
01447 
01448 }

sc_unsigned sc_dt::operator| ( const sc_unsigned &  u,
unsigned long  v 
)

sc_unsigned.cpp1414 行で定義されています。

01415 {
01416 
01417   if (v == 0)  // case 1
01418     return sc_unsigned(u);
01419 
01420   CONVERT_LONG(v);
01421 
01422   if (u.sgn == SC_ZERO)  // case 2
01423     return sc_unsigned(vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd, false);
01424 
01425   // other cases
01426   return or_unsigned_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01427                             vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
01428 
01429 }

sc_unsigned sc_dt::operator| ( uint64  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1395 行で定義されています。

01396 {
01397 
01398   if (u == 0)
01399     return sc_unsigned(v);
01400 
01401   CONVERT_INT64(u);
01402 
01403   if (v.sgn == SC_ZERO)
01404     return sc_unsigned(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, false);
01405 
01406   // other cases
01407   return or_unsigned_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
01408                             v.sgn, v.nbits, v.ndigits, v.digit);
01409 
01410 }

sc_unsigned sc_dt::operator| ( const sc_unsigned &  u,
uint64  v 
)

sc_unsigned.cpp1376 行で定義されています。

01377 {
01378 
01379   if (v == 0)  // case 1
01380     return sc_unsigned(u);
01381 
01382   CONVERT_INT64(v);
01383 
01384   if (u.sgn == SC_ZERO)  // case 2
01385     return sc_unsigned(vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd, false);
01386 
01387   // other cases
01388   return or_unsigned_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01389                             vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
01390 
01391 }

sc_unsigned sc_dt::operator| ( const sc_unsigned &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp1359 行で定義されています。

01360 {
01361 
01362   if (v.sgn == SC_ZERO)  // case 1
01363     return sc_unsigned(u);
01364 
01365   if (u.sgn == SC_ZERO)  // case 2
01366     return sc_unsigned(v);
01367 
01368   // other cases
01369   return or_unsigned_friend(u.sgn, u.nbits, u.ndigits, u.digit,
01370                             v.sgn, v.nbits, v.ndigits, v.digit);
01371 
01372 }

sc_unsigned sc_dt::operator| ( const sc_uint_base &  u,
const sc_unsigned &  v 
)

sc_unsigned.cpp687 行で定義されています。

00688 { return operator|((uint64) u, v); }

sc_unsigned sc_dt::operator| ( const sc_unsigned &  u,
const sc_uint_base &  v 
)

sc_unsigned.cpp684 行で定義されています。

00685 { return operator|(u, (uint64) v); }

sc_signed sc_dt::operator| ( unsigned int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1751 行で定義されています。

01752     { return operator|((unsigned long) u, v); }

sc_signed sc_dt::operator| ( int  u,
const sc_signed &  v 
) [inline]

sc_signed.h1749 行で定義されています。

01750     { return operator|((long) u, v); }

sc_signed sc_dt::operator| ( const sc_signed &  u,
unsigned int  v 
) [inline]

sc_signed.h1742 行で定義されています。

01743     { return operator|(u, (unsigned long) v); }

sc_signed sc_dt::operator| ( const sc_signed &  u,
int  v 
) [inline]

sc_signed.h1740 行で定義されています。

01741     { return operator|(u, (long) v); }

sc_signed sc_dt::operator| ( int  u,
const sc_unsigned &  v 
) [inline]

sc_signed.h1732 行で定義されています。

01733     { return operator|((long) u, v); }

sc_signed sc_dt::operator| ( const sc_unsigned &  u,
int  v 
) [inline]

sc_signed.h1727 行で定義されています。

01728     { return operator|(u, (long) v); }

sc_signed sc_dt::operator| ( unsigned long  u,
const sc_signed &  v 
)

sc_signed.cpp3184 行で定義されています。

03185 {
03186 
03187   if (u == 0)
03188     return sc_signed(v);
03189 
03190   CONVERT_LONG(u);
03191 
03192   if (v.sgn == SC_ZERO)
03193     return sc_signed(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, false);
03194 
03195   // other cases
03196   return or_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
03197                           v.sgn, v.nbits, v.ndigits, v.digit);
03198 
03199 }

sc_signed sc_dt::operator| ( const sc_signed &  u,
unsigned long  v 
)

sc_signed.cpp3165 行で定義されています。

03166 {
03167 
03168   if (v == 0)  // case 1
03169     return sc_signed(u);
03170 
03171   CONVERT_LONG(v);
03172 
03173   if (u.sgn == SC_ZERO)  // case 2
03174     return sc_signed(vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd, false);
03175 
03176   // other cases
03177   return or_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
03178                           vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
03179 
03180 }

sc_signed sc_dt::operator| ( long  u,
const sc_unsigned &  v 
)

sc_signed.cpp3146 行で定義されています。

03147 {
03148 
03149   if (u == 0)
03150     return sc_signed(v);
03151 
03152   CONVERT_LONG(u);
03153 
03154   if (v.sgn == SC_ZERO)
03155     return sc_signed(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, false);
03156 
03157   // other cases
03158   return or_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
03159                           v.sgn, v.nbits, v.ndigits, v.digit);
03160 
03161 }

sc_signed sc_dt::operator| ( const sc_unsigned &  u,
long  v 
)

sc_signed.cpp3127 行で定義されています。

03128 {
03129 
03130   if (v == 0)  // case 1
03131     return sc_signed(u);
03132 
03133   CONVERT_LONG(v);
03134 
03135   if (u.sgn == SC_ZERO)  // case 2
03136     return sc_signed(vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd, false);
03137 
03138   // other cases
03139   return or_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
03140                           vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
03141 
03142 }

sc_signed sc_dt::operator| ( long  u,
const sc_signed &  v 
)

sc_signed.cpp3108 行で定義されています。

03109 {
03110 
03111   if (u == 0)
03112     return sc_signed(v);
03113 
03114   CONVERT_LONG(u);
03115 
03116   if (v.sgn == SC_ZERO)
03117     return sc_signed(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud, false);
03118 
03119   // other cases
03120   return or_signed_friend(us, BITS_PER_ULONG, DIGITS_PER_ULONG, ud,
03121                           v.sgn, v.nbits, v.ndigits, v.digit);
03122 
03123 }

sc_signed sc_dt::operator| ( const sc_signed &  u,
long  v 
)

sc_signed.cpp3089 行で定義されています。

03090 {
03091 
03092   if (v == 0)  // case 1
03093     return sc_signed(u);
03094 
03095   CONVERT_LONG(v);
03096 
03097   if (u.sgn == SC_ZERO)  // case 2
03098     return sc_signed(vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd, false);
03099 
03100   // other cases
03101   return or_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
03102                           vs, BITS_PER_ULONG, DIGITS_PER_ULONG, vd);
03103 
03104 }

sc_signed sc_dt::operator| ( uint64  u,
const sc_signed &  v 
)

sc_signed.cpp3070 行で定義されています。

03071 {
03072 
03073   if (u == 0)
03074     return sc_signed(v);
03075 
03076   CONVERT_INT64(u);
03077 
03078   if (v.sgn == SC_ZERO)
03079     return sc_signed(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, false);
03080 
03081   // other cases
03082   return or_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
03083                           v.sgn, v.nbits, v.ndigits, v.digit);
03084 
03085 }

sc_signed sc_dt::operator| ( const sc_signed &  u,
uint64  v 
)

sc_signed.cpp3051 行で定義されています。

03052 {
03053 
03054   if (v == 0)  // case 1
03055     return sc_signed(u);
03056 
03057   CONVERT_INT64(v);
03058 
03059   if (u.sgn == SC_ZERO)  // case 2
03060     return sc_signed(vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd, false);
03061 
03062   // other cases
03063   return or_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
03064                           vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
03065 
03066 }

sc_signed sc_dt::operator| ( int64  u,
const sc_unsigned &  v 
)

sc_signed.cpp3032 行で定義されています。

03033 {
03034 
03035   if (u == 0)
03036     return sc_signed(v);
03037 
03038   CONVERT_INT64(u);
03039 
03040   if (v.sgn == SC_ZERO)
03041     return sc_signed(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, false);
03042 
03043   // other cases
03044   return or_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
03045                           v.sgn, v.nbits, v.ndigits, v.digit);
03046 
03047 }

sc_signed sc_dt::operator| ( const sc_unsigned &  u,
int64  v 
)

sc_signed.cpp3013 行で定義されています。

03014 {
03015 
03016   if (v == 0)  // case 1
03017     return sc_signed(u);
03018 
03019   CONVERT_INT64(v);
03020 
03021   if (u.sgn == SC_ZERO)  // case 2
03022     return sc_signed(vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd, false);
03023 
03024   // other cases
03025   return or_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
03026                           vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
03027 
03028 }

sc_signed sc_dt::operator| ( int64  u,
const sc_signed &  v 
)

sc_signed.cpp2994 行で定義されています。

02995 {
02996 
02997   if (u == 0)
02998     return sc_signed(v);
02999 
03000   CONVERT_INT64(u);
03001 
03002   if (v.sgn == SC_ZERO)
03003     return sc_signed(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud, false);
03004 
03005   // other cases
03006   return or_signed_friend(us, BITS_PER_UINT64, DIGITS_PER_UINT64, ud,
03007                           v.sgn, v.nbits, v.ndigits, v.digit);
03008 
03009 }

sc_signed sc_dt::operator| ( const sc_signed &  u,
int64  v 
)

sc_signed.cpp2975 行で定義されています。

02976 {
02977 
02978   if (v == 0)  // case 1
02979     return sc_signed(u);
02980 
02981   CONVERT_INT64(v);
02982 
02983   if (u.sgn == SC_ZERO)  // case 2
02984     return sc_signed(vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd, false);
02985 
02986   // other cases
02987   return or_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02988                           vs, BITS_PER_UINT64, DIGITS_PER_UINT64, vd);
02989 
02990 }

sc_signed sc_dt::operator| ( const sc_signed &  u,
const sc_signed &  v 
)

sc_signed.cpp2958 行で定義されています。

02959 {
02960 
02961   if (v.sgn == SC_ZERO)  // case 1
02962     return sc_signed(u);
02963 
02964   if (u.sgn == SC_ZERO)  // case 2
02965     return sc_signed(v);
02966 
02967   // other cases
02968   return or_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02969                           v.sgn, v.nbits, v.ndigits, v.digit);
02970 
02971 }

sc_signed sc_dt::operator| ( const sc_signed &  u,
const sc_unsigned &  v 
)

sc_signed.cpp2941 行で定義されています。

02942 {
02943 
02944   if (v.sgn == SC_ZERO)  // case 1
02945     return sc_signed(u);
02946 
02947   if (u.sgn == SC_ZERO)  // case 2
02948     return sc_signed(v);
02949 
02950   // other cases
02951   return or_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02952                           v.sgn, v.nbits, v.ndigits, v.digit);
02953 
02954 }

sc_signed sc_dt::operator| ( const sc_unsigned &  u,
const sc_signed &  v 
)

sc_signed.cpp2924 行で定義されています。

02925 {
02926 
02927   if (v.sgn == SC_ZERO)  // case 1
02928     return sc_signed(u);
02929 
02930   if (u.sgn == SC_ZERO)  // case 2
02931     return sc_signed(v);
02932 
02933   // other cases
02934   return or_signed_friend(u.sgn, u.nbits, u.ndigits, u.digit,
02935                           v.sgn, v.nbits, v.ndigits, v.digit);
02936 
02937 }

sc_signed sc_dt::operator| ( const sc_uint_base &  u,
const sc_signed &  v 
)

sc_signed.cpp955 行で定義されています。

00956 { return operator|((uint64) u, v); }

sc_signed sc_dt::operator| ( const sc_signed &  u,
const sc_uint_base &  v 
)

sc_signed.cpp951 行で定義されています。

00952 { return operator|(u, (uint64) v); }

sc_signed sc_dt::operator| ( const sc_int_base &  u,
const sc_signed &  v 
)

sc_signed.cpp754 行で定義されています。

00755 { return operator|((int64) u, v); }

sc_signed sc_dt::operator| ( const sc_signed &  u,
const sc_int_base &  v 
)

sc_signed.cpp750 行で定義されています。

00751 { return operator|(u, (int64) v); }

sc_signed sc_dt::operator| ( const sc_int_base &  u,
const sc_unsigned &  v 
)

sc_signed.cpp746 行で定義されています。

00747 { return operator | ( SCAST<int64>( u ), v ); }

sc_signed sc_dt::operator| ( const sc_unsigned &  u,
const sc_int_base &  v 
)

sc_signed.cpp742 行で定義されています。

00743 { return operator | ( u, SCAST<int64>( v ) ); }

template<class X, class Y>
const sc_lv_base sc_dt::operator| ( const sc_proxy< X > &  px,
const sc_proxy< Y > &  py 
) [inline]

sc_lv_base.h507 行で定義されています。

00508 {
00509     sc_lv_base a( px.back_cast() );
00510     return ( a |= py.back_cast() );
00511 }

const sc_logic sc_dt::operator| ( int  a,
const sc_logic &  b 
) [inline]

sc_logic.h432 行で定義されています。

00433         { return ( sc_logic( a ) | b ); }

const sc_logic sc_dt::operator| ( char  a,
const sc_logic &  b 
) [inline]

sc_logic.h429 行で定義されています。

00430         { return ( sc_logic( a ) | b ); }

const sc_logic sc_dt::operator| ( bool  a,
const sc_logic &  b 
) [inline]

sc_logic.h426 行で定義されています。

00427         { return ( sc_logic( a ) | b ); }

const sc_logic sc_dt::operator| ( sc_logic_value_t  a,
const sc_logic &  b 
) [inline]

sc_logic.h423 行で定義されています。

00424         { return ( sc_logic( a ) | b ); }

const sc_logic sc_dt::operator| ( const sc_logic &  a,
int  b 
) [inline]

sc_logic.h420 行で定義されています。

00421         { return ( a | sc_logic( b ) ); }

const sc_logic sc_dt::operator| ( const sc_logic &  a,
char  b 
) [inline]

sc_logic.h417 行で定義されています。

00418         { return ( a | sc_logic( b ) ); }

const sc_logic sc_dt::operator| ( const sc_logic &  a,
bool  b 
) [inline]

sc_logic.h414 行で定義されています。

00415         { return ( a | sc_logic( b ) ); }

const sc_logic sc_dt::operator| ( const sc_logic &  a,
sc_logic_value_t  b 
) [inline]

sc_logic.h411 行で定義されています。

00412         { return ( a | sc_logic( b ) ); }

const sc_logic sc_dt::operator| ( const sc_logic &  a,
const sc_logic &  b 
) [inline]

sc_logic.h408 行で定義されています。

00409         { return sc_logic( sc_logic::or_table[a.m_val][b.m_val] ); }

template<class T1, class T2>
const sc_logic sc_dt::operator| ( const sc_bitref_r< T1 > &  a,
const sc_bitref_r< T2 > &  b 
) [inline]

sc_bit_proxies.h1930 行で定義されています。

01931 {
01932     return sc_logic( sc_logic::or_table[a.value()][b.value()] );
01933 }

const sc_bit sc_dt::operator| ( char  a,
const sc_bit &  b 
) [inline]

sc_bit.h548 行で定義されています。

00549         { return ( sc_bit( a ) | b ); }

const sc_bit sc_dt::operator| ( bool  a,
const sc_bit &  b 
) [inline]

sc_bit.h545 行で定義されています。

00546         { return ( sc_bit( a ) | b ); }

const sc_bit sc_dt::operator| ( int  a,
const sc_bit &  b 
) [inline]

sc_bit.h542 行で定義されています。

00543         { return ( sc_bit( a ) | b ); }

const sc_bit sc_dt::operator| ( const sc_bit &  a,
char  b 
) [inline]

sc_bit.h539 行で定義されています。

00540         { return ( a | sc_bit( b ) ); }

const sc_bit sc_dt::operator| ( const sc_bit &  a,
bool  b 
) [inline]

sc_bit.h536 行で定義されています。

00537         { return ( a | sc_bit( b ) ); }

const sc_bit sc_dt::operator| ( const sc_bit &  a,
int  b 
) [inline]

sc_bit.h533 行で定義されています。

00534         { return ( a | sc_bit( b ) ); }

const sc_bit sc_dt::operator| ( const sc_bit &  a,
const sc_bit &  b 
) [inline]

sc_bit.h530 行で定義されています。

00531         { return sc_bit( a.m_val || b.m_val ); }

template<class X, class Y>
X & sc_dt::operator|= ( sc_proxy< X > &  px,
const sc_proxy< Y > &  py 
) [inline]

sc_lv_base.h470 行で定義されています。

00471 {
00472     X& x = px.back_cast();
00473     sc_lv_base a( x.length() );
00474     a = py.back_cast();
00475     return b_or_assign_( x, a );
00476 }

sc_unsigned sc_dt::operator~ ( const sc_unsigned &  u  ) 

sc_signed sc_dt::operator~ ( const sc_signed &  u  ) 

CLASS_TYPE sc_dt::operator~ ( const CLASS_TYPE &  u  ) 

sc_signed.cpp6378 行で定義されています。

const sc_bit sc_dt::operator~ ( const sc_bit &  a  )  [inline]

sc_bit.h507 行で定義されています。

00508         { return sc_bit( ! a.m_val ); }

CLASS_TYPE sc_dt::OR_HELPER ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
small_type  vs,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_signed.cpp4512 行で定義されています。

void sc_dt::or_on_help ( small_type  us,
int  ,
int  und,
sc_digit *  ud,
small_type  vs,
int  ,
int  vnd,
const sc_digit *  vd 
)

sc_nbexterns.cpp685 行で定義されています。

00691 {
00692   
00693   register sc_digit *x = ud;
00694   register const sc_digit *y = vd;
00695   int xnd = und;
00696   int ynd = vnd;
00697 
00698   if (xnd < ynd)
00699     ynd = xnd;
00700 
00701   const sc_digit *xend = (x + xnd);
00702   const sc_digit *yend = (y + ynd);
00703 
00704   // x is longer than y.
00705 
00706   small_type s = mul_signs(us, vs);
00707 
00708   if (s > 0) {
00709 
00710     if (us > 0) { // case 3
00711 
00712       while (y < yend)
00713         (*x++) |= (*y++);
00714 
00715       // No change for the rest of x.
00716 
00717     }
00718     else {  // case 4
00719 
00720       register sc_digit xcarry = 1;
00721       register sc_digit ycarry = 1;
00722 
00723       while (y < yend) {
00724         xcarry += (~(*x) & DIGIT_MASK);
00725         ycarry += (~(*y++) & DIGIT_MASK);
00726         (*x++) = (xcarry | ycarry) & DIGIT_MASK;
00727         xcarry >>= BITS_PER_DIGIT;
00728         ycarry >>= BITS_PER_DIGIT;
00729       }
00730 
00731       while (x < xend) {
00732         xcarry += (~(*x) & DIGIT_MASK);
00733         ycarry += DIGIT_MASK;
00734         (*x++) = (xcarry | ycarry) & DIGIT_MASK;
00735         xcarry >>= BITS_PER_DIGIT;
00736         ycarry >>= BITS_PER_DIGIT;
00737       }
00738     }
00739 
00740   }
00741   else {
00742 
00743     if (us > 0) { // case 5
00744 
00745       register sc_digit ycarry = 1;
00746 
00747       while (y < yend) {
00748         ycarry += (~(*y++) & DIGIT_MASK);
00749         (*x) = ((*x) | ycarry) & DIGIT_MASK;
00750         x++;
00751         ycarry >>= BITS_PER_DIGIT;
00752       }
00753 
00754       while (x < xend) {
00755         ycarry += DIGIT_MASK;
00756         (*x) = ((*x) | ycarry) & DIGIT_MASK;
00757         x++;
00758         ycarry >>= BITS_PER_DIGIT;
00759       }
00760 
00761     }
00762     else {  // case 6
00763 
00764       register sc_digit xcarry = 1;
00765 
00766       while (y < yend) {
00767         xcarry += (~(*x) & DIGIT_MASK);
00768         (*x++) = (xcarry | (*y++)) & DIGIT_MASK;
00769         xcarry >>= BITS_PER_DIGIT;
00770       }
00771 
00772       while (x < xend) {
00773         xcarry += (~(*x) & DIGIT_MASK);
00774         (*x++) = xcarry & DIGIT_MASK;
00775         xcarry >>= BITS_PER_DIGIT;
00776       }
00777     }
00778   }
00779 }

bool sc_dt::or_reduce ( const sc_concatref &  a  )  [inline]

sc_concatref.h451 行で定義されています。

00452 {
00453     return a.or_reduce();
00454 }

bool sc_dt::or_reduce ( const sc_uint_base &  a  )  [inline]

sc_uint_base.h1290 行で定義されています。

01291 {
01292     return a.or_reduce();
01293 }

bool sc_dt::or_reduce ( const sc_uint_subref_r &  a  )  [inline]

sc_uint_base.h1107 行で定義されています。

01108 {
01109     return a.or_reduce();
01110 }

bool sc_dt::or_reduce ( const sc_int_base &  a  )  [inline]

sc_int_base.h1319 行で定義されています。

01320 {
01321     return a.or_reduce();
01322 }

bool sc_dt::or_reduce ( const sc_int_subref_r &  a  )  [inline]

sc_int_base.h1136 行で定義されています。

01137 {
01138     return a.or_reduce();
01139 }

template<class X>
sc_logic_value_t sc_dt::or_reduce ( const sc_proxy< X > &  a  )  [inline]

sc_proxy.h1475 行で定義されています。

01476 {
01477     return a.or_reduce();
01478 }

sc_signed sc_dt::or_signed_friend ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
small_type  vs,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_unsigned sc_dt::or_unsigned_friend ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
small_type  vs,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

static void sc_dt::overflow ( double &  c,
const scfx_params &  params,
bool &  o_flag 
) [static]

sc_fxnum.cpp459 行で定義されています。

00460 {
00461     int iwl = params.iwl();
00462     int fwl = params.wl() - iwl;
00463     double full_circle = scfx_pow2( iwl );
00464     double resolution = scfx_pow2( -fwl );
00465     double low, high;
00466     if( params.enc() == SC_TC_ )
00467     {
00468         high = full_circle / 2.0 - resolution;
00469         if( params.o_mode() == SC_SAT_SYM )
00470             low = - high;
00471         else
00472             low = - full_circle / 2.0;
00473     }
00474     else
00475     {
00476         low = 0.0;
00477         high = full_circle - resolution;
00478     }
00479     double val = c;
00480     sc_fxval_fast c2 = c;
00481 
00482     bool under = ( val < low );
00483     bool over = ( val > high );
00484 
00485     o_flag = ( under || over );
00486 
00487     if( o_flag )
00488     {
00489         switch( params.o_mode() )
00490         {
00491             case SC_WRAP:                       // wrap-around
00492             {
00493                 int n_bits = params.n_bits();
00494 
00495                 if( n_bits == 0 )
00496                 {
00497                     // wrap-around all 'wl' bits
00498                     val -= floor( val / full_circle ) * full_circle;
00499                     if( val > high )
00500                         val -= full_circle;
00501                 }
00502                 else if( n_bits < params.wl() )
00503                 {
00504                     double X = scfx_pow2( iwl - n_bits );
00505 
00506                     // wrap-around least significant 'wl - n_bits' bits
00507                     val -= floor( val / X ) * X;
00508                     if( val > ( X - resolution ) )
00509                         val -= X;
00510                     
00511                     // saturate most significant 'n_bits' bits
00512                     if( under )
00513                         val += low;
00514                     else
00515                     {
00516                         if( params.enc() == SC_TC_ )
00517                             val += full_circle / 2.0 - X;
00518                         else
00519                             val += full_circle - X;
00520                     }
00521                 }
00522                 else
00523                 {
00524                     // saturate all 'wl' bits
00525                     if( under )
00526                         val = low;
00527                     else
00528                         val = high;
00529                 }
00530                 break;
00531             }
00532             case SC_SAT:                        // saturation
00533             case SC_SAT_SYM:                    // symmetrical saturation
00534             {
00535                 if( under )
00536                     val = low;
00537                 else
00538                     val = high;
00539                 break;
00540             }
00541             case SC_SAT_ZERO:                   // saturation to zero
00542             {
00543                 val = 0.0;
00544                 break;
00545             }
00546             case SC_WRAP_SM:                    // sign magnitude wrap-around
00547             {
00548                 SC_ERROR_IF_( params.enc() == SC_US_,
00549                               sc_core::SC_ID_WRAP_SM_NOT_DEFINED_ );
00550         
00551                 int n_bits = params.n_bits();
00552 
00553                 if( n_bits == 0 )
00554                 {
00555                     // invert conditionally
00556                     if( c2.get_bit( iwl ) != c2.get_bit( iwl - 1 ) )
00557                         val = -val - resolution;
00558 
00559                     // wrap-around all 'wl' bits
00560                     val -= floor( val / full_circle ) * full_circle;
00561                     if( val > high )
00562                         val -= full_circle;
00563                 }
00564                 else if( n_bits == 1 )
00565                 {
00566                     // invert conditionally
00567                     if( c2.is_neg() != c2.get_bit( iwl - 1 ) )
00568                         val = -val - resolution;
00569 
00570                     // wrap-around all 'wl' bits
00571                     val -= floor( val / full_circle ) * full_circle;
00572                     if( val > high )
00573                         val -= full_circle;
00574                 }
00575                 else if( n_bits < params.wl() )
00576                 {
00577                     // invert conditionally
00578                     if( c2.is_neg() == c2.get_bit( iwl - n_bits ) )
00579                         val = -val - resolution;
00580                     
00581                     double X = scfx_pow2( iwl - n_bits );
00582 
00583                     // wrap-around least significant 'wl - n_bits' bits
00584                     val -= floor( val / X ) * X;
00585                     if( val > ( X - resolution ) )
00586                         val -= X;
00587 
00588                     // saturate most significant 'n_bits' bits
00589                     if( under )
00590                         val += low;
00591                     else
00592                         val += full_circle / 2.0 - X;
00593                 } else {
00594                     // saturate all 'wl' bits
00595                     if( under )
00596                         val = low;
00597                     else
00598                         val = high;
00599                 }
00600                 break;
00601             }
00602             default:
00603                 ;
00604         }
00605 
00606         c = val;
00607     }
00608 }

scfx_rep* sc_dt::overflow_scfx_rep ( const scfx_rep &  a,
const scfx_params &  params,
bool &  o_flag 
) [inline]

scfx_rep.h457 行で定義されています。

00460 {
00461     scfx_rep& c = *new scfx_rep( a );
00462     c.overflow( params, o_flag );
00463     return &c;
00464 }

void sc_dt::parse_binary_bits ( const char *  src_p,
int  dst_n,
sc_digit *  data_p,
sc_digit *  ctrl_p 
)

sc_nbutils.cpp190 行で定義されています。

00192 {
00193     int      bit_i;    // Number of bit now processing.
00194     sc_digit ctrl;     // Control word now assembling.
00195     sc_digit data;     // Data word now assembling.
00196     int      delta_n;  // src_n - dst_n*BITS_PER_DIGIT.
00197     int      src_i;    // Index in src_p now accessing (left to right).
00198     int      src_n;    // Length of source that is left in bits.
00199     int      word_i;   // Bit within word now accessing (left to right).
00200 
00201     // MAKE SURE WE HAVE A STRING TO PARSE:
00202 
00203     if( src_p == 0 ) {
00204         SC_REPORT_ERROR( sc_core::SC_ID_CONVERSION_FAILED_,
00205                          "character string is zero" );
00206     }
00207     if( *src_p == 0 ) {
00208         SC_REPORT_ERROR( sc_core::SC_ID_CONVERSION_FAILED_,
00209                          "character string is empty" );
00210     }
00211 
00212 
00213     // INDEX INTO THE SOURCE TO A DEPTH THAT WILL ACCOMODATE OUR SIZE:
00214     //
00215     // If the source is smaller than our value initialize our value to zero.
00216 
00217     src_n = strlen(src_p);
00218     delta_n = src_n - (dst_n*BITS_PER_DIGIT);
00219     if ( delta_n > 0 ) 
00220     {
00221         src_p = &src_p[delta_n];
00222         src_n -= delta_n;
00223     }
00224     else
00225     {
00226         for ( word_i = 0; word_i < dst_n; word_i++ ) data_p[word_i] = 0;
00227             if ( ctrl_p ) 
00228                 for ( word_i = 0; word_i < dst_n; word_i++ ) ctrl_p[word_i] = 0;
00229     }
00230 
00231 
00232     // LOOP OVER THE SOURCE ASSEMBLING WORDS AND PLACING THEM IN OUR VALUE:
00233     //
00234     // We stride right to left through the source in BITS_PER_DIGIT chunks.
00235     // Each of those chunks is processed from left to right a bit at a time.
00236     // We process the high order word specially, since there are less bits.
00237 
00238     src_n = src_n - BITS_PER_DIGIT;
00239     for (word_i=0; word_i < dst_n; word_i++)
00240     {
00241         src_i = src_n;
00242 
00243 
00244         // PARTIAL LAST WORD TO ASSEMBLE:
00245 
00246         if ( src_i < 0 ) 
00247         {
00248             src_n += BITS_PER_DIGIT;
00249             src_i = 0;
00250             data = 0;
00251             ctrl = 0;
00252             for ( src_i = 0; src_i < src_n; src_i++ )
00253             {
00254                 ctrl = ctrl << 1;
00255                 data = data << 1;
00256                 switch( src_p[src_i] )
00257                 {
00258                   case 'X':
00259                   case 'x': ctrl = ctrl | 1; data = data | 1; break;
00260                   case '1': data = data | 1; break;
00261                   case 'Z':
00262                   case 'z': ctrl = ctrl | 1; break;
00263                   case '0':                  break;
00264                   default:
00265                     {
00266                         char msg[BUFSIZ];
00267                         std::sprintf( msg, "character string '%s' is not valid", 
00268                         src_p );
00269                         SC_REPORT_ERROR(sc_core::SC_ID_CONVERSION_FAILED_, msg);
00270                     }
00271                     break;
00272                 }
00273             }
00274             if ( ctrl_p ) ctrl_p[word_i] = ctrl;
00275             data_p[word_i] = data;
00276             break;
00277         }
00278 
00279 
00280         // FULL WORD TO BE ASSEMBLED:
00281 
00282         ctrl = 0;
00283         data = 0;
00284         for ( bit_i = 0; bit_i < BITS_PER_DIGIT; bit_i++ )
00285         {
00286             ctrl = ctrl << 1;
00287             data = data << 1;
00288             switch( src_p[src_i++] )
00289             {
00290               case 'X':
00291               case 'x': ctrl = ctrl | 1; data = data | 1; break;
00292               case '1': data = data | 1; break;
00293               case 'Z':
00294               case 'z': ctrl = ctrl | 1; break;
00295               case '0':                  break;
00296               default:
00297                 {
00298                     char msg[BUFSIZ];
00299                     std::sprintf( msg, "character string '%s' is not valid", 
00300                     src_p );
00301                     SC_REPORT_ERROR( sc_core::SC_ID_CONVERSION_FAILED_, msg );
00302                 }
00303                 break;
00304             }
00305         }
00306         if ( ctrl_p ) ctrl_p[word_i] = ctrl;
00307         data_p[word_i] = data;
00308         src_n = src_n - BITS_PER_DIGIT;
00309     }
00310 }

void sc_dt::parse_hex_bits ( const char *  src_p,
int  dst_n,
sc_digit *  data_p,
sc_digit *  ctrl_p 
)

sc_nbutils.cpp325 行で定義されています。

00327 {
00328     sc_digit ctrl;     // Control word now assembling.
00329     sc_digit data;     // Data word now assembling.
00330     int      delta_n;  // src_n - dst_n*BITS_PER_DIGIT.
00331     int      digit_i;  // Number of digit now processing.
00332     int      src_i;    // Index in src_p now accessing (left to right).
00333     int      src_n;    // Length of source that is left in bits.
00334     int      word_i;   // Bit within word now accessing (left to right).
00335 
00336     // MAKE SURE WE HAVE A STRING TO PARSE:
00337 
00338     if( src_p == 0 ) {
00339         SC_REPORT_ERROR( sc_core::SC_ID_CONVERSION_FAILED_,
00340                          "character string is zero" );
00341     }
00342     if( *src_p == 0 ) {
00343         SC_REPORT_ERROR( sc_core::SC_ID_CONVERSION_FAILED_,
00344                          "character string is empty" );
00345     }
00346 
00347 
00348     // INDEX INTO THE SOURCE TO A DEPTH THAT WILL ACCOMODATE OUR SIZE:
00349     //
00350     // If the source is smaller than our value initialize our value to zero.
00351 
00352     src_n = strlen(src_p);
00353     delta_n = src_n - (dst_n*8);
00354     if ( delta_n > 0 ) 
00355     {
00356         src_p = &src_p[delta_n];
00357         src_n -= delta_n;
00358     }
00359     else
00360     {
00361         for ( word_i = 0; word_i < dst_n; word_i++ ) data_p[word_i] = 0;
00362                 if ( ctrl_p ) 
00363                         for ( word_i = 0; word_i < dst_n; word_i++ ) ctrl_p[word_i] = 0;
00364     }
00365 
00366 
00367     // LOOP OVER THE SOURCE ASSEMBLING WORDS AND PLACING THEM IN OUR VALUE:
00368     //
00369     // We stride right to left through the source in BITS_PER_DIGIT chunks.
00370     // Each of those chunks is processed from left to right a bit at a time.
00371     // We process the high order word specially, since there are less bits.
00372 
00373     src_n = src_n - 8;
00374     for (word_i=0; word_i < dst_n; word_i++)
00375     {
00376         src_i = src_n;
00377 
00378 
00379         // PARTIAL LAST WORD TO ASSEMBLE:
00380 
00381         if ( src_i < 0 ) 
00382         {
00383             src_n += 8;
00384             src_i = 0;
00385             data = 0;
00386             ctrl = 0;
00387             for ( src_i = 0; src_i < src_n; src_i++ )
00388             {
00389                 ctrl = ctrl << 4;
00390                 data = data << 4;
00391                 switch( src_p[src_i] )
00392                 {
00393                   case 'X':
00394                   case 'x': ctrl = ctrl | 15; data = data | 15; break;
00395                   case 'F':
00396                   case 'f': data = data | 15; break;
00397                   case 'E':
00398                   case 'e': data = data | 14; break;
00399                   case 'D':
00400                   case 'd': data = data | 13; break;
00401                   case 'C':
00402                   case 'c': data = data | 12; break;
00403                   case 'B':
00404                   case 'b': data = data | 11; break;
00405                   case 'A':
00406                   case 'a': data = data | 10; break;
00407                   case '9': data = data |  9; break;
00408                   case '8': data = data |  8; break;
00409                   case '7': data = data |  7; break;
00410                   case '6': data = data |  6; break;
00411                   case '5': data = data |  5; break;
00412                   case '4': data = data |  4; break;
00413                   case '3': data = data |  3; break;
00414                   case '2': data = data |  2; break;
00415                   case '1': data = data |  1; break;
00416                   case '0':                  break;
00417                   case 'Z':
00418                   case 'z': ctrl = ctrl | 15; break;
00419                   default:
00420                     {
00421                         char msg[BUFSIZ];
00422                         std::sprintf( msg, "character string '%s' is not valid", 
00423                         src_p );
00424                         SC_REPORT_ERROR(sc_core::SC_ID_CONVERSION_FAILED_, msg);
00425                     }
00426                     break;
00427                 }
00428             }
00429             if ( ctrl_p ) ctrl_p[word_i] = ctrl;
00430             data_p[word_i] = data;
00431             break;
00432         }
00433 
00434 
00435         // FULL WORD TO BE ASSEMBLED:
00436 
00437         ctrl = 0;
00438         data = 0;
00439         for ( digit_i = 0; digit_i < 8; digit_i++ )
00440         {
00441             ctrl = ctrl << 4;
00442             data = data << 4;
00443             switch( src_p[src_i++] )
00444             {
00445               case 'X':
00446               case 'x': ctrl = ctrl | 15; data = data | 15; break;
00447               case 'F':
00448               case 'f': data = data | 15; break;
00449               case 'E':
00450               case 'e': data = data | 14; break;
00451               case 'D':
00452               case 'd': data = data | 13; break;
00453               case 'C':
00454               case 'c': data = data | 12; break;
00455               case 'B':
00456               case 'b': data = data | 11; break;
00457               case 'A':
00458               case 'a': data = data | 10; break;
00459               case '9': data = data |  9; break;
00460               case '8': data = data |  8; break;
00461               case '7': data = data |  7; break;
00462               case '6': data = data |  6; break;
00463               case '5': data = data |  5; break;
00464               case '4': data = data |  4; break;
00465               case '3': data = data |  3; break;
00466               case '2': data = data |  2; break;
00467               case '1': data = data |  1; break;
00468               case '0':                  break;
00469               case 'Z':
00470               case 'z': ctrl = ctrl | 15; break;
00471               default:
00472                 {
00473                     char msg[BUFSIZ];
00474                     std::sprintf( msg, "character string '%s' is not valid", 
00475                     src_p );
00476                     SC_REPORT_ERROR( sc_core::SC_ID_CONVERSION_FAILED_, msg );
00477                 }
00478                 break;
00479             }
00480         }
00481         if ( ctrl_p ) ctrl_p[word_i] = ctrl;
00482         data_p[word_i] = data;
00483         src_n = src_n - BITS_PER_DIGIT;
00484     }
00485 }

void sc_dt::print_dec ( scfx_string &  s,
const scfx_rep &  num,
int  w_prefix,
sc_fmt  fmt 
)

scfx_rep.cpp888 行で定義されています。

00889 {
00890     if( num.is_neg() )
00891         s += '-';
00892 
00893     if( w_prefix == 1 ) {
00894         scfx_print_prefix( s, SC_DEC );
00895     }
00896 
00897     if( num.is_zero() )
00898     {
00899         s += '0';
00900         return;
00901     }
00902 
00903     // split 'num' into its integer and fractional part
00904 
00905     scfx_rep int_part  = num;
00906     scfx_rep frac_part = num;
00907 
00908     int i;
00909     
00910     for( i = int_part.m_lsw; i <= int_part.m_msw && i < int_part.m_wp; i ++ )
00911         int_part.m_mant[i] = 0;
00912     int_part.find_sw();
00913     if( int_part.m_wp < int_part.m_lsw )
00914         int_part.resize_to( int_part.size() - int_part.m_wp, -1 );
00915     
00916     for( i = frac_part.m_msw;
00917          i >= frac_part.m_lsw && i >= frac_part.m_wp;
00918          i -- )
00919         frac_part.m_mant[i] = 0;
00920     frac_part.find_sw();
00921     if( frac_part.m_msw == frac_part.size() - 1 )
00922         frac_part.resize_to( frac_part.size() + 1, 1 );
00923 
00924     // print integer part
00925 
00926     int int_digits = 0;
00927     int int_zeros  = 0;
00928     
00929     if( ! int_part.is_zero() )
00930     {
00931         double int_wl = ( int_part.m_msw - int_part.m_wp ) * bits_in_word
00932                       + scfx_find_msb( int_part.m_mant[int_part.m_msw] ) + 1;
00933         int_digits = (int) ceil( int_wl * log10( 2. ) );
00934 
00935         int len = s.length();
00936         s.append( int_digits );
00937 
00938         bool zero_digits = ( frac_part.is_zero() && fmt != SC_F );
00939 
00940         for( i = int_digits + len - 1; i >= len; i-- )
00941         {
00942             unsigned int remainder = int_part.divide_by_ten();
00943             s[i] = static_cast<char>( '0' + remainder );
00944             
00945             if( zero_digits )
00946             {
00947                 if( remainder == 0 )
00948                     int_zeros ++;
00949                 else
00950                     zero_digits = false;
00951             }
00952         }
00953 
00954         // discard trailing zeros from int_part
00955         s.discard( int_zeros );
00956 
00957         if( s[len] == '0' )
00958         {
00959             // int_digits was overestimated by one
00960             s.remove( len );
00961             -- int_digits;
00962         }
00963     }
00964 
00965     // print fractional part
00966 
00967     int frac_digits = 0;
00968     int frac_zeros  = 0;
00969 
00970     if( ! frac_part.is_zero() )
00971     {
00972         s += '.';
00973 
00974         bool zero_digits = ( int_digits == 0 && fmt != SC_F );
00975 
00976         double frac_wl = ( frac_part.m_wp - frac_part.m_msw ) * bits_in_word
00977                        - scfx_find_msb( frac_part.m_mant[frac_part.m_msw] )
00978                        - 1;
00979         frac_zeros = (int) floor( frac_wl * log10( 2. ) );
00980 
00981         scfx_rep temp;
00982         sc_dt::multiply( temp, frac_part, pow10_fx( frac_zeros ) );
00983         frac_part = temp;
00984         if( frac_part.m_msw == frac_part.size() - 1 )
00985             frac_part.resize_to( frac_part.size() + 1, 1 );
00986         
00987         frac_digits = frac_zeros;
00988         if( ! zero_digits )
00989         {
00990             for( i = 0; i < frac_zeros; i ++ )
00991                 s += '0';
00992             frac_zeros = 0;
00993         }
00994 
00995         while( ! frac_part.is_zero() )
00996         {
00997             frac_part.multiply_by_ten();
00998             int n = frac_part.m_mant[frac_part.m_msw + 1];
00999         
01000             if( zero_digits )
01001             {
01002                 if( n == 0 )
01003                     frac_zeros ++;
01004                 else
01005                     zero_digits = false;
01006             }
01007         
01008             if( ! zero_digits )
01009                 s += static_cast<char>( '0' + n );
01010 
01011             frac_part.m_mant[frac_part.m_msw + 1] = 0;
01012             frac_digits ++;
01013         }
01014     }
01015 
01016     // print exponent
01017     
01018     if( fmt != SC_F )
01019     {
01020         if( frac_digits == 0 )
01021             scfx_print_exp( s, int_zeros );
01022         else if( int_digits == 0 )
01023             scfx_print_exp( s, - frac_zeros );
01024     }
01025 }

static void sc_dt::print_dec ( scfx_string &  s,
scfx_ieee_double  id,
int  w_prefix,
sc_fmt  fmt 
) [static]

sc_fxval.cpp187 行で定義されています。

00188 {
00189     if( id.negative() != 0 )
00190     {
00191         id.negative( 0 );
00192         s += '-';
00193     }
00194 
00195     if( w_prefix == 1 ) {
00196         scfx_print_prefix( s, SC_DEC );
00197     }
00198 
00199     if( id.is_zero() )
00200     {
00201         s += '0';
00202         return;
00203     }
00204 
00205     // split 'id' into its integer and fractional part
00206 
00207     double int_part;
00208     double frac_part = modf( static_cast<double>( id ), &int_part );
00209 
00210     int i;
00211 
00212     // print integer part
00213 
00214     int int_digits = 0;
00215     int int_zeros  = 0;
00216     
00217     if( int_part != 0.0 )
00218     {
00219         int_digits = (int) ceil( log10( int_part + 1.0 ) );
00220 
00221         int len = s.length();
00222         s.append( int_digits );
00223 
00224         bool zero_digits = ( frac_part == 0.0 && fmt != SC_F );
00225 
00226         for( i = int_digits + len - 1; i >= len; i-- )
00227         {
00228             unsigned int remainder = (unsigned int) fmod( int_part, 10.0 );
00229             s[i] = static_cast<char>( '0' + remainder );
00230             
00231             if( zero_digits )
00232             {
00233                 if( remainder == 0 )
00234                     int_zeros ++;
00235                 else
00236                     zero_digits = false;
00237             }
00238 
00239             int_part /= 10.0;
00240         }
00241 
00242         // discard trailing zeros from int_part
00243         s.discard( int_zeros );
00244 
00245         if( s[len] == '0' )
00246         {
00247             // int_digits was overestimated by one
00248             s.remove( len );
00249             -- int_digits;
00250         }
00251     }
00252 
00253     // print fractional part
00254 
00255     int frac_digits = 0;
00256     int frac_zeros  = 0;
00257 
00258     if( frac_part != 0.0 )
00259     {
00260         s += '.';
00261 
00262         bool zero_digits = ( int_digits == 0 && fmt != SC_F );
00263 
00264         frac_zeros = (int) floor( - log10( frac_part + DBL_EPSILON ) );
00265 
00266         frac_part *= pow( 10.0, frac_zeros );
00267         
00268         frac_digits = frac_zeros;
00269         if( ! zero_digits )
00270         {
00271             for( i = 0; i < frac_zeros; i ++ )
00272                 s += '0';
00273             frac_zeros = 0;
00274         }
00275 
00276         while( frac_part != 0.0 )
00277         {
00278             frac_part *= 10.0;
00279             int n = static_cast<int>( frac_part );
00280         
00281             if( zero_digits )
00282             {
00283                 if( n == 0 )
00284                     frac_zeros ++;
00285                 else
00286                     zero_digits = false;
00287             }
00288         
00289             if( ! zero_digits )
00290                 s += static_cast<char>( '0' + n );
00291 
00292             frac_part -= n;
00293             frac_digits ++;
00294         }
00295     }
00296 
00297     // print exponent
00298     
00299     if( fmt != SC_F )
00300     {
00301         if( frac_digits == 0 )
00302             scfx_print_exp( s, int_zeros );
00303         else if( int_digits == 0 )
00304             scfx_print_exp( s, - frac_zeros );
00305     }
00306 }

void sc_dt::print_other ( scfx_string &  s,
const scfx_rep &  a,
sc_numrep  numrep,
int  w_prefix,
sc_fmt  fmt,
const scfx_params *  params 
)

scfx_rep.cpp1028 行で定義されています。

01030 {
01031     scfx_rep b = a;
01032 
01033     sc_numrep numrep2 = numrep;
01034 
01035     bool numrep_is_sm = ( numrep == SC_BIN_SM ||
01036                           numrep == SC_OCT_SM ||
01037                           numrep == SC_HEX_SM );
01038 
01039     if( numrep_is_sm )
01040     {
01041         if( b.is_neg() )
01042         {
01043             s += '-';
01044             b = *neg_scfx_rep( a );
01045         }
01046         switch( numrep )
01047         {
01048             case SC_BIN_SM:
01049                 numrep2 = SC_BIN_US;
01050                 break;
01051             case SC_OCT_SM:
01052                 numrep2 = SC_OCT_US;
01053                 break;
01054             case SC_HEX_SM:
01055                 numrep2 = SC_HEX_US;
01056                 break;
01057             default:
01058                 ;
01059         }
01060     }
01061     
01062     if( w_prefix != 0 ) {
01063         scfx_print_prefix( s, numrep );
01064     }
01065 
01066     numrep = numrep2;
01067 
01068     int msb, lsb;
01069 
01070     if( params != 0 )
01071     {
01072         msb = params->iwl() - 1;
01073         lsb = params->iwl() - params->wl();
01074 
01075         if( params->enc() == SC_TC_ &&
01076             ( numrep == SC_BIN_US ||
01077               numrep == SC_OCT_US ||
01078               numrep == SC_HEX_US ) &&
01079             ! numrep_is_sm &&
01080             params->wl() > 1 )
01081             -- msb;
01082         else if( params->enc() == SC_US_ &&
01083             ( numrep == SC_BIN ||
01084               numrep == SC_OCT ||
01085               numrep == SC_HEX ||
01086               numrep == SC_CSD ) )
01087             ++ msb;
01088     }
01089     else
01090     {
01091         if( b.is_zero() )
01092         {
01093             msb = 0;
01094             lsb = 0;
01095         }
01096         else
01097         {
01098             msb = ( b.m_msw - b.m_wp ) * bits_in_word
01099                 + scfx_find_msb( b.m_mant[ b.m_msw ] ) + 1;
01100             while( b.get_bit( msb ) == b.get_bit( msb - 1 ) )
01101                 -- msb;
01102 
01103             if( numrep == SC_BIN_US ||
01104                 numrep == SC_OCT_US ||
01105                 numrep == SC_HEX_US )
01106                 -- msb;
01107 
01108             lsb = ( b.m_lsw - b.m_wp ) * bits_in_word
01109                 + scfx_find_lsb( b.m_mant[ b.m_lsw ] );
01110         }
01111     }
01112 
01113     int step;
01114 
01115     switch( numrep )
01116     {
01117         case SC_BIN:
01118         case SC_BIN_US:
01119         case SC_CSD:
01120             step = 1;
01121            break;
01122         case SC_OCT:
01123         case SC_OCT_US:
01124             step = 3;
01125             break;
01126         case SC_HEX:
01127         case SC_HEX_US:
01128             step = 4;
01129             break;
01130         default:
01131             step = 0;
01132     }
01133 
01134     msb = (int) ceil( double( msb + 1 ) / step ) * step - 1;
01135 
01136     lsb = (int) floor( double( lsb ) / step ) * step;
01137 
01138     if( msb < 0 )
01139     {
01140         s += '.';
01141         if( fmt == SC_F )
01142         {
01143             int sign = ( b.is_neg() ) ? ( 1 << step ) - 1 : 0;
01144             for( int i = ( msb + 1 ) / step; i < 0; i ++ )
01145             {
01146                 if( sign < 10 )
01147                     s += static_cast<char>( sign + '0' );
01148                 else
01149                     s += static_cast<char>( sign + 'a' - 10 );
01150             }
01151         }
01152     }
01153 
01154     int i = msb;
01155     while( i >= lsb )
01156     {
01157         int value = 0;
01158         for( int j = step - 1; j >= 0; -- j )
01159         {
01160             value += static_cast<int>( b.get_bit( i ) ) << j;
01161             -- i;
01162         }
01163         if( value < 10 )
01164             s += static_cast<char>( value + '0' );
01165         else
01166             s += static_cast<char>( value + 'a' - 10 );
01167         if( i == -1 )
01168             s += '.';
01169     }
01170 
01171     if( lsb > 0 && fmt == SC_F )
01172     {
01173         for( int i = lsb / step; i > 0; i -- )
01174             s += '0';
01175     }
01176 
01177     if( s[s.length() - 1] == '.' )
01178         s.discard( 1 );
01179 
01180     if( fmt != SC_F )
01181     {
01182         if( msb < 0 )
01183             scfx_print_exp( s, ( msb + 1 ) / step );
01184         else if( lsb > 0 )
01185             scfx_print_exp( s, lsb / step );
01186     }
01187 
01188     if( numrep == SC_CSD )
01189         scfx_tc2csd( s, w_prefix );
01190 }

static void sc_dt::print_other ( scfx_string &  s,
const scfx_ieee_double &  id,
sc_numrep  numrep,
int  w_prefix,
sc_fmt  fmt,
const scfx_params *  params 
) [static]

sc_fxval.cpp311 行で定義されています。

00313 {
00314     scfx_ieee_double id2 = id;
00315 
00316     sc_numrep numrep2 = numrep;
00317 
00318     bool numrep_is_sm = ( numrep == SC_BIN_SM ||
00319                           numrep == SC_OCT_SM ||
00320                           numrep == SC_HEX_SM );
00321 
00322     if( numrep_is_sm )
00323     {
00324         if( id2.negative() != 0 )
00325         {
00326             s += '-';
00327             id2.negative( 0 );
00328         }
00329         switch( numrep )
00330         {
00331             case SC_BIN_SM:
00332                 numrep2 = SC_BIN_US;
00333                 break;
00334             case SC_OCT_SM:
00335                 numrep2 = SC_OCT_US;
00336                 break;
00337             case SC_HEX_SM:
00338                 numrep2 = SC_HEX_US;
00339                 break;
00340             default:
00341                 ;
00342         }
00343     }
00344 
00345     if( w_prefix != 0 ) {
00346         scfx_print_prefix( s, numrep );
00347     }
00348 
00349     numrep = numrep2;
00350 
00351     sc_fxval_fast a( id2 );
00352 
00353     int msb, lsb;
00354 
00355     if( params != 0 )
00356     {
00357         msb = params->iwl() - 1;
00358         lsb = params->iwl() - params->wl();
00359 
00360         if( params->enc() == SC_TC_ &&
00361             ( numrep == SC_BIN_US ||
00362               numrep == SC_OCT_US ||
00363               numrep == SC_HEX_US ) &&
00364             ! numrep_is_sm &&
00365             params->wl() > 1 )
00366             -- msb;
00367         else if( params->enc() == SC_US_ &&
00368             ( numrep == SC_BIN ||
00369               numrep == SC_OCT ||
00370               numrep == SC_HEX ||
00371               numrep == SC_CSD ) )
00372             ++ msb;
00373     }
00374     else
00375     {
00376         if( a.is_zero() )
00377         {
00378             msb = 0;
00379             lsb = 0;
00380         }
00381         else
00382         {
00383             msb = id2.exponent() + 1;
00384             while( a.get_bit( msb ) == a.get_bit( msb - 1 ) )
00385                 -- msb;
00386 
00387             if( numrep == SC_BIN_US ||
00388                 numrep == SC_OCT_US ||
00389                 numrep == SC_HEX_US )
00390                 -- msb;
00391 
00392             lsb = id2.exponent() - 52;
00393             while( ! a.get_bit( lsb ) )
00394                 ++ lsb;
00395         }
00396     }
00397 
00398     int step;
00399 
00400     switch( numrep )
00401     {
00402         case SC_BIN:
00403         case SC_BIN_US:
00404         case SC_CSD:
00405             step = 1;
00406            break;
00407         case SC_OCT:
00408         case SC_OCT_US:
00409             step = 3;
00410             break;
00411         case SC_HEX:
00412         case SC_HEX_US:
00413             step = 4;
00414             break;
00415         default:
00416             step = 0;
00417     }
00418 
00419     msb = (int) ceil( double( msb + 1 ) / step ) * step - 1;
00420 
00421     lsb = (int) floor( double( lsb ) / step ) * step;
00422 
00423     if( msb < 0 )
00424     {
00425         s += '.';
00426         if( fmt == SC_F )
00427         {
00428             int sign = ( id2.negative() != 0 ) ? ( 1 << step ) - 1 : 0;
00429             for( int i = ( msb + 1 ) / step; i < 0; i ++ )
00430             {
00431                 if( sign < 10 )
00432                     s += static_cast<char>( sign + '0' );
00433                 else
00434                     s += static_cast<char>( sign + 'a' - 10 );
00435             }
00436         }
00437     }
00438 
00439     int i = msb;
00440     while( i >= lsb )
00441     {
00442         int value = 0;
00443         for( int j = step - 1; j >= 0; -- j )
00444         {
00445             value += static_cast<int>( a.get_bit( i ) ) << j;
00446             -- i;
00447         }
00448         if( value < 10 )
00449             s += static_cast<char>( value + '0' );
00450         else
00451             s += static_cast<char>( value + 'a' - 10 );
00452         if( i == -1 )
00453             s += '.';
00454     }
00455 
00456     if( lsb > 0 && fmt == SC_F )
00457     {
00458         for( int i = lsb / step; i > 0; i -- )
00459             s += '0';
00460     }
00461 
00462     if( s[s.length() - 1] == '.' )
00463         s.discard( 1 );
00464 
00465     if( fmt != SC_F )
00466     {
00467         if( msb < 0 )
00468             scfx_print_exp( s, ( msb + 1 ) / step );
00469         else if( lsb > 0 )
00470             scfx_print_exp( s, lsb / step );
00471     }
00472 
00473     if( numrep == SC_CSD )
00474         scfx_tc2csd( s, w_prefix );
00475 }

static void sc_dt::quantization ( double &  c,
const scfx_params &  params,
bool &  q_flag 
) [static]

sc_fxnum.cpp380 行で定義されています。

00381 {
00382     int fwl = params.wl() - params.iwl();
00383     double scale = scfx_pow2( fwl );
00384     double val = scale * c;
00385     double int_part;
00386     double frac_part = modf( val, &int_part );
00387 
00388     q_flag = ( frac_part != 0.0 );
00389 
00390     if( q_flag )
00391     {
00392         val = int_part;
00393 
00394         switch( params.q_mode() )
00395         {
00396             case SC_TRN:                        // truncation
00397             {
00398                 if( c < 0.0 )
00399                     val -= 1.0;
00400                 break;
00401             }
00402             case SC_RND:                        // rounding to plus infinity
00403             {
00404                 if( frac_part >= 0.5 )
00405                     val += 1.0;
00406                 else if( frac_part < -0.5 )
00407                     val -= 1.0;
00408                 break;
00409             }
00410             case SC_TRN_ZERO:                   // truncation to zero
00411             {
00412                 break;
00413             }
00414             case SC_RND_INF:                    // rounding to infinity
00415             {
00416                 if( frac_part >= 0.5 )
00417                     val += 1.0;
00418                 else if( frac_part <= -0.5 )
00419                     val -= 1.0;
00420                 break;
00421             }
00422             case SC_RND_CONV:                   // convergent rounding
00423             {
00424                 if( frac_part > 0.5 ||
00425                     frac_part == 0.5 && fmod( int_part, 2.0 ) != 0.0 )
00426                     val += 1.0;
00427                 else if( frac_part < -0.5 ||
00428                          frac_part == -0.5 && fmod( int_part, 2.0 ) != 0.0 )
00429                     val -= 1.0;
00430                 break;
00431             }
00432             case SC_RND_ZERO:                   // rounding to zero
00433             {
00434                 if( frac_part > 0.5 )
00435                     val += 1.0;
00436                 else if( frac_part < -0.5 )
00437                     val -= 1.0;
00438                 break;
00439             }
00440             case SC_RND_MIN_INF:                // rounding to minus infinity
00441             {
00442                 if( frac_part > 0.5 )
00443                     val += 1.0;
00444                 else if( frac_part <= -0.5 )
00445                     val -= 1.0;
00446                 break;
00447             }
00448             default:
00449                 ;
00450         }
00451     }
00452 
00453     val /= scale;
00454     c = val;
00455 }

scfx_rep* sc_dt::quantization_scfx_rep ( const scfx_rep &  a,
const scfx_params &  params,
bool &  q_flag 
) [inline]

scfx_rep.h446 行で定義されています。

00449 {
00450     scfx_rep& c = *new scfx_rep( a );
00451     c.quantization( params, q_flag );
00452     return &c;
00453 }

template<class X>
const sc_lv_base sc_dt::reverse ( const sc_proxy< X > &  x  )  [inline]

sc_lv_base.h777 行で定義されています。

00778 {
00779     sc_lv_base a( x.back_cast() );
00780     return a.reverse();
00781 }

template<class X>
const sc_lv_base sc_dt::rrotate ( const sc_proxy< X > &  x,
int  n 
) [inline]

sc_lv_base.h765 行で定義されています。

00766 {
00767     sc_lv_base a( x.back_cast() );
00768     return a.rrotate( n );
00769 }

scfx_rep * sc_dt::rsh_scfx_rep ( const scfx_rep &  a,
int  b 
) [inline]

scfx_rep.h386 行で定義されています。

00387 {
00388     scfx_rep& c = *new scfx_rep( a );
00389     c.rshift( b );
00390     return &c;
00391 }

void sc_dt::rshift ( sc_fxval_fast &  c,
const sc_fxval_fast &  a,
int  b 
) [inline]

sc_fxval.h1845 行で定義されています。

01846 {
01847     SC_FXVAL_FAST_OBSERVER_READ_( a )
01848     c.m_val = a.m_val * scfx_pow2( -b );
01849     SC_FXVAL_FAST_OBSERVER_WRITE_( c )
01850 }

void sc_dt::rshift ( sc_fxnum_fast &  c,
const sc_fxnum_fast &  a,
int  b 
) [inline]

sc_fxnum.h4096 行で定義されています。

04097 {
04098     SC_FXNUM_FAST_OBSERVER_READ_( a )
04099     c.m_val = a.m_val * scfx_pow2( -b );
04100     c.cast();
04101     SC_FXNUM_FAST_OBSERVER_WRITE_( c )
04102 }

void sc_dt::rshift ( sc_fxval_fast &  c,
const sc_fxnum_fast &  a,
int  b 
) [inline]

sc_fxnum.h4078 行で定義されています。

04079 {
04080     SC_FXNUM_FAST_OBSERVER_READ_( a )
04081     c.set_val( a.m_val * scfx_pow2( -b ) );
04082 }

void sc_dt::rshift ( sc_fxnum &  c,
const sc_fxnum &  a,
int  b 
) [inline]

sc_fxnum.h2985 行で定義されています。

02986 {
02987     SC_FXNUM_OBSERVER_READ_( a )
02988     delete c.m_rep;
02989     c.m_rep = sc_dt::rsh_scfx_rep( *a.m_rep, b );
02990     c.cast();
02991     SC_FXNUM_OBSERVER_WRITE_( c )
02992 }

void sc_dt::rshift ( sc_fxval &  c,
const sc_fxnum &  a,
int  b 
) [inline]

sc_fxnum.h2966 行で定義されています。

02967 {
02968     SC_FXNUM_OBSERVER_READ_( a )
02969     c.set_rep( sc_dt::rsh_scfx_rep( *a.m_rep, b ) );
02970 }

void sc_dt::safe_set ( int  i,
bool  v,
sc_digit *  d 
) [inline]

sc_nbutils.h930 行で定義されています。

00931 {
00932 
00933 #ifdef DEBUG_SYSTEMC
00934   assert((i >= 0) && (d != NULL));
00935 #endif
00936 
00937   int bit_num = bit_ord(i);
00938   int digit_num = digit_ord(i);    
00939   
00940   if (v)
00941     d[digit_num] |= one_and_zeros(bit_num);      
00942   else
00943     d[digit_num] &= ~(one_and_zeros(bit_num));
00944   
00945 }

template<class T>
const T sc_dt::sc_abs ( const T &  a  )  [inline]

sc_macros.h69 行で定義されています。

00070 {
00071     // return ( a >= 0 ? a : -a );
00072     // the code below is functionaly the same as the code above; the
00073     // difference is that the code below works for all arithmetic
00074     // SystemC datatypes.
00075     T z( a );
00076     z = 0;
00077     if( a >= z ) {
00078         return a;
00079     } else {
00080         T c( a );
00081         c = -a;
00082         return c;
00083     }
00084 }

void sc_dt::sc_deprecated_sc_bit (  ) 

sc_bit.cpp122 行で定義されています。

00123 {
00124     static bool warn_sc_bit_deprecated=true;
00125     if ( warn_sc_bit_deprecated )
00126     {
00127         warn_sc_bit_deprecated=false;
00128         SC_REPORT_INFO(sc_core::SC_ID_IEEE_1666_DEPRECATION_,
00129             "sc_bit is deprecated, use bool instead");
00130     }
00131 }

void sc_dt::sc_int_concref_invalid_length ( int  length  ) 

sc_int_base.cpp67 行で定義されています。

00068 {
00069     char msg[BUFSIZ];
00070     std::sprintf( msg,
00071              "sc_int_concref<T1,T2> initialization: length = %d "
00072              "violates 1 <= length <= %d",
00073              length, SC_INTWIDTH );
00074     SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_, msg );
00075 }

sc_numrep sc_dt::sc_io_base ( systemc_ostream &  stream_object,
sc_numrep  def_base 
) [inline]

sc_string.h132 行で定義されています。

00134     {
00135         return SC_DEC;
00136     }

bool sc_dt::sc_io_show_base ( systemc_ostream &  stream_object  )  [inline]

sc_string.h137 行で定義されています。

00138     {
00139         return false;
00140     }

template<class T>
const T sc_dt::sc_max ( const T &  a,
const T &  b 
) [inline]

sc_macros.h61 行で定義されています。

00062 {
00063     return ( ( a >= b ) ? a : b );
00064 }

template<class T>
const T sc_dt::sc_min ( const T &  a,
const T &  b 
) [inline]

sc_macros.h53 行で定義されています。

00054 {
00055     return ( ( a <= b ) ? a : b );
00056 }

int sc_dt::sc_roundup ( int  n,
int  m 
) [inline]

sc_string.cpp58 行で定義されています。

00059 {
00060     return ((n - 1) / m + 1) * m;
00061 }

void sc_dt::sc_trace ( sc_core::sc_trace_file tf,
const sc_fxnum_fast *  object,
const std::string &  name 
) [inline]

scfx_other_defs.h419 行で定義されています。

00421 {
00422     if( tf )
00423         tf->trace( *object, name );
00424 }

void sc_dt::sc_trace ( sc_core::sc_trace_file tf,
const sc_fxnum_fast &  object,
const std::string &  name 
) [inline]

scfx_other_defs.h410 行で定義されています。

00412 {
00413     if( tf )
00414         tf->trace( object, name );
00415 }

void sc_dt::sc_trace ( sc_core::sc_trace_file tf,
const sc_fxnum *  object,
const std::string &  name 
) [inline]

scfx_other_defs.h401 行で定義されています。

00403 {
00404     if( tf )
00405         tf->trace( *object, name );
00406 }

void sc_dt::sc_trace ( sc_core::sc_trace_file tf,
const sc_fxnum &  object,
const std::string &  name 
) [inline]

scfx_other_defs.h392 行で定義されています。

00394 {
00395     if( tf )
00396         tf->trace( object, name );
00397 }

void sc_dt::sc_trace ( sc_core::sc_trace_file tf,
const sc_fxval_fast *  object,
const std::string &  name 
) [inline]

scfx_other_defs.h383 行で定義されています。

00385 {
00386     if( tf )
00387         tf->trace( *object, name );
00388 }

void sc_dt::sc_trace ( sc_core::sc_trace_file tf,
const sc_fxval_fast &  object,
const std::string &  name 
) [inline]

scfx_other_defs.h374 行で定義されています。

00376 {
00377     if( tf )
00378         tf->trace( object, name );
00379 }

void sc_dt::sc_trace ( sc_core::sc_trace_file tf,
const sc_fxval *  object,
const std::string &  name 
) [inline]

scfx_other_defs.h365 行で定義されています。

00367 {
00368     if( tf )
00369         tf->trace( *object, name );
00370 }

void sc_dt::sc_trace ( sc_core::sc_trace_file tf,
const sc_fxval &  object,
const std::string &  name 
) [inline]

scfx_other_defs.h356 行で定義されています。

00358 {
00359     if( tf )
00360         tf->trace( object, name );
00361 }

void sc_dt::sc_uint_concref_invalid_length ( int  length  ) 

sc_uint_base.cpp65 行で定義されています。

00066 {
00067     char msg[BUFSIZ];
00068     std::sprintf( msg,
00069              "sc_uint_concref<T1,T2> initialization: length = %d "
00070              "violates 1 <= length <= %d",
00071              length, SC_INTWIDTH );
00072     SC_REPORT_ERROR( sc_core::SC_ID_OUT_OF_BOUNDS_, msg );
00073 }

void sc_dt::scfx_csd2tc ( scfx_string &  csd  ) 

scfx_utils.cpp113 行で定義されています。

00114 {
00115     SC_ASSERT_( csd[0] == '0' && csd[1] == 'c' &&
00116                 csd[2] == 's' && csd[3] == 'd', "invalid prefix" );
00117 
00118     scfx_string s;
00119 
00120     // copy bits from 'csd' into 's'; skip prefix, point, and exponent
00121     int i = 0;
00122     s[i ++] = '0';
00123     int j = 4;
00124     while( csd[j] )
00125     {
00126         if( csd[j] == '-' || csd[j] == '0' || csd[j] == '1' )
00127             s[i ++] = csd[j];
00128         else if( csd[j] != '.' )
00129             break;
00130         ++ j;
00131     }
00132     s[i] = '\0';
00133 
00134     // convert 's' from csd to two's complement
00135     int len = i;
00136     i = 1;
00137     while( i < len )
00138     {
00139         while( i < len && s[i] != '-' )
00140             i ++;
00141         if( i < len )
00142         {
00143             j = i ++;
00144             s[j --] = '1';
00145             while( j >= 0 && s[j] == '0' )
00146                 s[j --] = '1';
00147             if( j >= 0 )
00148                 s[j] = '0';
00149         }
00150     }
00151 
00152     // copy bits from 's' back into 'csd'
00153     j = csd.length();
00154     csd[j + 1] = '\0';
00155     while( j > 4 )
00156     {
00157         csd[j] = csd[j - 1];
00158         -- j;
00159     }
00160         
00161     i = 0;
00162     j = 4;
00163     while( s[i] )
00164     {
00165         if( csd[j] == '.' )
00166             ++ j;
00167         csd[j ++] = s[i ++];
00168     }
00169 }

bool sc_dt::scfx_exp_start ( const char *  s  )  [inline]

scfx_utils.h258 行で定義されています。

00259 {
00260     if( *s == 'e' || *s == 'E' )
00261     {
00262         ++ s;
00263         if( *s == '+' || *s == '-' )
00264             return true;
00265     }
00266     return false;
00267 }

int sc_dt::scfx_find_lsb ( unsigned long  x  )  [inline]

scfx_utils.h85 行で定義されています。

00086 {
00087     int i;
00088 #   if defined(SC_LONG_64)
00089         i = 63;
00090         LSB_STATEMENT( 32 );
00091 #   else
00092         i = 31;
00093 #   endif // defined(SC_LONG_64)
00094     LSB_STATEMENT( 16 );
00095     LSB_STATEMENT( 8 );
00096     LSB_STATEMENT( 4 );
00097     LSB_STATEMENT( 2 );
00098     LSB_STATEMENT( 1 );
00099     return i;
00100 }

int sc_dt::scfx_find_msb ( unsigned long  x  )  [inline]

scfx_utils.h65 行で定義されています。

00066 {
00067     int i = 0;
00068 #   if defined(SC_LONG_64)
00069         MSB_STATEMENT( 32 );
00070 #   endif // defined(SC_LONG_64)
00071     MSB_STATEMENT( 16 );
00072     MSB_STATEMENT( 8 );
00073     MSB_STATEMENT( 4 );
00074     MSB_STATEMENT( 2 );
00075     MSB_STATEMENT( 1 );
00076     return i;
00077 }

bool sc_dt::scfx_is_digit ( char  c,
sc_numrep  numrep 
) [inline]

scfx_utils.h271 行で定義されています。

00272 {
00273     bool is_digit;
00274 
00275     switch( numrep )
00276     {
00277         case SC_DEC:
00278         {
00279             switch( c )
00280             {
00281                 case '0': case '1': case '2': case '3': case '4':
00282                 case '5': case '6': case '7': case '8': case '9':
00283                 {
00284                     is_digit = true;
00285                     break;
00286                 }
00287                 default:
00288                     is_digit = false;
00289             }
00290             break;
00291         }
00292         case SC_BIN:
00293         case SC_BIN_US:
00294         case SC_BIN_SM:
00295         {
00296             switch( c )
00297             {
00298                 case '0': case '1':
00299                 {
00300                     is_digit = true;
00301                     break;
00302                 }
00303                 default:
00304                     is_digit = false;
00305             }
00306             break;
00307         }
00308         case SC_OCT:
00309         case SC_OCT_US:
00310         case SC_OCT_SM:
00311         {
00312             switch( c )
00313             {
00314                 case '0': case '1': case '2': case '3':
00315                 case '4': case '5': case '6': case '7':
00316                 {
00317                     is_digit = true;
00318                     break;
00319                 }
00320                 default:
00321                     is_digit = false;
00322             }
00323             break;
00324         }
00325         case SC_HEX:
00326         case SC_HEX_US:
00327         case SC_HEX_SM:
00328         {
00329             switch( c )
00330             {
00331                 case '0': case '1': case '2': case '3': case '4':
00332                 case '5': case '6': case '7': case '8': case '9':
00333                 case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
00334                 case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
00335                 {
00336                     is_digit = true;
00337                     break;
00338                 }
00339                 default:
00340                     is_digit = false;
00341             }
00342             break;
00343         }
00344         case SC_CSD:
00345         {
00346             switch( c )
00347             {
00348                 case '0': case '1': case '-':
00349                 {
00350                     is_digit = true;
00351                     break;
00352                 }
00353                 default:
00354                     is_digit = false;
00355             }
00356             break;
00357         }
00358         default:
00359             is_digit = false;
00360     }
00361 
00362     return is_digit;
00363 }

bool sc_dt::scfx_is_equal ( const char *  a,
const char *  b 
) [inline]

scfx_utils.h232 行で定義されています。

00233 {
00234     while( *a != 0 && *b != 0 && *a == *b )
00235     {
00236         ++ a;
00237         ++ b;
00238     }
00239     return ( *a == 0 && *b == 0 );
00240 }

bool sc_dt::scfx_is_inf ( const char *  s  )  [inline]

scfx_utils.h251 行で定義されています。

00252 {
00253     return ( scfx_is_equal( s, "Inf" ) || scfx_is_equal( s, "Infinity" ) );
00254 }

bool sc_dt::scfx_is_nan ( const char *  s  )  [inline]

scfx_utils.h244 行で定義されています。

00245 {
00246     return scfx_is_equal( s, "NaN" );
00247 }

int sc_dt::scfx_parse_base ( const char *&  s  )  [inline]

scfx_utils.h206 行で定義されています。

00207 {
00208     const char* s1 = s + 1;
00209 
00210     int base = 10;
00211 
00212     if( *s == '0' )
00213     {
00214         switch( *s1 )
00215         {
00216             case 'b':
00217             case 'B': base =  2; s += 2; break;
00218             case 'o':
00219             case 'O': base =  8; s += 2; break;
00220             case 'd':
00221             case 'D': base = 10; s += 2; break;
00222             case 'x':
00223             case 'X': base = 16; s += 2; break;
00224         }
00225     }
00226 
00227     return base;
00228 }

sc_numrep sc_dt::scfx_parse_prefix ( const char *&  s  )  [inline]

scfx_utils.h134 行で定義されています。

00135 {
00136     if( s[0] == '0' ) {
00137         switch( s[1] ) {
00138         case 'b':
00139         case 'B':
00140         {
00141             if( s[2] == 'u' || s[2] == 'U' && s[3] == 's' || s[3] == 'S' ) {
00142                 s += 4;
00143                 return SC_BIN_US;
00144             }
00145             if( s[2] == 's' || s[2] == 'S' && s[3] == 'm' || s[3] == 'M' ) {
00146                 s += 4;
00147                 return SC_BIN_SM;
00148             }
00149             s += 2;
00150             return SC_BIN;
00151         }
00152         case 'o':
00153         case 'O':
00154         {
00155             if( s[2] == 'u' || s[2] == 'U' && s[3] == 's' || s[3] == 'S' ) {
00156                 s += 4;
00157                 return SC_OCT_US;
00158             }
00159             if( s[2] == 's' || s[2] == 'S' && s[3] == 'm' || s[3] == 'M' ) {
00160                 s += 4;
00161                 return SC_OCT_SM;
00162             }
00163             s += 2;
00164             return SC_OCT;
00165         }
00166         case 'x':
00167         case 'X':
00168         {
00169             if( s[2] == 'u' || s[2] == 'U' && s[3] == 's' || s[3] == 'S' ) {
00170                 s += 4;
00171                 return SC_HEX_US;
00172             }
00173             if( s[2] == 's' || s[2] == 'S' && s[3] == 'm' || s[3] == 'M' ) {
00174                 s += 4;
00175                 return SC_HEX_SM;
00176             }
00177             s += 2;
00178             return SC_HEX;
00179         }
00180         case 'd':
00181         case 'D':
00182         {
00183             s += 2;
00184             return SC_DEC;
00185         }
00186         case 'c':
00187         case 'C':
00188         {
00189             if( s[2] == 's' || s[2] == 'S' && s[3] == 'd' || s[3] == 'D' ) {
00190                 s += 4;
00191                 return SC_CSD;
00192             }
00193             break;
00194         }
00195         default:
00196             break;
00197         }
00198     }
00199 
00200     return SC_DEC;
00201 }

int sc_dt::scfx_parse_sign ( const char *&  s,
bool &  sign_char 
) [inline]

scfx_utils.h111 行で定義されています。

00112 {
00113     int sign = 1;
00114 
00115     if( *s == '+' )
00116     {
00117         ++ s;
00118         sign_char = true;
00119     }
00120     else if( *s == '-' )
00121     {
00122         sign = -1;
00123         ++ s;
00124         sign_char = true;
00125     }
00126     else
00127         sign_char = false;
00128 
00129     return sign;
00130 }

double sc_dt::scfx_pow2 ( int  exp  )  [inline]

scfx_ieee.h627 行で定義されています。

00628 {
00629     scfx_ieee_double r;
00630     if( exp < SCFX_IEEE_DOUBLE_E_MIN )
00631     {
00632         r = 0.0;
00633         // handle subnormal case
00634         exp -= SCFX_IEEE_DOUBLE_E_MIN;
00635         if( ( exp += 20 ) >= 0 )
00636         {
00637             r.mantissa0( 1U << exp );
00638         }
00639         else if( ( exp += 32 ) >= 0 )
00640         {
00641             r.mantissa1( 1U << exp );
00642         }
00643     }
00644     else if( exp > SCFX_IEEE_DOUBLE_E_MAX )
00645     {
00646         r.set_inf();
00647     }
00648     else
00649     {
00650         r = 1.0;
00651         r.exponent( exp );
00652     }
00653     return r;
00654 }

void sc_dt::scfx_print_exp ( scfx_string &  s,
int  exp 
) [inline]

scfx_utils.h487 行で定義されています。

00488 {
00489     if( exp != 0 )
00490     {
00491         s += 'e';
00492                 
00493         if( exp < 0 )
00494         {
00495             exp = - exp;
00496             s += '-';
00497         }
00498         else
00499             s += '+';
00500 
00501         bool first = true;
00502         int scale = 1000000000;
00503         do
00504         {
00505             int digit = exp / scale;
00506             exp = exp % scale;
00507             if( digit != 0 || ! first )
00508             {
00509                 s += static_cast<char>( digit + '0' );
00510                 first = false;
00511             }
00512             scale /= 10;
00513         }
00514         while( scale > 0 );
00515     }
00516 }

void sc_dt::scfx_print_inf ( scfx_string &  s,
bool  negative 
) [inline]

scfx_utils.h433 行で定義されています。

00434 {
00435     if( negative )
00436         s += "-Inf";
00437     else
00438         s += "Inf";
00439 }

void sc_dt::scfx_print_nan ( scfx_string &  s  )  [inline]

scfx_utils.h426 行で定義されています。

00427 {
00428     s += "NaN";
00429 }

void sc_dt::scfx_print_prefix ( scfx_string &  s,
sc_numrep  numrep 
) [inline]

scfx_utils.h443 行で定義されています。

00444 {
00445     switch( numrep )
00446     {
00447         case SC_DEC:
00448             s += "0d";
00449             break;
00450         case SC_BIN:
00451             s += "0b";
00452             break;
00453         case SC_BIN_US:
00454             s += "0bus";
00455             break;
00456         case SC_BIN_SM:
00457             s += "0bsm";
00458             break;
00459         case SC_OCT:
00460             s += "0o";
00461             break;
00462         case SC_OCT_US:
00463             s += "0ous";
00464             break;
00465         case SC_OCT_SM:
00466             s += "0osm";
00467             break;
00468         case SC_HEX:
00469             s += "0x";
00470             break;
00471         case SC_HEX_US:
00472             s += "0xus";
00473             break;
00474         case SC_HEX_SM:
00475             s += "0xsm";
00476             break;
00477         case SC_CSD:
00478             s += "0csd";
00479             break;
00480         default:
00481             s += "unknown";
00482     }
00483 }

void sc_dt::scfx_tc2csd ( scfx_string &  s,
int  w_prefix 
)

scfx_utils.cpp53 行で定義されています。

00054 {
00055     if( w_prefix != 0 ) {
00056         SC_ASSERT_( s[0] == '0' && s[1] == 'c' &&
00057                     s[2] == 's' && s[3] == 'd', "invalid prefix" );
00058     }
00059 
00060     scfx_string csd;
00061 
00062     // copy bits from 's' into 'csd'; skip prefix, point, and exponent
00063     int i = 0;
00064     int j = (w_prefix != 0 ? 4 : 0);
00065     while( s[j] )
00066     {
00067         if( s[j] == '0' || s[j] == '1' )
00068             csd[i ++] = s[j];
00069         else if( s[j] != '.' )
00070             break;
00071         ++ j;
00072     }
00073     csd[i] = '\0';
00074 
00075     // convert 'csd' from two's complement to csd
00076     -- i;
00077     while( i >= 0 )
00078     {
00079         if( csd[i] == '0' )
00080             -- i;
00081         else
00082         {
00083             if( i > 0 && csd[i - 1] == '0' )
00084                 -- i;
00085             else if( i == 0 )
00086                 csd[i --] = '-';
00087             else
00088             {   // i > 0 && csd[i - 1] == '1'
00089                 csd[i --] = '-';
00090                 while( i >= 0 && csd[i] == '1' )
00091                     csd[i --] = '0';
00092                 if( i > 0 )
00093                     csd[i] = '1';
00094                 else if( i == 0 )
00095                     csd[i --] = '1';
00096             }
00097         }
00098     }
00099 
00100     // copy bits from 'csd' back into 's'
00101     i = 0;
00102     j = (w_prefix != 0 ? 4 : 0);
00103     while( csd[i] )
00104     {
00105         if( s[j] == '.' )
00106             ++ j;
00107         s[j ++] = csd[i ++];
00108     }
00109 }

int sc_dt::scfx_to_digit ( char  c,
sc_numrep  numrep 
) [inline]

scfx_utils.h367 行で定義されています。

00368 {
00369     int to_digit;
00370     
00371     switch( numrep )
00372     {
00373         case SC_DEC:
00374         case SC_BIN:
00375         case SC_BIN_US:
00376         case SC_BIN_SM:
00377         case SC_OCT:
00378         case SC_OCT_US:
00379         case SC_OCT_SM:
00380         {
00381             to_digit = c - '0';
00382             break;
00383         }
00384         case SC_HEX:
00385         case SC_HEX_US:
00386         case SC_HEX_SM:
00387         {
00388             switch( c )
00389             {
00390                 case '0': case '1': case '2': case '3': case '4':
00391                 case '5': case '6': case '7': case '8': case '9':
00392                     to_digit = c - '0';
00393                     break;
00394                 case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
00395                     to_digit = c - 'a' + 10;
00396                     break;
00397                 case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
00398                     to_digit = c - 'A' + 10;
00399                     break;
00400                 default:
00401                     to_digit = -2;
00402             }
00403             break;
00404         }
00405         case SC_CSD:
00406         {
00407             if( c == '-' )
00408                 to_digit = -1;
00409             else
00410                 to_digit = c - '0';
00411         }
00412         default:
00413             to_digit = -2;
00414     };
00415 
00416     return to_digit;
00417 }

template<class X>
void sc_dt::set_words_ ( X &  x,
int  wi,
sc_digit  x_dw,
sc_digit  x_cw 
) [inline]

sc_proxy.h645 行で定義されています。

00646 {
00647     x.set_word( wi, x_dw );
00648     x.set_cword( wi, x_cw );
00649 }

static int sc_dt::sub_mants ( int  size,
scfx_mant &  result,
const scfx_mant &  a,
const scfx_mant &  b 
) [inline, static]

scfx_rep.cpp1254 行で定義されています。

01256 {
01257     unsigned carry = 0;
01258 
01259     int index = 0;
01260 
01261     do
01262     {
01263         word x = a[index];
01264         word y = b[index];
01265 
01266         y += carry;
01267         carry = y < carry;
01268         y = x - y;
01269         carry += y > x;
01270         result[index] = y;
01271     }
01272     while( ++ index < size );
01273 
01274     return ( carry ? 1 : 0 );
01275 }

scfx_rep * sc_dt::sub_scfx_rep ( const scfx_rep &  lhs,
const scfx_rep &  rhs,
int  max_wl 
)

scfx_rep.cpp1408 行で定義されています。

01409 {
01410     scfx_rep& result = *new scfx_rep;
01411 
01412     //
01413     // check for special cases
01414     //
01415 
01416     if( lhs.is_nan() || rhs.is_nan()
01417     ||  ( lhs.is_inf() && rhs.is_inf() && lhs.m_sign == rhs.m_sign ) )
01418     {
01419         result.set_nan();
01420         return &result;
01421     }
01422 
01423     if( lhs.is_inf() )
01424     {
01425         result.set_inf( lhs.m_sign );
01426         return &result;
01427     }
01428 
01429     if( rhs.is_inf() )
01430     {
01431         result.set_inf( -1 * rhs.m_sign );
01432         return &result;
01433     }
01434 
01435     //
01436     // align operands if needed
01437     //
01438 
01439     scfx_mant_ref lhs_mant;
01440     scfx_mant_ref rhs_mant;
01441 
01442     int len_mant = lhs.size();
01443     int new_wp = lhs.m_wp;
01444 
01445     align( lhs, rhs, new_wp, len_mant, lhs_mant, rhs_mant );
01446 
01447     //
01448     // size the result mantissa
01449     //
01450 
01451     result.resize_to( len_mant );
01452     result.m_wp = new_wp;
01453 
01454     //
01455     // do it
01456     //
01457 
01458     if( lhs.m_sign != rhs.m_sign )
01459     {
01460         add_mants( len_mant, result.m_mant, lhs_mant, rhs_mant );
01461         result.m_sign = lhs.m_sign;
01462     }
01463     else
01464     {
01465         int cmp = compare_abs( lhs, rhs );
01466 
01467         if( cmp == 1 )
01468         {
01469             sub_mants( len_mant, result.m_mant, lhs_mant, rhs_mant );
01470             result.m_sign = lhs.m_sign;
01471         }
01472         else if ( cmp == -1 )
01473         {
01474             sub_mants( len_mant, result.m_mant, rhs_mant, lhs_mant );
01475             result.m_sign = -rhs.m_sign;
01476         } else {
01477             result.m_mant.clear();
01478             result.m_sign = 1;
01479         }
01480     }
01481 
01482     result.find_sw();
01483     result.round( max_wl );
01484 
01485     return &result;
01486 }

sc_signed sc_dt::sub_signed_friend ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
small_type  vs,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_unsigned sc_dt::sub_unsigned_friend ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
small_type  vs,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

static int sc_dt::sub_with_index ( scfx_mant &  a,
int  a_msw,
int  a_lsw,
const scfx_mant &  b,
int  b_msw,
int  b_lsw 
) [inline, static]

scfx_rep.cpp1372 行で定義されています。

01374 {
01375     unsigned carry = 0;
01376 
01377     int size    = b_msw - b_lsw;
01378     int a_index = a_msw - size;
01379     int b_index = b_msw - size;
01380 
01381     do
01382     {
01383         word x = a[a_index];
01384         word y = b[b_index];
01385 
01386         y += carry;
01387         carry = y < carry;
01388         y = x - y;
01389         carry += y > x;
01390         a[a_index] = y;
01391 
01392         a_index ++;
01393         b_index ++;
01394     }
01395     while( size -- );
01396 
01397     if( carry )
01398     {
01399         // special case: a[a_msw + 1 ] == 1
01400         a[a_msw + 1] = 0;
01401     }
01402 
01403     return ( carry ? 1 : 0 );
01404 }

const std::string sc_dt::to_string ( sc_numrep  numrep  ) 

sc_string.cpp71 行で定義されています。

00072 {
00073     switch( numrep )
00074     {
00075         case SC_DEC:
00076             return std::string( "SC_DEC" );
00077         case SC_BIN:
00078             return std::string( "SC_BIN" );
00079         case SC_BIN_US:
00080             return std::string( "SC_BIN_US" );
00081         case SC_BIN_SM:
00082             return std::string( "SC_BIN_SM" );
00083         case SC_OCT:
00084             return std::string( "SC_OCT" );
00085         case SC_OCT_US:
00086             return std::string( "SC_OCT_US" );
00087         case SC_OCT_SM:
00088             return std::string( "SC_OCT_SM" );
00089         case SC_HEX:
00090             return std::string( "SC_HEX" );
00091         case SC_HEX_US:
00092             return std::string( "SC_HEX_US" );
00093         case SC_HEX_SM:
00094             return std::string( "SC_HEX_SM" );
00095         case SC_CSD:
00096             return std::string( "SC_CSD" );
00097         default:
00098             return std::string( "unknown" );
00099     }
00100 }

const char * sc_dt::to_string ( const scfx_ieee_double &  id,
sc_numrep  numrep,
int  w_prefix,
sc_fmt  fmt,
const scfx_params *  params = 0 
)

sc_fxval.cpp479 行で定義されています。

00481 {
00482     static scfx_string s;
00483 
00484     s.clear();
00485 
00486     if( id.is_nan() )
00487         scfx_print_nan( s );
00488     else if( id.is_inf() )
00489         scfx_print_inf( s, static_cast<bool>( id.negative() ) );
00490     else if( id.negative() && ! id.is_zero() &&
00491              ( numrep == SC_BIN_US ||
00492                numrep == SC_OCT_US ||
00493                numrep == SC_HEX_US ) )
00494         s += "negative";
00495     else if( numrep == SC_DEC )
00496         sc_dt::print_dec( s, id, w_prefix, fmt );
00497     else
00498         sc_dt::print_other( s, id, numrep, w_prefix, fmt, params );
00499 
00500     return s;
00501 }

const std::string sc_dt::to_string ( sc_fmt  fmt  ) 

sc_fxdefs.cpp158 行で定義されています。

00159 {
00160     switch( fmt ) {
00161         case SC_F:
00162             return std::string( "SC_F" );
00163         case SC_E:
00164             return std::string( "SC_E" );
00165         default:
00166             return std::string( "unknown" );
00167     }
00168 }

const std::string sc_dt::to_string ( sc_switch  sw  ) 

sc_fxdefs.cpp138 行で定義されています。

00139 {
00140     switch( sw ) {
00141         case SC_OFF:
00142             return std::string( "SC_OFF" );
00143         case SC_ON:
00144             return std::string( "SC_ON" );
00145         default:
00146             return std::string( "unknown" );
00147     }
00148 }

const std::string sc_dt::to_string ( sc_o_mode  o_mode  ) 

sc_fxdefs.cpp111 行で定義されています。

00112 {
00113     switch( o_mode )
00114     {
00115         case SC_SAT:
00116             return std::string( "SC_SAT" );
00117         case SC_SAT_ZERO:
00118             return std::string( "SC_SAT_ZERO" );
00119         case SC_SAT_SYM:
00120             return std::string( "SC_SAT_SYM" );
00121         case SC_WRAP:
00122             return std::string( "SC_WRAP" );
00123         case SC_WRAP_SM:
00124             return std::string( "SC_WRAP_SM" );
00125         default:
00126             return std::string( "unknown" );
00127     }
00128 }

const std::string sc_dt::to_string ( sc_q_mode  q_mode  ) 

sc_fxdefs.cpp80 行で定義されています。

00081 {
00082     switch( q_mode )
00083     {
00084         case SC_RND:
00085             return std::string( "SC_RND" );
00086         case SC_RND_ZERO:
00087             return std::string( "SC_RND_ZERO" );
00088         case SC_RND_MIN_INF:
00089             return std::string( "SC_RND_MIN_INF" );
00090         case SC_RND_INF:
00091             return std::string( "SC_RND_INF" );
00092         case SC_RND_CONV:
00093             return std::string( "SC_RND_CONV" );
00094         case SC_TRN:
00095             return std::string( "SC_TRN" );
00096         case SC_TRN_ZERO:
00097             return std::string( "SC_TRN_ZERO" );
00098         default:
00099             return std::string( "unknown" );
00100     }
00101 }

const std::string sc_dt::to_string ( sc_enc  enc  ) 

sc_fxdefs.cpp59 行で定義されています。

00060 {
00061     switch( enc )
00062     {
00063         case SC_TC_:
00064             return std::string( "SC_TC_" );
00065         case SC_US_:
00066             return std::string( "SC_US_" );
00067         default:
00068             return std::string( "unknown" );
00069     }
00070 }

void sc_dt::trim ( small_type  added,
int  nb,
int  nd,
sc_digit *  d 
) [inline]

sc_nbutils.h704 行で定義されています。

00705 {
00706 #ifdef DEBUG_SYSTEMC
00707   assert((nb > 0) && (nd > 0) && (d != NULL));
00708 #endif
00709 
00710   d[nd - 1] &= one_and_ones(bit_ord(nb - 1) + added);    
00711 }

void sc_dt::trim_signed ( int  nb,
int  nd,
sc_digit *  d 
) [inline]

sc_nbutils.h745 行で定義されています。

00746 {
00747 #ifdef DEBUG_SYSTEMC
00748   assert((nb > 0) && (nd > 0) && (d != NULL));
00749 #endif
00750 
00751   d[nd - 1] &= one_and_ones(bit_ord(nb - 1) + 1);
00752 }

void sc_dt::trim_unsigned ( int  nb,
int  nd,
sc_digit *  d 
) [inline]

sc_nbutils.h828 行で定義されています。

00829 {
00830 #ifdef DEBUG_SYSTEMC
00831   assert((nb > 0) && (nd > 0) && (d != NULL));
00832 #endif
00833 
00834   d[nd - 1] &= one_and_ones(bit_ord(nb - 1));    
00835 }

double sc_dt::uint64_to_double ( uint64  a  )  [inline]

scfx_ieee.h666 行で定義されています。

00667 {
00668 #if defined( _MSC_VER )
00669     // conversion from uint64 to double not implemented; use int64
00670     double tmp = static_cast<double>( static_cast<int64>( a ) );
00671     return ( tmp >= 0 ) ? tmp : tmp + sc_dt::scfx_pow2( 64 );
00672 #else
00673     return static_cast<double>( a );
00674 #endif
00675 }

void sc_dt::vec_add ( int  ulen,
const sc_digit *  u,
int  vlen,
const sc_digit *  v,
sc_digit *  w 
)

sc_nbutils.cpp577 行で定義されています。

00580 {
00581 
00582 #ifdef DEBUG_SYSTEMC
00583   assert((ulen > 0) && (u != NULL));
00584   assert((vlen > 0) && (v != NULL));
00585   assert(w != NULL);
00586   assert(ulen >= vlen);
00587 #endif
00588 
00589   const sc_digit *uend = (u + ulen);
00590   const sc_digit *vend = (v + vlen);
00591 
00592   register sc_digit carry = 0;   // Also used as sum to save space.
00593 
00594   // Add along the shorter v.
00595   while (v < vend) {
00596     carry += (*u++) + (*v++);
00597     (*w++) = carry & DIGIT_MASK;
00598     carry >>= BITS_PER_DIGIT;
00599   }
00600 
00601   // Propagate the carry.
00602   while (carry && (u < uend)) {
00603     carry = (*u++) + 1;
00604     (*w++) = carry & DIGIT_MASK;
00605     carry >>= BITS_PER_DIGIT;
00606   }
00607 
00608   // Copy the rest of u to the result.
00609   while (u < uend)
00610     (*w++) = (*u++);
00611 
00612   // Propagate the carry if it is still 1.
00613   if (carry)
00614     (*w) = 1;
00615 
00616 }

void sc_dt::vec_add_on ( int  ulen,
sc_digit *  ubegin,
int  vlen,
const sc_digit *  v 
)

sc_nbutils.cpp622 行で定義されています。

00624 {
00625 
00626 #ifdef DEBUG_SYSTEMC
00627   assert((ulen > 0) && (ubegin != NULL));
00628   assert((vlen > 0) && (v != NULL));
00629   assert(ulen >= vlen);
00630 #endif
00631 
00632   register sc_digit *u = ubegin;
00633   const sc_digit *uend = (u + ulen);
00634   const sc_digit *vend = (v + vlen);
00635 
00636   register sc_digit carry = 0;   // Also used as sum to save space.
00637 
00638   // Add along the shorter v.
00639   while (v < vend) {
00640     carry += (*u) + (*v++);
00641     (*u++) = carry & DIGIT_MASK;
00642     carry >>= BITS_PER_DIGIT;
00643   }
00644 
00645   // Propagate the carry.
00646   while (carry && (u < uend)) {
00647     carry = (*u) + 1;
00648     (*u++) = carry & DIGIT_MASK;
00649     carry >>= BITS_PER_DIGIT;
00650   }
00651 
00652 #ifdef DEBUG_SYSTEMC
00653   if( carry != 0 ) {
00654       SC_REPORT_WARNING( sc_core::SC_ID_WITHOUT_MESSAGE_,
00655                          "vec_add_on( int, sc_digit*, int, const "
00656                          "sc_digit* ) : "
00657                          "result of addition is wrapped around" );
00658   }
00659 #endif
00660 
00661 }

void sc_dt::vec_add_on2 ( int  ulen,
sc_digit *  ubegin,
int  ,
const sc_digit *  v 
)

sc_nbutils.cpp667 行で定義されています。

00673 {
00674 
00675 #ifdef DEBUG_SYSTEMC
00676   assert((ulen > 0) && (ubegin != NULL));
00677   assert((vlen > 0) && (v != NULL));
00678   assert(ulen < vlen);
00679 #endif
00680 
00681   register sc_digit *u = ubegin;
00682   const sc_digit *uend = (u + ulen);
00683 
00684   register sc_digit carry = 0;   // Also used as sum to save space.
00685 
00686   // Add along the shorter u.
00687   while (u < uend) {
00688     carry += (*u) + (*v++);
00689     (*u++) = carry & DIGIT_MASK;
00690     carry >>= BITS_PER_DIGIT;
00691   }
00692 
00693 #ifdef DEBUG_SYSTEMC
00694   if( carry != 0 ) {
00695       SC_REPORT_WARNING( sc_core::SC_ID_WITHOUT_MESSAGE_,
00696                          "vec_add_on2( int, sc_digit*, int, const "
00697                          "sc_digit* ) : "
00698                          "result of addition is wrapped around" );
00699   }
00700 #endif
00701 }

void sc_dt::vec_add_small ( int  ulen,
const sc_digit *  u,
sc_digit  v,
sc_digit *  w 
)

sc_nbutils.cpp706 行で定義されています。

00709 {
00710 
00711 #ifdef DEBUG_SYSTEMC
00712   assert((ulen > 0) && (u != NULL));
00713   assert(w != NULL);
00714 #endif
00715 
00716   const sc_digit *uend = (u + ulen);
00717 
00718   // Add along the shorter v.
00719   register sc_digit carry = (*u++) + v;
00720   (*w++) = carry & DIGIT_MASK;
00721   carry >>= BITS_PER_DIGIT;
00722 
00723   // Propagate the carry.
00724   while (carry && (u < uend)) {
00725     carry = (*u++) + 1;
00726     (*w++) = carry & DIGIT_MASK;
00727     carry >>= BITS_PER_DIGIT;
00728   }
00729 
00730   // Copy the rest of u to the result.
00731   while (u < uend)
00732     (*w++) = (*u++);
00733 
00734   // Propagate the carry if it is still 1.
00735   if (carry)
00736     (*w) = 1;
00737 
00738 }

void sc_dt::vec_add_small_on ( int  ulen,
sc_digit *  u,
sc_digit  v 
)

sc_nbutils.cpp742 行で定義されています。

00743 {
00744 
00745 #ifdef DEBUG_SYSTEMC
00746   assert((ulen > 0) && (u != NULL));
00747 #endif
00748 
00749   register int i = 0;
00750 
00751   while (v && (i < ulen)) {
00752     v += u[i];
00753     u[i++] = v & DIGIT_MASK;
00754     v >>= BITS_PER_DIGIT;
00755   }
00756 
00757 #ifdef DEBUG_SYSTEMC
00758   if( v != 0 ) {
00759       SC_REPORT_WARNING( sc_core::SC_ID_WITHOUT_MESSAGE_,
00760                          "vec_add_small_on( int, sc_digit*, unsigned "
00761                          "long ) : "
00762                          "result of addition is wrapped around" );
00763   }
00764 #endif
00765 
00766 }

int sc_dt::vec_cmp ( int  ulen,
const sc_digit *  u,
int  vlen,
const sc_digit *  v 
) [inline]

sc_nbutils.h363 行で定義されています。

00365 {
00366 
00367 #ifdef DEBUG_SYSTEMC
00368   // assert((ulen <= 0) || (u != NULL));
00369   // assert((vlen <= 0) || (v != NULL));
00370 
00371   // ulen and vlen can be equal to 0 because vec_cmp can be called
00372   // after vec_skip_leading_zeros.
00373   assert((ulen >= 0) && (u != NULL));
00374   assert((vlen >= 0) && (v != NULL));
00375   // If ulen > 0, then the leading digit of u must be non-zero.
00376   assert((ulen <= 0) || (u[ulen - 1] != 0));
00377   assert((vlen <= 0) || (v[vlen - 1] != 0));
00378 #endif
00379 
00380   if (ulen != vlen)
00381     return (ulen - vlen);
00382 
00383   // ulen == vlen >= 1
00384   while ((--ulen >= 0) && (u[ulen] == v[ulen]))
00385     ;
00386 
00387   if (ulen < 0)
00388     return 0;
00389 
00390 #ifdef DEBUG_SYSTEMC
00391   // Test to see if the result is wrong due to the presence of
00392   // overflow bits.
00393   assert((u[ulen] & DIGIT_MASK) != (v[ulen] & DIGIT_MASK));
00394 #endif
00395 
00396   return (int) (u[ulen] - v[ulen]);
00397 
00398 }

void sc_dt::vec_complement ( int  ulen,
sc_digit *  u 
) [inline]

sc_nbutils.h519 行で定義されています。

00520 {
00521 
00522 #ifdef DEBUG_SYSTEMC
00523   assert((ulen > 0) && (u != NULL));
00524 #endif
00525 
00526   register sc_digit carry = 1;
00527 
00528   for (register int i = 0; i < ulen; ++i) {
00529     carry += (~u[i] & DIGIT_MASK);
00530     u[i] = carry & DIGIT_MASK;
00531     carry >>= BITS_PER_DIGIT;
00532   }
00533   
00534 }

void sc_dt::vec_copy ( int  n,
sc_digit *  u,
const sc_digit *  v 
) [inline]

sc_nbutils.h487 行で定義されています。

00488 {
00489 
00490 #ifdef DEBUG_SYSTEMC
00491   assert((n > 0) && (u != NULL) && (v != NULL));
00492 #endif
00493 
00494   for (register int i = 0; i < n; ++i)
00495     u[i] = v[i];
00496 }

void sc_dt::vec_copy_and_zero ( int  ulen,
sc_digit *  u,
int  vlen,
const sc_digit *  v 
) [inline]

sc_nbutils.h501 行で定義されています。

00503 {
00504 
00505 #ifdef DEBUG_SYSTEMC
00506   assert((ulen > 0) && (u != NULL));
00507   assert((vlen > 0) && (v != NULL));
00508   assert(ulen >= vlen);
00509 #endif
00510 
00511   vec_copy(vlen, u, v);
00512   vec_zero(vlen, ulen, u);
00513 
00514 }

void sc_dt::vec_div_large ( int  ulen,
const sc_digit *  u,
int  vlen,
const sc_digit *  v,
sc_digit *  w 
)

sc_nbutils.cpp1158 行で定義されています。

01161 {
01162 
01163 #ifdef DEBUG_SYSTEMC
01164   assert((ulen > 0) && (u != NULL));
01165   assert((vlen > 0) && (v != NULL));
01166   assert(w != NULL);
01167   assert(BITS_PER_DIGIT >= 3 * BITS_PER_BYTE);
01168 #endif
01169 
01170   // We will compute q = x / y where x = u and y = v. The reason for
01171   // using x and y is that x and y are BYTE_RADIX copies of u and v,
01172   // respectively. The use of BYTE_RADIX radix greatly simplifies the
01173   // complexity of the division operation. These copies are also
01174   // needed even when we use DIGIT_RADIX representation.
01175 
01176   int xlen = BYTES_PER_DIGIT * ulen + 1;
01177   int ylen = BYTES_PER_DIGIT * vlen;
01178 
01179 #ifdef SC_MAX_NBITS
01180   uchar x[DIV_CEIL2(SC_MAX_NBITS, BITS_PER_BYTE)];
01181   uchar y[DIV_CEIL2(SC_MAX_NBITS, BITS_PER_BYTE)];
01182   uchar q[DIV_CEIL2(SC_MAX_NBITS, BITS_PER_BYTE)];
01183 #else
01184   uchar *x = new uchar[xlen];
01185   uchar *y = new uchar[ylen];
01186   uchar *q = new uchar[xlen - ylen + 1];
01187 #endif
01188 
01189   // q corresponds to w.
01190 
01191   // Set (uchar) x = (sc_digit) u.
01192   xlen = vec_to_char(ulen, u, xlen, x);
01193 
01194   // Skip all the leading zeros in x.
01195   while ((--xlen >= 0) && (! x[xlen]));
01196   xlen++;
01197 
01198   // Set (uchar) y = (sc_digit) v.
01199   ylen = vec_to_char(vlen, v, ylen, y);
01200 
01201   // Skip all the leading zeros in y.
01202   while ((--ylen >= 0) && (! y[ylen]));
01203   ylen++;
01204 
01205 #ifdef DEBUG_SYSTEMC
01206   assert(xlen > 1);
01207   assert(ylen > 1);
01208 #endif
01209 
01210   // At this point, all the leading zeros are eliminated from x and y.
01211 
01212   // Zero the last digit of x.
01213   x[xlen] = 0;
01214 
01215   // The first two digits of y.
01216   register sc_digit y2 = (y[ylen - 1] << BITS_PER_BYTE) + y[ylen - 2];
01217 
01218   const sc_digit DOUBLE_BITS_PER_BYTE = 2 * BITS_PER_BYTE;
01219 
01220   // Find each q[k].
01221   for (register int k = xlen - ylen; k >= 0; --k) {
01222 
01223     // qk is a guess for q[k] such that q[k] = qk or qk - 1.
01224     register sc_digit qk;
01225 
01226     // Find qk by just using 2 digits of y and 3 digits of x. The
01227     // following code assumes that sizeof(sc_digit) >= 3 BYTEs.
01228     int k2 = k + ylen;
01229 
01230     qk = ((x[k2] << DOUBLE_BITS_PER_BYTE) + 
01231           (x[k2 - 1] << BITS_PER_BYTE) + x[k2 - 2]) / y2;
01232 
01233     if (qk >= BYTE_RADIX)     // qk cannot be larger than the largest
01234       qk = BYTE_RADIX - 1;    // digit in BYTE_RADIX.
01235 
01236     // q[k] = qk or qk - 1. The following if-statement determines which:
01237     if (qk) {
01238 
01239       register uchar *xk = (x + k);  // A shortcut for x[k].
01240 
01241       // x = x - y * qk :
01242       register sc_digit carry = 0;
01243 
01244       for (register int i = 0; i < ylen; ++i) {
01245         carry += y[i] * qk;
01246         sc_digit diff = (xk[i] + BYTE_RADIX) - (carry & BYTE_MASK);
01247         xk[i] = (uchar)(diff & BYTE_MASK);
01248         carry = (carry >> BITS_PER_BYTE) + (1 - (diff >> BITS_PER_BYTE));
01249       }
01250 
01251       // If carry, qk may be one too large.
01252       if (carry) {
01253 
01254         // 2's complement the last digit.
01255         carry = (xk[ylen] + BYTE_RADIX) - carry;
01256         xk[ylen] = (uchar)(carry & BYTE_MASK);
01257         carry = 1 - (carry >> BITS_PER_BYTE);
01258         
01259         if (carry) {
01260 
01261           // qk was one too large, so decrement it.
01262           --qk;
01263         
01264           // Since qk was decreased by one, y must be added to x:
01265           // That is, x = x - y * (qk - 1) = x - y * qk + y = x_above + y.
01266           carry = 0;
01267 
01268           for (register int i = 0; i < ylen; ++i) {
01269             carry += xk[i] + y[i];
01270             xk[i] = (uchar)(carry & BYTE_MASK);
01271             carry >>= BITS_PER_BYTE;
01272           }
01273 
01274           if (carry)
01275             xk[ylen] = (uchar)((xk[ylen] + 1) & BYTE_MASK);
01276 
01277         }  // second if carry
01278       }  // first if carry
01279     }  // if qk
01280 
01281     q[k] = (uchar)qk;
01282 
01283   }  // for k
01284 
01285   // Set (sc_digit) w = (uchar) q.
01286   vec_from_char(xlen - ylen + 1, q, ulen, w);
01287 
01288 #ifndef SC_MAX_NBITS
01289   delete [] x;
01290   delete [] y;
01291   delete [] q;
01292 #endif
01293 
01294 }

void sc_dt::vec_div_small ( int  ulen,
const sc_digit *  u,
sc_digit  v,
sc_digit *  q 
)

sc_nbutils.cpp1299 行で定義されています。

01301 {
01302 
01303   // Given (u = u_1u_2...u_n)_b = (q = q_1q_2...q_n) * v + r, where b
01304   // is the base, and 0 <= r < v. Then, the algorithm is as follows:
01305   //
01306   // r = 0; 
01307   // for (j = 1; j <= n; j++) {
01308   //   q_j = (r * b + u_j) / v;
01309   //   r = (r * b + u_j) % v;
01310   // }
01311   // 
01312   // In our case, b = DIGIT_RADIX, and u = Ax + B and q = Cx + D where
01313   // x = HALF_DIGIT_RADIX. Note that r < v < x and b = x^2. Then, a
01314   // typical situation is as follows:
01315   //
01316   // ---- ----
01317   // 0    r
01318   //           ---- ----
01319   //           A    B
01320   //      ---- ---- ----
01321   //      r    A    B     = r * b + u
01322   //
01323   // Hence, C = (r|A) / v.
01324   //        D = (((r|A) % v)|B) / v
01325   //        r = (((r|A) % v)|B) % v
01326 
01327 #ifdef DEBUG_SYSTEMC
01328   assert((ulen > 0) && (u != NULL));
01329   assert(q != NULL);
01330   assert((0 < v) && (v < HALF_DIGIT_RADIX));
01331 #endif
01332 
01333 #define q_h r
01334 
01335   register sc_digit r = 0;
01336   const sc_digit *ubegin = u;
01337 
01338   u += ulen;
01339   q += ulen;
01340 
01341   while (ubegin < u) {
01342 
01343     sc_digit u_AB = (*--u);       // A|B
01344 
01345 #ifdef DEBUG_SYSTEMC
01346     // The overflow bits must be zero.
01347     assert(high_half(u_AB) == high_half_masked(u_AB));
01348 #endif
01349 
01350     register sc_digit num = concat(r, high_half(u_AB));  // num = r|A
01351     q_h = num / v;                           // C
01352     num = concat((num % v), low_half(u_AB)); // num = (((r|A) % v)|B) 
01353     (*--q) = concat(q_h, num / v);           // q = C|D
01354     r = num % v;
01355 
01356   }
01357 
01358 #undef q_h
01359 
01360 }

int sc_dt::vec_find_first_nonzero ( int  ulen,
const sc_digit *  u 
) [inline]

sc_nbutils.h406 行で定義されています。

00407 {
00408 
00409 #ifdef DEBUG_SYSTEMC
00410   // assert((ulen <= 0) || (u != NULL));
00411   assert((ulen > 0) && (u != NULL));
00412 #endif
00413 
00414   while ((--ulen >= 0) && (! u[ulen]))
00415     ;
00416 
00417   return ulen;
00418   
00419 }

void sc_dt::vec_from_char ( int  ulen,
const uchar *  u,
int  vlen,
sc_digit *  v 
)

sc_nbutils.cpp1615 行で定義されています。

01617 {
01618 
01619 #ifdef DEBUG_SYSTEMC
01620   assert((ulen > 0) && (u != NULL));
01621   assert((vlen > 0) && (v != NULL));
01622   assert(sizeof(uchar) <= sizeof(sc_digit));
01623 #endif
01624 
01625   sc_digit *vend = (v + vlen);
01626 
01627   const int nsr = BITS_PER_DIGIT - BITS_PER_BYTE;
01628   const sc_digit mask = one_and_ones(nsr);
01629 
01630   (*v) = (sc_digit) u[ulen - 1];
01631 
01632   for (register int i = ulen - 2; i >= 0; --i) {
01633 
01634     // Manual inlining of vec_shift_left().
01635 
01636     register sc_digit *viter = v;
01637 
01638     register sc_digit carry = 0;
01639 
01640     while (viter < vend) {
01641       register sc_digit vval = (*viter);
01642       (*viter++) = (((vval & mask) << BITS_PER_BYTE) | carry);
01643       carry = vval >> nsr;
01644     }
01645 
01646     if (viter < vend)
01647       (*viter) = carry;
01648 
01649     (*v) |= (sc_digit) u[i];
01650 
01651   }
01652 
01653 }

small_type sc_dt::vec_from_str ( int  unb,
int  und,
sc_digit *  u,
const char *  v,
sc_numrep  base 
)

sc_nbutils.cpp496 行で定義されています。

00498 {
00499 
00500 #ifdef DEBUG_SYSTEMC
00501   assert((unb > 0) && (und > 0) && (u != NULL));
00502   assert(v != NULL);
00503 #endif
00504 
00505   is_valid_base(base);
00506 
00507   small_type b, s;  // base and sign.
00508 
00509   v = get_base_and_sign(v, b, s);
00510 
00511   if (base != SC_NOBASE) {
00512     if (b == NB_DEFAULT_BASE)
00513       b = base;
00514     else {
00515         char msg[BUFSIZ];
00516         std::sprintf( msg,
00517                  "vec_from_str( int, int, sc_digit*, const char*, sc_numrep base ) : "
00518                  "base = %s does not match the default base",
00519                  to_string( base ).c_str() );
00520         SC_REPORT_ERROR( sc_core::SC_ID_CONVERSION_FAILED_, msg );
00521     }
00522   }
00523 
00524   vec_zero(und, u);
00525 
00526   char c;
00527   
00528   for ( ; (c = *v); ++v) {
00529 
00530     if (isalnum(c)) {
00531       
00532       small_type val;  // Numeric value of a char.
00533     
00534       if (isalpha(c)) // Hex digit.
00535         val = toupper(c) - 'A' + 10;
00536       else
00537         val = c - '0';
00538       
00539       if (val >= b) {
00540           char msg[BUFSIZ];
00541           std::sprintf( msg,
00542                    "vec_from_str( int, int, sc_digit*, const char*, sc_numrep base ) : "
00543                    "'%c' is not a valid digit in base %d",
00544                    *v, b );
00545           SC_REPORT_ERROR( sc_core::SC_ID_CONVERSION_FAILED_, msg );
00546       }
00547       
00548       // digit = digit * b + val;
00549       vec_mul_small_on(und, u, b);
00550       
00551       if (val)
00552         vec_add_small_on(und, u, val);
00553 
00554     }
00555     else {
00556         char msg[BUFSIZ];
00557         std::sprintf( msg,
00558                  "vec_from_str( int, int, sc_digit*, const char*, sc_numrep base ) : "
00559                  "'%c' is not a valid digit in base %d",
00560                  *v, b );
00561         SC_REPORT_ERROR( sc_core::SC_ID_CONVERSION_FAILED_, msg );
00562     }
00563   }
00564 
00565   return convert_signed_SM_to_2C_to_SM(s, unb, und, u);
00566 }

void sc_dt::vec_mul ( int  ulen,
const sc_digit *  u,
int  vlen,
const sc_digit *  vbegin,
sc_digit *  wbegin 
)

sc_nbutils.cpp948 行で定義されています。

00951 {
00952 
00953   /* Consider u = Ax + B and v = Cx + D where x is equal to
00954      HALF_DIGIT_RADIX. In other words, A is the higher half of u and
00955      B is the lower half of u. The interpretation for v is
00956      similar. Then, we have the following picture:
00957 
00958               u_h     u_l
00959      u: -------- --------
00960                A        B
00961 
00962               v_h     v_l
00963      v: -------- --------
00964                C        D
00965  
00966      result (d):                     
00967      carry_before:                           -------- --------
00968                                               carry_h  carry_l
00969      result_before:        -------- -------- -------- --------
00970                                R1_h     R1_l     R0_h     R0_l
00971                                              -------- --------
00972                                                  BD_h     BD_l
00973                                     -------- --------
00974                                         AD_h     AD_l
00975                                     -------- --------
00976                                         BC_h     BC_l
00977                            -------- --------
00978                                AC_h     AC_l
00979      result_after:         -------- -------- -------- --------
00980                               R1_h'    R1_l'    R0_h'    R0_l'
00981  
00982      prod_l = R0_h|R0_l + B * D  + 0|carry_l
00983             = R0_h|R0_l + BD_h|BD_l + 0|carry_l
00984  
00985      prod_h = A * D + B * C + high_half(prod_l) + carry_h
00986             = AD_h|AD_l + BC_h|BC_l + high_half(prod_l) + 0|carry_h
00987  
00988      carry = A * C + high_half(prod_h)
00989            = AC_h|AC_l + high_half(prod_h)
00990  
00991      R0_l' = low_half(prod_l)
00992  
00993      R0_h' = low_half(prod_h)
00994  
00995      R0 = high_half(prod_h)|low_half(prod_l)
00996  
00997      where '|' is the concatenation operation and the suffixes 0 and 1
00998      show the iteration number, i.e., 0 is the current iteration and 1
00999      is the next iteration.
01000  
01001      NOTE: sc_max(prod_l, prod_h, carry) <= 2 * x^2 - 1, so any
01002      of these numbers can be stored in a digit.
01003 
01004      NOTE: low_half(u) returns the lower BITS_PER_HALF_DIGIT of u,
01005      whereas high_half(u) returns the rest of the bits, which may
01006      contain more bits than BITS_PER_HALF_DIGIT.  
01007   */
01008 
01009 #ifdef DEBUG_SYSTEMC
01010   assert((ulen > 0) && (u != NULL));
01011   assert((vlen > 0) && (vbegin != NULL));
01012   assert(wbegin != NULL);
01013 #endif
01014 
01015 #define prod_h carry
01016 
01017   const sc_digit *uend = (u + ulen);
01018   const sc_digit *vend = (vbegin + vlen);
01019 
01020   while (u < uend) {
01021 
01022     sc_digit u_h = (*u++);        // A|B
01023     sc_digit u_l = low_half(u_h); // B
01024     u_h = high_half(u_h);           // A
01025 
01026 #ifdef DEBUG_SYSTEMC
01027     // The overflow bits must be zero.
01028     assert(u_h == (u_h & HALF_DIGIT_MASK));
01029 #endif
01030 
01031     register sc_digit carry = 0;
01032 
01033     register sc_digit *w = (wbegin++);
01034 
01035     register const sc_digit *v = vbegin;
01036 
01037     while (v < vend) {
01038 
01039       sc_digit v_h = (*v++);         // C|D
01040       sc_digit v_l = low_half(v_h);  // D
01041 
01042       v_h = high_half(v_h);            // C
01043 
01044 #ifdef DEBUG_SYSTEMC
01045       // The overflow bits must be zero.
01046       assert(v_h == (v_h & HALF_DIGIT_MASK));
01047 #endif
01048 
01049       sc_digit prod_l = (*w) + u_l * v_l + low_half(carry);
01050 
01051       prod_h = u_h * v_l + u_l * v_h + high_half(prod_l) + high_half(carry);
01052 
01053       (*w++) = concat(low_half(prod_h), low_half(prod_l));
01054 
01055       carry = u_h * v_h + high_half(prod_h);
01056 
01057     }
01058 
01059     (*w) = carry;
01060 
01061   }
01062 
01063 #undef prod_h
01064 
01065 }

void sc_dt::vec_mul_small ( int  ulen,
const sc_digit *  u,
sc_digit  v,
sc_digit *  w 
)

sc_nbutils.cpp1070 行で定義されています。

01072 {
01073 
01074 #ifdef DEBUG_SYSTEMC
01075   assert((ulen > 0) && (u != NULL));
01076   assert(w != NULL);
01077   assert((0 < v) && (v < HALF_DIGIT_RADIX));
01078 #endif
01079 
01080 #define prod_h carry
01081 
01082   const sc_digit *uend = (u + ulen);
01083 
01084   register sc_digit carry = 0;
01085 
01086   while (u < uend) {
01087 
01088     sc_digit u_AB = (*u++);
01089 
01090 #ifdef DEBUG_SYSTEMC
01091     // The overflow bits must be zero.
01092     assert(high_half(u_AB) == high_half_masked(u_AB));
01093 #endif
01094 
01095     sc_digit prod_l = v * low_half(u_AB) + low_half(carry);
01096 
01097     prod_h = v * high_half(u_AB) + high_half(prod_l) + high_half(carry);
01098 
01099     (*w++) = concat(low_half(prod_h), low_half(prod_l));
01100 
01101     carry = high_half(prod_h);
01102 
01103   }
01104 
01105   (*w) = carry;
01106 
01107 #undef prod_h
01108 
01109 }

void sc_dt::vec_mul_small_on ( int  ulen,
sc_digit *  u,
sc_digit  v 
)

sc_nbutils.cpp1114 行で定義されています。

01115 {
01116 
01117 #ifdef DEBUG_SYSTEMC
01118   assert((ulen > 0) && (u != NULL));
01119   assert((0 < v) && (v < HALF_DIGIT_RADIX));
01120 #endif
01121 
01122 #define prod_h carry
01123 
01124   register sc_digit carry = 0;
01125 
01126   for (register int i = 0; i < ulen; ++i) {
01127 
01128 #ifdef DEBUG_SYSTEMC
01129     // The overflow bits must be zero.
01130     assert(high_half(u[i]) == high_half_masked(u[i]));
01131 #endif
01132 
01133     sc_digit prod_l = v * low_half(u[i]) + low_half(carry);
01134 
01135     prod_h = v * high_half(u[i]) + high_half(prod_l) + high_half(carry);
01136 
01137     u[i] = concat(low_half(prod_h), low_half(prod_l));
01138 
01139     carry = high_half(prod_h);
01140 
01141   }
01142 
01143 #undef prod_h
01144 
01145 #ifdef DEBUG_SYSTEMC
01146   if( carry != 0 ) {
01147       SC_REPORT_WARNING( sc_core::SC_ID_WITHOUT_MESSAGE_,
01148                          "vec_mul_small_on( int, sc_digit*, unsigned "
01149                          "long ) : "
01150                          "result of multiplication is wrapped around" );
01151   }
01152 #endif
01153 }

void sc_dt::vec_rem_large ( int  ulen,
const sc_digit *  u,
int  vlen,
const sc_digit *  v,
sc_digit *  w 
)

sc_nbutils.cpp1365 行で定義されています。

01368 {
01369 
01370 #ifdef DEBUG_SYSTEMC
01371   assert((ulen > 0) && (u != NULL));
01372   assert((vlen > 0) && (v != NULL));
01373   assert(w != NULL);
01374   assert(BITS_PER_DIGIT >= 3 * BITS_PER_BYTE);
01375 #endif
01376 
01377   // This function is adapted from vec_div_large.
01378 
01379   int xlen = BYTES_PER_DIGIT * ulen + 1;
01380   int ylen = BYTES_PER_DIGIT * vlen;
01381 
01382 #ifdef SC_MAX_NBITS
01383   uchar x[DIV_CEIL2(SC_MAX_NBITS, BITS_PER_BYTE)];
01384   uchar y[DIV_CEIL2(SC_MAX_NBITS, BITS_PER_BYTE)];
01385 #else
01386   uchar *x = new uchar[xlen];
01387   uchar *y = new uchar[ylen];
01388 #endif
01389 
01390   // r corresponds to w.
01391 
01392   // Set (uchar) x = (sc_digit) u.
01393   xlen = vec_to_char(ulen, u, xlen, x);
01394 
01395   // Skip all the leading zeros in x.
01396   while ((--xlen >= 0) && (! x[xlen]));
01397   xlen++;
01398 
01399   // Set (uchar) y = (sc_digit) v.
01400   ylen = vec_to_char(vlen, v, ylen, y);
01401 
01402   // Skip all the leading zeros in y.
01403   while ((--ylen >= 0) && (! y[ylen]));
01404   ylen++;
01405 
01406 #ifdef DEBUG_SYSTEMC
01407   assert(xlen > 1);
01408   assert(ylen > 1);
01409 #endif
01410 
01411   // At this point, all the leading zeros are eliminated from x and y.
01412 
01413   // Zero the last digit of x.
01414   x[xlen] = 0;
01415 
01416   // The first two digits of y.
01417   register sc_digit y2 = (y[ylen - 1] << BITS_PER_BYTE) + y[ylen - 2];
01418 
01419   const sc_digit DOUBLE_BITS_PER_BYTE = 2 * BITS_PER_BYTE;
01420 
01421   // Find each q[k].
01422   for (register int k = xlen - ylen; k >= 0; --k) {
01423 
01424     // qk is a guess for q[k] such that q[k] = qk or qk - 1.
01425     register sc_digit qk;
01426 
01427     // Find qk by just using 2 digits of y and 3 digits of x. The
01428     // following code assumes that sizeof(sc_digit) >= 3 BYTEs.
01429     int k2 = k + ylen;
01430 
01431     qk = ((x[k2] << DOUBLE_BITS_PER_BYTE) +
01432       (x[k2 - 1] << BITS_PER_BYTE) + x[k2 - 2]) / y2;
01433 
01434     if (qk >= BYTE_RADIX)     // qk cannot be larger than the largest
01435       qk = BYTE_RADIX - 1;    // digit in BYTE_RADIX.
01436 
01437     // q[k] = qk or qk - 1. The following if-statement determines which.
01438     if (qk) {
01439 
01440       register uchar *xk = (x + k);  // A shortcut for x[k].
01441 
01442       // x = x - y * qk;
01443       register sc_digit carry = 0;
01444 
01445       for (register int i = 0; i < ylen; ++i) {
01446         carry += y[i] * qk;
01447         sc_digit diff = (xk[i] + BYTE_RADIX) - (carry & BYTE_MASK);
01448         xk[i] = (uchar)(diff & BYTE_MASK);
01449         carry = (carry >> BITS_PER_BYTE) + (1 - (diff >> BITS_PER_BYTE));
01450       }
01451 
01452       if (carry) {
01453 
01454         // 2's complement the last digit.
01455         carry = (xk[ylen] + BYTE_RADIX) - carry;
01456         xk[ylen] = (uchar)(carry & BYTE_MASK);
01457         carry = 1 - (carry >> BITS_PER_BYTE);
01458         
01459         if (carry) {
01460 
01461           // qk was one too large, so decrement it.
01462           // --qk;
01463         
01464           // x = x - y * (qk - 1) = x - y * qk + y = x_above + y.
01465           carry = 0;
01466 
01467           for (register int i = 0; i < ylen; ++i) {
01468             carry += xk[i] + y[i];
01469             xk[i] = (uchar)(carry & BYTE_MASK);
01470             carry >>= BITS_PER_BYTE;
01471           }
01472 
01473           if (carry)
01474             xk[ylen] = (uchar)((xk[ylen] + 1) & BYTE_MASK);
01475 
01476         }  // second if carry
01477       } // first if carry
01478     }  // if qk
01479   }  // for k
01480 
01481   // Set (sc_digit) w = (uchar) x for the remainder.
01482   vec_from_char(ylen, x, ulen, w);
01483 
01484 #ifndef SC_MAX_NBITS
01485   delete [] x;
01486   delete [] y;
01487 #endif
01488 
01489 }

sc_digit sc_dt::vec_rem_on_small ( int  ulen,
sc_digit *  u,
sc_digit  v 
)

sc_nbutils.cpp1528 行で定義されています。

01529 {
01530 
01531 #ifdef DEBUG_SYSTEMC
01532   assert((ulen > 0) && (u != NULL));
01533   assert(v > 0);
01534 #endif
01535 
01536 #define q_h r
01537 
01538   register sc_digit r = 0;
01539   const sc_digit *ubegin = u;
01540 
01541   u += ulen;
01542 
01543   while (ubegin < u) {
01544 
01545     sc_digit u_AB = (*--u);       // A|B
01546 
01547 #ifdef DEBUG_SYSTEMC
01548     // The overflow bits must be zero.
01549     assert(high_half(u_AB) == high_half_masked(u_AB));
01550 #endif
01551 
01552     register sc_digit num = concat(r, high_half(u_AB));  // num = r|A
01553     q_h = num / v;                           // C
01554     num = concat((num % v), low_half(u_AB)); // num = (((r|A) % v)|B) 
01555     (*u) = concat(q_h, num / v);             // q = C|D
01556     r = num % v;
01557 
01558   }
01559 
01560 #undef q_h
01561 
01562   return r;
01563 
01564 }

sc_digit sc_dt::vec_rem_small ( int  ulen,
const sc_digit *  u,
sc_digit  v 
)

sc_nbutils.cpp1495 行で定義されています。

01496 {
01497 
01498 #ifdef DEBUG_SYSTEMC
01499   assert((ulen > 0) && (u != NULL));
01500   assert((0 < v) && (v < HALF_DIGIT_RADIX));
01501 #endif
01502 
01503   // This function is adapted from vec_div_small().
01504 
01505   register sc_digit r = 0;
01506   const sc_digit *ubegin = u;
01507 
01508   u += ulen;
01509 
01510   while (ubegin < u) {
01511     register sc_digit u_AB = (*--u);  // A|B
01512 
01513 #ifdef DEBUG_SYSTEMC
01514     // The overflow bits must be zero.
01515     assert(high_half(u_AB) == high_half_masked(u_AB));
01516 #endif
01517 
01518     // r = (((r|A) % v)|B) % v
01519     r = (concat(((concat(r, high_half(u_AB))) % v), low_half(u_AB))) % v;
01520   }
01521 
01522   return r;
01523 
01524 }

void sc_dt::vec_reverse ( int  unb,
int  und,
sc_digit *  ud,
int  l,
int  r 
)

sc_nbutils.cpp1787 行で定義されています。

01789 {
01790 
01791 #ifdef DEBUG_SYSTEMC
01792   assert((unb > 0) && (und > 0) && (ud != NULL));
01793   assert((0 <= r) && (r <= l) && (l < unb));
01794 #endif
01795 
01796   if (l < r) {
01797       char msg[BUFSIZ];
01798       std::sprintf( msg, "vec_reverse( int, int, sc_digit*, int l, int r ) : "
01799                "l = %d < r = %d is not valid",
01800                l, r );
01801       SC_REPORT_ERROR( sc_core::SC_ID_CONVERSION_FAILED_, msg );
01802   }
01803 
01804   // Make sure that l and r are within bounds.
01805   r = sc_max(r, 0);
01806   l = sc_min(l, unb - 1);
01807 
01808   // Allocate memory for processing.
01809 #ifdef SC_MAX_NBITS
01810   sc_digit d[MAX_NDIGITS];
01811 #else
01812   sc_digit *d = new sc_digit[und];
01813 #endif
01814 
01815   // d is a copy of ud.
01816   vec_copy(und, d, ud);
01817 
01818   // Based on the value of the ith in d, find the value of the jth bit
01819   // in ud.
01820 
01821   for (register int i = l, j = r; i >= r; --i, ++j) {
01822 
01823     if ((d[digit_ord(i)] & one_and_zeros(bit_ord(i))) != 0) // Test.
01824       ud[digit_ord(j)] |= one_and_zeros(bit_ord(j));     // Set.
01825     else  
01826       ud[digit_ord(j)] &= ~(one_and_zeros(bit_ord(j)));  // Clear.
01827 
01828   }
01829 
01830 #ifndef SC_MAX_NBITS
01831   delete [] d;
01832 #endif
01833     
01834 }

void sc_dt::vec_shift_left ( int  ulen,
sc_digit *  u,
int  nsl 
)

sc_nbutils.cpp1658 行で定義されています。

01659 {
01660 
01661 #ifdef DEBUG_SYSTEMC
01662   assert((ulen > 0) && (u != NULL));
01663 #endif
01664 
01665   if (nsl <= 0)
01666     return;
01667 
01668   // Shift left whole digits if nsl is large enough.
01669   if (nsl >= (int) BITS_PER_DIGIT) {
01670 
01671     int nd;
01672 
01673     if (nsl % BITS_PER_DIGIT == 0) {
01674       nd = nsl / BITS_PER_DIGIT;  // No need to use DIV_CEIL(nsl).
01675       nsl = 0;
01676     }
01677     else {
01678       nd = DIV_CEIL(nsl) - 1;
01679       nsl -= nd * BITS_PER_DIGIT;
01680     }
01681 
01682     if (nd) {
01683 
01684       // Shift left for nd digits.
01685       for (register int j = ulen - 1; j >= nd; --j)
01686         u[j] = u[j - nd];
01687       
01688       vec_zero( sc_min( nd, ulen ), u );
01689       
01690     }
01691 
01692     if (nsl == 0)
01693       return;
01694 
01695   }
01696 
01697   // Shift left if nsl < BITS_PER_DIGIT.
01698   register sc_digit *uiter = u;
01699   sc_digit *uend = uiter + ulen;
01700 
01701   int nsr = BITS_PER_DIGIT - nsl;
01702   sc_digit mask = one_and_ones(nsr);
01703 
01704   register sc_digit carry = 0;
01705 
01706   while (uiter < uend) {
01707     register sc_digit uval = (*uiter);
01708     (*uiter++) = (((uval & mask) << nsl) | carry);
01709     carry = uval >> nsr;
01710   }
01711 
01712   if (uiter < uend)
01713     (*uiter) = carry;
01714 
01715 }

void sc_dt::vec_shift_right ( int  ulen,
sc_digit *  u,
int  nsr,
sc_digit  fill 
)

sc_nbutils.cpp1720 行で定義されています。

01721 {
01722 
01723 #ifdef DEBUG_SYSTEMC
01724   assert((ulen > 0) && (u != NULL));
01725 #endif
01726 
01727   // fill is usually either 0 or DIGIT_MASK; it can be any value.
01728 
01729   if (nsr <= 0)
01730     return;
01731 
01732   // Shift right whole digits if nsr is large enough.
01733   if (nsr >= (int) BITS_PER_DIGIT) {
01734 
01735     int nd;
01736 
01737     if (nsr % BITS_PER_DIGIT == 0) {
01738       nd = nsr / BITS_PER_DIGIT;
01739       nsr = 0;
01740     }
01741     else {
01742       nd = DIV_CEIL(nsr) - 1;
01743       nsr -= nd * BITS_PER_DIGIT;
01744     }
01745     
01746     if (nd) {
01747 
01748       // Shift right for nd digits.
01749       for (register int j = 0; j < (ulen - nd); ++j)
01750         u[j] = u[j + nd];
01751 
01752       if (fill) {
01753         for (register int j = ulen - sc_min( nd, ulen ); j < ulen; ++j)
01754           u[j] = fill;
01755       }
01756       else
01757         vec_zero(ulen - sc_min( nd, ulen ), ulen, u);
01758      
01759     }
01760 
01761     if (nsr == 0)
01762       return;
01763 
01764   }
01765 
01766   // Shift right if nsr < BITS_PER_DIGIT.
01767   sc_digit *ubegin = u;
01768   register sc_digit *uiter = (ubegin + ulen);
01769 
01770   int nsl = BITS_PER_DIGIT - nsr;
01771   sc_digit mask = one_and_ones(nsr);
01772 
01773   register sc_digit carry = (fill & mask) << nsl;
01774 
01775   while (ubegin < uiter) {
01776     register sc_digit uval = (*--uiter);
01777     (*uiter) = (uval >> nsr) | carry;
01778     carry = (uval & mask) << nsl;
01779   }
01780 
01781 }

int sc_dt::vec_skip_and_cmp ( int  ulen,
const sc_digit *  u,
int  vlen,
const sc_digit *  v 
) [inline]

sc_nbutils.h445 行で定義されています。

00447 {
00448 
00449 #ifdef DEBUG_SYSTEMC
00450   assert((ulen > 0) && (u != NULL));
00451   assert((vlen > 0) && (v != NULL));
00452 #endif
00453 
00454   ulen = vec_skip_leading_zeros(ulen, u);
00455   vlen = vec_skip_leading_zeros(vlen, v);
00456   // ulen and/or vlen can be equal to zero here.
00457   return vec_cmp(ulen, u, vlen, v);
00458 
00459 }

int sc_dt::vec_skip_leading_zeros ( int  ulen,
const sc_digit *  u 
) [inline]

sc_nbutils.h427 行で定義されています。

00428 {
00429 
00430 #ifdef DEBUG_SYSTEMC
00431   // assert((ulen <= 0) || (u != NULL));
00432   assert((ulen > 0) && (u != NULL));
00433 #endif
00434 
00435   return (1 + vec_find_first_nonzero(ulen, u));
00436 
00437 }

void sc_dt::vec_sub ( int  ulen,
const sc_digit *  u,
int  vlen,
const sc_digit *  v,
sc_digit *  w 
)

sc_nbutils.cpp772 行で定義されています。

00775 {
00776 
00777 #ifdef DEBUG_SYSTEMC
00778   assert((ulen > 0) && (u != NULL));
00779   assert((vlen > 0) && (v != NULL));
00780   assert(w != NULL);
00781   assert(ulen >= vlen);
00782 #endif
00783 
00784   const sc_digit *uend = (u + ulen);
00785   const sc_digit *vend = (v + vlen);
00786 
00787   register sc_digit borrow = 0;   // Also used as diff to save space.
00788 
00789   // Subtract along the shorter v.
00790   while (v < vend) {
00791     borrow = ((*u++) + DIGIT_RADIX) - (*v++) - borrow;
00792     (*w++) = borrow & DIGIT_MASK;
00793     borrow = 1 - (borrow >> BITS_PER_DIGIT);
00794   }
00795 
00796   // Propagate the borrow.
00797   while (borrow && (u < uend)) {
00798     borrow = ((*u++) + DIGIT_RADIX) - 1;
00799     (*w++) = borrow & DIGIT_MASK;
00800     borrow = 1 - (borrow >> BITS_PER_DIGIT);
00801   }
00802 
00803 #ifdef DEBUG_SYSTEMC
00804   assert(borrow == 0);
00805 #endif
00806 
00807   // Copy the rest of u to the result.
00808   while (u < uend)
00809     (*w++) = (*u++);
00810 
00811 }

void sc_dt::vec_sub_on ( int  ulen,
sc_digit *  ubegin,
int  vlen,
const sc_digit *  v 
)

sc_nbutils.cpp817 行で定義されています。

00819 {
00820 
00821 #ifdef DEBUG_SYSTEMC
00822   assert((ulen > 0) && (ubegin != NULL));
00823   assert((vlen > 0) && (v != NULL));
00824   assert(ulen >= vlen);
00825 #endif
00826 
00827   register sc_digit *u = ubegin;
00828   const sc_digit *uend = (u + ulen);
00829   const sc_digit *vend = (v + vlen);
00830 
00831   register sc_digit borrow = 0;   // Also used as diff to save space.
00832 
00833   // Subtract along the shorter v.
00834   while (v < vend) {
00835     borrow = ((*u) + DIGIT_RADIX) - (*v++) - borrow;
00836     (*u++) = borrow & DIGIT_MASK;
00837     borrow = 1 - (borrow >> BITS_PER_DIGIT);
00838   }
00839 
00840   // Propagate the borrow.
00841   while (borrow && (u < uend)) {
00842     borrow = ((*u) + DIGIT_RADIX) - 1;
00843     (*u++) = borrow & DIGIT_MASK;
00844     borrow = 1 - (borrow >> BITS_PER_DIGIT);
00845   }
00846 
00847 #ifdef DEBUG_SYSTEMC
00848   assert(borrow == 0);
00849 #endif
00850 
00851 }

void sc_dt::vec_sub_on2 ( int  ulen,
sc_digit *  ubegin,
int  vlen,
const sc_digit *  v 
)

sc_nbutils.cpp857 行で定義されています。

00859 {
00860 
00861 #ifdef DEBUG_SYSTEMC
00862   assert((ulen > 0) && (ubegin != NULL));
00863   assert((vlen > 0) && (v != NULL));
00864 #endif
00865 
00866   register sc_digit *u = ubegin;
00867   const sc_digit *uend = (u + sc_min(ulen, vlen));
00868 
00869   register sc_digit borrow = 0;   // Also used as diff to save space.
00870 
00871   // Subtract along the shorter u.
00872   while (u < uend) {
00873     borrow = ((*v++) + DIGIT_RADIX) - (*u) - borrow;
00874     (*u++) = borrow & DIGIT_MASK;
00875     borrow = 1 - (borrow >> BITS_PER_DIGIT);
00876   }
00877 
00878 #ifdef DEBUG_SYSTEMC
00879   if( borrow != 0 ) {
00880       SC_REPORT_WARNING( sc_core::SC_ID_WITHOUT_MESSAGE_,
00881                          "vec_sub_on2( int, sc_digit*, int, const "
00882                          "sc_digit* ) : "
00883                          "result of subtraction is wrapped around" );
00884   }
00885 #endif
00886 }

void sc_dt::vec_sub_small ( int  ulen,
const sc_digit *  u,
sc_digit  v,
sc_digit *  w 
)

sc_nbutils.cpp890 行で定義されています。

00893 {
00894 
00895 #ifdef DEBUG_SYSTEMC
00896   assert(ulen > 0);
00897   assert(u != NULL);
00898 #endif
00899 
00900   const sc_digit *uend = (u + ulen);
00901 
00902   // Add along the shorter v.
00903   register sc_digit borrow = ((*u++) + DIGIT_RADIX) - v;
00904   (*w++) = borrow & DIGIT_MASK;
00905   borrow = 1 - (borrow >> BITS_PER_DIGIT);
00906 
00907   // Propagate the borrow.
00908   while (borrow && (u < uend)) {
00909     borrow = ((*u++) + DIGIT_RADIX) - 1;
00910     (*w++) = borrow & DIGIT_MASK;
00911     borrow = 1 - (borrow >> BITS_PER_DIGIT);
00912   }
00913 
00914 #ifdef DEBUG_SYSTEMC
00915   assert(borrow == 0);
00916 #endif
00917 
00918   // Copy the rest of u to the result.
00919   while (u < uend)
00920     (*w++) = (*u++);
00921 
00922 }

void sc_dt::vec_sub_small_on ( int  ulen,
sc_digit *  u,
sc_digit  v 
)

sc_nbutils.cpp927 行で定義されています。

00928 {
00929 
00930 #ifdef DEBUG_SYSTEMC
00931   assert((ulen > 0) && (u != NULL));
00932 #endif
00933 
00934   for (register int i = 0; i < ulen; ++i) {
00935     v = (u[i] + DIGIT_RADIX) - v;    
00936     u[i] = v & DIGIT_MASK;
00937     v = 1 - (v >> BITS_PER_DIGIT);
00938   }
00939 
00940 #ifdef DEBUG_SYSTEMC
00941   assert(v == 0);
00942 #endif
00943 
00944 }

int sc_dt::vec_to_char ( int  ulen,
const sc_digit *  u,
int  vlen,
uchar *  v 
)

sc_nbutils.cpp1568 行で定義されています。

01570 {
01571 
01572 #ifdef DEBUG_SYSTEMC
01573   assert((ulen > 0) && (u != NULL));
01574   assert((vlen > 0) && (v != NULL));
01575 #endif
01576 
01577   register int nbits = ulen * BITS_PER_DIGIT;
01578 
01579   register int right = 0;
01580   register int left = right + BITS_PER_BYTE - 1;
01581 
01582   vlen = 0;
01583 
01584   while (nbits > 0) {
01585 
01586     int left_digit = left / BITS_PER_DIGIT;
01587     int right_digit = right / BITS_PER_DIGIT;
01588 
01589     register int nsr = ((vlen << LOG2_BITS_PER_BYTE) % BITS_PER_DIGIT);
01590 
01591     int d = u[right_digit] >> nsr;
01592 
01593     if (left_digit != right_digit) {
01594 
01595       if (left_digit < ulen)
01596         d |= u[left_digit] << (BITS_PER_DIGIT - nsr);
01597 
01598     }
01599 
01600     v[vlen++] = (uchar)(d & BYTE_MASK);
01601 
01602     left += BITS_PER_BYTE;
01603     right += BITS_PER_BYTE;
01604     nbits -= BITS_PER_BYTE;
01605 
01606   }
01607 
01608   return vlen;
01609 
01610 }

void sc_dt::vec_zero ( int  ulen,
sc_digit *  u 
) [inline]

sc_nbutils.h479 行で定義されています。

00480 {
00481   vec_zero(0, ulen, u);
00482 }

void sc_dt::vec_zero ( int  from,
int  ulen,
sc_digit *  u 
) [inline]

sc_nbutils.h464 行で定義されています。

00465 {
00466 
00467 #ifdef DEBUG_SYSTEMC
00468   assert((ulen > 0) && (u != NULL));
00469 #endif
00470 
00471   for(int i = from; i < ulen; i++)
00472     u[i] = 0;
00473 
00474 }

bool sc_dt::xnor_reduce ( const sc_concatref &  a  )  [inline]

sc_concatref.h472 行で定義されています。

00473 {
00474     return a.xnor_reduce();
00475 }

bool sc_dt::xnor_reduce ( const sc_uint_base &  a  )  [inline]

sc_uint_base.h1311 行で定義されています。

01312 {
01313     return a.xnor_reduce();
01314 }

bool sc_dt::xnor_reduce ( const sc_uint_subref_r &  a  )  [inline]

sc_uint_base.h1128 行で定義されています。

01129 {
01130     return a.xnor_reduce();
01131 }

bool sc_dt::xnor_reduce ( const sc_int_base &  a  )  [inline]

sc_int_base.h1340 行で定義されています。

01341 {
01342     return a.xnor_reduce();
01343 }

bool sc_dt::xnor_reduce ( const sc_int_subref_r &  a  )  [inline]

sc_int_base.h1157 行で定義されています。

01158 {
01159     return a.xnor_reduce();
01160 }

template<class X>
sc_logic_value_t sc_dt::xnor_reduce ( const sc_proxy< X > &  a  )  [inline]

sc_proxy.h1499 行で定義されています。

01500 {
01501     return a.xnor_reduce();
01502 }

CLASS_TYPE sc_dt::XOR_HELPER ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
small_type  vs,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_signed.cpp4648 行で定義されています。

void sc_dt::xor_on_help ( small_type  us,
int  ,
int  und,
sc_digit *  ud,
small_type  vs,
int  ,
int  vnd,
const sc_digit *  vd 
)

sc_nbexterns.cpp788 行で定義されています。

00794 {
00795   
00796   register sc_digit *x = ud;
00797   register const sc_digit *y = vd;
00798   int xnd = und;
00799   int ynd = vnd;
00800 
00801   if (xnd < ynd)
00802     ynd = xnd;
00803 
00804   const sc_digit *xend = (x + xnd);
00805   const sc_digit *yend = (y + ynd);
00806 
00807   // x is longer than y.
00808 
00809   small_type s = mul_signs(us, vs);
00810 
00811   if (s > 0) {
00812 
00813     if (us > 0) { // case 3
00814 
00815       while (y < yend) {
00816         (*x) = ((*x) ^ (*y)) & DIGIT_MASK;
00817         x++;
00818         y++;
00819       }
00820 
00821       // No change for the rest of x.
00822 
00823     }
00824     else {  // case 4
00825 
00826       register sc_digit xcarry = 1;
00827       register sc_digit ycarry = 1;
00828 
00829       while (y < yend) {
00830         xcarry += (~(*x) & DIGIT_MASK);
00831         ycarry += (~(*y++) & DIGIT_MASK);
00832         (*x++) = (xcarry ^ ycarry) & DIGIT_MASK;
00833         xcarry >>= BITS_PER_DIGIT;
00834         ycarry >>= BITS_PER_DIGIT;
00835       }
00836 
00837       while (x < xend) {
00838         xcarry += (~(*x) & DIGIT_MASK);
00839         ycarry += DIGIT_MASK;
00840         (*x++) = (xcarry ^ ycarry) & DIGIT_MASK;
00841         xcarry >>= BITS_PER_DIGIT;
00842         ycarry >>= BITS_PER_DIGIT;
00843       }
00844     }
00845   }
00846   else {
00847 
00848     if (us > 0) { // case 5
00849 
00850       register sc_digit ycarry = 1;
00851 
00852       while (y < yend) {
00853         ycarry += (~(*y++) & DIGIT_MASK);
00854         (*x) = ((*x) ^ ycarry) & DIGIT_MASK;
00855         x++;
00856         ycarry >>= BITS_PER_DIGIT;
00857       }
00858 
00859       while (x < xend) {
00860         ycarry += DIGIT_MASK;
00861         (*x) = ((*x) ^ ycarry) & DIGIT_MASK;
00862         x++;
00863         ycarry >>= BITS_PER_DIGIT;
00864       }
00865 
00866     }
00867     else {  // case 6
00868 
00869       register sc_digit xcarry = 1;
00870 
00871       while (y < yend) {
00872         xcarry += (~(*x) & DIGIT_MASK);
00873         (*x++) = (xcarry ^ (*y++)) & DIGIT_MASK;
00874         xcarry >>= BITS_PER_DIGIT;
00875       }
00876 
00877       while (x < xend) {
00878         xcarry += (~(*x) & DIGIT_MASK);
00879         (*x++) = xcarry & DIGIT_MASK;
00880         xcarry >>= BITS_PER_DIGIT;
00881       }
00882     }
00883   }
00884 }

bool sc_dt::xor_reduce ( const sc_concatref &  a  )  [inline]

sc_concatref.h465 行で定義されています。

00466 {
00467     return a.xor_reduce();
00468 }

bool sc_dt::xor_reduce ( const sc_uint_base &  a  )  [inline]

sc_uint_base.h1304 行で定義されています。

01305 {
01306     return a.xor_reduce();
01307 }

bool sc_dt::xor_reduce ( const sc_uint_subref_r &  a  )  [inline]

sc_uint_base.h1121 行で定義されています。

01122 {
01123     return a.xor_reduce();
01124 }

bool sc_dt::xor_reduce ( const sc_int_base &  a  )  [inline]

sc_int_base.h1333 行で定義されています。

01334 {
01335     return a.xor_reduce();
01336 }

bool sc_dt::xor_reduce ( const sc_int_subref_r &  a  )  [inline]

sc_int_base.h1150 行で定義されています。

01151 {
01152     return a.xor_reduce();
01153 }

template<class X>
sc_logic_value_t sc_dt::xor_reduce ( const sc_proxy< X > &  a  )  [inline]

sc_proxy.h1491 行で定義されています。

01492 {
01493     return a.xor_reduce();
01494 }

sc_signed sc_dt::xor_signed_friend ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
small_type  vs,
int  vnb,
int  vnd,
const sc_digit *  vd 
)

sc_unsigned sc_dt::xor_unsigned_friend ( small_type  us,
int  unb,
int  und,
const sc_digit *  ud,
small_type  vs,
int  vnb,
int  vnd,
const sc_digit *  vd 
)


変数

const int sc_dt::bits_in_int = sizeof(int) * CHAR_BIT

scfx_rep.h87 行で定義されています。

const int sc_dt::bits_in_word = sizeof(word) * CHAR_BIT

scfx_rep.h88 行で定義されています。

const sc_digit sc_dt::ctrl_array[] [static]

初期値:

    { SC_DIGIT_ZERO, SC_DIGIT_ZERO, ~SC_DIGIT_ZERO, ~SC_DIGIT_ZERO }

sc_lv_base.cpp62 行で定義されています。

const sc_digit sc_dt::data_array[] [static]

初期値:

    { SC_DIGIT_ZERO, ~SC_DIGIT_ZERO, SC_DIGIT_ZERO, ~SC_DIGIT_ZERO }

sc_lv_base.cpp59 行で定義されています。

sc_fxval.h989 行で定義されています。

word_list* sc_dt::free_words[32] = { 0 } [static]

scfx_mant.cpp78 行で定義されています。

scfx_rep_node* sc_dt::list = 0 [static]

scfx_rep.cpp346 行で定義されています。

scfx_rep.cpp69 行で定義されています。

sc_int64_mask.cpp64 行で定義されています。

const int sc_dt::min_mant = 4

scfx_rep.h85 行で定義されています。

sc_nbdefs.cpp75 行で定義されています。

scfx_rep.cpp67 行で定義されています。

sc_fxdefs.h210 行で定義されています。

const int sc_dt::SC_BUILTIN_CTE_WL_ = 64

sc_fxdefs.h221 行で定義されています。

const int sc_dt::SC_BUILTIN_DIV_WL_ = 64

sc_fxdefs.h220 行で定義されています。

const int sc_dt::SC_BUILTIN_IWL_ = 32

sc_fxdefs.h193 行で定義されています。

const int sc_dt::SC_BUILTIN_MAX_WL_ = 1024

sc_fxdefs.h222 行で定義されています。

sc_fxdefs.h196 行で定義されています。

sc_fxdefs.h195 行で定義されています。

sc_fxdefs.h194 行で定義されています。

const int sc_dt::SC_BUILTIN_WL_ = 32

sc_fxdefs.h192 行で定義されています。

sc_fxdefs.h213 行で定義されています。

sc_fxdefs.h234 行で定義されています。

sc_fxdefs.h228 行で定義されています。

sc_fxdefs.h200 行で定義されています。

sc_fxdefs.h240 行で定義されています。

sc_fxdefs.h203 行で定義されています。

sc_fxdefs.h202 行で定義されています。

sc_fxdefs.h201 行で定義されています。

sc_fxdefs.h199 行で定義されています。

sc_proxy.h90 行で定義されています。

const int sc_dt::SC_DIGIT_SIZE = BITS_PER_BYTE * sizeof( sc_digit )

sc_proxy.h87 行で定義されています。

sc_proxy.h91 行で定義されています。

sc_proxy.h89 行で定義されています。

sc_logic.h596 行で定義されています。

sc_logic.h602 行で定義されています。

sc_logic.h597 行で定義されています。

sc_logic.h603 行で定義されています。

sc_logic.h599 行で定義されています。

sc_logic.h605 行で定義されています。

sc_logic.h598 行で定義されています。

sc_logic.h604 行で定義されています。

const unsigned int sc_dt::SCFX_IEEE_DOUBLE_BIAS = 1023U

scfx_ieee.h91 行で定義されています。

scfx_ieee.h93 行で定義されています。

const int sc_dt::SCFX_IEEE_DOUBLE_E_MIN = -1022

scfx_ieee.h94 行で定義されています。

const unsigned int sc_dt::SCFX_IEEE_DOUBLE_M_SIZE = 52

scfx_ieee.h96 行で定義されています。

const unsigned int sc_dt::SCFX_IEEE_FLOAT_BIAS = 127U

scfx_ieee.h429 行で定義されています。

scfx_ieee.h431 行で定義されています。

const int sc_dt::SCFX_IEEE_FLOAT_E_MIN = -126

scfx_ieee.h432 行で定義されています。

const unsigned int sc_dt::SCFX_IEEE_FLOAT_M_SIZE = 23

scfx_ieee.h434 行で定義されています。

scfx_pow10.h66 行で定義されています。

const uint64 sc_dt::UINT64_32ONES = 0x00000000ffffffffULL

sc_nbdefs.cpp68 行で定義されています。

const uint64 sc_dt::UINT64_ONE = 1ULL

sc_nbdefs.cpp67 行で定義されています。

const uint64 sc_dt::UINT64_ZERO = 0ULL

sc_nbdefs.cpp66 行で定義されています。

sc_nbdefs.cpp79 行で定義されています。

sc_nbdefs.cpp78 行で定義されています。


SystemCに対してFri Jun 6 20:12:35 2008に生成されました。  doxygen 1.5.6