ブースト倍精度ライブラリ浮動小数点数を使用しています。の値が になるため、 agmp_float
を anにマップしてからtanh
double として取得する必要があります。使用すると、以下のスニペットに示すようにコンパイル エラーが発生します。tanh
[0, 1)
convert_to<double>()
typedef boost::multiprecision::number<boost::multiprecision::gmp_float<4>> float_type;
float_type previous_v = agent->_velocity(i, j);
float_type sigmapped_v = boost::multiprecision::tanh(previous_v);
double sigmoid_velocity = sigmapped_v.convert_to<double>();
// expected primary-expression before ‘double’ ^^
double v_probable = abs(sigmoid_velocity);
ただし、明示的に double にキャストすると(double)sigmapped_v
うまくいきます