-
X-Received: by 2002:ac8:19ad:: with SMTP id u42mr5205qtj.3.1549400168646; Tue, 05 Feb
2019 12:56:08 -0800 (PST)
X-Received: by 2002:ac8:19ad:: with SMTP id u42mr5205qtj.3.1549400168646; Tue, 05 Feb
2019 12:56:08 -0800 (PST)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
0.net!newsreader4.netcologne.de!news.netcologne.de!peer02.ams1!peer.ams1.xlned.
com!news.xlned.com!peer01.fr7!futter-mich.highwinds-media.com!peer02.iad!feed-m
e.highwinds-media.com!news.highwinds-media.com!a34no89914qte.0!news-out.google.
com!m21ni6719qta.0!nntp.google.com!a34no89911qte.0!postnews.google.com!glegroup
sg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Tue, 5 Feb 2019 12:56:08 -0800 (PST)
In-Reply-To: <6...@g...com>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=217.97.77.8;
posting-account=VFwkXwoAAADdT4-lLKRZrMYkTjizGoyn
NNTP-Posting-Host: 217.97.77.8
References: <6...@g...com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <6...@g...com>
Subject: Re: Modulo 10
From: Wojciech Muła <w...@g...com>
Injection-Date: Tue, 05 Feb 2019 20:56:09 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 2478
X-Received-Body-CRC: 327117620
Xref: news-archive.icm.edu.pl pl.comp.programming:213364
[ ukryj nagłówki ]On Tuesday, February 5, 2019 at 8:25:43 PM UTC+1, DMR wrote:
> https://godbolt.org/z/Xs117J
>
> Ktoś potrafi ogarnąć co tam jest grane?
> Nie widzę niczego podobnego do instrukcji dzielenia...
Tutaj dzielenie przez stałą jest realizowane
za pomocą mnożenia przez aproksymację odwrotności 10,
ponieważ dzielenie jest bardzo wolne.
Jak sobie zobaczysz na zoptymalizowany kod (opcja -O3)
dla dzielenia x/10, to on się sprowadza do operacji:
(x * 3435973837) >> (32 + 3)
Gdzie stała 3435973837 = 2^35 / 10
mov eax, edi
mov edx, -858993459 ; czyli 3435973837
mul edx ; wynik mnożenia w parze edx:eax
mov eax, edx ; edx = wynik >> 32
shr eax, 3 ; eax = (wynik >> 32) >> 3
Tu masz opis:
https://gmplib.org/~tege/divcnst-pldi94.pdf
Generalnie chodzi o to, jaki wykładnik 2 w liczniku wybrać
w zależności od dzielnika. Ewentualnie jakie korekty
przed lub po mnożeniu są potrzebne, żeby poprawnie zaokrąglać.
w.
Najnowsze wątki z tej grupy
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
Najnowsze wątki
- 2024-05-27 Ekspert Zdalnej Obsługi Klienta Zamożnego
- 2024-05-26 O co chodzi?
- 2024-05-26 PJ autobus-tramwaj
- 2024-05-26 Renault Trafic i lampka z czerwonym STOP
- 2024-05-26 cena pięciocyfrowa
- 2024-05-26 Re: Jak dobra KE "okrada" złą Rosję "dla Ukrainy"
- 2024-05-25 supercap
- 2024-05-25 Sulzbach => Technischer Rollouter (d/m/w) <=
- 2024-05-25 Warszawa => Senior Account Manager <=
- 2024-05-25 Warszawa => Mid PHP Developer (Laravel) <=
- 2024-05-25 Warszawa => Mid PHP Developer (Laravel) <=
- 2024-05-25 Warszawa => Interactive/Experience Designer <=
- 2024-05-25 Warszawa => Key Account Manager <=
- 2024-05-25 Warszawa => SAP WM Consultant / Execution <=
- 2024-05-25 Warszawa => Key Account Manager <=