4.3BSD/usr/contrib/icon/book/18/mpy.icn

record largint(coeff,link)

procedure mpy(g1,g2)
   local prod
   if /(g1 | g2) then return &null	# zero product
   prod := g1.coeff * g2.coeff
   return largint(prod % base,
      add(mpy(largint(g1.coeff),g2.link),mpy(g1.link,g2),
      largint(prod / base)))
end