SystemC Utillity functions : sc_abs

SystemC-2.2からあります。
絶対値を返す関数になります。
※ただし、sc_logic/sc_bitなどのデータ型には使えません。

template <class T>
const T sc_abs( const T& );

  • サンプルコード
#include <systemc.h>

int sc_main(int argc, char* argv[])
{
  sc_int<10> a, b, c;
  sc_int<10> c_abs;
  a = 10;
  b = 20;
  c = a + b;
  c_abs = sc_abs(c);

  cout << "a = " << a.to_string(SC_DEC) << ", b = " << b.to_string(SC_DEC) << endl;
  cout << "a + b     = " << c.to_string(SC_DEC) << endl;
  cout << "sc_abs(c) = " << c_abs.to_string(SC_DEC) << endl;
  cout << "" << endl;

  a = 30;
  b = -50;
  c = a + b;
  c_abs = sc_abs(c);

  cout << "a = " << a.to_string(SC_DEC) << ", b = " << b.to_string(SC_DEC) << endl;
  cout << "a + b     = " << c.to_string(SC_DEC) << endl;
  cout << "sc_abs(c) = " << c_abs.to_string(SC_DEC) << endl;

  return 0;
}
  • 実行結果
 
             SystemC 2.3.0-ASI --- Jul 13 2012 06:33:43
        Copyright (c) 1996-2012 by all Contributors,
        ALL RIGHTS RESERVED

a = 10, b = 20
a + b     = 30
sc_abs(c) = 30

a = 30, b = -50
a + b     = -20
sc_abs(c) = 20