Wpis z mikrobloga

Ostatnio błądzę po dziwnych rejonach internetów. Wczoraj wrzucałem pociągi i samoloty, dzisiaj przyszedł czas na fixed point arithmetic.

Arytmetyka stałoprzecinkowa powinna być dobrze znana każdemu programiście, który pracował nad czymś więcej niż przeciętny crud. Czyli połowa programistów 15k z tego portalu ze śmiesznymi obrazkami w ogóle o niej nie słyszała (a druga połowa z bólem pewnej części ciała musiała się męczyć dzisiaj na lekcji pszyry w podstawówce w tym roku szkolnym).

No dobra, wujek groman już nie będzie się znęcał nad mirkami ( ͡º ͜ʖ͡º) Arytmetyka stałoprzecinkowa jest teoretycznie łopatologicznie prosta. No ale dobranie odpowiedniej reprezentacji i zadbanie żeby nie było żadnych niespodziewanych overflowów już nie jest takie proste. Na szczęście dobrzy ludzie napisali konkretną bibliotekę, która może pomóc nam w tym wszystkim - https://github.com/enclustra/en_cl_fix

Dodatkowo możecie obejrzeć webinar, który opisuje problem. A w pic rel kawałek biblioteki, który opisuje jak policzyć liczbę bitów tak, żeby zapisać wynik dodawania.

#programowanie #programista15k #programista25k #pracait i trochę #fpga oraz #matematyka
groman43 - Ostatnio błądzę po dziwnych rejonach internetów. Wczoraj wrzucałem pociągi...

źródło: Screenshot 2024-09-03 at 21.12.13

Pobierz
groman43 - Ostatnio błądzę po dziwnych rejonach internetów. Wczoraj wrzucałem pociągi...
  • 19
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@groman43: na studiach musiałem na kartce liczyć operacje na różnego rodzaju floatach zapisanych binarnie. Nie uważam że mnie to rozwinęło jako człowieka ani się do czegoś przydało
  • Odpowiedz
@groman43: w jakich zastosowaniach liczby stałoprzecinkowe mają zastosowanie na "normalnym" sprzęcie tj. PC/Serwer? W swoich życiu widziałem:
* wolne, niezawodne typy jak BigDecimal, który zawsze działają albo są wolne i wymagają dużo pamięci. Najczęściej wystarczające
* prosta reprezentacja jak mnożymy wszystko razy 100 przez co nie ma j*****a z groszami. Szybkie i większość przydatnych operacji nie powoduje żadnych problemów z precyzją
* floaty. Jak epsilon nie przeszkadza to
  • Odpowiedz
@Saly: Dokładnie. Biblioteka standardowa z BigDecimalami i nie ma co wynajdywać koła od początku.

Szczególnie że to nic skomplikowanego w implementacji a tylko zajmuje czas.

No chyba że ktoś pisze sterowniki, gry lub coś innego wymagającego dużej wydajności. W większości biznesowych systemów obliczeń wcale nie ma dużo i procesy raczej czekają sobie na I/O a nie są zajęte arytmetyką.
  • Odpowiedz
  • 0
@Saly: Problemy ze zmiennym przecinkiem są dwa
- może być drogi w implementacji, ale zwykle masz bajabongo w to jeśli sprzęt, z którego korzystasz, ma wsparcie hardware'owe dla zmiennego przecinka
- błedy numeryczne, które możesz dostać, nie są pod kontrolą. Coś może Ci się zaokrąglić, coś może Ci się nie równać zero, błąd może Ci się zakumolować po milionie iteracji, etc. A w aplikacjach typu CAD czy innych symulatorach takie
  • Odpowiedz
  • 0
@cwlmod biorąc pod uwagę, że zawodowo zajmuje się DSP i projektuje takie rzeczy, pozwolę sobie nie zgodzić się z Twoim twierdzeniem.

Na koniec odwiedziła mnie refleksja i zostawiła mi taką myśl w prezencie - crudziarze mają cholernie ograniczoną perspektywę i myślą, że skoro oni z czegoś nie korzystają, to automatycznie oznacza, że nikt z tego nie korzysta i w ogóle jest to niepotrzebne.
  • Odpowiedz
BigDecimal to chyba libka w Javie, a na tym języku świat się nie kończy.


@groman43: Nie chodzi o samą libkę a po prostu w pewnym sensie wykonywanie operacji na stringach reprezentujących liczby a nie rejestrach / komórkach pamięci z krótką ograniczoną ilością bajtów.

Inne platformy / języki mają analogiczne biblioteki.
  • Odpowiedz
@groman43: Dlatego napisałem:

No chyba że ktoś pisze sterowniki, gry lub coś innego wymagającego dużej wydajności. W większości biznesowych systemów obliczeń wcale nie ma dużo i procesy raczej czekają sobie na I/O a nie są zajęte arytmetyką.
  • Odpowiedz
@groman43: Czyli jednak uczysz się programowania xD

My programuje na wyższych poziomach i nie zajmujemy się jakimiś p----------i dla plebsu ;)

A tak poważnie to chyba masz jakieś skrzywienie i nie widzisz w jakim guanie pracujesz. Tobie może się podobać i spoko ale takich jak ty jest garstka. Bawienie się oprogramowywanie mikrokontrolerów jest zwyczajnie nuuuuudne ( ͡° ͜ʖ ͡°)

Powodzenia i żeby ci się buty zgodziły
  • Odpowiedz
  • 0
@cwlmod wolę takie guano niż bycie code monke i generycznym miszczem frameworków, których na rynku jest mnóstwo i których w każdej chwili można zastąpić kimś tańszym.
  • Odpowiedz
@groman43: Poza pracą na pieniądzach to nigdy nie miałem potrzeby używania liczb stałoprzecinkowych. Floaty zazwyczaj zdecydowanie szybsze i łatwiejsze w użyciu.
  • Odpowiedz