C++ e的计算验证

C++ e的计算验证,c++,math,python-2.7,C++,Math,Python 2.7,我写了一个计算e的程序,我正在做一个世界纪录的计算。如何验证小数位数比任何其他现有计算都多的计算?我该如何用C++/Python编程呢?我看不到任何可用的Euler数标识,可以让您快速检查计算的有效性。在这种情况下,我认为你必须接受的是对照已知的基本事实检查小数点后的前(数百万)位,如果它合适,你将声称你的算法工作正常。这在框架中有时被称为“已知情况”。您应该将suspectus的链接复制到一个.txt文件中,然后编写一个程序,使用fstream逐位比较每个元素,以检查前200万个小数是否正确。

我写了一个计算e的程序,我正在做一个世界纪录的计算。如何验证小数位数比任何其他现有计算都多的计算?我该如何用C++/Python编程呢?

我看不到任何可用的Euler数标识,可以让您快速检查计算的有效性。在这种情况下,我认为你必须接受的是对照已知的基本事实检查小数点后的前(数百万)位,如果它合适,你将声称你的算法工作正常。这在框架中有时被称为“已知情况”。

您应该将suspectus的链接复制到一个.txt文件中,然后编写一个程序,使用fstream逐位比较每个元素,以检查前200万个小数是否正确。编辑:我已经编写了一个程序,允许您这样做,编辑文件名字符串,使其匹配,并让您的算法将其数字放入e_my_算法字符串中

#include <iostream>  
#include <string>
#include <fstream>
using namespace std;
int main()
{
fstream in;
string filename = "C:\\Users\\Aaron\\Desktop\\TXT.txt";
string e_known;
string e_my_algorithm;
in.open(filename);
while(in.good())
{
 e_known += in.get();  
}
in.close();
auto itk = e_known.begin();
auto ite = e_my_algorithm.begin();

while(itk != e_known.end() - 1)
{
if(*itk++ != *ite++)
{
cout << "failure" << endl; 
break;
}
}

return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
fstream-in;
string filename=“C:\\Users\\Aaron\\Desktop\\TXT.TXT”;
字符串e_已知;
字符串e_my_算法;
in.open(文件名);
while(in.good())
{
e_known+=in.get();
}
in.close();
auto-itk=e_-known.begin();
auto ite=e_my_算法。begin();
while(itk!=e_known.end()-1)
{
如果(*itk++!=*ite++)
{

cout精确计算的主要问题是证明你的结果是正确的。在
e
的情况下,如果你说你的算法将用n十进制数字打印
e
,这意味着你可以用数学方法证明你的数字与
换句话说,在编写一个程序之前,你必须开发一个算法并证明它的正确性。

问题对于堆栈溢出来说是离题的,除非它们直接涉及主要用于编程的工具。-2000000个位置-希望这就够了。@user2442780你从哪里得到了你认为会让你崩溃的算法
e
的世界记录位数?我同意ondav的观点,如果你在已知的第一世界最大位数上没有遇到错误,那么你应该相信你的算法。你的计算性能也比别人好吗?(这应该是一项非常艰巨的任务。)这不是对实际提出的问题的回答。也许这应该是一个评论。@John Dibling:请教育我,我是这方面的初学者。这是否意味着如果问题没有建设性的答案(=算法),它一定不能被回答?我将此作为一个答案发布,因为这是一个答案:在Euler数没有可用的数学恒等式的情况下,您要做的是验证您的算法是否正确。单元测试将此用于长期(“已知情况”)。换句话说,不是我不知道答案。我认为我知道答案,而答案是你必须接受检查已知的小数点。@ondav:也许我误解了你的答案。你的评论在我脑海中澄清了不少。也许你可以将你的一些评论纳入你的答案中。我如果你可以,那么我可以删除我的否决票。@johndilling如果你提到C++/Python部分,这是在我发布答案后才通过编辑原始问题添加的。这是不够的。编写一个程序来正确计算e很容易。很难验证结果是否正确。考虑到可能会有大约一个billion位,并且给定标准内存的错误率……OTH ECC RAM应该可以消除这个问题,但是您仍然希望以某种方式确认这样的结果。我认为在计算中提供足够的精度没有任何问题,因为您不使用
double
float
。您可以使用其他特殊的数据类型专为精确计算而设计(或自己编写)。我认为编写一个用2kk数字计算
e
并足够快的程序并不容易。