view interps/c-intercal/pit/lib/syslib3-7.doc @ 12320:9c7eb9899d95 draft

<fizzie> le/rn karma//All living beings have actions (karma) as their own, their inheritance, their congenital cause, their kinsman, their refuge. It is karma that differentiates beings into low and high states.
author HackEso <hackeso@esolangs.org>
date Fri, 06 Mar 2020 23:08:37 +0000
parents 859f9b4339e6
children
line wrap: on
line source

Although the non-binary libraries syslib.[3-7]i are meant to be
treated as workalikes with the original system library, it should be
noted that several of them contain some new routines. These are used
internally by the standard routines, and are there to provide methods
for doing a few things that are taken for granted in base 2. While
they were not intended to be used by other programs, there is nothing
stopping them from being so used.

The even bases have routines to double and halve values, and use a
third variable as a carry/borrow flag. Since halving in odd bases
produces infinite fractions, bases 5 and 7 instead use a single-digit
multiplication routine. (Base 3 multiplication is still simple enough
to be handled without a separate support routine.)

syslib.4i
---------
(1200) .2 <- .1 times two
       .3 <- #0 if no overflow, otherwise .3 contains the quart that
       was "shifted" off the left end
(1210) .2 <- .1 divided by two
       .3 <- #0 if .1 is even, otherwise .3 contains #2
(1700) :2 <- :1 times two
       .1 <- #0 if no overflow, otherwise .1 contains the quart that
       was "shifted" off the left end
(1710) :2 <- :1 divided by two
       .1 <- #0 if .1 is even, otherwise .1 contains #2

syslib.5i
---------
(1720) :2 <- :1 times the least significant quint of .1 (the remaining
       quints of .1 are ignored)
       .2 <- #0 if no overflow, otherwise .2 contains the quint that
       was "shifted" off the left end

syslib.6i
---------
(1200) .2 <- .1 times two
       .3 <- #0 if no overflow, otherwise .3 contains the sext that
       was "shifted" off the left end
(1210) .2 <- .1 divided by two
       .3 <- #0 if .1 is even, otherwise .3 contains #3
(1700) :2 <- :1 times two
       .1 <- #0 if no overflow, otherwise .1 contains the sext that
       was "shifted" off the left end
(1710) :2 <- :1 divided by two
       .1 <- #0 if .1 is even, otherwise .1 contains #3

syslib.7i
---------
(1720) :2 <- :1 times the least significant sept of .1 (the remaining
       septs of .1 are ignored)
       .2 <- #0 if no overflow, otherwise .2 contains the sept that
       was "shifted" off the left end