|
|
1.1 ! root 1: procedure large(s) ! 2: local a ! 3: a := [] ! 4: s ? { ! 5: &pos := 0 # start at right end ! 6: while put(a,integer(move(-segsize))) ! 7: # add remaining digits ! 8: if &pos ~= 1 then put(a,integer(tab(1))) ! 9: } ! 10: return a ! 11: end ! 12: ! 13: procedure add(a1,a2,carry) ! 14: local sum ! 15: /carry := [0] # default carry ! 16: if *a1 = *a2 = 0 then ! 17: return if carry[1] ~= 0 then carry else [] ! 18: if *a1 > *a2 then a1 :=: a2 ! 19: if *a1 = 0 then return add(carry,a2) ! 20: sum := a1[1] + a2[1] + carry[1] ! 21: carry := [sum / base] ! 22: return push(add(a1[2:0],a2[2:0],carry),sum % base) ! 23: end ! 24: ! 25: procedure lstring(a) ! 26: local s ! 27: s := "" ! 28: every s := right(!a,segsize,"0") || s ! 29: s ?:= (tab(upto(~'0') | -1) & tab(0)) ! 30: return s ! 31: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.