czy to jest dobrze w C++?

0
template <class T>
void functionTwo(int n)
{
    T h = 1.0/T(n);
    for(int i=0; i<n; i++)
    {
        T x=T(i)*h;
        cout<<6<<f(x)<<endl;
    }
}
 
int f( x)=12x^3+15x^2+35x+1
{
    return 0; 
}
 
int main()
{
    int n = 10000; 
    
    functionTwo<float>(n);
    functionTwo<double>(n);
    return 0;
}

Czy to cos powyżej pokaże mi czy wystapi błąd pojedynczej i podwójnej precyzji i w którym miejscu???
kompletnie nie mam na ten temat pojęcia dlatego pytam, czy dobrze zdefiniowałam wielomian, w dobrym miejscu?

prosze o pomoc

0

Co do definicji wielomianu totalna porażka :P. ^ nie jest operatorem potęgowania(nie ma takiego w C++), lecz logicznej operacji XOR. Przed wrzucaniem postów na forum proponuję zaopatrzenie się w kompilator.

0

Jejku, nawet z gotowego kodu nie umiesz skorzystać To po co ja się wysilałem pisząc go? Tragedia...
Zresztą jeśli to ma pokazywać jaki jest błąd obliczeń to musiałoby wyglądać jakoś tak:

#include <iostream>
using namespace std;

template <class T>
T f(T x)
{
    return (12*x*x*x)+15*(x*x)+35*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;
}
0

przepraszam:(

1 użytkowników online, w tym zalogowanych: 0, gości: 1