Commands are seperated by newlines (hitting the enter key).
Parameters of a command are space seperated integers (and other things) on the same line after the command
Whitespace before and after a command will be ignored.
Create comments with ", and a breakpoint with !!!
| Standard | ||||
|---|---|---|---|---|
| command | description | parameters required | arguments required | |
| 10 | places 10/1 on top of the stack -10 also works |
none | none | |
| 3/5 | places 3/5 on top of the stack -3/5 also works |
none | none | |
| 1/0 | places ∞ on top of the stack -1/0 also works |
none | none | |
| 0.2 | places 1/5 on top of the stack -0.2 also works |
none | none | |
| 0.1[6] | places 1/6 on top of the stack -0.1[6] also works |
none | none | |
| + | addition | none | 2 rationals | |
| matrix addition | none | 2 matrices | ||
| - | subtraction | none | 2 rationals | |
| * | multiplication | none | 2 rationals | |
| scale matrix | none | 1 matrix and 1 rational (order doesn't matter) | ||
| matrix multiplication | none | 2 matrices (columns of 1st = rows of 2nd) | ||
| / | division | none | 2 rationals | |
| int | integer part | none | 1 rational | |
| floor | rounds down | none | 1 rational | |
| ceil | rounds up | none | 1 rational | |
| den | extracts denominator | none | 1 rational | |
| % | modulus | none | 2 rationals | |
| gcd | greatest common divisor | none | 2 integers (rational with denominator of 1) | |
| lcm | lowest common multiple | none | 2 integers (rational with denominator of 1) | |
| [ | in parameters, prepend a [ to use a stack value from bottom (0 is bottom) | it is the parameter | none | |
| ] | in parameters, prepend a ] to use a stack value from top (0 is top) | it is the parameter | none | |
| Checks & Comparison | ||||
| command | description | parameters required | arguments required | |
| # | value stack height | none | none | |
| step | x <= 0 → 0, 0 < x → 1 |
none | 1 rational | |
| hyperStep | x = ∞ → 1, x = -∞ → -1, otherwise → 0 | none | 1 rational | |
| compare | compares 2 rationals outputing -1, 0, or 1 | none | 2 rationals | |
| query | checks a spot on the stack, if there's a rational, outputs 0, if it's a matrix, outputs 1 |
depth to check (0 is top) | none | |
| Stack Manipulation | ||||
| command | description | parameters required | arguments required | |
| >> | copies value at depth | depth to copy (0 is top) | none | |
| -> | moves value at depth to the top | depth to pull (0 is top) | none | |
| <- | moves top value to depth (inverse of ->) (0 is top) | depth to push | none | |
| del | deletes value at depth | depth to delete (0 is top) | none | |
| Matrices | ||||
| command | description | parameters required | arguments required | |
| m | create matrix | columns, rows | (columns*rows) rationals | |
| unzip | unzips matrix (inverse of m) | none | 1 Matrix | |
| addRow | adds a scaled copy of one row to another | row from, row to (0 is first row) | 1 matrix and 1 rational (order doesn't matter) | |
| scaleRow | scales a row of a matrix by a rational | row number (0 is first row) | 1 matrix and 1 rational (order doesn't matter) | |
| swapRows | swaps 2 rows of a matrix | 2 rows to swap (0 is first row) | 1 matrix | |
| T | transposes a matrix | none | 1 matrix | |
| inv | inverses a matrix | none | 1 matrix | |
| inverses a rational | none | 1 rational | ||
| ref | does gaussian elimination | none | 1 matrix | |
| ind | pushes index to stack | column, row (0 is first row/column) | 1 matrix (stays) | |
| rip | rips the last column off a matrix | none | 1 matrix | |
| flip | flips the columns of a matrix | none | 1 matrix | |
| dim | dimensions of matrix | none | 1 matrix (stays) | |
| dot | dot product of 2 vectors | none | 2 matrices (1 column, same size) | |
| hadamard | hadamard product | none | 2 matrices (same size) | |
| kronecker | kronecker product | none | 2 matrices | |
| outer | outer product | none | 2 matrices (1 column) | |
| Loops | ||||
| command | description | parameters required | arguments required | |
| jmp | jumps forwards or backwards in instructions | distance to jump | none | |
| repeat | adds a new loop to the repeat pile | number of loops | none | |
| next | does next iteration of top repeat | none | none | |
| >>> | copy iteration of loop | loop depth to copy | none | |
| break | breaks out of top loop | none | none | |
| leap | a combination of break and jmp | distance to jump after break | none | |
| Auxillary Manipulation | ||||
| command | description | parameters required | arguments required | |
| hold | remembers a rational or matrix for later, overriding any existing value | name of value | 1 rational or matrix (stays) | |
| lose | forgets a stored value, does nothing if it doesn't exist | name to forget | none | |
| place | copies stored value to stack | name of value to place | none | |
| exists | place 1 or 0 if a value exists | name to check | none | |
| $ | in parameters, prepend a $ to use an auxillary value | it is the parameter | none | |
| IO & Strings | ||||
| command | description | parameters required | arguments required | |
| "..." | In parameters, place double quotes around some characters to make a string, you can use most UTF-8 characters, along with spaces, \n, \" and \\ | It is the parameter | none | |
| inputS | Gives user a prompt for a string. Pushes the code points of the string in reverse order, then the length on top |
prompt (optional) | none | |
| inputSE | same as inputS, but user can insert escape codes | prompt (optional) | none | |
| inputR | Gives user a prompt for a rational, If it is invalid, it tries again Pushing the value |
prompt (optional) | none | |
| chars | Like inputS, but the parameter is read instead of the user | string | none | |
| outputC | Outputs a single character according to the parameter | code point | none | |
| outputS | Outputs a message | message | none | |
| outputV | outputs the top of the stack | none | 1 rational or matrix | |
| error | outputs the parameter as an error, useful for custom commands! | message | none | |
| Lambda Functions | ||||
| command | description | parameters required | arguments required | |
| run | interpret a matrix as a string, and executes it | none | 1 matrix (single row) | |
| end | stops the current program, in a nice way. | none | none | |
| halt | a classic halt and catch fire instruction. | none | none | |