-
Data: 2019-02-05 21:56:08
Temat: Re: Modulo 10
Od: Wojciech Muła <w...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie 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-06-03 dziękuję nie tankuję
- 2024-06-03 Bo konie to ...
- 2024-06-03 narząd nieużywany zanika
- 2024-06-02 Restart PC-ta
- 2024-06-03 polskie miasta są małe
- 2024-06-04 Wrocław => Senior React Native Developer <=
- 2024-06-04 Warszawa => Sales Executive <=
- 2024-06-04 Białystok => ERP Implementer <=
- 2024-06-03 Zielona Góra => Engineer R&D Mechanic <=
- 2024-06-03 Kielce => UX/UI Designer <=
- 2024-06-03 Białystok => Inżynier DevOps Conexa First (Kontraktor) <=
- 2024-06-03 Warszawa => Technical Leader (Java Background) <=
- 2024-06-03 Warszawa => Senior Rust Software Engineer <=
- 2024-06-03 Bieruń => Administrator i wdrożeniowiec Lotus Notes/Domino <=
- 2024-06-03 Marki => Senior PHP Developer <=