eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingszybki logarytmRe: szybki logarytm
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
    .pl!news.nask.org.pl!news.unit0.net!news.glorb.com!news-out.readnews.com!news-x
    xxfer.readnews.com!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neostrad
    a.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada
    .pl.POSTED!not-for-mail
    From: "slawek" <h...@s...pl>
    Newsgroups: pl.comp.programming
    References: <lqh403$k4t$1@node2.news.atman.pl> <lqmenj$s69$1@node2.news.atman.pl>
    <d...@g...com>
    <lqrkpc$r7t$1@node2.news.atman.pl> <lqs3ng$aps$1@node2.news.atman.pl>
    <a...@n...v.pl>
    <lrol5k$pvu$1@node2.news.atman.pl>
    <a...@n...v.pl>
    <53e072f9$0$2226$65785112@news.neostrada.pl>
    <a...@n...v.pl>
    <53e083a0$0$2146$65785112@news.neostrada.pl>
    In-Reply-To: <53e083a0$0$2146$65785112@news.neostrada.pl>
    Subject: Re: szybki logarytm
    Date: Tue, 5 Aug 2014 21:51:57 +0200
    MIME-Version: 1.0
    Content-Type: text/plain; format=flowed; charset="UTF-8"; reply-type=response
    Content-Transfer-Encoding: 8bit
    X-Priority: 3
    X-MSMail-Priority: Normal
    Importance: Normal
    X-Newsreader: Microsoft Windows Live Mail 15.4.3555.308
    X-MimeOLE: Produced By Microsoft MimeOLE V15.4.3555.308
    Lines: 53
    Message-ID: <53e135df$0$2232$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 62.69.230.89
    X-Trace: 1407268319 unt-rea-b-01.news.neostrada.pl 2232 62.69.230.89:50205
    X-Complaints-To: a...@n...neostrada.pl
    Xref: news-archive.icm.edu.pl pl.comp.programming:206538
    [ ukryj 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: