Guide · 03

Entering values

The entry field at the bottom of the stack is where every value starts. It’s a small state machine — numeric mode by default, string mode when you start with a quote, with separate paths for fractions, integers, and unit-bearing quantities.

Numeric mode

Tap digits. A decimal point starts the fractional part. CHS (the ± key) flips the sign. E introduces a scientific-notation exponent.

When you tap ENTER the entry pushes onto the stack as the X register. When you tap an operator instead — +, *, SQRT — the entry is pushed and the operator runs immediately on it. So you don’t always need ENTER; it’s only required when you want to push two values in a row.

1: 12.5

Fractions

Three paths:

Divide two integers. Since the coalescing arithmetic landed, integer ÷ integer is a Fraction, not integer-division-truncated-to-zero. Two ways to get the integers in the first place — the _ literal suffix or ->INT promotion — both give the same result:

3_ 4_ /                      → 3/4
3 ->INT 4 ->INT /            → 3/4

Approximate from a decimal. Push a double, then ->FRAC. The engine returns the closest exact ratio.

0.75 ->FRAC                  → 3/4

Exact from a known numerator/denominator via ->FRAC. Same shape as decimal-→FRAC, but you pass the two integers explicitly:

3 ->INT 4 ->INT ->FRAC       → 3/4
1: 3/4

Integers

Integers are a distinct type from doubles. Bare numeric literals are doubles by default; integers need an explicit cue. Three ways:

Trailing-underscore literal. <value>_<radix> parses as an integer in the given base. A bare _ is shorthand for base 10. Bases 2 through 36 are supported; digits beyond 9 use letters A-Z (case-insensitive).

42_              → 42        (decimal — same as 42_10)
1010101_2        → 85        (binary)
777_8            → 511       (octal)
FF_16            → 255       (hex — alpha digits work)
deadbeef_16      → 3735928559
ZZ_36            → 1295      (base 36)

The prefix digits must all be valid for the given radix; gg_16 (the letter g is digit 16 in base 17+ — out of range for base 16) is rejected.

C-style prefix. 0x for hex, 0b for binary, 0o for octal, 0d for explicit base 10:

0xFF             → 255
0b1010101        → 85
0o777            → 511
0d42             → 42

The 0d form is rarely useful in isolation — bare digits with the _ suffix (42_) already give you a base-10 Integer — but it’s there for symmetry with the other bases and can be helpful in generated code or scripts where the base is a parameter.

Promotion from a double. ->INT truncates whatever’s on X to an integer:

42 ->INT         → 42

Some words return integers naturally too — DEPTH, factorial results, the remainder from integer division.

Quantities (numbers with units)

A literal like 4_m parses as 4 metres. The underscore separates value from unit. You can also push a bare number and use the unit picker (covered on the Units page).

1: 0.45 m

Times in colon form

The engine’s HMS tokenizer accepts colon-separated forms — useful for durations, paces, and anything else you’d rather read as clock:

22:30            → 22 minutes 30 seconds (2-field form: minutes, seconds)
1:15:30          → 1 hour 15 minutes 30 seconds (3-field form: hours, minutes, seconds)

The 2-field form is minutes-and-seconds — no leading zero for hours needed. The same tokenizer runs on card-calc rows where a value is HMS-shaped (a run time, a pace); 4:30 in a pace row parses as 4 min 30 sec per unit distance.

Backspace and clear

Backspace (⌫ in red on the keypad) clears the rightmost character from the entry while you’re typing. If the entry is empty, backspace does nothing — use DROP to remove the top of the stack instead.

Contact

Send us a message — we'll reply by email.