Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #29096

Re: jak posortować czynniki

Newsgroups pl.comp.programming
Date 2016-10-12 11:59 -0700
References <1b039ed5-894a-4e42-9517-00807aa830ef@googlegroups.com> <ntlp6e$2bl$1@node2.news.atman.pl> <adce70d3-d778-4af5-811c-51e0ecf4223b@googlegroups.com> <ntlujd$7ku$1@node2.news.atman.pl>
Message-ID <3d8269ff-fb2d-4bfc-a285-e1b18e3cb1ab@googlegroups.com> (permalink)
Subject Re: jak posortować czynniki
From "M.M." <mmarszik@gmail.com>

Show all headers | View raw


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



 




Back to pl.comp.programming | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

jak posortować czynniki "M.M." <mmarszik@gmail.com> - 2016-10-12 08:41 -0700
  Re: jak posortować czynniki bartekltg <bartekltg@gmail.com> - 2016-10-12 18:42 +0200
    Re: jak posortować czynniki "M.M." <mmarszik@gmail.com> - 2016-10-12 10:55 -0700
      Re: jak posortować czynniki bartekltg <bartekltg@gmail.com> - 2016-10-12 20:15 +0200
        Re: jak posortować czynniki "M.M." <mmarszik@gmail.com> - 2016-10-12 11:59 -0700
          Re: jak posortować czynniki bartekltg <bartekltg@gmail.com> - 2016-10-12 22:19 +0200
            Re: jak posortować czynniki "M.M." <mmarszik@gmail.com> - 2016-10-13 06:41 -0700
              Re: jak posortować czynniki bartekltg <bartekltg@gmail.com> - 2016-10-14 09:10 -0700

csiph-web