Zna ktoś może stronę/książkę na której opisane byłyby algorytmy różnych prostych operacji, np. mnożenia, dzielenia, gdy nie jest zaimplementowane sprzętowo (jak w notach aplikacyjnych avr), liczenia przybliżonych sinusów, pierwiastków itp?
To ALU się implementuje ? ALU to część sprzętowa więć coś mi się tu nie klei. Swoją drogą o jakim uP mówisz ? jakimi rozkazami on dysponuje ? przyblizone sinusy i inne można naturalnie z szeregów potęgowych liczyć ale trzeba najpierw umieć mnożyć dzielić dodawać ...
Nie chodzi mi o konkretny procesor, ale o ogólne rozwiązania różnych zadań, np. tak jak mnożenie czy dzielenie w notach aplikacyjnych AVR - dla mniejszych AVR, które nie mają wbudowanego sprzętowego mnożenia. Albo np. taki trick, o którym niedawno czytałem - obliczenie przybliżone przeciwprostokątnej w trójkącie - po prostu do dłuższego boku dodaje się jakiś ułamek krótszego. Daje to błąd w granicach 6%, ale często może być wystarczające. Chodzi mi o to czy ktoś zebrał takie różne sztuczki w jednym miejscu.
Funkcje trygonometryczne realizuje się często przez rozwinięcie ich w szereg Taylora.
Ponadto powstał też algorytm CORDIC, który o ile dobrze pamiętam wymaga tylko operacji przesunięcia i dodawania, przez co świetnie nadaje się do implementacji w małych uC, czy FPGA (google).
Do mnożenia stosuje się algorytm Bootha (niektóre rozwiązania sprzętowe działają w oparciu o ten algorytm).
http://en.wikipedia.org/wiki/Booth's_multiplication_algorithm
Ewentualnie wykonuje się mnożenie (liczb bez znaku) tak jak tego uczyli w szkole podstawowej, czyli mnożenie po jednym bicie, a następnie dodawanie i wszystko to z odpowiednim przesunięciem. W systemie binarnym sprowadza się to wyłącznie do operacji przesuwania i dodawania.
Dzielenie można też wykonać "szkolnym" sposobem, ale samych metod jest więcej
http://en.wikipedia.org/wiki/Division_(digital)
Potęgowanie wykonuje się tak:
x^y = exp(y*ln(x))
Dlatego pisanie w swoim programie czegoś takiego: z = pow(x, 2.0); w celu podniesienia do kwadratu to wręcz zbrodnia ;].
Pozostałe funkcje, jak odwrotności, pierwiastki itp. można wyliczać za pomocą metody Newtona-Raphsona.
Bardziej skomplikowane algorytmy (konwersja z/na kod Graya, odwracanie bitów itp.) znaleźć można w książce "Hacker's delight", po naszemu się to chyba "Uczta hakerów" nazywa i kiedyś w empiku widziałem.