Forum programistyczne

Języki programowania => C/C++ => Wątek zaczęty przez: KASIUNIA206 Październik 20, 2011, 13:45:17



Tytuł: pojedyncza i podwójna prcyzja
Wiadomość wysłana przez: KASIUNIA206 Październik 20, 2011, 13:45:17
witam, mam problem poniważ mam program który ma w pojdynczej i podwójnej precyzji liczyć mi dowolny wielomian.
#include <iostream>
using namespace std;

template <class T>
T f(T x)
{
return (2*x*x)+3*x+1;
}

template <class T>
void functionTwo(int n)
{
T h = 1.0/T(n);
T sum = 0.0;
for(int i=0; i<n; i++)
{
T x=T(i)*h;
sum+=f<T>(x);
}
cout<<" blad = "<<f<T>((T)n)-sum<<endl;
}

int main()
{
int n = 100000;
for(int i=1;i<n;i++){
cout<<"float, n = "<<i;
functionTwo<float>(n);
cout<<"double, n = "<<i;
functionTwo<double>(n);
}
return 0;
}
[p uruchomieniu programu wiskakuje mi :int n = 1000000000 dla takiej wartości wyskakuje mi "float, n = 1 blad = 2e+18" czy to oznacza ze już pogram nie może wykonac obliczeń w podwójnej prcyzji?

ponadto wyskakuje mi błąd wykonania " przy n=1000... może znów robie cos nie tak????