-
Data: 2012-09-20 09:49:02
Temat: Re: operacje na liczbach całkowitych a dokładność
Od: Waldemar Krzok <w...@z...fu-berlin.de> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Am 19.09.2012 22:32, schrieb Mario:
> W dniu 2012-09-19 19:25, Jakub Rakus pisze:
>> Witam,
>>
>> Trochę już minęło czasu od zajęć z metod numerycznych... więc jak
>> najlepiej
>> wykonać taką operację:
>>
>> Mam liczbę całkowitą która maksymalnie osiąga wartość 2^13, ale muszę ją
>> pomnożyć przez niecałkowity współczynnik, który będzie wynosił około 0,3.
>> Zmienne wykorzystywane w obliczeniach są 16 bitowe (nie mam tyle mocy
>> obliczeniowej żeby przejść na liczby zmiennoprzecinkowe). Ponieważ 0,3
>> to to
>> samo co 3/10, to mogę sobie rozbić moje działanie na mnożenie przez 3 i
>> dzielenie bez reszty przez 10.
>>
>> Pytanie - jaka kolejność zapewnia większą dokładność? Najpierw mnożyć czy
>> lepiej najpierw dzielić? Co w przypadku gdy mój współczynnik wyniesie np.
>> 0,32 - wykonanie jako pierwszego mnożenia przez 32 (a potem dzielenia
>> przez
>> 100) da mi pośredni wynik większy niż zakres mojej 16-bitowej zmiennej.
>>
>
> Nie napisałeś w jakim języku chcesz pisać. Jeśli w c to użyj double.
> Jeśli w asm to musisz na potrzeby tego mnożenia napisać własną
> procedurkę mnożenia dwóch 16 bitowych z wynikiem na np 24 czy 32 bitach.
> Kolejność działań to oczywiście najpierw mnożenie potem dzielenie.
>
Przecież pisze wyraźnie, że nie ma mocy obliczeniowej na floaty, a ty mu
z double wyskakujesz.
Osobiście robię takie rzeczy tak, by jak najmniej stracić i szybko
liczyć. Czyli ułamek wyrazić jako ułamek dwójkowy, czyli na przykład
twoje 0.32 jako 41/128. Następnie mnożę dwie liczby 16to bitowe z
wynikiem 32 bity i przesuwam o n = log2(128) czyli 7 w prawo. Na
większości procesorów działa bez problemu. W przypadku bardziej
"krzywych" współczynników rozkładam na pasujące czynniki, które są
później sumowane. Jak procek ma jednostkę mnożącą, to nie trzeba
przesuwać i można od razu mnożyć, ale mianownik dwójkowy jest zawsze
wygodniejszy.
Waldek
--
My jsme Borgové. Sklopte štíty a vzdejte se. Odpor je marný.
Następne wpisy z tego wątku
- 20.09.12 11:57 Mario
- 20.09.12 21:15 Jakub Rakus
- 20.09.12 22:30 bartekltg
- 21.09.12 20:56 Marek Wodzinski
Najnowsze wątki z tej grupy
- Nowy akumulator Donut Lab
- Pilot do zamka/bramy
- Jaka myjka ultradźwiękowa?
- Retro organizer ale współcześnie
- Skąd diody LED 1,5V?
- Apollo Comm
- PICkit3 mnie pokonał
- LEDy na choinkę zdechły
- Wtopa LED
- Miało być zniesienie abonamentu RTV, a jest podwyżka!!!
- Microsoft, C/C++ na Rust - news
- Pierwsza mapa kosmosu w 102 długościach fal podczerwieni! To początek nowej ery w astronomii
- Rosjanie chwalą się prototypem komputera kwantowego. "Najważniejszy projekt naukowy Rosji"
- zasilacz
- Zegary DCF
Najnowsze wątki
- 2026-01-09 EKOFASZYŚCI DO NAUKI Chiny odpaliły reaktor na tor. Zachód przespał ten moment? - AstroSzort
- 2026-01-09 Sebastian M
- 2026-01-09 weto nowelizacji ustawy o ś.u.d.e. (wz. DSA)
- 2026-01-09 Warszawa => Dynamics 365 Commerce/POS Developer <=
- 2026-01-09 Ładowanie w 13 minut
- 2026-01-08 Umiejętność tankowania na egzaminie z prawa jazdy
- 2026-01-08 Nowy akumulator Donut Lab
- 2026-01-08 Komenda policji nie ma nic wspólnego ze sprawą zgwałcenia policjantki
- 2026-01-08 Pilot do zamka/bramy
- 2026-01-08 Ślad węglowy
- 2026-01-08 Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- 2026-01-08 Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- 2026-01-08 Agora zwalnia grupowo, mimo że w firmie pojawiły się zyski, czyli załoga zapracowała na siebie
- 2026-01-08 Agora zwalnia grupowo, mimo że w firmie pojawiły się zyski, czyli załoga zapracowała na siebie
- 2026-01-08 Dlaczego wrzucenie szkolnego krzyża do śmieci to zbrodnia mniejsza od zgaszenia sejmowej menory?




5 Najlepszych Programów do Księgowości w Chmurze - Ranking i Porównanie [2025]