-
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-14 VMWare :)
- 2024-05-14 Ulm => Solution Engineer (m/w/d) Data Center Technologies <=
- 2024-05-14 Będziemy się znowu zrzucać na elektryki...
- 2024-05-14 Pompa ciepla Kaisai
- 2024-05-14 Przyłączenie działki do sieci elektrycznej
- 2024-05-14 Kraków => MS Dynamics 365BC/NAV Developer <=
- 2024-05-14 Kraków => SAP WM Consultant / Execution <=
- 2024-05-14 Wrocław => Business Development Manager - obszar bezpieczeństwa IT <
- 2024-05-14 Poznań => Interactive/Experience Designer <=
- 2024-05-14 Poznań => Interactive/Experience Designer <=
- 2024-05-14 Białystok => ERP Implementer <=
- 2024-05-14 Przerabianie na Indonezje
- 2024-05-14 Kielce => UX/UI Designer <=
- 2024-05-14 Warszawa => Sales Representative for Outsourcing Services <=
- 2024-05-14 Prowadzenie działalności za kogoś - to legalne?