- posted
20 years ago
Liczenie pierwiastka kwadratowego w asm
- Vote on answer
- posted
20 years ago
najprosciej chyba rozlozyc na szereg....
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
I monotoniczna ! I pod warunkiem ze sie prosto sprawdza.
Do liczenia pierwiastka jest swietny wzor iteracyjny x{n+1}=(x{n}+W/x{n})/2 Ale niestety - dobry jest na zmiennym przecinku, i trzeba miec dzielenie.
P.S. Jesli nie masz szybkiego sprzetowego mnozenia, to jeszcze mozna skorzystac ze (x+y)^2=x^2+2xy+y^2. Jak y w postaci binarnej ma tylko jeden bit, to wzorek robi sie prosty, x^2 znasz z poprzedniego kroku..
J.
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
Sun, 11 Jan 2004 23:59:06 +0100, na pl.misc.elektronika, Paweł napisał(a):
To się chyba nazywa metoda Newtona-Raphsona
Dokładny opis algorytmu i asm dla PICa znajdziesz tu:
- Vote on answer
- posted
20 years ago
Tam pisze ze to sie NIE nazywa Newtona-Raphsona :-)
J.
- Vote on answer
- posted
20 years ago
On praktycznie podwaja ilosc bitow dokladnych za kazdym razem. Ale przydaloby sie miec choc ze dwa dokladne w pierwszym przyblizeniu :-)
J.
- Vote on answer
- posted
20 years ago
Mon, 12 Jan 2004 14:03:48 +0100, na pl.misc.elektronika, J.F. napisał(a):
Holmesie - jesteś genialny. Faktycznie jest napisane na samym początku, ale kto by tam wstępy czytał - do tego w obcym języku :-)
pozdrawiam Watson
- Vote on answer
- posted
20 years ago
A nawet teoretycznie. :-) To jeden z najszybciej zbieznych szeregow aproksymujacych pierwiastek. Niestety ma ukryty duzy czynnik staly i korzysta z dosc skomplikowanych procedur, wiec inicjatorowi watku na niewiele sie zda.
Pozdrawiam Piotr Wyderski
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
szumne slowa "lookup table". Z mojego starego programu
; w=c*2^m, when c is in range 1..2 ; x1=1.19*2^(m/2) for even m (1.19 is to be sqrt(sqrt(1)*sqrt(2)) ; 1.68*2^( (m-1)/2 ) for odd m (1.68 is sqrt(sqrt(2)*(sqrt(4)) ; then apply formula 3 times, and result is accurate to 24 bit
Czyli nawet nie trzeba dwoch bitow sprawdzac :-) Ale to bylo dla zmiennego przecinka.
Duzo zalezy ile trwa dzielenie a ile mnozenie i reszty architektury. Moga byc procki gdzie policzenie ile jest zerowych bitow z przodu wraz wyliczeniem wartosci poczatkowej potrwa niewiele krocej niz obliczenie pierwiastka twoim pomyslem, a potem 3 dzielenia beda trwaly wiecznosc.. a na Z80 bym raczej stawial N-R.
J.