構成 | |
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_base > | operator, (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_base > | operator, (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_base > | operator, (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_base > | concat (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_base > | concat (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_base > | concat (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 ¶ms, bool &q_flag) |
static void | overflow (double &c, const scfx_params ¶ms, 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_base & | DEFN_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_rep * | add_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_rep * | sub_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_rep * | div_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_rep * | neg_scfx_rep (const scfx_rep &) |
scfx_rep * | mult_scfx_rep (const scfx_rep &, const scfx_rep &, int) |
scfx_rep * | lsh_scfx_rep (const scfx_rep &, int) |
scfx_rep * | rsh_scfx_rep (const scfx_rep &, int) |
scfx_rep * | quantization_scfx_rep (const scfx_rep &a, const scfx_params ¶ms, bool &q_flag) |
scfx_rep * | overflow_scfx_rep (const scfx_rep &a, const scfx_params ¶ms, 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_concatref & | concat (sc_dt::sc_value_base &a, sc_dt::sc_value_base &b) |
const sc_dt::sc_concatref & | concat (const sc_dt::sc_value_base &a, const sc_dt::sc_value_base &b) |
const sc_dt::sc_concatref & | concat (const sc_dt::sc_value_base &a, bool b) |
const sc_dt::sc_concatref & | concat (bool a, const sc_dt::sc_value_base &b) |
sc_dt::sc_concatref & | operator, (sc_dt::sc_value_base &a, sc_dt::sc_value_base &b) |
const sc_dt::sc_concatref & | operator, (const sc_dt::sc_value_base &a, const sc_dt::sc_value_base &b) |
const sc_dt::sc_concatref & | operator, (const sc_dt::sc_value_base &a, bool b) |
const sc_dt::sc_concatref & | operator, (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_ostream & | operator<< (systemc_ostream &os, sc_numrep numrep) |
systemc_ostream & | operator<< (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_list * | free_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_node * | list = 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.h の 176 行で定義されています。
typedef unsigned short sc_dt::half_word |
scfx_mant.h の 64 行で定義されています。
typedef long long sc_dt::int64 |
sc_nbdefs.h の 137 行で定義されています。
typedef int64 sc_dt::int_type |
sc_nbdefs.h の 187 行で定義されています。
typedef unsigned int sc_dt::sc_digit |
sc_nbdefs.h の 132 行で定義されています。
sc_fxcast_switch.h の 100 行で定義されています。
sc_fxtype_params.h の 123 行で定義されています。
sc_length_param.h の 107 行で定義されています。
typedef int sc_dt::small_type |
sc_nbdefs.h の 77 行で定義されています。
typedef ::std::istream sc_dt::systemc_istream |
sc_string.h の 98 行で定義されています。
typedef ::std::ostream sc_dt::systemc_ostream |
sc_string.h の 99 行で定義されています。
typedef unsigned char sc_dt::uchar |
sc_nbdefs.h の 73 行で定義されています。
typedef unsigned long long sc_dt::uint64 |
sc_nbdefs.h の 138 行で定義されています。
typedef uint64 sc_dt::uint_type |
sc_nbdefs.h の 188 行で定義されています。
typedef unsigned int sc_dt::word |
scfx_mant.h の 60 行で定義されています。
enum sc_dt::sc_enc |
enum sc_dt::sc_fmt |
enum sc_dt::sc_numrep |
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.h の 79 行で定義されています。
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 };
enum sc_dt::sc_o_mode |
sc_fxdefs.h の 117 行で定義されています。
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 };
enum sc_dt::sc_q_mode |
sc_fxdefs.h の 88 行で定義されています。
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 };
enum sc_dt::sc_switch |
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.cpp の 4122 行で定義されています。
static int sc_dt::add_mants | ( | int | size, | |
scfx_mant & | result, | |||
const scfx_mant & | a, | |||
const scfx_mant & | b | |||
) | [inline, static] |
scfx_rep.cpp の 1228 行で定義されています。
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.cpp の 62 行で定義されています。
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.cpp の 1279 行で定義されています。
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.cpp の 2233 行で定義されています。
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.cpp の 4380 行で定義されています。
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.cpp の 584 行で定義されています。
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] |
bool sc_dt::and_reduce | ( | const sc_uint_base & | a | ) | [inline] |
bool sc_dt::and_reduce | ( | const sc_uint_subref_r & | a | ) | [inline] |
bool sc_dt::and_reduce | ( | const sc_int_base & | a | ) | [inline] |
bool sc_dt::and_reduce | ( | const sc_int_subref_r & | a | ) | [inline] |
sc_logic_value_t sc_dt::and_reduce | ( | const sc_proxy< X > & | a | ) | [inline] |
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 | |||
) |
void sc_dt::assign_p_ | ( | sc_proxy< X > & | px, | |
const sc_proxy< Y > & | py | |||
) | [inline] |
sc_proxy.h の 669 行で定義されています。
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 }
void sc_dt::assign_v_ | ( | sc_proxy< X > & | px, | |
const sc_unsigned & | a | |||
) | [inline] |
sc_proxy.h の 769 行で定義されています。
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 }
void sc_dt::assign_v_ | ( | sc_proxy< X > & | px, | |
const sc_uint_base & | a | |||
) | [inline] |
sc_proxy.h の 751 行で定義されています。
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 }
void sc_dt::assign_v_ | ( | sc_proxy< X > & | px, | |
const sc_signed & | a | |||
) | [inline] |
sc_proxy.h の 732 行で定義されています。
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 }
void sc_dt::assign_v_ | ( | sc_proxy< X > & | px, | |
const sc_int_base & | a | |||
) | [inline] |
sc_proxy.h の 713 行で定義されています。
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 }
void sc_dt::assign_v_ | ( | sc_proxy< X > & | px, | |
const T & | a | |||
) | [inline] |
sc_proxy.h の 695 行で定義されています。
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] |
void sc_dt::b_and | ( | sc_bit & | r, | |
bool | a, | |||
const sc_bit & | b | |||
) | [inline] |
void sc_dt::b_and | ( | sc_bit & | r, | |
int | a, | |||
const sc_bit & | b | |||
) | [inline] |
void sc_dt::b_and | ( | sc_bit & | r, | |
const sc_bit & | a, | |||
char | b | |||
) | [inline] |
void sc_dt::b_and | ( | sc_bit & | r, | |
const sc_bit & | a, | |||
bool | b | |||
) | [inline] |
void sc_dt::b_and | ( | sc_bit & | r, | |
const sc_bit & | a, | |||
int | b | |||
) | [inline] |
void sc_dt::b_and | ( | sc_bit & | r, | |
const sc_bit & | a, | |||
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::b_and | ( | char | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::b_and | ( | bool | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::b_and | ( | int | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::b_and | ( | const sc_bit & | a, | |
char | b | |||
) | [inline] |
const sc_bit sc_dt::b_and | ( | const sc_bit & | a, | |
bool | b | |||
) | [inline] |
const sc_bit sc_dt::b_and | ( | const sc_bit & | a, | |
int | b | |||
) | [inline] |
const sc_bit sc_dt::b_and | ( | const sc_bit & | a, | |
const sc_bit & | b | |||
) | [inline] |
X& sc_dt::b_and_assign_ | ( | sc_proxy< X > & | px, | |
const sc_proxy< Y > & | py | |||
) | [inline] |
sc_proxy.h の 992 行で定義されています。
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] |
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] |
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] |
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] |
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] |
const sc_bit sc_dt::b_not | ( | const sc_bit & | a | ) | [inline] |
void sc_dt::b_or | ( | sc_bit & | r, | |
char | a, | |||
const sc_bit & | b | |||
) | [inline] |
void sc_dt::b_or | ( | sc_bit & | r, | |
bool | a, | |||
const sc_bit & | b | |||
) | [inline] |
void sc_dt::b_or | ( | sc_bit & | r, | |
int | a, | |||
const sc_bit & | b | |||
) | [inline] |
void sc_dt::b_or | ( | sc_bit & | r, | |
const sc_bit & | a, | |||
char | b | |||
) | [inline] |
void sc_dt::b_or | ( | sc_bit & | r, | |
const sc_bit & | a, | |||
bool | b | |||
) | [inline] |
void sc_dt::b_or | ( | sc_bit & | r, | |
const sc_bit & | a, | |||
int | b | |||
) | [inline] |
void sc_dt::b_or | ( | sc_bit & | r, | |
const sc_bit & | a, | |||
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::b_or | ( | char | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::b_or | ( | bool | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::b_or | ( | int | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::b_or | ( | const sc_bit & | a, | |
char | b | |||
) | [inline] |
const sc_bit sc_dt::b_or | ( | const sc_bit & | a, | |
bool | b | |||
) | [inline] |
const sc_bit sc_dt::b_or | ( | const sc_bit & | a, | |
int | b | |||
) | [inline] |
const sc_bit sc_dt::b_or | ( | const sc_bit & | a, | |
const sc_bit & | b | |||
) | [inline] |
X& sc_dt::b_or_assign_ | ( | sc_proxy< X > & | px, | |
const sc_proxy< Y > & | py | |||
) | [inline] |
sc_proxy.h の 1016 行で定義されています。
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] |
void sc_dt::b_xor | ( | sc_bit & | r, | |
bool | a, | |||
const sc_bit & | b | |||
) | [inline] |
void sc_dt::b_xor | ( | sc_bit & | r, | |
int | a, | |||
const sc_bit & | b | |||
) | [inline] |
void sc_dt::b_xor | ( | sc_bit & | r, | |
const sc_bit & | a, | |||
char | b | |||
) | [inline] |
void sc_dt::b_xor | ( | sc_bit & | r, | |
const sc_bit & | a, | |||
bool | b | |||
) | [inline] |
void sc_dt::b_xor | ( | sc_bit & | r, | |
const sc_bit & | a, | |||
int | b | |||
) | [inline] |
void sc_dt::b_xor | ( | sc_bit & | r, | |
const sc_bit & | a, | |||
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::b_xor | ( | char | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::b_xor | ( | bool | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::b_xor | ( | int | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::b_xor | ( | const sc_bit & | a, | |
char | b | |||
) | [inline] |
const sc_bit sc_dt::b_xor | ( | const sc_bit & | a, | |
bool | b | |||
) | [inline] |
const sc_bit sc_dt::b_xor | ( | const sc_bit & | a, | |
int | b | |||
) | [inline] |
const sc_bit sc_dt::b_xor | ( | const sc_bit & | a, | |
const sc_bit & | b | |||
) | [inline] |
X& sc_dt::b_xor_assign_ | ( | sc_proxy< X > & | a, | |
const sc_proxy< Y > & | b | |||
) | [inline] |
sc_proxy.h の 1040 行で定義されています。
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] |
bool sc_dt::check_for_zero | ( | int | ulen, | |
const sc_digit * | u | |||
) | [inline] |
sc_nbutils.h の 669 行で定義されています。
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.h の 650 行で定義されています。
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.cpp の 1850 行で定義されています。
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.cpp の 1773 行で定義されています。
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.cpp の 2282 行で定義されています。
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.cpp の 1975 行で定義されています。
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.h の 341 行で定義されています。
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.h の 745 行で定義されています。
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.h の 732 行で定義されています。
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.h の 720 行で定義されています。
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.h の 708 行で定義されています。
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_concref< T1, T2 > sc_dt::concat | ( | sc_proxy< T1 > & | a, | |
sc_proxy< T2 > & | b | |||
) | [inline] |
sc_concref< T1, sc_concref< T2, T3 > > sc_dt::concat | ( | sc_proxy< T1 > & | a, | |
sc_concref< T2, T3 > | b | |||
) | [inline] |
sc_bit_proxies.h の 3845 行で定義されています。
03846 { 03847 return sc_concref<T1,sc_concref<T2,T3> >( 03848 a.back_cast(), *b.clone(), 2 ); 03849 }
sc_concref< T1, sc_subref< T2 > > sc_dt::concat | ( | sc_proxy< T1 > & | a, | |
sc_subref< T2 > | b | |||
) | [inline] |
sc_concref< T1, sc_bitref< T2 > > sc_dt::concat | ( | sc_proxy< T1 > & | a, | |
sc_bitref< T2 > | b | |||
) | [inline] |
sc_concref_r< sc_lv_base, T > sc_dt::concat | ( | bool | a, | |
const sc_proxy< T > & | b | |||
) | [inline] |
sc_lv_base.h の 1691 行で定義されています。
01692 { 01693 return sc_concref_r<sc_lv_base,T>( 01694 *new sc_lv_base( sc_logic( a ), 1 ), b.back_cast(), 1 ); 01695 }
sc_concref_r< T, sc_lv_base > sc_dt::concat | ( | const sc_proxy< T > & | a, | |
bool | b | |||
) | [inline] |
sc_lv_base.h の 1682 行で定義されています。
01683 { 01684 return sc_concref_r<T,sc_lv_base>( 01685 a.back_cast(), *new sc_lv_base( sc_logic( b ), 1 ), 2 ); 01686 }
sc_concref_r< sc_lv_base, T > sc_dt::concat | ( | const sc_logic & | a, | |
const sc_proxy< T > & | b | |||
) | [inline] |
sc_lv_base.h の 1673 行で定義されています。
01674 { 01675 return sc_concref_r<sc_lv_base,T>( 01676 *new sc_lv_base( a, 1 ), b.back_cast(), 1 ); 01677 }
sc_concref_r< T, sc_lv_base > sc_dt::concat | ( | const sc_proxy< T > & | a, | |
const sc_logic & | b | |||
) | [inline] |
sc_lv_base.h の 1664 行で定義されています。
01665 { 01666 return sc_concref_r<T,sc_lv_base>( 01667 a.back_cast(), *new sc_lv_base( b, 1 ), 2 ); 01668 }
sc_concref_r< sc_lv_base, T > sc_dt::concat | ( | const char * | a, | |
const sc_proxy< T > & | b | |||
) | [inline] |
sc_lv_base.h の 1655 行で定義されています。
01656 { 01657 return sc_concref_r<sc_lv_base,T>( 01658 *new sc_lv_base( a ), b.back_cast(), 1 ); 01659 }
sc_concref_r< T, sc_lv_base > sc_dt::concat | ( | const sc_proxy< T > & | a, | |
const char * | b | |||
) | [inline] |
sc_lv_base.h の 1646 行で定義されています。
01647 { 01648 return sc_concref_r<T,sc_lv_base>( 01649 a.back_cast(), *new sc_lv_base( b ), 2 ); 01650 }
sc_concref_r< T1, T2 > sc_dt::concat | ( | const sc_proxy< T1 > & | a, | |
const sc_proxy< T2 > & | b | |||
) | [inline] |
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.h の 3619 行で定義されています。
03620 { 03621 return sc_concref_r<T1,sc_concref_r<T2,T3> >( 03622 a.back_cast(), *b.clone(), 2 ); 03623 }
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.h の 3610 行で定義されています。
03611 { 03612 return sc_concref_r<T1,sc_subref_r<T2> >( 03613 a.back_cast(), *b.clone(), 2 ); 03614 }
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.h の 3601 行で定義されています。
03602 { 03603 return sc_concref_r<T1,sc_bitref_r<T2> >( 03604 a.back_cast(), *b.clone(), 2 ); 03605 }
sc_concref< sc_concref< T1, T2 >, T3 > sc_dt::concat | ( | sc_concref< T1, T2 > | a, | |
sc_proxy< T3 > & | b | |||
) | [inline] |
sc_bit_proxies.h の 3535 行で定義されています。
03536 { 03537 return sc_concref<sc_concref<T1,T2>,T3>( 03538 *a.clone(), b.back_cast(), 1 ); 03539 }
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.h の 3526 行で定義されています。
03527 { 03528 return sc_concref<sc_concref<T1,T2>,sc_concref<T3,T4> >( 03529 *a.clone(), *b.clone(), 3 ); 03530 }
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.h の 3517 行で定義されています。
03518 { 03519 return sc_concref<sc_concref<T1,T2>,sc_subref<T3> >( 03520 *a.clone(), *b.clone(), 3 ); 03521 }
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.h の 3508 行で定義されています。
03509 { 03510 return sc_concref<sc_concref<T1,T2>,sc_bitref<T3> >( 03511 *a.clone(), *b.clone(), 3 ); 03512 }
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.h の 1458 行で定義されています。
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 }
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.h の 1449 行で定義されています。
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 }
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.h の 1440 行で定義されています。
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 }
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.h の 1431 行で定義されています。
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 }
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.h の 1422 行で定義されています。
01423 { 01424 return sc_concref_r<sc_lv_base,sc_concref_r<T1,T2> >( 01425 *new sc_lv_base( a ), *b.clone(), 3 ); 01426 }
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.h の 1413 行で定義されています。
01414 { 01415 return sc_concref_r<sc_concref_r<T1,T2>,sc_lv_base>( 01416 *a.clone(), *new sc_lv_base( b ), 3 ); 01417 }
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.h の 3290 行で定義されています。
03291 { 03292 return sc_concref_r<sc_concref_r<T1,T2>,T3>( 03293 *a.clone(), b.back_cast(), 1 ); 03294 }
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.h の 3281 行で定義されています。
03282 { 03283 return sc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> >( 03284 *a.clone(), *b.clone(), 3 ); 03285 }
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.h の 3272 行で定義されています。
03273 { 03274 return sc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> >( 03275 *a.clone(), *b.clone(), 3 ); 03276 }
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.h の 3263 行で定義されています。
03264 { 03265 return sc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> >( 03266 *a.clone(), *b.clone(), 3 ); 03267 }
sc_concref< sc_subref< T1 >, T2 > sc_dt::concat | ( | sc_subref< T1 > | a, | |
sc_proxy< T2 > & | b | |||
) | [inline] |
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.h の 2981 行で定義されています。
02982 { 02983 return sc_concref<sc_subref<T1>,sc_concref<T2,T3> >( 02984 *a.clone(), *b.clone(), 3 ); 02985 }
sc_concref< sc_subref< T1 >, sc_subref< T2 > > sc_dt::concat | ( | sc_subref< T1 > | a, | |
sc_subref< T2 > | b | |||
) | [inline] |
sc_bit_proxies.h の 2972 行で定義されています。
02973 { 02974 return sc_concref<sc_subref<T1>,sc_subref<T2> >( 02975 *a.clone(), *b.clone(), 3 ); 02976 }
sc_concref< sc_subref< T1 >, sc_bitref< T2 > > sc_dt::concat | ( | sc_subref< T1 > | a, | |
sc_bitref< T2 > | b | |||
) | [inline] |
sc_bit_proxies.h の 2963 行で定義されています。
02964 { 02965 return sc_concref<sc_subref<T1>,sc_bitref<T2> >( 02966 *a.clone(), *b.clone(), 3 ); 02967 }
sc_concref_r< sc_lv_base, sc_subref_r< T > > sc_dt::concat | ( | bool | a, | |
sc_subref_r< T > | b | |||
) | [inline] |
sc_lv_base.h の 1181 行で定義されています。
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 }
sc_concref_r< sc_subref_r< T >, sc_lv_base > sc_dt::concat | ( | sc_subref_r< T > | a, | |
bool | b | |||
) | [inline] |
sc_lv_base.h の 1172 行で定義されています。
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 }
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.h の 1163 行で定義されています。
01164 { 01165 return sc_concref_r<sc_lv_base,sc_subref_r<T> >( 01166 *new sc_lv_base( a, 1 ), *b.clone(), 3 ); 01167 }
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.h の 1154 行で定義されています。
01155 { 01156 return sc_concref_r<sc_subref_r<T>,sc_lv_base>( 01157 *a.clone(), *new sc_lv_base( b, 1 ), 3 ); 01158 }
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.h の 1145 行で定義されています。
01146 { 01147 return sc_concref_r<sc_lv_base,sc_subref_r<T> >( 01148 *new sc_lv_base( a ), *b.clone(), 3 ); 01149 }
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.h の 1136 行で定義されています。
01137 { 01138 return sc_concref_r<sc_subref_r<T>,sc_lv_base>( 01139 *a.clone(), *new sc_lv_base( b ), 3 ); 01140 }
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.h の 2739 行で定義されています。
02740 { 02741 return sc_concref_r<sc_subref_r<T1>,T2>( 02742 *a.clone(), b.back_cast(), 1 ); 02743 }
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.h の 2730 行で定義されています。
02731 { 02732 return sc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> >( 02733 *a.clone(), *b.clone(), 3 ); 02734 }
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.h の 2721 行で定義されています。
02722 { 02723 return sc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> >( 02724 *a.clone(), *b.clone(), 3 ); 02725 }
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.h の 2712 行で定義されています。
02713 { 02714 return sc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> >( 02715 *a.clone(), *b.clone(), 3 ); 02716 }
sc_concref< sc_bitref< T1 >, T2 > sc_dt::concat | ( | sc_bitref< T1 > | a, | |
sc_proxy< T2 > & | b | |||
) | [inline] |
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.h の 2475 行で定義されています。
02476 { 02477 return sc_concref<sc_bitref<T1>,sc_concref<T2,T3> >( 02478 *a.clone(), *b.clone(), 3 ); 02479 }
sc_concref< sc_bitref< T1 >, sc_subref< T2 > > sc_dt::concat | ( | sc_bitref< T1 > | a, | |
sc_subref< T2 > | b | |||
) | [inline] |
sc_bit_proxies.h の 2466 行で定義されています。
02467 { 02468 return sc_concref<sc_bitref<T1>,sc_subref<T2> >( 02469 *a.clone(), *b.clone(), 3 ); 02470 }
sc_concref< sc_bitref< T1 >, sc_bitref< T2 > > sc_dt::concat | ( | sc_bitref< T1 > | a, | |
sc_bitref< T2 > | b | |||
) | [inline] |
sc_bit_proxies.h の 2457 行で定義されています。
02458 { 02459 return sc_concref<sc_bitref<T1>,sc_bitref<T2> >( 02460 *a.clone(), *b.clone(), 3 ); 02461 }
sc_concref_r< sc_lv_base, sc_bitref_r< T > > sc_dt::concat | ( | bool | a, | |
sc_bitref_r< T > | b | |||
) | [inline] |
sc_lv_base.h の 949 行で定義されています。
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 }
sc_concref_r< sc_bitref_r< T >, sc_lv_base > sc_dt::concat | ( | sc_bitref_r< T > | a, | |
bool | b | |||
) | [inline] |
sc_lv_base.h の 940 行で定義されています。
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 }
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.h の 931 行で定義されています。
00932 { 00933 return sc_concref_r<sc_lv_base,sc_bitref_r<T> >( 00934 *new sc_lv_base( a, 1 ), *b.clone(), 3 ); 00935 }
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.h の 922 行で定義されています。
00923 { 00924 return sc_concref_r<sc_bitref_r<T>,sc_lv_base>( 00925 *a.clone(), *new sc_lv_base( b, 1 ) ); 00926 }
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.h の 913 行で定義されています。
00914 { 00915 return sc_concref_r<sc_lv_base,sc_bitref_r<T> >( 00916 *new sc_lv_base( a ), *b.clone(), 3 ); 00917 }
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.h の 904 行で定義されています。
00905 { 00906 return sc_concref_r<sc_bitref_r<T>,sc_lv_base>( 00907 *a.clone(), *new sc_lv_base( b ), 3 ); 00908 }
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.h の 2081 行で定義されています。
02082 { 02083 return sc_concref_r<sc_bitref_r<T1>,T2>( 02084 *a.clone(), b.back_cast(), 1 ); 02085 }
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.h の 2072 行で定義されています。
02073 { 02074 return sc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >( 02075 *a.clone(), *b.clone(), 3 ); 02076 }
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.h の 2063 行で定義されています。
02064 { 02065 return sc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >( 02066 *a.clone(), *b.clone(), 3 ); 02067 }
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.h の 2054 行で定義されています。
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.h の 759 行で定義されています。
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] |
small_type sc_dt::convert_signed_SM_to_2C_to_SM | ( | small_type | s, | |
int | nb, | |||
int | nd, | |||
sc_digit * | d | |||
) | [inline] |
sc_nbutils.h の 795 行で定義されています。
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] |
void sc_dt::convert_SM_to_2C | ( | small_type | s, | |
int | nd, | |||
sc_digit * | d | |||
) | [inline] |
void sc_dt::convert_SM_to_2C_trimmed | ( | small_type | added, | |
small_type | s, | |||
int | nb, | |||
int | nd, | |||
sc_digit * | d | |||
) | [inline] |
sc_nbutils.h の 717 行で定義されています。
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.cpp の 302 行で定義されています。
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.cpp の 370 行で定義されています。
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.h の 842 行で定義されています。
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] |
small_type sc_dt::convert_unsigned_SM_to_2C_to_SM | ( | small_type | s, | |
int | nb, | |||
int | nd, | |||
sc_digit * | d | |||
) | [inline] |
sc_nbutils.h の 854 行で定義されています。
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] |
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.h の 886 行で定義されています。
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.h の 907 行で定義されています。
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 |
uint64 sc_dt::DEFN_BIN_OP_T | ( | / | , | |
div | , | |||
const sc_int_base & | ||||
) |
sc_dt::DEFN_BIN_OP_T | ( | / | , | |
div | , | |||
int64 | ||||
) |
int sc_dt::digit_ord | ( | int | i | ) | [inline] |
void sc_dt::div_by_zero | ( | Type | s | ) | [inline] |
sc_nbutils.h の 633 行で定義されています。
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.cpp の 4259 行で定義されています。
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.cpp の 279 行で定義されています。
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.cpp の 349 行で定義されています。
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.cpp の 1598 行で定義されています。
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] |
bool sc_dt::equal | ( | bool | a, | |
const sc_bit & | b | |||
) | [inline] |
bool sc_dt::equal | ( | int | a, | |
const sc_bit & | b | |||
) | [inline] |
bool sc_dt::equal | ( | const sc_bit & | a, | |
char | b | |||
) | [inline] |
bool sc_dt::equal | ( | const sc_bit & | a, | |
bool | b | |||
) | [inline] |
bool sc_dt::equal | ( | const sc_bit & | a, | |
int | b | |||
) | [inline] |
bool sc_dt::equal | ( | const sc_bit & | a, | |
const sc_bit & | b | |||
) | [inline] |
void sc_dt::extend_sign_w_ | ( | X & | x, | |
int | wi, | |||
bool | sign | |||
) | [inline] |
sc_proxy.h の 654 行で定義されています。
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 }
void sc_dt::from_uint | ( | int | ulen, | |
sc_digit * | u, | |||
Type | v | |||
) | [inline] |
sc_nbutils.h の 546 行で定義されています。
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.cpp の 65 行で定義されています。
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.cpp の 125 行で定義されています。
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 }
small_type sc_dt::get_sign | ( | Type & | u | ) | [inline] |
sc_nbutils.h の 576 行で定義されています。
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 }
void sc_dt::get_words_ | ( | const X & | x, | |
int | wi, | |||
sc_digit & | x_dw, | |||
sc_digit & | x_cw | |||
) | [inline] |
sc_digit sc_dt::high_half | ( | sc_digit | d | ) | [inline] |
sc_digit sc_dt::high_half_masked | ( | sc_digit | d | ) | [inline] |
void sc_dt::inc | ( | scfx_mant & | mant | ) | [inline] |
scfx_mant.h の 356 行で定義されています。
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.h の 954 行で定義されています。
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.h の 68 行で定義されています。
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] |
const sc_lv_base sc_dt::lrotate | ( | const sc_proxy< X > & | x, | |
int | n | |||
) | [inline] |
scfx_rep * sc_dt::lsh_scfx_rep | ( | const scfx_rep & | a, | |
int | b | |||
) | [inline] |
void sc_dt::lshift | ( | sc_fxval_fast & | c, | |
const sc_fxval_fast & | a, | |||
int | b | |||
) | [inline] |
sc_fxval.h の 1836 行で定義されています。
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.h の 4086 行で定義されています。
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.h の 4070 行で定義されています。
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.h の 2974 行で定義されています。
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.h の 2958 行で定義されています。
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.h の 1552 行で定義されています。
01553 { 01554 SC_FXVAL_FAST_OBSERVER_DEFAULT_ 01555 SC_FXVAL_FAST_OBSERVER_CONSTRUCT_( *this ) 01556 }
small_type sc_dt::make_zero | ( | int | nd, | |
sc_digit * | d | |||
) | [inline] |
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.cpp の 4317 行で定義されています。
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.cpp の 423 行で定義されています。
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.cpp の 501 行で定義されています。
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.cpp の 4201 行で定義されています。
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.cpp の 125 行で定義されています。
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.cpp の 200 行で定義されています。
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_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.h の 368 行で定義されています。
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.cpp の 1517 行で定義されています。
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] |
bool sc_dt::nand_reduce | ( | const sc_concatref & | a | ) | [inline] |
bool sc_dt::nand_reduce | ( | const sc_uint_base & | a | ) | [inline] |
bool sc_dt::nand_reduce | ( | const sc_uint_subref_r & | a | ) | [inline] |
bool sc_dt::nand_reduce | ( | const sc_int_base & | a | ) | [inline] |
bool sc_dt::nand_reduce | ( | const sc_int_subref_r & | a | ) | [inline] |
sc_logic_value_t sc_dt::nand_reduce | ( | const sc_proxy< X > & | a | ) | [inline] |
void sc_dt::neg | ( | sc_fxval_fast & | c, | |
const sc_fxval_fast & | a | |||
) | [inline] |
sc_fxval.h の 1659 行で定義されています。
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.h の 904 行で定義されています。
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.h の 3793 行で定義されています。
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.h の 3785 行で定義されています。
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.h の 2670 行で定義されています。
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.h の 2662 行で定義されています。
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.h の 359 行で定義されています。
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.cpp の 64 行で定義されています。
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] |
bool sc_dt::nor_reduce | ( | const sc_uint_base & | a | ) | [inline] |
bool sc_dt::nor_reduce | ( | const sc_uint_subref_r & | a | ) | [inline] |
bool sc_dt::nor_reduce | ( | const sc_int_base & | a | ) | [inline] |
bool sc_dt::nor_reduce | ( | const sc_int_subref_r & | a | ) | [inline] |
sc_logic_value_t sc_dt::nor_reduce | ( | const sc_proxy< X > & | a | ) | [inline] |
bool sc_dt::not_equal | ( | char | a, | |
const sc_bit & | b | |||
) | [inline] |
bool sc_dt::not_equal | ( | bool | a, | |
const sc_bit & | b | |||
) | [inline] |
bool sc_dt::not_equal | ( | int | a, | |
const sc_bit & | b | |||
) | [inline] |
bool sc_dt::not_equal | ( | const sc_bit & | a, | |
char | b | |||
) | [inline] |
bool sc_dt::not_equal | ( | const sc_bit & | a, | |
bool | b | |||
) | [inline] |
bool sc_dt::not_equal | ( | const sc_bit & | a, | |
int | b | |||
) | [inline] |
bool sc_dt::not_equal | ( | const sc_bit & | a, | |
const sc_bit & | b | |||
) | [inline] |
sc_digit sc_dt::one_and_ones | ( | int | n | ) | [inline] |
sc_digit sc_dt::one_and_zeros | ( | int | n | ) | [inline] |
sc_unsigned sc_dt::operator & | ( | unsigned int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
sc_unsigned sc_dt::operator & | ( | const sc_unsigned & | u, | |
unsigned int | v | |||
) | [inline] |
sc_unsigned sc_dt::operator & | ( | unsigned long | u, | |
const sc_unsigned & | v | |||
) |
sc_unsigned.cpp の 1328 行で定義されています。
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.cpp の 1312 行で定義されています。
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.cpp の 1296 行で定義されています。
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.cpp の 1280 行で定義されています。
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.cpp の 1266 行で定義されています。
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 sc_dt::operator & | ( | const sc_unsigned & | u, | |
const sc_uint_base & | v | |||
) |
sc_signed sc_dt::operator & | ( | unsigned int | u, | |
const sc_signed & | v | |||
) | [inline] |
sc_signed sc_dt::operator & | ( | int | u, | |
const sc_signed & | v | |||
) | [inline] |
sc_signed sc_dt::operator & | ( | const sc_signed & | u, | |
unsigned int | v | |||
) | [inline] |
sc_signed sc_dt::operator & | ( | const sc_signed & | u, | |
int | v | |||
) | [inline] |
sc_signed sc_dt::operator & | ( | int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
sc_signed sc_dt::operator & | ( | const sc_unsigned & | u, | |
int | v | |||
) | [inline] |
sc_signed sc_dt::operator & | ( | unsigned long | u, | |
const sc_signed & | v | |||
) |
sc_signed.cpp の 2893 行で定義されています。
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.cpp の 2877 行で定義されています。
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.cpp の 2861 行で定義されています。
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.cpp の 2845 行で定義されています。
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.cpp の 2829 行で定義されています。
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.cpp の 2813 行で定義されています。
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.cpp の 2797 行で定義されています。
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.cpp の 2781 行で定義されています。
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.cpp の 2765 行で定義されています。
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.cpp の 2749 行で定義されています。
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.cpp の 2733 行で定義されています。
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.cpp の 2717 行で定義されています。
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.cpp の 2703 行で定義されています。
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.cpp の 2689 行で定義されています。
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.cpp の 2675 行で定義されています。
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 sc_dt::operator & | ( | const sc_signed & | u, | |
const sc_uint_base & | v | |||
) |
sc_signed sc_dt::operator & | ( | const sc_int_base & | u, | |
const sc_signed & | v | |||
) |
sc_signed sc_dt::operator & | ( | const sc_signed & | u, | |
const sc_int_base & | v | |||
) |
sc_signed sc_dt::operator & | ( | const sc_int_base & | u, | |
const sc_unsigned & | v | |||
) |
sc_signed sc_dt::operator & | ( | const sc_unsigned & | u, | |
const sc_int_base & | v | |||
) |
const sc_lv_base sc_dt::operator & | ( | const sc_proxy< X > & | px, | |
const sc_proxy< Y > & | py | |||
) | [inline] |
const sc_logic sc_dt::operator & | ( | int | a, | |
const sc_logic & | b | |||
) | [inline] |
const sc_logic sc_dt::operator & | ( | char | a, | |
const sc_logic & | b | |||
) | [inline] |
const sc_logic sc_dt::operator & | ( | bool | a, | |
const sc_logic & | b | |||
) | [inline] |
const sc_logic sc_dt::operator & | ( | sc_logic_value_t | a, | |
const sc_logic & | b | |||
) | [inline] |
const sc_logic sc_dt::operator & | ( | const sc_logic & | a, | |
int | b | |||
) | [inline] |
const sc_logic sc_dt::operator & | ( | const sc_logic & | a, | |
char | b | |||
) | [inline] |
const sc_logic sc_dt::operator & | ( | const sc_logic & | a, | |
bool | b | |||
) | [inline] |
const sc_logic sc_dt::operator & | ( | const sc_logic & | a, | |
sc_logic_value_t | b | |||
) | [inline] |
const sc_logic sc_dt::operator & | ( | const sc_logic & | a, | |
const sc_logic & | b | |||
) | [inline] |
const sc_logic sc_dt::operator & | ( | const sc_bitref_r< T1 > & | a, | |
const sc_bitref_r< T2 > & | b | |||
) | [inline] |
const sc_bit sc_dt::operator & | ( | char | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::operator & | ( | bool | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::operator & | ( | int | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::operator & | ( | const sc_bit & | a, | |
char | b | |||
) | [inline] |
const sc_bit sc_dt::operator & | ( | const sc_bit & | a, | |
bool | b | |||
) | [inline] |
const sc_bit sc_dt::operator & | ( | const sc_bit & | a, | |
int | b | |||
) | [inline] |
const sc_bit sc_dt::operator & | ( | const sc_bit & | a, | |
const sc_bit & | b | |||
) | [inline] |
X & sc_dt::operator &= | ( | sc_proxy< X > & | px, | |
const sc_proxy< Y > & | py | |||
) | [inline] |
sc_lv_base.h の 368 行で定義されています。
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] |
bool sc_dt::operator!= | ( | int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
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] |
bool sc_dt::operator!= | ( | const sc_unsigned & | u, | |
int | v | |||
) | [inline] |
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 | |||
) |
bool sc_dt::operator!= | ( | const sc_unsigned & | u, | |
const sc_uint_base & | v | |||
) |
bool sc_dt::operator!= | ( | const sc_int_base & | u, | |
const sc_unsigned & | v | |||
) |
bool sc_dt::operator!= | ( | const sc_unsigned & | u, | |
const sc_int_base & | v | |||
) |
bool sc_dt::operator!= | ( | const sc_uint_base & | a, | |
const sc_uint_base & | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | unsigned int | u, | |
const sc_signed & | v | |||
) | [inline] |
bool sc_dt::operator!= | ( | int | u, | |
const sc_signed & | v | |||
) | [inline] |
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] |
bool sc_dt::operator!= | ( | const sc_signed & | u, | |
int | v | |||
) | [inline] |
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 | |||
) |
bool sc_dt::operator!= | ( | const sc_unsigned & | u, | |
const sc_signed & | v | |||
) |
bool sc_dt::operator!= | ( | unsigned long | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6808 行で定義されています。
bool sc_dt::operator!= | ( | const CLASS_TYPE & | u, | |
unsigned long | v | |||
) |
sc_signed.cpp の 6801 行で定義されています。
bool sc_dt::operator!= | ( | long | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6794 行で定義されています。
bool sc_dt::operator!= | ( | const CLASS_TYPE & | u, | |
long | v | |||
) |
sc_signed.cpp の 6787 行で定義されています。
bool sc_dt::operator!= | ( | uint64 | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6780 行で定義されています。
bool sc_dt::operator!= | ( | const CLASS_TYPE & | u, | |
uint64 | v | |||
) |
sc_signed.cpp の 6773 行で定義されています。
bool sc_dt::operator!= | ( | int64 | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6766 行で定義されています。
bool sc_dt::operator!= | ( | const CLASS_TYPE & | u, | |
int64 | v | |||
) |
sc_signed.cpp の 6759 行で定義されています。
bool sc_dt::operator!= | ( | const CLASS_TYPE & | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6752 行で定義されています。
bool sc_dt::operator!= | ( | const sc_uint_base & | u, | |
const sc_signed & | v | |||
) |
bool sc_dt::operator!= | ( | const sc_signed & | u, | |
const sc_uint_base & | v | |||
) |
bool sc_dt::operator!= | ( | const sc_int_base & | u, | |
const sc_signed & | v | |||
) |
bool sc_dt::operator!= | ( | const sc_signed & | u, | |
const sc_int_base & | v | |||
) |
bool sc_dt::operator!= | ( | const sc_length_param & | a, | |
const sc_length_param & | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | const sc_int_base & | a, | |
const sc_int_base & | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | const sc_fxtype_params & | a, | |
const sc_fxtype_params & | b | |||
) | [inline] |
sc_fxtype_params.h の 233 行で定義されています。
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] |
bool sc_dt::operator!= | ( | const sc_proxy< X > & | px, | |
const sc_proxy< Y > & | py | |||
) | [inline] |
bool sc_dt::operator!= | ( | int | a, | |
const sc_logic & | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | char | a, | |
const sc_logic & | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | bool | a, | |
const sc_logic & | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | sc_logic_value_t | a, | |
const sc_logic & | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | const sc_logic & | a, | |
int | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | const sc_logic & | a, | |
char | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | const sc_logic & | a, | |
bool | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | const sc_logic & | a, | |
sc_logic_value_t | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | const sc_logic & | a, | |
const sc_logic & | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | const sc_bitref_r< T1 > & | a, | |
const sc_bitref_r< T2 > & | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | char | a, | |
const sc_bit & | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | bool | a, | |
const sc_bit & | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | int | a, | |
const sc_bit & | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | const sc_bit & | a, | |
char | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | const sc_bit & | a, | |
bool | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | const sc_bit & | a, | |
int | b | |||
) | [inline] |
bool sc_dt::operator!= | ( | const sc_bit & | a, | |
const sc_bit & | b | |||
) | [inline] |
sc_unsigned sc_dt::operator% | ( | unsigned int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
sc_unsigned sc_dt::operator% | ( | const sc_unsigned & | u, | |
unsigned int | v | |||
) | [inline] |
sc_unsigned sc_dt::operator% | ( | unsigned long | u, | |
const sc_unsigned & | v | |||
) |
sc_unsigned.cpp の 1234 行で定義されています。
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.cpp の 1216 行で定義されています。
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.cpp の 1198 行で定義されています。
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.cpp の 1180 行で定義されています。
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.cpp の 1165 行で定義されています。
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 sc_dt::operator% | ( | const sc_unsigned & | u, | |
const sc_uint_base & | v | |||
) |
sc_signed sc_dt::operator% | ( | unsigned int | u, | |
const sc_signed & | v | |||
) | [inline] |
sc_signed sc_dt::operator% | ( | int | u, | |
const sc_signed & | v | |||
) | [inline] |
sc_signed sc_dt::operator% | ( | const sc_signed & | u, | |
unsigned int | v | |||
) | [inline] |
sc_signed sc_dt::operator% | ( | const sc_signed & | u, | |
int | v | |||
) | [inline] |
sc_signed sc_dt::operator% | ( | int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
sc_signed sc_dt::operator% | ( | const sc_unsigned & | u, | |
int | v | |||
) | [inline] |
sc_signed sc_dt::operator% | ( | unsigned long | u, | |
const sc_signed & | v | |||
) |
sc_signed.cpp の 2643 行で定義されています。
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.cpp の 2625 行で定義されています。
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.cpp の 2605 行で定義されています。
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.cpp の 2586 行で定義されています。
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.cpp の 2566 行で定義されています。
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.cpp の 2547 行で定義されています。
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.cpp の 2529 行で定義されています。
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.cpp の 2511 行で定義されています。
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.cpp の 2491 行で定義されています。
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.cpp の 2471 行で定義されています。
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.cpp の 2451 行で定義されています。
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.cpp の 2431 行で定義されています。
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.cpp の 2416 行で定義されています。
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.cpp の 2401 行で定義されています。
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.cpp の 2386 行で定義されています。
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 sc_dt::operator% | ( | const sc_signed & | u, | |
const sc_uint_base & | v | |||
) |
sc_signed sc_dt::operator% | ( | const sc_int_base & | u, | |
const sc_signed & | v | |||
) |
sc_signed sc_dt::operator% | ( | const sc_signed & | u, | |
const sc_int_base & | v | |||
) |
sc_signed sc_dt::operator% | ( | const sc_int_base & | u, | |
const sc_unsigned & | v | |||
) |
sc_signed sc_dt::operator% | ( | const sc_unsigned & | u, | |
const sc_int_base & | v | |||
) |
sc_unsigned sc_dt::operator* | ( | unsigned int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
sc_unsigned sc_dt::operator* | ( | const sc_unsigned & | u, | |
unsigned int | v | |||
) | [inline] |
sc_unsigned sc_dt::operator* | ( | unsigned long | u, | |
const sc_unsigned & | v | |||
) |
sc_unsigned.cpp の 1017 行で定義されています。
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.cpp の 1000 行で定義されています。
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.cpp の 982 行で定義されています。
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.cpp の 964 行で定義されています。
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.cpp の 948 行で定義されています。
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 sc_dt::operator* | ( | const sc_unsigned & | u, | |
const sc_uint_base & | v | |||
) |
sc_signed sc_dt::operator* | ( | unsigned int | u, | |
const sc_signed & | v | |||
) | [inline] |
sc_signed sc_dt::operator* | ( | int | u, | |
const sc_signed & | v | |||
) | [inline] |
sc_signed sc_dt::operator* | ( | const sc_signed & | u, | |
unsigned int | v | |||
) | [inline] |
sc_signed sc_dt::operator* | ( | const sc_signed & | u, | |
int | v | |||
) | [inline] |
sc_signed sc_dt::operator* | ( | int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
sc_signed sc_dt::operator* | ( | const sc_unsigned & | u, | |
int | v | |||
) | [inline] |
sc_signed sc_dt::operator* | ( | unsigned long | u, | |
const sc_signed & | v | |||
) |
sc_signed.cpp の 2042 行で定義されています。
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.cpp の 2025 行で定義されています。
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.cpp の 2007 行で定義されています。
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.cpp の 1989 行で定義されています。
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.cpp の 1971 行で定義されています。
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.cpp の 1953 行で定義されています。
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.cpp の 1935 行で定義されています。
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.cpp の 1917 行で定義されています。
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.cpp の 1899 行で定義されています。
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.cpp の 1881 行で定義されています。
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.cpp の 1863 行で定義されています。
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.cpp の 1845 行で定義されています。
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.cpp の 1829 行で定義されています。
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.cpp の 1813 行で定義されています。
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.cpp の 1797 行で定義されています。
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 sc_dt::operator* | ( | const sc_signed & | u, | |
const sc_uint_base & | v | |||
) |
sc_signed sc_dt::operator* | ( | const sc_int_base & | u, | |
const sc_signed & | v | |||
) |
sc_signed sc_dt::operator* | ( | const sc_signed & | u, | |
const sc_int_base & | v | |||
) |
sc_signed sc_dt::operator* | ( | const sc_int_base & | u, | |
const sc_unsigned & | v | |||
) |
sc_signed sc_dt::operator* | ( | const sc_unsigned & | u, | |
const sc_int_base & | v | |||
) |
sc_string_old sc_dt::operator+ | ( | const char * | s, | |
const sc_string_old & | t | |||
) |
sc_string.cpp の 261 行で定義されています。
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 sc_dt::operator+ | ( | const sc_unsigned & | u, | |
unsigned int | v | |||
) | [inline] |
sc_unsigned sc_dt::operator+ | ( | const sc_unsigned & | u | ) |
sc_unsigned sc_dt::operator+ | ( | unsigned long | u, | |
const sc_unsigned & | v | |||
) |
sc_unsigned.cpp の 894 行で定義されています。
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.cpp の 875 行で定義されています。
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.cpp の 855 行で定義されています。
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.cpp の 836 行で定義されています。
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.cpp の 819 行で定義されています。
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 sc_dt::operator+ | ( | const sc_unsigned & | u, | |
const sc_uint_base & | v | |||
) |
sc_signed sc_dt::operator+ | ( | unsigned int | u, | |
const sc_signed & | v | |||
) | [inline] |
sc_signed sc_dt::operator+ | ( | int | u, | |
const sc_signed & | v | |||
) | [inline] |
sc_signed sc_dt::operator+ | ( | const sc_signed & | u, | |
unsigned int | v | |||
) | [inline] |
sc_signed sc_dt::operator+ | ( | const sc_signed & | u, | |
int | v | |||
) | [inline] |
sc_signed sc_dt::operator+ | ( | int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
sc_signed sc_dt::operator+ | ( | const sc_unsigned & | u, | |
int | v | |||
) | [inline] |
sc_signed sc_dt::operator+ | ( | const sc_signed & | u | ) |
sc_signed sc_dt::operator+ | ( | unsigned long | u, | |
const sc_signed & | v | |||
) |
sc_signed.cpp の 1370 行で定義されています。
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.cpp の 1351 行で定義されています。
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.cpp の 1332 行で定義されています。
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.cpp の 1313 行で定義されています。
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.cpp の 1294 行で定義されています。
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.cpp の 1275 行で定義されています。
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.cpp の 1255 行で定義されています。
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.cpp の 1236 行で定義されています。
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.cpp の 1216 行で定義されています。
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.cpp の 1197 行で定義されています。
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.cpp の 1177 行で定義されています。
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.cpp の 1158 行で定義されています。
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.cpp の 1141 行で定義されています。
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.cpp の 1124 行で定義されています。
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.cpp の 1107 行で定義されています。
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 sc_dt::operator+ | ( | const sc_signed & | u, | |
const sc_uint_base & | v | |||
) |
sc_signed sc_dt::operator+ | ( | const sc_int_base & | u, | |
const sc_signed & | v | |||
) |
sc_signed sc_dt::operator+ | ( | const sc_signed & | u, | |
const sc_int_base & | v | |||
) |
sc_signed sc_dt::operator+ | ( | const sc_int_base & | u, | |
const sc_unsigned & | v | |||
) |
sc_signed sc_dt::operator+ | ( | const sc_unsigned & | u, | |
const sc_int_base & | v | |||
) |
const sc_dt::sc_concatref& sc_dt::operator, | ( | bool | a, | |
const sc_dt::sc_value_base & | b | |||
) | [inline] |
sc_concatref.h の 793 行で定義されています。
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.h の 780 行で定義されています。
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.h の 768 行で定義されています。
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.h の 756 行で定義されています。
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 }
sc_concref< T1, T2 > sc_dt::operator, | ( | sc_proxy< T1 > & | a, | |
sc_proxy< T2 > & | b | |||
) | [inline] |
sc_concref< T1, sc_concref< T2, T3 > > sc_dt::operator, | ( | sc_proxy< T1 > & | a, | |
sc_concref< T2, T3 > | b | |||
) | [inline] |
sc_bit_proxies.h の 3808 行で定義されています。
03809 { 03810 return sc_concref<T1,sc_concref<T2,T3> >( 03811 a.back_cast(), *b.clone(), 2 ); 03812 }
sc_concref< T1, sc_subref< T2 > > sc_dt::operator, | ( | sc_proxy< T1 > & | a, | |
sc_subref< T2 > | b | |||
) | [inline] |
sc_concref< T1, sc_bitref< T2 > > sc_dt::operator, | ( | sc_proxy< T1 > & | a, | |
sc_bitref< T2 > | b | |||
) | [inline] |
sc_concref_r< sc_lv_base, T > sc_dt::operator, | ( | bool | a, | |
const sc_proxy< T > & | b | |||
) | [inline] |
sc_lv_base.h の 1636 行で定義されています。
01637 { 01638 return sc_concref_r<sc_lv_base,T>( 01639 *new sc_lv_base( sc_logic( a ), 1 ), b.back_cast(), 1 ); 01640 }
sc_concref_r< T, sc_lv_base > sc_dt::operator, | ( | const sc_proxy< T > & | a, | |
bool | b | |||
) | [inline] |
sc_lv_base.h の 1627 行で定義されています。
01628 { 01629 return sc_concref_r<T,sc_lv_base>( 01630 a.back_cast(), *new sc_lv_base( sc_logic( b ), 1 ), 2 ); 01631 }
sc_concref_r< sc_lv_base, T > sc_dt::operator, | ( | const sc_logic & | a, | |
const sc_proxy< T > & | b | |||
) | [inline] |
sc_lv_base.h の 1618 行で定義されています。
01619 { 01620 return sc_concref_r<sc_lv_base,T>( 01621 *new sc_lv_base( a, 1 ), b.back_cast(), 1 ); 01622 }
sc_concref_r< T, sc_lv_base > sc_dt::operator, | ( | const sc_proxy< T > & | a, | |
const sc_logic & | b | |||
) | [inline] |
sc_lv_base.h の 1609 行で定義されています。
01610 { 01611 return sc_concref_r<T,sc_lv_base>( 01612 a.back_cast(), *new sc_lv_base( b, 1 ), 2 ); 01613 }
sc_concref_r< sc_lv_base, T > sc_dt::operator, | ( | const char * | a, | |
const sc_proxy< T > & | b | |||
) | [inline] |
sc_lv_base.h の 1600 行で定義されています。
01601 { 01602 return sc_concref_r<sc_lv_base,T>( 01603 *new sc_lv_base( a ), b.back_cast(), 1 ); 01604 }
sc_concref_r< T, sc_lv_base > sc_dt::operator, | ( | const sc_proxy< T > & | a, | |
const char * | b | |||
) | [inline] |
sc_lv_base.h の 1591 行で定義されています。
01592 { 01593 return sc_concref_r<T,sc_lv_base>( 01594 a.back_cast(), *new sc_lv_base( b ), 2 ); 01595 }
sc_concref_r< T1, T2 > sc_dt::operator, | ( | const sc_proxy< T1 > & | a, | |
const sc_proxy< T2 > & | b | |||
) | [inline] |
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.h の 3582 行で定義されています。
03583 { 03584 return sc_concref_r<T1,sc_concref_r<T2,T3> >( 03585 a.back_cast(), *b.clone(), 2 ); 03586 }
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.h の 3573 行で定義されています。
03574 { 03575 return sc_concref_r<T1,sc_subref_r<T2> >( 03576 a.back_cast(), *b.clone(), 2 ); 03577 }
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.h の 3564 行で定義されています。
03565 { 03566 return sc_concref_r<T1,sc_bitref_r<T2> >( 03567 a.back_cast(), *b.clone(), 2 ); 03568 }
sc_concref< sc_concref< T1, T2 >, T3 > sc_dt::operator, | ( | sc_concref< T1, T2 > | a, | |
sc_proxy< T3 > & | b | |||
) | [inline] |
sc_bit_proxies.h の 3498 行で定義されています。
03499 { 03500 return sc_concref<sc_concref<T1,T2>,T3>( 03501 *a.clone(), b.back_cast(), 1 ); 03502 }
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.h の 3489 行で定義されています。
03490 { 03491 return sc_concref<sc_concref<T1,T2>,sc_concref<T3,T4> >( 03492 *a.clone(), *b.clone(), 3 ); 03493 }
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.h の 3480 行で定義されています。
03481 { 03482 return sc_concref<sc_concref<T1,T2>,sc_subref<T3> >( 03483 *a.clone(), *b.clone(), 3 ); 03484 }
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.h の 3471 行で定義されています。
03472 { 03473 return sc_concref<sc_concref<T1,T2>,sc_bitref<T3> >( 03474 *a.clone(), *b.clone(), 3 ); 03475 }
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.h の 1403 行で定義されています。
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 }
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.h の 1394 行で定義されています。
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 }
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.h の 1385 行で定義されています。
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 }
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.h の 1376 行で定義されています。
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 }
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.h の 1367 行で定義されています。
01368 { 01369 return sc_concref_r<sc_lv_base,sc_concref_r<T1,T2> >( 01370 *new sc_lv_base( a ), *b.clone(), 3 ); 01371 }
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.h の 1358 行で定義されています。
01359 { 01360 return sc_concref_r<sc_concref_r<T1,T2>,sc_lv_base>( 01361 *a.clone(), *new sc_lv_base( b ), 3 ); 01362 }
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.h の 3253 行で定義されています。
03254 { 03255 return sc_concref_r<sc_concref_r<T1,T2>,T3>( 03256 *a.clone(), b.back_cast(), 1 ); 03257 }
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.h の 3244 行で定義されています。
03245 { 03246 return sc_concref_r<sc_concref_r<T1,T2>,sc_concref_r<T3,T4> >( 03247 *a.clone(), *b.clone(), 3 ); 03248 }
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.h の 3235 行で定義されています。
03236 { 03237 return sc_concref_r<sc_concref_r<T1,T2>,sc_subref_r<T3> >( 03238 *a.clone(), *b.clone(), 3 ); 03239 }
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.h の 3226 行で定義されています。
03227 { 03228 return sc_concref_r<sc_concref_r<T1,T2>,sc_bitref_r<T3> >( 03229 *a.clone(), *b.clone(), 3 ); 03230 }
sc_concref< sc_subref< T1 >, T2 > sc_dt::operator, | ( | sc_subref< T1 > | a, | |
sc_proxy< T2 > & | b | |||
) | [inline] |
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.h の 2944 行で定義されています。
02945 { 02946 return sc_concref<sc_subref<T1>,sc_concref<T2,T3> >( 02947 *a.clone(), *b.clone(), 3 ); 02948 }
sc_concref< sc_subref< T1 >, sc_subref< T2 > > sc_dt::operator, | ( | sc_subref< T1 > | a, | |
sc_subref< T2 > | b | |||
) | [inline] |
sc_bit_proxies.h の 2935 行で定義されています。
02936 { 02937 return sc_concref<sc_subref<T1>,sc_subref<T2> >( 02938 *a.clone(), *b.clone(), 3 ); 02939 }
sc_concref< sc_subref< T1 >, sc_bitref< T2 > > sc_dt::operator, | ( | sc_subref< T1 > | a, | |
sc_bitref< T2 > | b | |||
) | [inline] |
sc_bit_proxies.h の 2926 行で定義されています。
02927 { 02928 return sc_concref<sc_subref<T1>,sc_bitref<T2> >( 02929 *a.clone(), *b.clone(), 3 ); 02930 }
sc_concref_r< sc_lv_base, sc_subref_r< T > > sc_dt::operator, | ( | bool | a, | |
sc_subref_r< T > | b | |||
) | [inline] |
sc_lv_base.h の 1126 行で定義されています。
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 }
sc_concref_r< sc_subref_r< T >, sc_lv_base > sc_dt::operator, | ( | sc_subref_r< T > | a, | |
bool | b | |||
) | [inline] |
sc_lv_base.h の 1117 行で定義されています。
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 }
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.h の 1108 行で定義されています。
01109 { 01110 return sc_concref_r<sc_lv_base,sc_subref_r<T> >( 01111 *new sc_lv_base( a, 1 ), *b.clone(), 3 ); 01112 }
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.h の 1099 行で定義されています。
01100 { 01101 return sc_concref_r<sc_subref_r<T>,sc_lv_base>( 01102 *a.clone(), *new sc_lv_base( b, 1 ), 3 ); 01103 }
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.h の 1090 行で定義されています。
01091 { 01092 return sc_concref_r<sc_lv_base,sc_subref_r<T> >( 01093 *new sc_lv_base( a ), *b.clone(), 3 ); 01094 }
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.h の 1081 行で定義されています。
01082 { 01083 return sc_concref_r<sc_subref_r<T>,sc_lv_base>( 01084 *a.clone(), *new sc_lv_base( b ), 3 ); 01085 }
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.h の 2702 行で定義されています。
02703 { 02704 return sc_concref_r<sc_subref_r<T1>,T2>( 02705 *a.clone(), b.back_cast(), 1 ); 02706 }
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.h の 2693 行で定義されています。
02694 { 02695 return sc_concref_r<sc_subref_r<T1>,sc_concref_r<T2,T3> >( 02696 *a.clone(), *b.clone(), 3 ); 02697 }
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.h の 2684 行で定義されています。
02685 { 02686 return sc_concref_r<sc_subref_r<T1>,sc_subref_r<T2> >( 02687 *a.clone(), *b.clone(), 3 ); 02688 }
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.h の 2675 行で定義されています。
02676 { 02677 return sc_concref_r<sc_subref_r<T1>,sc_bitref_r<T2> >( 02678 *a.clone(), *b.clone(), 3 ); 02679 }
sc_concref< sc_bitref< T1 >, T2 > sc_dt::operator, | ( | sc_bitref< T1 > | a, | |
sc_proxy< T2 > & | b | |||
) | [inline] |
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.h の 2438 行で定義されています。
02439 { 02440 return sc_concref<sc_bitref<T1>,sc_concref<T2,T3> >( 02441 *a.clone(), *b.clone(), 3 ); 02442 }
sc_concref< sc_bitref< T1 >, sc_subref< T2 > > sc_dt::operator, | ( | sc_bitref< T1 > | a, | |
sc_subref< T2 > | b | |||
) | [inline] |
sc_bit_proxies.h の 2429 行で定義されています。
02430 { 02431 return sc_concref<sc_bitref<T1>,sc_subref<T2> >( 02432 *a.clone(), *b.clone(), 3 ); 02433 }
sc_concref< sc_bitref< T1 >, sc_bitref< T2 > > sc_dt::operator, | ( | sc_bitref< T1 > | a, | |
sc_bitref< T2 > | b | |||
) | [inline] |
sc_bit_proxies.h の 2420 行で定義されています。
02421 { 02422 return sc_concref<sc_bitref<T1>,sc_bitref<T2> >( 02423 *a.clone(), *b.clone(), 3 ); 02424 }
sc_concref_r< sc_lv_base, sc_bitref_r< T > > sc_dt::operator, | ( | bool | a, | |
sc_bitref_r< T > | b | |||
) | [inline] |
sc_lv_base.h の 894 行で定義されています。
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 }
sc_concref_r< sc_bitref_r< T >, sc_lv_base > sc_dt::operator, | ( | sc_bitref_r< T > | a, | |
bool | b | |||
) | [inline] |
sc_lv_base.h の 885 行で定義されています。
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 }
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.h の 876 行で定義されています。
00877 { 00878 return sc_concref_r<sc_lv_base,sc_bitref_r<T> >( 00879 *new sc_lv_base( a, 1 ), *b.clone(), 3 ); 00880 }
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.h の 867 行で定義されています。
00868 { 00869 return sc_concref_r<sc_bitref_r<T>,sc_lv_base>( 00870 *a.clone(), *new sc_lv_base( b, 1 ) ); 00871 }
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.h の 858 行で定義されています。
00859 { 00860 return sc_concref_r<sc_lv_base,sc_bitref_r<T> >( 00861 *new sc_lv_base( a ), *b.clone(), 3 ); 00862 }
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.h の 849 行で定義されています。
00850 { 00851 return sc_concref_r<sc_bitref_r<T>,sc_lv_base>( 00852 *a.clone(), *new sc_lv_base( b ), 3 ); 00853 }
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.h の 2044 行で定義されています。
02045 { 02046 return sc_concref_r<sc_bitref_r<T1>,T2>( 02047 *a.clone(), b.back_cast(), 1 ); 02048 }
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.h の 2035 行で定義されています。
02036 { 02037 return sc_concref_r<sc_bitref_r<T1>,sc_concref_r<T2,T3> >( 02038 *a.clone(), *b.clone(), 3 ); 02039 }
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.h の 2026 行で定義されています。
02027 { 02028 return sc_concref_r<sc_bitref_r<T1>,sc_subref_r<T2> >( 02029 *a.clone(), *b.clone(), 3 ); 02030 }
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.h の 2017 行で定義されています。
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 sc_dt::operator- | ( | int | u, | |
const sc_signed & | v | |||
) | [inline] |
sc_signed sc_dt::operator- | ( | const sc_signed & | u, | |
unsigned int | v | |||
) | [inline] |
sc_signed sc_dt::operator- | ( | const sc_signed & | u, | |
int | v | |||
) | [inline] |
sc_signed sc_dt::operator- | ( | unsigned int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
sc_signed sc_dt::operator- | ( | int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
sc_signed sc_dt::operator- | ( | const sc_unsigned & | u, | |
unsigned int | v | |||
) | [inline] |
sc_signed sc_dt::operator- | ( | const sc_unsigned & | u, | |
int | v | |||
) | [inline] |
sc_signed sc_dt::operator- | ( | const sc_unsigned & | u | ) |
sc_signed sc_dt::operator- | ( | const sc_signed & | u | ) |
sc_signed sc_dt::operator- | ( | unsigned long | u, | |
const sc_unsigned & | v | |||
) |
sc_signed.cpp の 1766 行で定義されています。
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.cpp の 1747 行で定義されています。
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.cpp の 1729 行で定義されています。
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.cpp の 1710 行で定義されています。
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.cpp の 1691 行で定義されています。
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.cpp の 1672 行で定義されています。
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.cpp の 1653 行で定義されています。
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.cpp の 1634 行で定義されています。
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.cpp の 1615 行で定義されています。
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.cpp の 1595 行で定義されています。
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.cpp の 1576 行で定義されています。
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.cpp の 1556 行で定義されています。
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.cpp の 1536 行で定義されています。
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.cpp の 1517 行で定義されています。
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.cpp の 1497 行で定義されています。
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.cpp の 1478 行で定義されています。
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.cpp の 1461 行で定義されています。
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.cpp の 1444 行で定義されています。
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.cpp の 1427 行で定義されています。
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.cpp の 1410 行で定義されています。
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 sc_dt::operator- | ( | const sc_signed & | u, | |
const sc_uint_base & | v | |||
) |
sc_signed sc_dt::operator- | ( | const sc_uint_base & | u, | |
const sc_unsigned & | v | |||
) |
sc_signed sc_dt::operator- | ( | const sc_unsigned & | u, | |
const sc_uint_base & | v | |||
) |
sc_signed sc_dt::operator- | ( | const sc_int_base & | u, | |
const sc_signed & | v | |||
) |
sc_signed sc_dt::operator- | ( | const sc_signed & | u, | |
const sc_int_base & | v | |||
) |
sc_signed sc_dt::operator- | ( | const sc_int_base & | u, | |
const sc_unsigned & | v | |||
) |
sc_signed sc_dt::operator- | ( | const sc_unsigned & | u, | |
const sc_int_base & | v | |||
) |
sc_unsigned sc_dt::operator/ | ( | unsigned int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
sc_unsigned sc_dt::operator/ | ( | const sc_unsigned & | u, | |
unsigned int | v | |||
) | [inline] |
sc_unsigned sc_dt::operator/ | ( | unsigned long | u, | |
const sc_unsigned & | v | |||
) |
sc_unsigned.cpp の 1129 行で定義されています。
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.cpp の 1109 行で定義されています。
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.cpp の 1088 行で定義されています。
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.cpp の 1068 行で定義されています。
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.cpp の 1050 行で定義されています。
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 sc_dt::operator/ | ( | const sc_unsigned & | u, | |
const sc_uint_base & | v | |||
) |
sc_signed sc_dt::operator/ | ( | unsigned int | u, | |
const sc_signed & | v | |||
) | [inline] |
sc_signed sc_dt::operator/ | ( | int | u, | |
const sc_signed & | v | |||
) | [inline] |
sc_signed sc_dt::operator/ | ( | const sc_signed & | u, | |
unsigned int | v | |||
) | [inline] |
sc_signed sc_dt::operator/ | ( | const sc_signed & | u, | |
int | v | |||
) | [inline] |
sc_signed sc_dt::operator/ | ( | int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
sc_signed sc_dt::operator/ | ( | const sc_unsigned & | u, | |
int | v | |||
) | [inline] |
sc_signed sc_dt::operator/ | ( | unsigned long | u, | |
const sc_signed & | v | |||
) |
sc_signed.cpp の 2350 行で定義されています。
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.cpp の 2330 行で定義されています。
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.cpp の 2310 行で定義されています。
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.cpp の 2290 行で定義されています。
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.cpp の 2270 行で定義されています。
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.cpp の 2250 行で定義されています。
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.cpp の 2229 行で定義されています。
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.cpp の 2209 行で定義されています。
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.cpp の 2189 行で定義されています。
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.cpp の 2169 行で定義されています。
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.cpp の 2149 行で定義されています。
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.cpp の 2129 行で定義されています。
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.cpp の 2111 行で定義されています。
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.cpp の 2093 行で定義されています。
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.cpp の 2075 行で定義されています。
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 sc_dt::operator/ | ( | const sc_signed & | u, | |
const sc_uint_base & | v | |||
) |
sc_signed sc_dt::operator/ | ( | const sc_int_base & | u, | |
const sc_signed & | v | |||
) |
sc_signed sc_dt::operator/ | ( | const sc_signed & | u, | |
const sc_int_base & | v | |||
) |
sc_signed sc_dt::operator/ | ( | const sc_int_base & | u, | |
const sc_unsigned & | v | |||
) |
sc_signed sc_dt::operator/ | ( | const sc_unsigned & | u, | |
const sc_int_base & | v | |||
) |
const sc_fxval_fast sc_dt::operator/ | ( | const sc_fxval_fast & | a, | |
const sc_fxval_fast & | b | |||
) | [inline] |
sc_fxval.h の 1724 行で定義されています。
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.h の 972 行で定義されています。
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.h の 3892 行で定義されています。
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.h の 3884 行で定義されています。
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.h の 3875 行で定義されています。
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.h の 2773 行で定義されています。
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.h の 2765 行で定義されています。
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.h の 2756 行で定義されています。
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] |
bool sc_dt::operator< | ( | int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
bool sc_dt::operator< | ( | const sc_unsigned & | u, | |
unsigned int | v | |||
) | [inline] |
bool sc_dt::operator< | ( | const sc_unsigned & | u, | |
int | v | |||
) | [inline] |
bool sc_dt::operator< | ( | unsigned long | u, | |
const sc_unsigned & | v | |||
) |
sc_unsigned.cpp の 1895 行で定義されています。
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.cpp の 1884 行で定義されています。
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.cpp の 1871 行で定義されています。
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.cpp の 1858 行で定義されています。
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.cpp の 1847 行で定義されています。
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.cpp の 1836 行で定義されています。
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.cpp の 1823 行で定義されています。
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.cpp の 1810 行で定義されています。
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.cpp の 1774 行で定義されています。
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 | |||
) |
bool sc_dt::operator< | ( | const sc_unsigned & | u, | |
const sc_uint_base & | v | |||
) |
bool sc_dt::operator< | ( | const sc_int_base & | u, | |
const sc_unsigned & | v | |||
) |
bool sc_dt::operator< | ( | const sc_unsigned & | u, | |
const sc_int_base & | v | |||
) |
bool sc_dt::operator< | ( | const sc_uint_base & | a, | |
const sc_uint_base & | b | |||
) | [inline] |
bool sc_dt::operator< | ( | unsigned int | u, | |
const sc_signed & | v | |||
) | [inline] |
bool sc_dt::operator< | ( | int | u, | |
const sc_signed & | v | |||
) | [inline] |
bool sc_dt::operator< | ( | const sc_signed & | u, | |
unsigned int | v | |||
) | [inline] |
bool sc_dt::operator< | ( | const sc_signed & | u, | |
int | v | |||
) | [inline] |
bool sc_dt::operator< | ( | const sc_signed & | u, | |
const sc_unsigned & | v | |||
) |
sc_unsigned.cpp の 1798 行で定義されています。
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.cpp の 1786 行で定義されています。
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.cpp の 3967 行で定義されています。
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.cpp の 3943 行で定義されています。
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.cpp の 3913 行で定義されています。
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.cpp の 3881 行で定義されています。
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.cpp の 3855 行で定義されています。
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.cpp の 3829 行で定義されています。
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.cpp の 3797 行で定義されています。
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.cpp の 3765 行で定義されています。
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.cpp の 3732 行で定義されています。
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 | |||
) |
bool sc_dt::operator< | ( | const sc_signed & | u, | |
const sc_uint_base & | v | |||
) |
bool sc_dt::operator< | ( | const sc_int_base & | u, | |
const sc_signed & | v | |||
) |
bool sc_dt::operator< | ( | const sc_signed & | u, | |
const sc_int_base & | v | |||
) |
bool sc_dt::operator< | ( | const sc_int_base & | a, | |
const sc_int_base & | b | |||
) | [inline] |
systemc_ostream& sc_dt::operator<< | ( | systemc_ostream & | os, | |
const sc_string_old & | a | |||
) | [inline] |
systemc_ostream& sc_dt::operator<< | ( | systemc_ostream & | os, | |
sc_numrep | numrep | |||
) | [inline] |
inline ::std::ostream& sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_concatref & | v | |||
) |
const sc_unsigned sc_dt::operator<< | ( | const sc_concatref & | target, | |
long | shift | |||
) | [inline] |
const sc_unsigned sc_dt::operator<< | ( | const sc_concatref & | target, | |
unsigned int | shift | |||
) | [inline] |
const sc_unsigned sc_dt::operator<< | ( | const sc_concatref & | target, | |
unsigned long | shift | |||
) | [inline] |
const sc_unsigned sc_dt::operator<< | ( | const sc_concatref & | target, | |
int64 | shift | |||
) | [inline] |
const sc_unsigned sc_dt::operator<< | ( | const sc_concatref & | target, | |
uint64 | shift | |||
) | [inline] |
std::ostream & sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_unsigned & | a | |||
) | [inline] |
std::ostream & sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_unsigned_subref_r & | a | |||
) | [inline] |
std::ostream & sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_unsigned_bitref_r & | a | |||
) | [inline] |
sc_unsigned sc_dt::operator<< | ( | const sc_unsigned & | u, | |
unsigned int | v | |||
) | [inline] |
sc_unsigned sc_dt::operator<< | ( | const sc_unsigned & | u, | |
int | v | |||
) | [inline] |
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 sc_dt::operator<< | ( | const sc_unsigned & | u, | |
const sc_int_base & | v | |||
) |
std::ostream & sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_uint_base & | a | |||
) | [inline] |
std::ostream & sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_uint_subref_r & | a | |||
) | [inline] |
std::ostream & sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_uint_bitref_r & | a | |||
) | [inline] |
std::ostream & sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_signed & | a | |||
) | [inline] |
std::ostream & sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_signed_subref_r & | a | |||
) | [inline] |
std::ostream & sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_signed_bitref_r & | a | |||
) | [inline] |
sc_signed sc_dt::operator<< | ( | const sc_signed & | u, | |
unsigned int | v | |||
) | [inline] |
sc_signed sc_dt::operator<< | ( | const sc_signed & | u, | |
int | v | |||
) | [inline] |
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.cpp の 1571 行で定義されています。
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.cpp の 6518 行で定義されています。
CLASS_TYPE sc_dt::operator<< | ( | const CLASS_TYPE & | u, | |
long | v | |||
) |
sc_signed.cpp の 6509 行で定義されています。
CLASS_TYPE sc_dt::operator<< | ( | const CLASS_TYPE & | u, | |
uint64 | v | |||
) |
sc_signed.cpp の 6479 行で定義されています。
CLASS_TYPE sc_dt::operator<< | ( | const CLASS_TYPE & | u, | |
int64 | v | |||
) |
sc_signed.cpp の 6469 行で定義されています。
CLASS_TYPE sc_dt::operator<< | ( | const CLASS_TYPE & | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6424 行で定義されています。
sc_signed sc_dt::operator<< | ( | const sc_signed & | u, | |
const sc_unsigned & | v | |||
) |
sc_signed.cpp の 3508 行で定義されています。
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 sc_dt::operator<< | ( | const sc_signed & | u, | |
const sc_int_base & | v | |||
) |
inline ::std::ostream& sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_length_param & | a | |||
) |
std::ostream & sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_int_base & | a | |||
) | [inline] |
std::ostream & sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_int_subref_r & | a | |||
) | [inline] |
std::ostream & sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_int_bitref_r & | a | |||
) | [inline] |
inline ::std::ostream& sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_fxval_fast & | a | |||
) |
const sc_fxval_fast sc_dt::operator<< | ( | const sc_fxval_fast & | a, | |
int | b | |||
) | [inline] |
sc_fxval.h の 1755 行で定義されています。
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 | |||
) |
inline ::std::ostream& sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_fxnum_fast & | a | |||
) |
const sc_fxval_fast sc_dt::operator<< | ( | const sc_fxnum_fast & | a, | |
int | b | |||
) | [inline] |
sc_fxnum.h の 3921 行で定義されています。
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 | |||
) |
const sc_fxval sc_dt::operator<< | ( | const sc_fxnum & | a, | |
int | b | |||
) | [inline] |
sc_fxnum.h の 2804 行で定義されています。
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 | |||
) |
inline ::std::ostream& sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_fxnum_subref & | a | |||
) |
inline ::std::ostream& sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_fxnum_fast_bitref & | a | |||
) |
inline ::std::ostream& sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_fxnum_bitref & | a | |||
) |
inline ::std::ostream& sc_dt::operator<< | ( | ::std::ostream & | os, | |
sc_fmt | fmt | |||
) |
inline ::std::ostream& sc_dt::operator<< | ( | ::std::ostream & | os, | |
sc_switch | sw | |||
) |
inline ::std::ostream& sc_dt::operator<< | ( | ::std::ostream & | os, | |
sc_o_mode | o_mode | |||
) |
inline ::std::ostream& sc_dt::operator<< | ( | ::std::ostream & | os, | |
sc_q_mode | q_mode | |||
) |
inline ::std::ostream& sc_dt::operator<< | ( | ::std::ostream & | os, | |
sc_enc | enc | |||
) |
inline ::std::ostream& sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_fxcast_switch & | a | |||
) |
inline ::std::ostream& sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_proxy< X > & | a | |||
) | [inline] |
inline ::std::ostream& sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_logic & | a | |||
) |
inline ::std::ostream& sc_dt::operator<< | ( | ::std::ostream & | os, | |
const sc_bit & | a | |||
) |
bool sc_dt::operator<= | ( | unsigned int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
bool sc_dt::operator<= | ( | int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
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] |
bool sc_dt::operator<= | ( | const sc_unsigned & | u, | |
int | v | |||
) | [inline] |
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 | |||
) |
bool sc_dt::operator<= | ( | const sc_unsigned & | u, | |
const sc_uint_base & | v | |||
) |
bool sc_dt::operator<= | ( | const sc_int_base & | u, | |
const sc_unsigned & | v | |||
) |
bool sc_dt::operator<= | ( | const sc_unsigned & | u, | |
const sc_int_base & | v | |||
) |
bool sc_dt::operator<= | ( | const sc_uint_base & | a, | |
const sc_uint_base & | b | |||
) | [inline] |
bool sc_dt::operator<= | ( | unsigned int | u, | |
const sc_signed & | v | |||
) | [inline] |
bool sc_dt::operator<= | ( | int | u, | |
const sc_signed & | v | |||
) | [inline] |
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] |
bool sc_dt::operator<= | ( | const sc_signed & | u, | |
int | v | |||
) | [inline] |
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 | |||
) |
bool sc_dt::operator<= | ( | const sc_unsigned & | u, | |
const sc_signed & | v | |||
) |
bool sc_dt::operator<= | ( | unsigned long | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6882 行で定義されています。
bool sc_dt::operator<= | ( | const CLASS_TYPE & | u, | |
unsigned long | v | |||
) |
sc_signed.cpp の 6875 行で定義されています。
bool sc_dt::operator<= | ( | long | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6868 行で定義されています。
bool sc_dt::operator<= | ( | const CLASS_TYPE & | u, | |
long | v | |||
) |
sc_signed.cpp の 6861 行で定義されています。
bool sc_dt::operator<= | ( | uint64 | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6854 行で定義されています。
bool sc_dt::operator<= | ( | const CLASS_TYPE & | u, | |
uint64 | v | |||
) |
sc_signed.cpp の 6847 行で定義されています。
bool sc_dt::operator<= | ( | int64 | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6840 行で定義されています。
bool sc_dt::operator<= | ( | const CLASS_TYPE & | u, | |
int64 | v | |||
) |
sc_signed.cpp の 6833 行で定義されています。
bool sc_dt::operator<= | ( | const CLASS_TYPE & | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6826 行で定義されています。
bool sc_dt::operator<= | ( | const sc_uint_base & | u, | |
const sc_signed & | v | |||
) |
bool sc_dt::operator<= | ( | const sc_signed & | u, | |
const sc_uint_base & | v | |||
) |
bool sc_dt::operator<= | ( | const sc_int_base & | u, | |
const sc_signed & | v | |||
) |
bool sc_dt::operator<= | ( | const sc_signed & | u, | |
const sc_int_base & | v | |||
) |
bool sc_dt::operator<= | ( | const sc_int_base & | a, | |
const sc_int_base & | b | |||
) | [inline] |
bool sc_dt::operator== | ( | unsigned int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
bool sc_dt::operator== | ( | int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
bool sc_dt::operator== | ( | const sc_unsigned & | u, | |
unsigned int | v | |||
) | [inline] |
bool sc_dt::operator== | ( | const sc_unsigned & | u, | |
int | v | |||
) | [inline] |
bool sc_dt::operator== | ( | unsigned long | u, | |
const sc_unsigned & | v | |||
) |
sc_unsigned.cpp の 1739 行で定義されています。
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.cpp の 1728 行で定義されています。
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.cpp の 1715 行で定義されています。
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.cpp の 1702 行で定義されています。
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.cpp の 1691 行で定義されています。
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.cpp の 1680 行で定義されています。
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.cpp の 1667 行で定義されています。
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.cpp の 1654 行で定義されています。
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.cpp の 1618 行で定義されています。
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 | |||
) |
bool sc_dt::operator== | ( | const sc_unsigned & | u, | |
const sc_uint_base & | v | |||
) |
bool sc_dt::operator== | ( | const sc_int_base & | u, | |
const sc_unsigned & | v | |||
) |
bool sc_dt::operator== | ( | const sc_unsigned & | u, | |
const sc_int_base & | v | |||
) |
bool sc_dt::operator== | ( | const sc_uint_base & | a, | |
const sc_uint_base & | b | |||
) | [inline] |
bool sc_dt::operator== | ( | unsigned int | u, | |
const sc_signed & | v | |||
) | [inline] |
bool sc_dt::operator== | ( | int | u, | |
const sc_signed & | v | |||
) | [inline] |
bool sc_dt::operator== | ( | const sc_signed & | u, | |
unsigned int | v | |||
) | [inline] |
bool sc_dt::operator== | ( | const sc_signed & | u, | |
int | v | |||
) | [inline] |
bool sc_dt::operator== | ( | const sc_signed & | u, | |
const sc_unsigned & | v | |||
) |
sc_unsigned.cpp の 1642 行で定義されています。
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.cpp の 1630 行で定義されています。
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.cpp の 3704 行で定義されています。
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.cpp の 3687 行で定義されています。
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.cpp の 3670 行で定義されています。
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.cpp の 3653 行で定義されています。
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.cpp の 3636 行で定義されています。
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.cpp の 3619 行で定義されています。
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.cpp の 3602 行で定義されています。
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.cpp の 3585 行で定義されています。
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.cpp の 3567 行で定義されています。
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 | |||
) |
bool sc_dt::operator== | ( | const sc_signed & | u, | |
const sc_uint_base & | v | |||
) |
bool sc_dt::operator== | ( | const sc_int_base & | u, | |
const sc_signed & | v | |||
) |
bool sc_dt::operator== | ( | const sc_signed & | u, | |
const sc_int_base & | v | |||
) |
bool sc_dt::operator== | ( | const sc_length_param & | a, | |
const sc_length_param & | b | |||
) | [inline] |
bool sc_dt::operator== | ( | const sc_int_base & | a, | |
const sc_int_base & | b | |||
) | [inline] |
bool sc_dt::operator== | ( | const sc_fxtype_params & | a, | |
const sc_fxtype_params & | b | |||
) | [inline] |
sc_fxtype_params.h の 222 行で定義されています。
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] |
bool sc_dt::operator== | ( | const sc_proxy< X > & | px, | |
const sc_proxy< Y > & | py | |||
) | [inline] |
sc_lv_base.h の 789 行で定義されています。
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] |
bool sc_dt::operator== | ( | char | a, | |
const sc_logic & | b | |||
) | [inline] |
bool sc_dt::operator== | ( | bool | a, | |
const sc_logic & | b | |||
) | [inline] |
bool sc_dt::operator== | ( | sc_logic_value_t | a, | |
const sc_logic & | b | |||
) | [inline] |
bool sc_dt::operator== | ( | const sc_logic & | a, | |
int | b | |||
) | [inline] |
bool sc_dt::operator== | ( | const sc_logic & | a, | |
char | b | |||
) | [inline] |
bool sc_dt::operator== | ( | const sc_logic & | a, | |
bool | b | |||
) | [inline] |
bool sc_dt::operator== | ( | const sc_logic & | a, | |
sc_logic_value_t | b | |||
) | [inline] |
bool sc_dt::operator== | ( | const sc_logic & | a, | |
const sc_logic & | b | |||
) | [inline] |
bool sc_dt::operator== | ( | const sc_bitref_r< T1 > & | a, | |
const sc_bitref_r< T2 > & | b | |||
) | [inline] |
bool sc_dt::operator== | ( | char | a, | |
const sc_bit & | b | |||
) | [inline] |
bool sc_dt::operator== | ( | bool | a, | |
const sc_bit & | b | |||
) | [inline] |
bool sc_dt::operator== | ( | int | a, | |
const sc_bit & | b | |||
) | [inline] |
bool sc_dt::operator== | ( | const sc_bit & | a, | |
char | b | |||
) | [inline] |
bool sc_dt::operator== | ( | const sc_bit & | a, | |
bool | b | |||
) | [inline] |
bool sc_dt::operator== | ( | const sc_bit & | a, | |
int | b | |||
) | [inline] |
bool sc_dt::operator== | ( | const sc_bit & | a, | |
const sc_bit & | b | |||
) | [inline] |
bool sc_dt::operator> | ( | unsigned int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
bool sc_dt::operator> | ( | int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
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] |
bool sc_dt::operator> | ( | const sc_unsigned & | u, | |
int | v | |||
) | [inline] |
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 | |||
) |
bool sc_dt::operator> | ( | const sc_unsigned & | u, | |
const sc_uint_base & | v | |||
) |
bool sc_dt::operator> | ( | const sc_int_base & | u, | |
const sc_unsigned & | v | |||
) |
bool sc_dt::operator> | ( | const sc_unsigned & | u, | |
const sc_int_base & | v | |||
) |
bool sc_dt::operator> | ( | const sc_uint_base & | a, | |
const sc_uint_base & | b | |||
) | [inline] |
bool sc_dt::operator> | ( | unsigned int | u, | |
const sc_signed & | v | |||
) | [inline] |
bool sc_dt::operator> | ( | int | u, | |
const sc_signed & | v | |||
) | [inline] |
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] |
bool sc_dt::operator> | ( | const sc_signed & | u, | |
int | v | |||
) | [inline] |
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 | |||
) |
bool sc_dt::operator> | ( | const sc_unsigned & | u, | |
const sc_signed & | v | |||
) |
bool sc_dt::operator> | ( | unsigned long | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6949 行で定義されています。
bool sc_dt::operator> | ( | const CLASS_TYPE & | u, | |
unsigned long | v | |||
) |
sc_signed.cpp の 6942 行で定義されています。
bool sc_dt::operator> | ( | long | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6935 行で定義されています。
bool sc_dt::operator> | ( | const CLASS_TYPE & | u, | |
long | v | |||
) |
sc_signed.cpp の 6928 行で定義されています。
bool sc_dt::operator> | ( | uint64 | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6921 行で定義されています。
bool sc_dt::operator> | ( | const CLASS_TYPE & | u, | |
uint64 | v | |||
) |
sc_signed.cpp の 6914 行で定義されています。
bool sc_dt::operator> | ( | int64 | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6907 行で定義されています。
bool sc_dt::operator> | ( | const CLASS_TYPE & | u, | |
int64 | v | |||
) |
sc_signed.cpp の 6900 行で定義されています。
bool sc_dt::operator> | ( | const CLASS_TYPE & | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6893 行で定義されています。
bool sc_dt::operator> | ( | const sc_uint_base & | u, | |
const sc_signed & | v | |||
) |
bool sc_dt::operator> | ( | const sc_signed & | u, | |
const sc_uint_base & | v | |||
) |
bool sc_dt::operator> | ( | const sc_int_base & | u, | |
const sc_signed & | v | |||
) |
bool sc_dt::operator> | ( | const sc_signed & | u, | |
const sc_int_base & | v | |||
) |
bool sc_dt::operator> | ( | const sc_int_base & | a, | |
const sc_int_base & | b | |||
) | [inline] |
bool sc_dt::operator>= | ( | unsigned int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
bool sc_dt::operator>= | ( | int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
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] |
bool sc_dt::operator>= | ( | const sc_unsigned & | u, | |
int | v | |||
) | [inline] |
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 | |||
) |
bool sc_dt::operator>= | ( | const sc_unsigned & | u, | |
const sc_uint_base & | v | |||
) |
bool sc_dt::operator>= | ( | const sc_int_base & | u, | |
const sc_unsigned & | v | |||
) |
bool sc_dt::operator>= | ( | const sc_unsigned & | u, | |
const sc_int_base & | v | |||
) |
bool sc_dt::operator>= | ( | const sc_uint_base & | a, | |
const sc_uint_base & | b | |||
) | [inline] |
bool sc_dt::operator>= | ( | unsigned int | u, | |
const sc_signed & | v | |||
) | [inline] |
bool sc_dt::operator>= | ( | int | u, | |
const sc_signed & | v | |||
) | [inline] |
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] |
bool sc_dt::operator>= | ( | const sc_signed & | u, | |
int | v | |||
) | [inline] |
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 | |||
) |
bool sc_dt::operator>= | ( | const sc_unsigned & | u, | |
const sc_signed & | v | |||
) |
bool sc_dt::operator>= | ( | unsigned long | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 7016 行で定義されています。
bool sc_dt::operator>= | ( | const CLASS_TYPE & | u, | |
unsigned long | v | |||
) |
sc_signed.cpp の 7009 行で定義されています。
bool sc_dt::operator>= | ( | long | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 7002 行で定義されています。
bool sc_dt::operator>= | ( | const CLASS_TYPE & | u, | |
long | v | |||
) |
sc_signed.cpp の 6995 行で定義されています。
bool sc_dt::operator>= | ( | uint64 | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6988 行で定義されています。
bool sc_dt::operator>= | ( | const CLASS_TYPE & | u, | |
uint64 | v | |||
) |
sc_signed.cpp の 6981 行で定義されています。
bool sc_dt::operator>= | ( | int64 | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6974 行で定義されています。
bool sc_dt::operator>= | ( | const CLASS_TYPE & | u, | |
int64 | v | |||
) |
sc_signed.cpp の 6967 行で定義されています。
bool sc_dt::operator>= | ( | const CLASS_TYPE & | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6960 行で定義されています。
bool sc_dt::operator>= | ( | const sc_uint_base & | u, | |
const sc_signed & | v | |||
) |
bool sc_dt::operator>= | ( | const sc_signed & | u, | |
const sc_uint_base & | v | |||
) |
bool sc_dt::operator>= | ( | const sc_int_base & | u, | |
const sc_signed & | v | |||
) |
bool sc_dt::operator>= | ( | const sc_signed & | u, | |
const sc_int_base & | v | |||
) |
bool sc_dt::operator>= | ( | const sc_int_base & | a, | |
const sc_int_base & | b | |||
) | [inline] |
::std::istream& sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_string_old & | s | |||
) |
sc_string.cpp の 638 行で定義されています。
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.h の 551 行で定義されています。
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] |
const sc_unsigned sc_dt::operator>> | ( | const sc_concatref & | target, | |
unsigned int | shift | |||
) | [inline] |
const sc_unsigned sc_dt::operator>> | ( | const sc_concatref & | target, | |
unsigned long | shift | |||
) | [inline] |
const sc_unsigned sc_dt::operator>> | ( | const sc_concatref & | target, | |
int64 | shift | |||
) | [inline] |
const sc_unsigned sc_dt::operator>> | ( | const sc_concatref & | target, | |
uint64 | shift | |||
) | [inline] |
std::istream & sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_unsigned & | a | |||
) | [inline] |
std::istream & sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_unsigned_subref & | a | |||
) | [inline] |
std::istream & sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_unsigned_bitref & | a | |||
) | [inline] |
sc_unsigned sc_dt::operator>> | ( | const sc_unsigned & | u, | |
unsigned int | v | |||
) | [inline] |
sc_unsigned sc_dt::operator>> | ( | const sc_unsigned & | u, | |
int | v | |||
) | [inline] |
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 sc_dt::operator>> | ( | const sc_unsigned & | u, | |
const sc_int_base & | v | |||
) |
std::istream & sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_uint_base & | a | |||
) | [inline] |
std::istream & sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_uint_subref & | a | |||
) | [inline] |
std::istream & sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_uint_bitref & | a | |||
) | [inline] |
std::istream & sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_signed & | a | |||
) | [inline] |
std::istream & sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_signed_subref & | a | |||
) | [inline] |
std::istream & sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_signed_bitref & | a | |||
) | [inline] |
sc_signed sc_dt::operator>> | ( | const sc_signed & | u, | |
unsigned int | v | |||
) | [inline] |
sc_signed sc_dt::operator>> | ( | const sc_signed & | u, | |
int | v | |||
) | [inline] |
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.cpp の 1588 行で定義されています。
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.cpp の 6676 行で定義されています。
CLASS_TYPE sc_dt::operator>> | ( | const CLASS_TYPE & | u, | |
long | v | |||
) |
sc_signed.cpp の 6666 行で定義されています。
CLASS_TYPE sc_dt::operator>> | ( | const CLASS_TYPE & | u, | |
uint64 | v | |||
) |
sc_signed.cpp の 6637 行で定義されています。
CLASS_TYPE sc_dt::operator>> | ( | const CLASS_TYPE & | u, | |
int64 | v | |||
) |
sc_signed.cpp の 6627 行で定義されています。
CLASS_TYPE sc_dt::operator>> | ( | const CLASS_TYPE & | u, | |
const CLASS_TYPE & | v | |||
) |
sc_signed.cpp の 6582 行で定義されています。
sc_signed sc_dt::operator>> | ( | const sc_signed & | u, | |
const sc_unsigned & | v | |||
) |
sc_signed.cpp の 3525 行で定義されています。
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 sc_dt::operator>> | ( | const sc_signed & | u, | |
const sc_int_base & | v | |||
) |
std::istream & sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_int_base & | a | |||
) | [inline] |
std::istream & sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_int_subref & | a | |||
) | [inline] |
std::istream & sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_int_bitref & | a | |||
) | [inline] |
inline ::std::istream& sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_fxval_fast & | a | |||
) |
const sc_fxval_fast sc_dt::operator>> | ( | const sc_fxval_fast & | a, | |
int | b | |||
) | [inline] |
sc_fxval.h の 1763 行で定義されています。
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 | |||
) |
const sc_fxval_fast sc_dt::operator>> | ( | const sc_fxnum_fast & | a, | |
int | b | |||
) | [inline] |
sc_fxnum.h の 3929 行で定義されています。
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 | |||
) |
const sc_fxval sc_dt::operator>> | ( | const sc_fxnum & | a, | |
int | b | |||
) | [inline] |
sc_fxnum.h の 2812 行で定義されています。
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 | |||
) |
inline ::std::istream& sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_fxnum_subref & | a | |||
) |
inline ::std::istream& sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_fxnum_fast_bitref & | a | |||
) |
inline ::std::istream& sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_fxnum_bitref & | a | |||
) |
inline ::std::istream& sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_proxy< X > & | a | |||
) | [inline] |
inline ::std::istream& sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_logic & | a | |||
) |
inline ::std::istream& sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_concref< X, Y > | a | |||
) | [inline] |
inline ::std::istream& sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_subref< X > | a | |||
) | [inline] |
inline ::std::istream& sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_bitref< X > | a | |||
) | [inline] |
inline ::std::istream& sc_dt::operator>> | ( | ::std::istream & | , | |
sc_concref< T1, T2 > | ||||
) | [inline] |
inline ::std::istream& sc_dt::operator>> | ( | ::std::istream & | , | |
sc_subref< T > | ||||
) | [inline] |
::std::istream& sc_dt::operator>> | ( | ::std::istream & | , | |
sc_bitref< T > | ||||
) | [inline] |
inline ::std::istream& sc_dt::operator>> | ( | ::std::istream & | is, | |
sc_bit & | a | |||
) |
sc_unsigned sc_dt::operator^ | ( | unsigned int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
sc_unsigned sc_dt::operator^ | ( | const sc_unsigned & | u, | |
unsigned int | v | |||
) | [inline] |
sc_unsigned sc_dt::operator^ | ( | unsigned long | u, | |
const sc_unsigned & | v | |||
) |
sc_unsigned.cpp の 1539 行で定義されています。
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.cpp の 1521 行で定義されています。
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.cpp の 1503 行で定義されています。
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.cpp の 1485 行で定義されています。
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.cpp の 1468 行で定義されています。
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 sc_dt::operator^ | ( | const sc_unsigned & | u, | |
const sc_uint_base & | v | |||
) |
sc_signed sc_dt::operator^ | ( | unsigned int | u, | |
const sc_signed & | v | |||
) | [inline] |
sc_signed sc_dt::operator^ | ( | int | u, | |
const sc_signed & | v | |||
) | [inline] |
sc_signed sc_dt::operator^ | ( | const sc_signed & | u, | |
unsigned int | v | |||
) | [inline] |
sc_signed sc_dt::operator^ | ( | const sc_signed & | u, | |
int | v | |||
) | [inline] |
sc_signed sc_dt::operator^ | ( | int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
sc_signed sc_dt::operator^ | ( | const sc_unsigned & | u, | |
int | v | |||
) | [inline] |
sc_signed sc_dt::operator^ | ( | unsigned long | u, | |
const sc_signed & | v | |||
) |
sc_signed.cpp の 3476 行で定義されています。
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.cpp の 3458 行で定義されています。
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.cpp の 3439 行で定義されています。
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.cpp の 3420 行で定義されています。
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.cpp の 3401 行で定義されています。
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.cpp の 3382 行で定義されています。
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.cpp の 3364 行で定義されています。
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.cpp の 3346 行で定義されています。
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.cpp の 3327 行で定義されています。
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.cpp の 3308 行で定義されています。
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.cpp の 3289 行で定義されています。
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.cpp の 3270 行で定義されています。
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.cpp の 3253 行で定義されています。
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.cpp の 3236 行で定義されています。
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.cpp の 3219 行で定義されています。
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 sc_dt::operator^ | ( | const sc_signed & | u, | |
const sc_uint_base & | v | |||
) |
sc_signed sc_dt::operator^ | ( | const sc_int_base & | u, | |
const sc_signed & | v | |||
) |
sc_signed sc_dt::operator^ | ( | const sc_signed & | u, | |
const sc_int_base & | v | |||
) |
sc_signed sc_dt::operator^ | ( | const sc_int_base & | u, | |
const sc_unsigned & | v | |||
) |
sc_signed sc_dt::operator^ | ( | const sc_unsigned & | u, | |
const sc_int_base & | v | |||
) |
const sc_lv_base sc_dt::operator^ | ( | const sc_proxy< X > & | px, | |
const sc_proxy< Y > & | py | |||
) | [inline] |
const sc_logic sc_dt::operator^ | ( | int | a, | |
const sc_logic & | b | |||
) | [inline] |
const sc_logic sc_dt::operator^ | ( | char | a, | |
const sc_logic & | b | |||
) | [inline] |
const sc_logic sc_dt::operator^ | ( | bool | a, | |
const sc_logic & | b | |||
) | [inline] |
const sc_logic sc_dt::operator^ | ( | sc_logic_value_t | a, | |
const sc_logic & | b | |||
) | [inline] |
const sc_logic sc_dt::operator^ | ( | const sc_logic & | a, | |
int | b | |||
) | [inline] |
const sc_logic sc_dt::operator^ | ( | const sc_logic & | a, | |
char | b | |||
) | [inline] |
const sc_logic sc_dt::operator^ | ( | const sc_logic & | a, | |
bool | b | |||
) | [inline] |
const sc_logic sc_dt::operator^ | ( | const sc_logic & | a, | |
sc_logic_value_t | b | |||
) | [inline] |
const sc_logic sc_dt::operator^ | ( | const sc_logic & | a, | |
const sc_logic & | b | |||
) | [inline] |
const sc_logic sc_dt::operator^ | ( | const sc_bitref_r< T1 > & | a, | |
const sc_bitref_r< T2 > & | b | |||
) | [inline] |
const sc_bit sc_dt::operator^ | ( | char | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::operator^ | ( | bool | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::operator^ | ( | int | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::operator^ | ( | const sc_bit & | a, | |
char | b | |||
) | [inline] |
const sc_bit sc_dt::operator^ | ( | const sc_bit & | a, | |
bool | b | |||
) | [inline] |
const sc_bit sc_dt::operator^ | ( | const sc_bit & | a, | |
int | b | |||
) | [inline] |
const sc_bit sc_dt::operator^ | ( | const sc_bit & | a, | |
const sc_bit & | b | |||
) | [inline] |
X & sc_dt::operator^= | ( | sc_proxy< X > & | px, | |
const sc_proxy< Y > & | py | |||
) | [inline] |
sc_lv_base.h の 572 行で定義されています。
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 sc_dt::operator| | ( | const sc_unsigned & | u, | |
unsigned int | v | |||
) | [inline] |
sc_unsigned sc_dt::operator| | ( | unsigned long | u, | |
const sc_unsigned & | v | |||
) |
sc_unsigned.cpp の 1433 行で定義されています。
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.cpp の 1414 行で定義されています。
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.cpp の 1395 行で定義されています。
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.cpp の 1376 行で定義されています。
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.cpp の 1359 行で定義されています。
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 sc_dt::operator| | ( | const sc_unsigned & | u, | |
const sc_uint_base & | v | |||
) |
sc_signed sc_dt::operator| | ( | unsigned int | u, | |
const sc_signed & | v | |||
) | [inline] |
sc_signed sc_dt::operator| | ( | int | u, | |
const sc_signed & | v | |||
) | [inline] |
sc_signed sc_dt::operator| | ( | const sc_signed & | u, | |
unsigned int | v | |||
) | [inline] |
sc_signed sc_dt::operator| | ( | const sc_signed & | u, | |
int | v | |||
) | [inline] |
sc_signed sc_dt::operator| | ( | int | u, | |
const sc_unsigned & | v | |||
) | [inline] |
sc_signed sc_dt::operator| | ( | const sc_unsigned & | u, | |
int | v | |||
) | [inline] |
sc_signed sc_dt::operator| | ( | unsigned long | u, | |
const sc_signed & | v | |||
) |
sc_signed.cpp の 3184 行で定義されています。
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.cpp の 3165 行で定義されています。
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.cpp の 3146 行で定義されています。
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.cpp の 3127 行で定義されています。
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.cpp の 3108 行で定義されています。
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.cpp の 3089 行で定義されています。
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.cpp の 3070 行で定義されています。
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.cpp の 3051 行で定義されています。
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.cpp の 3032 行で定義されています。
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.cpp の 3013 行で定義されています。
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.cpp の 2994 行で定義されています。
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.cpp の 2975 行で定義されています。
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.cpp の 2958 行で定義されています。
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.cpp の 2941 行で定義されています。
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.cpp の 2924 行で定義されています。
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 sc_dt::operator| | ( | const sc_signed & | u, | |
const sc_uint_base & | v | |||
) |
sc_signed sc_dt::operator| | ( | const sc_int_base & | u, | |
const sc_signed & | v | |||
) |
sc_signed sc_dt::operator| | ( | const sc_signed & | u, | |
const sc_int_base & | v | |||
) |
sc_signed sc_dt::operator| | ( | const sc_int_base & | u, | |
const sc_unsigned & | v | |||
) |
sc_signed sc_dt::operator| | ( | const sc_unsigned & | u, | |
const sc_int_base & | v | |||
) |
const sc_lv_base sc_dt::operator| | ( | const sc_proxy< X > & | px, | |
const sc_proxy< Y > & | py | |||
) | [inline] |
const sc_logic sc_dt::operator| | ( | int | a, | |
const sc_logic & | b | |||
) | [inline] |
const sc_logic sc_dt::operator| | ( | char | a, | |
const sc_logic & | b | |||
) | [inline] |
const sc_logic sc_dt::operator| | ( | bool | a, | |
const sc_logic & | b | |||
) | [inline] |
const sc_logic sc_dt::operator| | ( | sc_logic_value_t | a, | |
const sc_logic & | b | |||
) | [inline] |
const sc_logic sc_dt::operator| | ( | const sc_logic & | a, | |
int | b | |||
) | [inline] |
const sc_logic sc_dt::operator| | ( | const sc_logic & | a, | |
char | b | |||
) | [inline] |
const sc_logic sc_dt::operator| | ( | const sc_logic & | a, | |
bool | b | |||
) | [inline] |
const sc_logic sc_dt::operator| | ( | const sc_logic & | a, | |
sc_logic_value_t | b | |||
) | [inline] |
const sc_logic sc_dt::operator| | ( | const sc_logic & | a, | |
const sc_logic & | b | |||
) | [inline] |
const sc_logic sc_dt::operator| | ( | const sc_bitref_r< T1 > & | a, | |
const sc_bitref_r< T2 > & | b | |||
) | [inline] |
const sc_bit sc_dt::operator| | ( | char | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::operator| | ( | bool | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::operator| | ( | int | a, | |
const sc_bit & | b | |||
) | [inline] |
const sc_bit sc_dt::operator| | ( | const sc_bit & | a, | |
char | b | |||
) | [inline] |
const sc_bit sc_dt::operator| | ( | const sc_bit & | a, | |
bool | b | |||
) | [inline] |
const sc_bit sc_dt::operator| | ( | const sc_bit & | a, | |
int | b | |||
) | [inline] |
const sc_bit sc_dt::operator| | ( | const sc_bit & | a, | |
const sc_bit & | b | |||
) | [inline] |
X & sc_dt::operator|= | ( | sc_proxy< X > & | px, | |
const sc_proxy< Y > & | py | |||
) | [inline] |
sc_lv_base.h の 470 行で定義されています。
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.cpp の 6378 行で定義されています。
const sc_bit sc_dt::operator~ | ( | const sc_bit & | a | ) | [inline] |
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.cpp の 4512 行で定義されています。
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.cpp の 685 行で定義されています。
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] |
bool sc_dt::or_reduce | ( | const sc_uint_base & | a | ) | [inline] |
bool sc_dt::or_reduce | ( | const sc_uint_subref_r & | a | ) | [inline] |
bool sc_dt::or_reduce | ( | const sc_int_base & | a | ) | [inline] |
bool sc_dt::or_reduce | ( | const sc_int_subref_r & | a | ) | [inline] |
sc_logic_value_t sc_dt::or_reduce | ( | const sc_proxy< X > & | a | ) | [inline] |
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.cpp の 459 行で定義されています。
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.h の 457 行で定義されています。
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.cpp の 190 行で定義されています。
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.cpp の 325 行で定義されています。
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.cpp の 888 行で定義されています。
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.cpp の 187 行で定義されています。
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.cpp の 1028 行で定義されています。
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.cpp の 311 行で定義されています。
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.cpp の 380 行で定義されています。
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.h の 446 行で定義されています。
00449 { 00450 scfx_rep& c = *new scfx_rep( a ); 00451 c.quantization( params, q_flag ); 00452 return &c; 00453 }
const sc_lv_base sc_dt::reverse | ( | const sc_proxy< X > & | x | ) | [inline] |
const sc_lv_base sc_dt::rrotate | ( | const sc_proxy< X > & | x, | |
int | n | |||
) | [inline] |
scfx_rep * sc_dt::rsh_scfx_rep | ( | const scfx_rep & | a, | |
int | b | |||
) | [inline] |
void sc_dt::rshift | ( | sc_fxval_fast & | c, | |
const sc_fxval_fast & | a, | |||
int | b | |||
) | [inline] |
sc_fxval.h の 1845 行で定義されています。
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.h の 4096 行で定義されています。
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.h の 4078 行で定義されています。
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.h の 2985 行で定義されています。
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.h の 2966 行で定義されています。
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.h の 930 行で定義されています。
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 }
const T sc_dt::sc_abs | ( | const T & | a | ) | [inline] |
sc_macros.h の 69 行で定義されています。
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.cpp の 122 行で定義されています。
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.cpp の 67 行で定義されています。
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] |
bool sc_dt::sc_io_show_base | ( | systemc_ostream & | stream_object | ) | [inline] |
const T sc_dt::sc_max | ( | const T & | a, | |
const T & | b | |||
) | [inline] |
const T sc_dt::sc_min | ( | const T & | a, | |
const T & | b | |||
) | [inline] |
int sc_dt::sc_roundup | ( | int | n, | |
int | m | |||
) | [inline] |
void sc_dt::sc_trace | ( | sc_core::sc_trace_file * | tf, | |
const sc_fxnum_fast * | object, | |||
const std::string & | name | |||
) | [inline] |
scfx_other_defs.h の 419 行で定義されています。
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] |
void sc_dt::sc_trace | ( | sc_core::sc_trace_file * | tf, | |
const sc_fxnum * | object, | |||
const std::string & | name | |||
) | [inline] |
scfx_other_defs.h の 401 行で定義されています。
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] |
void sc_dt::sc_trace | ( | sc_core::sc_trace_file * | tf, | |
const sc_fxval_fast * | object, | |||
const std::string & | name | |||
) | [inline] |
scfx_other_defs.h の 383 行で定義されています。
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] |
void sc_dt::sc_trace | ( | sc_core::sc_trace_file * | tf, | |
const sc_fxval * | object, | |||
const std::string & | name | |||
) | [inline] |
scfx_other_defs.h の 365 行で定義されています。
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] |
void sc_dt::sc_uint_concref_invalid_length | ( | int | length | ) |
sc_uint_base.cpp の 65 行で定義されています。
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.cpp の 113 行で定義されています。
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.h の 258 行で定義されています。
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.h の 85 行で定義されています。
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.h の 65 行で定義されています。
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.h の 271 行で定義されています。
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.h の 232 行で定義されています。
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.h の 251 行で定義されています。
00252 { 00253 return ( scfx_is_equal( s, "Inf" ) || scfx_is_equal( s, "Infinity" ) ); 00254 }
bool sc_dt::scfx_is_nan | ( | const char * | s | ) | [inline] |
int sc_dt::scfx_parse_base | ( | const char *& | s | ) | [inline] |
scfx_utils.h の 206 行で定義されています。
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.h の 134 行で定義されています。
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.h の 111 行で定義されています。
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.h の 627 行で定義されています。
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.h の 487 行で定義されています。
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] |
void sc_dt::scfx_print_nan | ( | scfx_string & | s | ) | [inline] |
void sc_dt::scfx_print_prefix | ( | scfx_string & | s, | |
sc_numrep | numrep | |||
) | [inline] |
scfx_utils.h の 443 行で定義されています。
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.cpp の 53 行で定義されています。
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.h の 367 行で定義されています。
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 }
void sc_dt::set_words_ | ( | X & | x, | |
int | wi, | |||
sc_digit | x_dw, | |||
sc_digit | x_cw | |||
) | [inline] |
static int sc_dt::sub_mants | ( | int | size, | |
scfx_mant & | result, | |||
const scfx_mant & | a, | |||
const scfx_mant & | b | |||
) | [inline, static] |
scfx_rep.cpp の 1254 行で定義されています。
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.cpp の 1408 行で定義されています。
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.cpp の 1372 行で定義されています。
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.cpp の 71 行で定義されています。
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.cpp の 479 行で定義されています。
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.cpp の 158 行で定義されています。
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.cpp の 138 行で定義されています。
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.cpp の 111 行で定義されています。
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.cpp の 80 行で定義されています。
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.cpp の 59 行で定義されています。
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.h の 704 行で定義されています。
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.h の 745 行で定義されています。
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.h の 828 行で定義されています。
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.h の 666 行で定義されています。
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.cpp の 577 行で定義されています。
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.cpp の 622 行で定義されています。
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.cpp の 667 行で定義されています。
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.cpp の 706 行で定義されています。
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.cpp の 742 行で定義されています。
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.h の 363 行で定義されています。
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.h の 519 行で定義されています。
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.h の 487 行で定義されています。
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.h の 501 行で定義されています。
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.cpp の 1158 行で定義されています。
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.cpp の 1299 行で定義されています。
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.h の 406 行で定義されています。
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.cpp の 1615 行で定義されています。
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.cpp の 496 行で定義されています。
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.cpp の 948 行で定義されています。
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.cpp の 1070 行で定義されています。
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.cpp の 1114 行で定義されています。
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.cpp の 1365 行で定義されています。
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.cpp の 1528 行で定義されています。
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.cpp の 1495 行で定義されています。
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.cpp の 1787 行で定義されています。
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.cpp の 1658 行で定義されています。
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.cpp の 1720 行で定義されています。
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.h の 445 行で定義されています。
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.h の 427 行で定義されています。
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.cpp の 772 行で定義されています。
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.cpp の 817 行で定義されています。
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.cpp の 857 行で定義されています。
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.cpp の 890 行で定義されています。
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.cpp の 927 行で定義されています。
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.cpp の 1568 行で定義されています。
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] |
void sc_dt::vec_zero | ( | int | from, | |
int | ulen, | |||
sc_digit * | u | |||
) | [inline] |
sc_nbutils.h の 464 行で定義されています。
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] |
bool sc_dt::xnor_reduce | ( | const sc_uint_base & | a | ) | [inline] |
bool sc_dt::xnor_reduce | ( | const sc_uint_subref_r & | a | ) | [inline] |
bool sc_dt::xnor_reduce | ( | const sc_int_base & | a | ) | [inline] |
bool sc_dt::xnor_reduce | ( | const sc_int_subref_r & | a | ) | [inline] |
sc_logic_value_t sc_dt::xnor_reduce | ( | const sc_proxy< X > & | a | ) | [inline] |
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.cpp の 4648 行で定義されています。
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.cpp の 788 行で定義されています。
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] |
bool sc_dt::xor_reduce | ( | const sc_uint_base & | a | ) | [inline] |
bool sc_dt::xor_reduce | ( | const sc_uint_subref_r & | a | ) | [inline] |
bool sc_dt::xor_reduce | ( | const sc_int_base & | a | ) | [inline] |
bool sc_dt::xor_reduce | ( | const sc_int_subref_r & | a | ) | [inline] |
sc_logic_value_t sc_dt::xor_reduce | ( | const sc_proxy< X > & | a | ) | [inline] |
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.h の 87 行で定義されています。
const int sc_dt::bits_in_word = sizeof(word) * CHAR_BIT |
scfx_rep.h の 88 行で定義されています。
const sc_digit sc_dt::ctrl_array[] [static] |
初期値:
{ SC_DIGIT_ZERO, SC_DIGIT_ZERO, ~SC_DIGIT_ZERO, ~SC_DIGIT_ZERO }
sc_lv_base.cpp の 62 行で定義されています。
const sc_digit sc_dt::data_array[] [static] |
初期値:
{ SC_DIGIT_ZERO, ~SC_DIGIT_ZERO, SC_DIGIT_ZERO, ~SC_DIGIT_ZERO }
sc_lv_base.cpp の 59 行で定義されています。
sc_fxval.h の 989 行で定義されています。
word_list* sc_dt::free_words[32] = { 0 } [static] |
scfx_mant.cpp の 78 行で定義されています。
scfx_rep_node* sc_dt::list = 0 [static] |
scfx_rep.cpp の 346 行で定義されています。
const int sc_dt::mantissa0_size = SCFX_IEEE_DOUBLE_M_SIZE - bits_in_int [static] |
scfx_rep.cpp の 69 行で定義されています。
const uint_type sc_dt::mask_int |
sc_int64_mask.cpp の 64 行で定義されています。
const int sc_dt::min_mant = 4 |
scfx_rep.h の 85 行で定義されています。
const small_type sc_dt::NB_DEFAULT_BASE = SC_DEC |
sc_nbdefs.cpp の 75 行で定義されています。
scfx_pow10 sc_dt::pow10_fx [static] |
scfx_rep.cpp の 67 行で定義されています。
const sc_switch sc_dt::SC_BUILTIN_CAST_SWITCH_ = SC_ON |
sc_fxdefs.h の 210 行で定義されています。
const int sc_dt::SC_BUILTIN_CTE_WL_ = 64 |
sc_fxdefs.h の 221 行で定義されています。
const int sc_dt::SC_BUILTIN_DIV_WL_ = 64 |
sc_fxdefs.h の 220 行で定義されています。
const int sc_dt::SC_BUILTIN_IWL_ = 32 |
sc_fxdefs.h の 193 行で定義されています。
const int sc_dt::SC_BUILTIN_MAX_WL_ = 1024 |
sc_fxdefs.h の 222 行で定義されています。
const int sc_dt::SC_BUILTIN_N_BITS_ = 0 |
sc_fxdefs.h の 196 行で定義されています。
const sc_o_mode sc_dt::SC_BUILTIN_O_MODE_ = SC_WRAP |
sc_fxdefs.h の 195 行で定義されています。
const sc_q_mode sc_dt::SC_BUILTIN_Q_MODE_ = SC_TRN |
sc_fxdefs.h の 194 行で定義されています。
const int sc_dt::SC_BUILTIN_WL_ = 32 |
sc_fxdefs.h の 192 行で定義されています。
sc_fxdefs.h の 213 行で定義されています。
const int sc_dt::SC_DEFAULT_CTE_WL_ = SC_BUILTIN_CTE_WL_ |
sc_fxdefs.h の 234 行で定義されています。
const int sc_dt::SC_DEFAULT_DIV_WL_ = SC_BUILTIN_DIV_WL_ |
sc_fxdefs.h の 228 行で定義されています。
const int sc_dt::SC_DEFAULT_IWL_ = SC_BUILTIN_IWL_ |
sc_fxdefs.h の 200 行で定義されています。
const int sc_dt::SC_DEFAULT_MAX_WL_ = SC_BUILTIN_MAX_WL_ |
sc_fxdefs.h の 240 行で定義されています。
const int sc_dt::SC_DEFAULT_N_BITS_ = SC_BUILTIN_N_BITS_ |
sc_fxdefs.h の 203 行で定義されています。
sc_fxdefs.h の 202 行で定義されています。
sc_fxdefs.h の 201 行で定義されています。
const int sc_dt::SC_DEFAULT_WL_ = SC_BUILTIN_WL_ |
sc_fxdefs.h の 199 行で定義されています。
const sc_digit sc_dt::SC_DIGIT_ONE = (sc_digit)1 |
sc_proxy.h の 90 行で定義されています。
const int sc_dt::SC_DIGIT_SIZE = BITS_PER_BYTE * sizeof( sc_digit ) |
sc_proxy.h の 87 行で定義されています。
const sc_digit sc_dt::SC_DIGIT_TWO = (sc_digit)2 |
sc_proxy.h の 91 行で定義されています。
const sc_digit sc_dt::SC_DIGIT_ZERO = (sc_digit)0 |
sc_proxy.h の 89 行で定義されています。
const sc_logic sc_dt::SC_LOGIC_0 |
sc_logic.h の 596 行で定義されています。
const sc_logic sc_dt::sc_logic_0 |
sc_logic.h の 602 行で定義されています。
const sc_logic sc_dt::SC_LOGIC_1 |
sc_logic.h の 597 行で定義されています。
const sc_logic sc_dt::sc_logic_1 |
sc_logic.h の 603 行で定義されています。
const sc_logic sc_dt::SC_LOGIC_X |
sc_logic.h の 599 行で定義されています。
const sc_logic sc_dt::sc_logic_X |
sc_logic.h の 605 行で定義されています。
const sc_logic sc_dt::SC_LOGIC_Z |
sc_logic.h の 598 行で定義されています。
const sc_logic sc_dt::sc_logic_Z |
sc_logic.h の 604 行で定義されています。
const unsigned int sc_dt::SCFX_IEEE_DOUBLE_BIAS = 1023U |
scfx_ieee.h の 91 行で定義されています。
const int sc_dt::SCFX_IEEE_DOUBLE_E_MAX = 1023 |
scfx_ieee.h の 93 行で定義されています。
const int sc_dt::SCFX_IEEE_DOUBLE_E_MIN = -1022 |
scfx_ieee.h の 94 行で定義されています。
const unsigned int sc_dt::SCFX_IEEE_DOUBLE_M_SIZE = 52 |
scfx_ieee.h の 96 行で定義されています。
const unsigned int sc_dt::SCFX_IEEE_FLOAT_BIAS = 127U |
scfx_ieee.h の 429 行で定義されています。
const int sc_dt::SCFX_IEEE_FLOAT_E_MAX = 127 |
scfx_ieee.h の 431 行で定義されています。
const int sc_dt::SCFX_IEEE_FLOAT_E_MIN = -126 |
scfx_ieee.h の 432 行で定義されています。
const unsigned int sc_dt::SCFX_IEEE_FLOAT_M_SIZE = 23 |
scfx_ieee.h の 434 行で定義されています。
const int sc_dt::SCFX_POW10_TABLE_SIZE = 32 |
scfx_pow10.h の 66 行で定義されています。
const uint64 sc_dt::UINT64_32ONES = 0x00000000ffffffffULL |
sc_nbdefs.cpp の 68 行で定義されています。
const uint64 sc_dt::UINT64_ONE = 1ULL |
sc_nbdefs.cpp の 67 行で定義されています。
const uint64 sc_dt::UINT64_ZERO = 0ULL |
sc_nbdefs.cpp の 66 行で定義されています。
const uint64 sc_dt::UINT_ONE = UINT64_ONE |
sc_nbdefs.cpp の 79 行で定義されています。
const uint64 sc_dt::UINT_ZERO = UINT64_ZERO |
sc_nbdefs.cpp の 78 行で定義されています。