eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingszybki logarytmRe: szybki logarytm
  • Data: 2014-07-22 17:41:47
    Temat: Re: szybki logarytm
    Od: firr <p...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu wtorek, 22 lipca 2014 17:23:09 UTC+2 użytkownik bartekltg napisał:
    > On 22.07.2014 16:16, firr wrote:
    >
    > >>>
    >
    > >>>
    >
    > >>> Zerknąłem do tego, co robi oryginalny log. Też głownie
    >
    > >>> mnoży i dodaje, ma jednak nieco więcej skoków.
    >
    >
    >
    > > powody sa lub ich nie ma.. (co do tego to moze zalezy od platformy
    >
    >
    >
    > Przestań "dresować".
    >
    >
    >
    > > a jaki to jest 'oryginalny log'? jest to jakies zrodło w c w asmie
    >
    > > czy cos takiego? ztcw to w x87 sa dwie funkcje
    >
    >
    >
    > Napisałem o tym w ostatniej linijce posta. Kompilator nie użył
    >
    > koprocesora, tylko liczy jakiś szereg używając sse,
    >
    > po drodze używając paru porównań.
    >
    >
    >
    > Wymuszenie użycia koprocesora przez -mfpmath=387 nic nie daje,
    >
    > bo treść log2 się linkuje w wersji sse.
    >
    >
    >
    > Jak bardzo chcesz źródło, to masz.
    >
    > http://pastebin.com/BZpVhHGb
    >
    > najpierw std, potem to co wypluł kompilator z f.wymiernej + frexp.
    >
    > [bardzo ładnie sam przeplata liczenie licznika i mianownika]
    >
    >
    >
    >
    >
    > > FYL2X - liczy y*lg_2(x) (jesli y=lg_b(2) => liczy lg_b(x) )
    >
    > > FYL2XP1 - y*lg_2(x+1) "more precise than lg_2(x) if x is close to
    >
    > > zero" (acz tego troche nie rozumiem - to jak sie tego uzywa?)
    >
    >
    >
    > Jeśli masz liczbę postaci 1+dx to logartym (naturalny dla
    >
    > uproszczenia) tegobędzie z grubsza wynosił dx. Ale precyzja
    >
    > 1+dx to 16 cyfr, jeśli dx jesst na poziomie 10^-10 to
    >
    > dx ma tylko 6 cyfr znaczących. I tyle ma też wynik.
    >
    >
    >
    > A logartym w tym punkcie jest przydatny. Zwłaszcza, ze
    >
    > dx może być równe 10^-40 ;-)
    >
    > log1p (x) = log(1+x) tyle, że gdy x jest małe, znacznie dokładniej.
    >
    >
    ok, ten asm troche za dlugi bym to rozczytywal
    no ale ok, - i tak tego rodzaju funkcji log/exp/pow uzywa sie bardzo rzadko, dzialają
    one tez baardzo wolno - lepiej jest jest je mysle stablicowac pod konkretny
    przyopadek [ew ominac w jakis inny sposob] - taka stablicowana funkcja bedzie wtedy
    pewnie z kilkadziesiat razy szybsza
    (ostatnio sprawdzalem czy tablizowanie dzielen
    daje speedup w moim rasteryzerze i byl speedup
    (z 1% czy 2% w skali aplikacji ale jednak)
    - czyli praktyczny wniosek w tego rodzaju funkcje wogole nie nalezy sie jak na dzis
    pewnie bawic,
    tablicowac i po robocie] (pewnie jeszcze nalezy sprawdzic czy w tych oryginalnych
    wolnych nie ma bledów bo chyba moga one miec rozne dziwne
    nieprecyzyjnosci, nie jestem pewien]

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: