-
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
- 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?
- Ideologia Polskiego Programisty wer.3
- Ada-Europe Conference - 6 March Extended Final Deadline
- Szybkie pytanko do fachowców od Bourne shella
Najnowsze wątki
- 2024-03-28 Warszawa => Senior Rust Software Engineer <=
- 2024-03-28 Przegląd po terminie
- 2024-03-28 Wrocław => Handlowiec w branży IT <=
- 2024-03-28 Warszawa => International freight forwarder <=
- 2024-03-28 Warszawa => Technical Tribe Leader (Java Background) <=
- 2024-03-28 Eltec nie zyje?
- 2024-03-28 Katowice => Application Engineer for Service and Deployments <=
- 2024-03-28 Wrocław => Mid PHP Developer (Laravel) <=
- 2024-03-28 Vectra 'Plan domowy bez limitu'
- 2024-03-28 Szczecin => Starszy inżynier oprogramowania (Rust) <=
- 2024-03-28 Zielona Góra => Spedytor międzynarodowy <=
- 2024-03-28 Wnuczek z Wehrmachtu idzie na rympal.
- 2024-03-28 Bażanowice => Inżynier Industrializacji - Elektronik <=
- 2024-03-28 Warszawa => Senior Account Manager <=
- 2024-03-28 Czy kompozyty (poliamid) są lepsze od stopów metali?