eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingjak posortować czynniki › Re: jak posortować czynniki
  • X-Received: by 10.157.20.6 with SMTP id h6mr386334oth.18.1476298742389; Wed, 12 Oct
    2016 11:59:02 -0700 (PDT)
    X-Received: by 10.157.20.6 with SMTP id h6mr386334oth.18.1476298742389; Wed, 12 Oct
    2016 11:59:02 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!
    l13no484198itl.0!news-out.google.com!203ni1036itk.0!nntp.google.com!o19no485349
    ito.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Wed, 12 Oct 2016 11:59:02 -0700 (PDT)
    In-Reply-To: <ntlujd$7ku$1@node2.news.atman.pl>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=77.254.35.87;
    posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
    NNTP-Posting-Host: 77.254.35.87
    References: <1...@g...com>
    <ntlp6e$2bl$1@node2.news.atman.pl>
    <a...@g...com>
    <ntlujd$7ku$1@node2.news.atman.pl>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <3...@g...com>
    Subject: Re: jak posortować czynniki
    From: "M.M." <m...@g...com>
    Injection-Date: Wed, 12 Oct 2016 18:59:02 +0000
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:209923
    [ ukryj 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: