最大 1000 億回の反復に対する数学的推測を検証する C++ プログラムを作成しています。このような大きな数値をテストするために、 a を使用できないためC++ int
、NTL
ライブラリを使用して、型ZZ
を数値型として使用しています。
私のアルゴリズムは次のようになります。
ZZ generateNthSeq(ZZ n)
{
return floor(n*sqrt(2));
}
2 つのライブラリをインポートしています。
#include <cmath>
#include <NTL/ZZ.h>
しかし、明らかにエラーが発生するため、これはコンパイルできません。
$ g++ deepness*.cpp
deepness.cpp: In function ‘NTL::ZZ generateNthSeq(NTL::ZZ)’:
deepness.cpp:41: error: no matching function for call to ‘floor(NTL::ZZ)’
/usr/include/bits/mathcalls.h:185: note: candidates are: double floor(double)
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/cmath:262: note: long double std::floor(long double)
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/cmath:258: note: float std::floor(float)
床の数学演算が ZZ クラス タイプを受け入れることができないことを示します。しかし、私は数字がかなり大きくなる必要があります。NTL ライブラリを使用しながら、関数をフロアにすることである、やりたいことをどのように達成できますか?