Ejemplo n.º 1
0
int calcFibonacci2()
{
	//load
	cout << "Getting data..." << endl;
	deque<string> data;
    unsigned long long x = getCount("Files/Fibonacci2/");
	string s = getLine("Files/Fibonacci2/",x-2);
	if(s=="")
	{
		cout << "Error! Calculation was not executed." << endl;
		return -2;
	}
	data.push_back(s);
	s = getLine("Files/Fibonacci2/",x-1);
	if(s=="")
	{
		cout << "Error! Calculation was not executed." << endl;
		return -2;
	}
	data.push_back(s);
	//calculate
	unsigned long siz = 2;
	cout << "Calculating..." << endl;
    while(stop.test_and_set(memory_order_acquire))
    {
		Integer a = createFromText(data.at(siz-2),2305843009213693952); //base 2^61
		Integer b = createFromText(data.at(siz-1),2305843009213693952); //base 2^61
        Integer z = a+b;
		string z2 = z.textValue();
        data.push_back(z2);
		siz++;
    }
    
	//save
	cout << "Saving data..." << endl;
	int o = printLines("Files/Fibonacci2/",data,2,data.size()-2);
	if(o==-3)
	{
		cout << "Big error!! You should reset all files to initial setup before continuing." << endl;
		return -5;
	}
	else if(o!=0)
	{
		cout << "Error! Calculated data might not have been saved." << endl;
		return -3;
	}
	cout << "Fibonacci process was successful. I found " << (data.size()-2) << " fibonacci numbers("
		<< (x+1) << "-" << (x+data.size()-2) << ")." << endl;
	stop.clear();
	return 0;
}