eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingszybki logarytmRe: szybki logarytm
  • Data: 2014-08-05 21:51:57
    Temat: Re: szybki logarytm
    Od: "slawek" <h...@s...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Użytkownik "Tomasz Kaczanowski" napisał w wiadomości grup
    dyskusyjnych:53e083a0$0$2146$6...@n...neostrada
    .pl...
    >zakres, ale tego nie przeskoczy się również w intach :) Jak napisałem -
    >zależy do czego się potrzebuje wyników, taka metoda będzie najlepsza.

    IMO, trudno jest zrobić "lepszy logarytm" niż jest on w hardware FPU. Chyba
    że nie ma FPU, albo mamy jakieś szczególne fochy.

    Owszem, opłaca się np. stablicować logarytm... jeżeli np. wiemy że dane
    wejściowe to liczby od 1.00 do 2.00 z krokiem 0.01. Bo "ogólna funkcja
    logarytm" nijak nie wie o tym, że nie ma być ogólna. Nie potrafi zrozumieć
    czego my chcemy. Wiec wtedy opłaca się coś samemu robić - może akurat będzie
    lepiej dopasowane do wymagań.

    Gdzieś na półce w bibliotece (ale w wakacje jest zamknięta) leży świetna
    książeczka z lat 50-tych, której autorzy zachwycają się pracą jakiegoś
    Anglika (chyba lata 30, może 40), który stablicował współczynniki
    wielomianów niskiego stopnia dających "całkiem dobre przybliżenia" funkcji
    elementarnych. Myślę, że po użyciu log(x) = log(y) + log(10^n) aby przejść
    od dowolnego x do takiego y które należy do przedziału (1,10), a potem
    podobna sztuczka aby mieć (5,10), można bez trudu np. znaleźć wielomian
    Czebyszewa dostatecznie dobry aby udawał logarytm.

    AFAIR, w biblioteczce CEPHES była i funkcja logarytm:
    http://www.boutell.com/lsm/lsmbyid.cgi/000626

    Intel oferował jakąś "szybką bibliotekę" Approximate Math Library:
    https://software.intel.com/en-us/articles/avoid-bott
    lenecks-in-simple-math-functions

    Z drugiej strony, wbudowany w FPU logarytm i tak wystarcza w 99% (lub
    bardziej), a szkoda tracić czas... który lepiej przyda się do czegoś innego
    niż pisanie własnej implementacji logarytmu.


    Problem z podziałką gdzieś kiedyś już mi wyskoczył: mocno się zdziwiłem
    (swego czasu) że iterowanie x := x + dx potrafi się przecudnie rozjechać (na
    double'ach!) dla nietypowych danych. Np. gdy się chce pokazać ma wykresie
    jak wynik Czegoś-Tam asymptotycznie zbliża się do dokładnego: masz oś od
    xmin do xmax, ale różnica pomiędzy nimi to np. 3*epsilon maszynowy.


    Nota bene, miałem zawsze trudności z tabliczką mnożenia (mnożenie w słupkach
    ma koszt O(N*M)), więc nauczyłem się na pamięć mantys logartymów: zamiast
    mnożyć 2*5 dodajesz 3010 do 6990 i wychodzi 1. Po pewnym czasie nie chce ci
    się już patrzeć na tablice (Wojtowicza), bo i tak wiesz co tam jest.
    Kalkulator? No cóż, były arytmometry mechaniczne. Fajne, na korbkę, taki
    steam-punk jakby dziś na to popatrzeć.






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: