[D2sD3s]:Dld [ input m n, output m n m n ]ld [2*1=d]:cld [ aux routine for :d recursion ]ld [1=D1s>1Ds_+=c]:dld [ input m n, as long as n <= m double it, output m n ]ld [D2s1s_+1s]:-ld [ input m n, output m-n n ]ld [1=D1s>1Ds_+#T=-2/D=1]:1ld [ aux routine for :@ ]ld [1D=d2/1=1ddd1 ]:!ld ["0"Td]:0ld [DD=!1_+=0]:@ld [ input m, m assumed nonnegative, append binary representation of m to top of s stack ]ld ["-"T_]:+ld [D0 1s>=+1=@]:2ld [ input m, append - to top of s stack if m is negative, then append binary representation of abs(m) to top of s stack ]ld [d1A:A2=A]:A 27182 a1>=A [d2A:A1=A]:A 3145 a2>=A D # " in binary is "T 1=2 `ld 1=Dd # " in binary is "T 1=2 `ld 1=D 1s# " + "T 1s#T " is "T + #Td `ld 1=D 1s# " - "T 1s#T " is "T _+ #Td `ld 1=D 1s# " * "T 1s#T " is "T * #Td `ld 1=D 1s# " / "T 1s#T " is "T / #Td `ld 1=D 1s# " % "T 1s#T " is "T 1=D/*_+ #Td `ld 1=D d "~ " #T " is "T D& #T$ld " (" 1=2 ")"T `ld 1=D 1s# " & "T 1s#T " is "T &D& #T$ld " (" 1=2 ")"T `ld 1=D 1s# " | "T 1s#T " is "T D&1sD&& #T$ld " (" 1=2 ")"T `ld 1=D 1s# " ^ "T 1s#T " is "T 1=D&2sD&1sD&&&D& #T$ld " (" 1=2 ")"T `ld