|
|
1.1 ! root 1: record largint(coeff,link) ! 2: ! 3: procedure add(g1,g2,carry) ! 4: local sum ! 5: /carry := largint(0) # default carry ! 6: if /g1 & /g2 then return if carry.coeff ~= 0 then carry ! 7: else &null ! 8: if /g1 then return add(carry,g2) ! 9: if /g2 then return add(g1,carry) ! 10: sum := g1.coeff + g2.coeff + carry.coeff ! 11: carry := largint(sum / base) ! 12: return largint(sum % base,add(g1.link,g2.link,carry)) ! 13: end ! 14: ! 15: procedure large(s) ! 16: if *s <= segsize then return largint(integer(s)) ! 17: else return largint(right(s,segsize), ! 18: large(left(s,*s - segsize))) ! 19: end ! 20: ! 21: procedure lstring(g) ! 22: local s ! 23: if /g.link then s := g.coeff ! 24: else s := lstring(g.link) || right(g.coeff,segsize,"0") ! 25: s ?:= (tab(upto(~'0') | -1) & tab(0)) ! 26: return s ! 27: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.