-
Data: 2014-08-01 21:28:17
Temat: Re: szybki logarytm
Od: Borneq <b...@a...hidden.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2014-07-30 16:41, bartekltg pisze:
> Wtedy to dowolny (w granicach rozsądku) wielomian policzę sobie
> w czasie log_2 (n) ;-)
Policzmy:
mamy wielomian 10-tego stopnia: a_0+a_{1}x+a_{2}x^2+...a_{10}x^{10}
Schemat Hornera
((((((((((a_{10}*x)+a_9)x+a_8)x+a_7)x+a_6)x+a_5)x+a_
4)x+a_3)x+a_2)x+a_1)+a_0
Rozkład wygodny do obliczeń równoległych:
a_0+a_{1}x+x^2*(a_{2}+a_{3}x)+
x^4*(a_{4}+a_{5}x+x^2*(a_{6}+a_{7}x) )+
x^8*(a_{8}+a_{9}x+a_{10}x^2)
1. krok - mnożenie przez x
o blizenie x^2:= x*x
a_{1}x
a_{3}x
a_{5}x
a_{7}x
a_{9}x
2. krok, ale krótki, tylko dodawanie
f0 := a_0+a_{1}x
f1 := a_{2}+a_{3}x
f2 := a_{4}+a_{5}x
f3 := a_{6}+a_{7}x
f4 := a_{8}+a_{9}x
otrzymujemy:
f0+x^2*(f1)+
x^4*(f2+x^2*(f3) )+
x^8*(f4+a_{10}x^2)
3. krok mnożenie przez x^2
obliczenie x^4 := x^2*x^2
g0 := x^2*(f1)
g1 := x^2*(f3)
g2 := a_{10}x^2
otrzymujemy
f0+g0+
x^4*(f2+g1 )+
x^8*(f4+g2)
4. krok, ale krótki, tylko dodawanie
h0 := f0+g0
h1 := f2+g1
h2 := f4+g2
otrzymujemy
h0 + x^4*h1 + x^8*h2
5. krok mnożenie przez x^4
obliczenie x^8 := x^4*x^4
x^4*h1
6. dodawanie
h0 + x^4*h1
7. mnożenie x^8*h2
8. dodawanie
(h0 + x^4*h1) + x^8*h2
8 kroków w tym 4 mnożenia
Chociaż z drugiej strony mnożeni i dodawanie obecnie to tyle samo za to
dzielenie dużo więcej
dodawanie, mnożenie na int32 czy też float tylko 1 takt, dzielenie
stałoprzecinkowe 7-8 a zmiennoprzecinkowe 13 taktów.
Następne wpisy z tego wątku
- 01.08.14 21:37 feldmarszałek tusk
- 01.08.14 23:10 R.e.m.e.K
- 02.08.14 08:44 Stregor
- 02.08.14 10:53 firr
- 02.08.14 11:04 firr
- 02.08.14 11:36 firr
- 02.08.14 12:29 R.e.m.e.K
- 02.08.14 14:47 bartekltg
- 02.08.14 18:47 feldmarszałek tusk
- 04.08.14 20:43 slawek
- 04.08.14 20:58 Borneq
- 05.08.14 01:15 slawek
- 05.08.14 08:00 Tomasz Kaczanowski
- 05.08.14 08:38 slawek
- 05.08.14 09:11 Tomasz Kaczanowski
Najnowsze wątki z tej grupy
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
Najnowsze wątki
- 2024-10-04 Warszawa => QA Engineer <=
- 2024-10-04 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-10-04 Warszawa => Senior PHP Laravel Developer (e-commerce) <=
- 2024-10-04 Warszawa => Data Scientist / Data Engineer (predictive modelling) <=
- 2024-10-03 Nieparzyste dmuchanie
- 2024-10-03 Prognozowanie zużycia energii przez PGE?
- 2024-10-03 Re: Drugi ekran na Androidzie
- 2024-10-03 sprawiedliwosc nierychliwa
- 2024-10-03 zloto
- 2024-10-03 Odkurzacz mnie bije :(
- 2024-10-03 Gdańsk => Technical Lead ( (Java Background)) <=
- 2024-10-03 Warszawa => Mid IT Recruiter <=
- 2024-10-03 Olsztyn => Sales Specialist <=
- 2024-10-03 Leszczyna nie zna prawa?
- 2024-10-03 Warszawa => OpenText ECM Specialist <=