64-Bit Arithmetic

INTERCAL-64 extends the language from 16-bit and 32-bit to full 64-bit precision. Three new types join the family:

PrefixNameWidth
.spot16-bit
:two-spot32-bit
::double cateye64-bit
,tail16-bit array
;hybrid32-bit array
;;double hybrid64-bit array

Constants scale to match:

PrefixNameWidth
#mesh16-bit
##fence32-bit
####stockade64-bit

The absence of a triple mesh (###) is intentional. Three meshes would imply 48-bit precision, which is not a thing.

128-Bit Ephemeral Mingle

Mingle two 64-bit values and you get a 128-bit result. It can't be stored — it exists only long enough to be consumed by a select operator. The value is briefly real and then gone, much like a good idea in a committee meeting.

DO ::1 <- ####1000000
DO ::2 <- ####2000000
DO ::3 <- '::1 $ ::2' ~ '####FFFFFFFF $ ####FFFFFFFF'

Complete System Library

The system library (syslib64.i) provides arithmetic at every width. All routines are implemented in pure INTERCAL. No cheating.

16-Bit

LabelOperation
(1000).3 = .1 + .2
(1010).3 = .1 - .2
(1040):3 = .1 * .2 (full 32-bit result)
(1030).3 = .1 / .2, .4 = remainder

32-Bit

LabelOperation
(1500):3 = :1 + :2
(1510):3 = :1 - :2
(1540):3 = :1 * :2
DIVIDE32:3 = :1 / :2, :4 = remainder

64-Bit

NameOperation
ADD64::3 = ::1 + ::2
MINUS64::3 = ::1 - ::2
TIMES64::3 = ::1 * ::2

Plus AND64, OR64, XOR64, NOT64, RANDOM16/32/64, and POPCOUNT. Routine labels are computed by interpreting the name as a big-endian 64-bit integer. The programmer who finds this inconvenient is reminded that convenience has never been a design goal.

64-Bit Labels

Labels have been extended to 64 bits. Programs exceeding 119 lines are now assured of having enough. All new library routines use labels with values greater than INT_MAX to avoid collisions. Users are encouraged to prefer labels like (744073709551615) over (10).

Component Architecture

INTERCAL-64 compiles to .NET assemblies. Libraries can be compiled separately and linked via -r:library.dll. Cross-component NEXT/RESUME/FORGET is fully supported. You can even call INTERCAL from C# — though no evidence of anyone doing this voluntarily has been found.