提升多精度 gmp_float convert_to<double>() 给出编译错误



我使用boost多精度库浮点数。我需要将一个gmp_float映射到一个tanh,然后将它作为一个双精度因为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可以

冒险一点,你可能在模板上下文中,而float_type依赖于模板参数。

你需要在这里给编译器类型提示:

double sigmoid_velocity = sigmapped_v.template convert_to<double>();
//                                    ^^

如果没有消歧提示,编译器将把<解析为operator<

参见在哪里以及为什么我必须把"template"one_answers";typename"关键字?

相关内容

  • 没有找到相关文章

最新更新