eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingjak posortować czynniki › Re: jak posortować czynniki
  • Data: 2016-10-12 20:59:02
    Temat: Re: jak posortować czynniki
    Od: "M.M." <m...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On Wednesday, October 12, 2016 at 8:15:10 PM UTC+2, bartekltg wrote:
    > On 12.10.2016 19:55, M.M. wrote:
    > > On Wednesday, October 12, 2016 at 6:42:55 PM UTC+2, bartekltg wrote:
    > >> Nie ma znaczenia.
    > >> Mnożysz mantysy, które zawsze są w przedziale [0.5,1)
    > >> cechy dodajesz stałoprzecinkowo.
    > >> ["Ty w sensie komputer jak mnożysz zmienne float/double",
    > >> nie trzeba nic ręcznie poprawiać].
    > >
    > > Fajny sposób.
    >
    > Po to był nawias kwadratwy.
    > To nie jest sposób.
    > Tak komputer po prostu mnoży liczby zmiennoprzecinkowe.

    No tak, ale w C++ (chyba) nie ma instrukcji która wymnoży w ten sposób
    więcej niż dwie liczby? Powiedzmy że mamy 10 dużych liczb i 10 małych.

    Gdy zacznę mnożyć od małych, to pewnie najpierw osiągnę zero, więc
    potem mnożenie przez duże liczby da wynik zero.

    Gdy zacznę mnożyć od dużych, to dojdzie do przepełnienia typu,
    pewnie będzie +inf, i mnożenie z małymi zakończy się błędem.

    Dobrze byłoby posortować: raz duża, raz mała, ale to trudne jest.

    Lepiej wyciągnąć po każdym mnożeniu wykładnik sumować w osobnej
    zmiennej, a w bieżącym wyniku go zerować. Coś mniej/więcej tak:

    wynik = 1;
    E = 0;
    tab[N];
    for( i=0 ; i<N ; i++ ) {
    wynik *= tab[i];
    E += wykladnik( wynik );
    wynik /= baza ^ wykladnik( wynik );
    }
    return wynik *= baza ^ E;

    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: