#include <iostream>
#include <math.h>
/*
Boost Lib: https://www.boost.org
added compiler options:
-fext-numeric-literals
*/
#include <boost/multiprecision/float128.hpp>
using namespace boost::multiprecision;
int main(){
float128 x = 34235235.00090912892709;
float128 z = std::exp(x);
std::cout<< z;
return 0;
}
给出以下错误:
error: no matching function for call to ‘exp(boost::multiprecision::float128&)’
Boost应该能够使用任何C ++ std lib函数;我的错误在哪里?
答案 0 :(得分:3)
Boost应该能够使用任何C ++ std lib函数
那正是你的错误。您可以将func handleLongPressDuration(_ sender: LongPressDurationGestureRecognizer) {
print(sender.duration)
}
类型转换为双精度类型并将其传递给float128
,但是由于您可能出于某种原因使用多精度库,所以这可能不是一个好主意。而是调用boost本身提供的函数:
std::exp
您可能希望省略const auto z = boost::multiprecision::exp(x);
并在示例中依赖ADL或using指令。为此,可能需要添加boost::multiprecision::
和/或-lquadmath
链接器标志(感谢@JHBonarius指出)。