# algorytm: # # c - pierwiastkowana liczba > 0 # # tworzymy dwa ciągi a i b # # a0 = dowolna liczba - może być c # b0 = c/a0 # # a1 = (a0+b0)/2 # b1 = c/a1 # ... # an = (an-1 + bn-1)/2 # bn = c/an # # # b < c^(1/2) < a # można wykazać, że ciągi a,b sa zbieżne do c^(1/2) # # proponowane wyrażenie watch # c=4 an=2 bn=3 read 4 # r4 = c load 4 jzero write2 # sqrt(0) = 0 jgtz ok jump error # c < 0 - błąd! ok: store 2 # r2 = a # r3 = b loop: load 2 # add 3 # div =2 # store 2 # an=r2 = (an-1+bn-1)/2 load 4 # div 2 # store 3 # bn=r3 = c/an # jeśli b>=a (b>a lub b=a) sub 2 # r0 = a-b jzero write1 jgtz write1 jump loop write1: write 2 # wypisz an (an=floor(sqrt(c))) write 3 # wypisz bn (bn=round(sqrt(c))) halt write2: write =0 error: halt