eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingporownanie wyniku mnozenia integerow › Re: porownanie wyniku mnozenia integerow
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: " " <f...@W...gazeta.pl>
    Newsgroups: pl.comp.programming
    Subject: Re: porownanie wyniku mnozenia integerow
    Date: Tue, 24 May 2011 23:00:43 +0000 (UTC)
    Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
    Lines: 63
    Message-ID: <irhdar$lan$1@inews.gazeta.pl>
    References: <irgtcb$np6$1@inews.gazeta.pl> <irh27l$1ip$1@news.onet.pl>
    <irhaua$fb7$1@inews.gazeta.pl>
    NNTP-Posting-Host: localhost
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1306278043 21847 172.20.26.235 (24 May 2011 23:00:43 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Tue, 24 May 2011 23:00:43 +0000 (UTC)
    X-User: fir
    X-Forwarded-For: 31.60.221.121
    X-Remote-IP: localhost
    Xref: news-archive.icm.edu.pl pl.comp.programming:190673
    [ ukryj nagłówki ]

    <t...@W...gazeta.pl> napisał(a):

    > Paweł Kierski <n...@p...net> napisał(a):
    >
    > > Pewnie chodzi Ci o jakieś dodatkowe warunki (np. a*b > MAX_INT), ale
    > > wypadałoby to napisać wyraźne 8-)
    >
    > w jakim celu?
    > co najwyzej mozna dodac informacje ze a*b moze (ale musi) > MAX_INT
    > ale to nic nie wnosi :)
    >
    > > Dla takich przypadków strzelam - podział na czynniki i porównanie
    > > zsumowanych dla a i b oraz c i d (multi)zbiorów tych czynników.
    > > Jeśli tożsame, to iloczyny równe.
    >
    > to strasznie wolne.
    > Chodzi raczej o to, czy ktos zna zestaw warunkow typu mnozenie, dodawanie
    > modulo, lub czy mnozenie jako double moze prowadzic do blednych wynikow.
    >

    nawet 32 bitowe x86 obsluguja mnozenie 32 bity * 32 bity (wynik jest
    ponoc w EDX:EAX ) tak ze nie wiem czy kompilator by tu cos chrzanil

    jest tez przeciez obsluga 64 bitowych liczb ew emulowna softowo
    (nie wiem jak dokladnie z tym jest)

    co do prownan nie wiem czy nie ma jakichs sztuczek z matematyki - nie
    zajmowalem sie

    mozna tez oczywiscie sprobowac dawac jakies przedwarunki np
    jesli max(a,b)<min(c,d) to wiadomo ze a*b<c*d itp

    mozna tez ew probowac cos ze sprawdzaniem najwyzszych bitow
    w x86 jest o ile pamietam instrukcja ktora podaje poz pierwszego
    zapalonego bitu od lewej - i zastanowic sie kiedy mozna orzec
    nierownosc

    teraz mnozenia sa ponoc szybkie tak ze najprosciej pewnie
    pomnozyc - doczytac o tym ew softowym typie 64 bit, nie wiem

    1)

    czy kompilator schrazni porownanie a*b==c*d (?) czy z zasad jezyka wynika
    ze musi skladniki (jesli sa typu int64 przed porownaniem konwertowac do
    int32?)

    2) czy cos takiego nie da sie zrobic

    int64 x= a*b;
    int64 y= c*d;
    if(x==y)....

    3) vel

    int64 x= a*b;
    int64 y= c*d;
    if((x.lo==y.lo) && (x.hi==y.hi))....




    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

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: