eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingNowoczesne procesory - jak to z nimi jest?Re: Nowoczesne procesory - jak to z nimi jest?
  • Data: 2013-03-27 08:31:45
    Temat: Re: Nowoczesne procesory - jak to z nimi jest?
    Od: "M.M." <m...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu środa, 27 marca 2013 01:38:25 UTC+1 użytkownik bartekltg napisał:
    [...]
    > A, nie mówiąc już o tym, że sama procedura sumowania może
    > doprowadzić do błędów!
    > Wynik powinien byc 100 000b, a jest 10 000b
    Może rozmawiamy o innym przypadku? Ja mówię mniej/więcej o czymś takim:

    #include <cstdlib>
    #include <cstdio>
    #include <ctime>

    typedef double ftyp;
    typedef const ftyp cftyp;

    #define N (100)
    #define M (1024)
    #define K (1<<24)
    #define L (8)

    void init( ftyp v[N] ) {
    for( int i=0 ; i<N ; i++ )
    v[i] = 0;
    for( int i=0 ; i<M ; i++ )
    v[rand()%N] += 1.0 / M;
    }


    void compute( ftyp v[N] ) {
    for( int i=0 ; i<K ; i++ ) {
    const int s = rand() % N;
    const int t = rand() % N;
    ftyp d = 0;
    for( int j=0 ; j<L ; j++ )
    if( rand() % 1 )
    d += 1.0 / ( 1<<(j+1) );
    cftyp tmp = v[s] * d;
    v[s] -= tmp;
    v[t] += tmp;
    }
    }

    void test( cftyp v[N] ) {
    ftyp sum = 0;
    for( int i=0 ; i<N ; i++ )
    sum += v[i];
    printf( "%0.20lf %s\n" , sum-1.0, sum==1.0?"true":"false" );
    }

    int main(int argc, char *argv[]) {
    srand(time(NULL));
    ftyp v[N];

    init(v);
    compute(v);
    test(v);

    return 0;
    }

    Wynik na kompie/kompilatorze przy którym akurat siedzę:
    0.00000000000000000000 true

    Pozdrawiam




Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: