eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingszybki logarytm
Ilość wypowiedzi w tym wątku: 75

  • 21. Data: 2014-07-23 06:59:08
    Temat: Re: szybki logarytm
    Od: Borneq <b...@a...hidden.pl>

    W dniu 2014-07-22 22:41, bartekltg pisze:
    > Pętla kręci się nieco, ale wyraźnie wolniej, ale czy to oznacza,
    > że koprocesor jest dokłądnie o tyle wolniejszy ciężko powiedzieć.

    To dziwne, że koprocesor jest wolniejszy od emulacji koprocesora


  • 22. Data: 2014-07-23 07:54:46
    Temat: Re: szybki logarytm
    Od: Wojciech Muła <w...@g...com>

    On Tuesday, July 22, 2014 2:31:22 PM UTC+2, bartekltg wrote:
    > Coś źle kompilowałem, czy logarytm jest lekko niedopieszczony?
    > A może mój algorytm pomija coś potrzebnego do komfortowego
    > uniwersalnego działania, co jest tak obciążające?
    > Dodanie if (x<=0) return nan(""); praktycznie nic nie zmienia.

    Nie sprawdzasz klasy liczby, tzn. czy to NaN lub +/-Inf.

    Lecz poza tym funkcje biblioteczne pewnie korzystają z FPU,
    na którym muszą używać dramatycznie wolnego rozkazu fly2x
    (ok 100 cykli opóźnienia).

    w.


  • 23. Data: 2014-07-23 11:33:08
    Temat: Re: szybki logarytm
    Od: firr <p...@g...com>

    W dniu wtorek, 22 lipca 2014 21:40:32 UTC+2 użytkownik feldmarszałek tusk napisał:
    > trochę zboczyliśmy z tematu...
    >
    >
    >
    > pytanie jest takie, jak uzyskać równomierny rozkład punktów na osi x,
    >
    > gdy skala jest logarytmiczna...
    >
    >
    >
    > nie wiem czy Ktoś mnie zrozumie, ale może...

    to jest podstawowka (moze liceum, nie pamietam):

    jesli masz np liczby z zakresu 32bit czyli do okolo 2G, logarytm okresla jakby
    dlugosc zapisu pozycyjnego


    log 1 = 0
    log 10 = 1
    log 100 = 2
    log 1000 = 3
    log 1 000 000 000 = 9

    nie wiem czy posiadasz liczby z zakresow 0-1
    lub mniejsze od zera ale pewnie nie wiec mozna ich nie rozwazac *

    masz wiec na osi x 10 kratek od 0 do 10
    odpowiadajace liczbom 1-10 000 000 000
    (mozna to przeskalowac - rozciagnac by bylo
    dluzse ale na osi x oznaczalbym kreseczki 0,1,2,3,4,5,6,7,8,9,10;

    dla danego punktu - bierzesz np 3.7 i liczysz
    10 do potegi 3.7 (okolo 5011) czyli odpowiadajacy temu punktowi 3.7 jest x= 5011

    jesli rysujesz wykres y=f(x) w tej skali to robisz cos takkiego

    for(float x = 0; x < 10; x += 10./width)
    {
    y = f( pow(10,x) );
    Setpixel(x*width/10., y*height/maxy);
    }

    jesli z kolei chcesz wstawic dane (np z tablicy) na wykres to robisz cos w stylu

    SetPixel(log(x)*width/10, y*height/maxy)

    * log ma ta ceche ze dla liczb z zakresu 0-1
    podeje ujemne wartosci to jest troche sprzeczne z tym zastosowaniem tutaj - gdzie
    bardziej by pasowalo by np liczby od 0-1 dawaly wartosci tez od 0 do 1 (odpowiadajace
    koncepcji tej dlugosci zapisu) w tym sensie
    chyba nalezaloby dobrac jakas lekko inna funkcje niz czysty logarytm ale nie wiem co
    by to bylo


  • 24. Data: 2014-07-23 12:18:23
    Temat: Re: szybki logarytm
    Od: firr <p...@g...com>

    ps nie wiem czy powinienem o tym wspominac ;/
    ale tak wogole mowiac to wypowiedzi tusk i broneq sa czasem mega lamerskie - z jednej

    strony to nie jest cos z czego uwazam powinno sie
    robic zarzut (jako ze kazdy byl poczatkujacym i
    wlasciwie kazdy dalej jest poczatkujacym w
    wiekszosci dziedzin), [a przynajmniej pisane jest na temat itp] ale z drugiej strony
    to lamerstwo
    troche uderza (w sumie tyczy mz to tez A/L.a
    ktory ma sporo niekompetentnych wypowiedzi,
    choc nie az tak]


  • 25. Data: 2014-07-23 12:48:22
    Temat: Re: szybki logarytm
    Od: firr <p...@g...com>

    W dniu środa, 23 lipca 2014 06:59:08 UTC+2 użytkownik Borneq napisał:
    > W dniu 2014-07-22 22:41, bartekltg pisze:
    >
    > > Pętla kręci się nieco, ale wyraźnie wolniej, ale czy to oznacza,
    >
    > > że koprocesor jest dokłądnie o tyle wolniejszy ciężko powiedzieć.
    >
    >
    >
    > To dziwne, że koprocesor jest wolniejszy od emulacji koprocesora

    nie jest to ani koprocesor ani emulacja ani nie jest to koniecznie wlniejsze ani nie
    jest to koniecznie dziwne - calosciowo jest to naprawde glupawa wypowiedz - tak ze
    proponuje sie zastanowic przed pisaniem tego typu glupawych wypowiedzi - bo bycie
    poczatkujacym byciem poczatkujacym ale umyslowe 'lamerstwo' to cos innego


  • 26. Data: 2014-07-23 16:20:07
    Temat: Re: szybki logarytm
    Od: bartekltg <b...@g...com>

    On 23.07.2014 07:54, Wojciech Muła wrote:
    > On Tuesday, July 22, 2014 2:31:22 PM UTC+2, bartekltg wrote:
    >> Coś źle kompilowałem, czy logarytm jest lekko niedopieszczony?
    >> A może mój algorytm pomija coś potrzebnego do komfortowego
    >> uniwersalnego działania, co jest tak obciążające?
    >> Dodanie if (x<=0) return nan(""); praktycznie nic nie zmienia.
    >
    > Nie sprawdzasz klasy liczby, tzn. czy to NaN lub +/-Inf.

    Chyba to to. Dodając warunek isnormal(x) (i robiąc odpowiednią
    obsługę pozostałych liczb, ale to ma mniejsze znaczenie, bo testuje
    tylko na 'normalnych') wyniki są jak 24:28, niewiele, a jest bardo
    wrażliwe na ułożenie kolejności drabinki ifów, więc pewnie ręczna
    wersja działa ciut szybciej u mnie, ale niekoniecznie dla każdej
    maszyny.

    Wcześniej dodałem warunek na x>0 i to praktycznie nie zmieniło
    wyniku, stąd nie spodziewałem się takiej różnicy przy
    filtrach na pozostałe warunki.


    > Lecz poza tym funkcje biblioteczne pewnie korzystają z FPU,
    > na którym muszą używać dramatycznie wolnego rozkazu fly2x
    > (ok 100 cykli opóźnienia).

    Gdzieś w wątku podawałem firowi kod asm.
    http://pastebin.com/BZpVhHGb
    Nie używa fpu, też liczy jakąś funkcję wymierną. Ciąg działań
    mnożenia i dodawania, na koniec jedno divds.


    pozdrawiam
    bartekltg



  • 27. Data: 2014-07-23 17:10:07
    Temat: Re: szybki logarytm
    Od: firr <p...@g...com>

    W dniu środa, 23 lipca 2014 16:20:07 UTC+2 użytkownik bartekltg napisał:
    > On 23.07.2014 07:54, Wojciech Muła wrote:
    >
    > > On Tuesday, July 22, 2014 2:31:22 PM UTC+2, bartekltg wrote:
    >
    > >> Coś źle kompilowałem, czy logarytm jest lekko niedopieszczony?
    >
    > >> A może mój algorytm pomija coś potrzebnego do komfortowego
    >
    > >> uniwersalnego działania, co jest tak obciążające?
    >
    > >> Dodanie if (x<=0) return nan(""); praktycznie nic nie zmienia.
    >
    > >
    >
    > > Nie sprawdzasz klasy liczby, tzn. czy to NaN lub +/-Inf.
    >
    >
    >
    > Chyba to to. Dodając warunek isnormal(x) (i robiąc odpowiednią
    >
    > obsługę pozostałych liczb, ale to ma mniejsze znaczenie, bo testuje
    >
    > tylko na 'normalnych') wyniki są jak 24:28, niewiele, a jest bardo
    >
    > wrażliwe na ułożenie kolejności drabinki ifów, więc pewnie ręczna
    >
    > wersja działa ciut szybciej u mnie, ale niekoniecznie dla każdej
    >
    > maszyny.
    >
    >
    >
    > Wcześniej dodałem warunek na x>0 i to praktycznie nie zmieniło
    >
    > wyniku, stąd nie spodziewałem się takiej różnicy przy
    >
    > filtrach na pozostałe warunki.
    >
    >
    >
    >
    >
    > > Lecz poza tym funkcje biblioteczne pewnie korzystają z FPU,
    >
    > > na którym muszą używać dramatycznie wolnego rozkazu fly2x
    >
    > > (ok 100 cykli opóźnienia).
    >
    >
    >
    > Gdzieś w wątku podawałem firowi kod asm.
    >
    > http://pastebin.com/BZpVhHGb
    >
    > Nie używa fpu, też liczy jakąś funkcję wymierną. Ciąg działań
    >
    > mnożenia i dodawania, na koniec jedno divds.
    >
    >
    >
    nietrafione ify sa bardzo drogie (podobno okolo 30 razy drozsze niz trafione (jesli
    to by mialobyc ze 30 cykli to by moglo podchodzic pod koszt porowywalny z dzieleniem
    (ostatnio jak optymalizowalem rasteryzer to nie bralem tego pod uwage myslalem ze ify
    sa tansze i rozbilem na spore drzewo z rzedu 30ma galeziami aby zaoszczedzic na
    kopiowaniach ramu a widze ze chyba to byl blad ),

    pozatym skoki sa mniej ale tez drogie (pare cykli) dlatego takie procedury podobno
    nalezy przepisywac tak by bylo statystycznie jak najmniej nietrafionych ifow i by te
    trafione raczej kontynuowaly liniowo wykonanie a nie skakaly branchem gdzies w bok,

    (dla odmiany podobno wlasnie taki trafiony if
    bez skoku jest szybki)


  • 28. Data: 2014-07-23 17:44:15
    Temat: Re: szybki logarytm
    Od: bartekltg <b...@g...com>

    On 23.07.2014 17:10, firr wrote:

    > pozatym skoki sa mniej ale tez drogie (pare cykli) dlatego takie
    > procedury podobno nalezy przepisywac tak by bylo statystycznie jak
    > najmniej nietrafionych ifow i by te trafione raczej kontynuowaly
    > liniowo wykonanie a nie skakaly branchem gdzies w bok,

    W tamtym przypadku, czyli jednej preferowanej ścieżki,
    nieźle sprawdza się zestaw

    -fprofile-generate
    -fprofile-use



    pzdr
    bartekltg




  • 29. Data: 2014-07-23 18:35:02
    Temat: Re: szybki logarytm
    Od: firr <p...@g...com>

    W dniu środa, 23 lipca 2014 17:44:15 UTC+2 użytkownik bartekltg napisał:
    > On 23.07.2014 17:10, firr wrote:
    >
    >
    >
    > > pozatym skoki sa mniej ale tez drogie (pare cykli) dlatego takie
    >
    > > procedury podobno nalezy przepisywac tak by bylo statystycznie jak
    >
    > > najmniej nietrafionych ifow i by te trafione raczej kontynuowaly
    >
    > > liniowo wykonanie a nie skakaly branchem gdzies w bok,
    >
    >
    >
    > W tamtym przypadku, czyli jednej preferowanej ścieżki,
    >
    > nieźle sprawdza się zestaw
    >
    >
    >
    > -fprofile-generate
    >
    > -fprofile-use
    >
    >
    >
    no niewykluczone, mogloby pomoc
    narazie nie uzywalem tego, moze kiedys indziej sprawdze -
    wystarczy tylko skompilowac z tymi flagami ruchomic i jeszcze raz skompilowac i
    wszystko?
    Na razie nie przygladalem sie nawet swoim kodam pod katem tych 'szybkich sciezek'
    chyba zreszta z poziomu c nie da sie tego w pelni zrobic


  • 30. Data: 2014-07-24 20:54:31
    Temat: Re: szybki logarytm
    Od: feldmarszałek tusk <N...@g...pl>

    dzięki, coś takiego obijało mi się po głowie, ale nie mogło się
    wykrystalizować ;o)

    a czy Ktoś tu zna jakiś algorytm podnoszenia 10 do potęgi?

strony : 1 . 2 . [ 3 ] . 4 ... 8


Szukaj w grupach

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: