Notes on Fast Function Compiler, by Doug Houck, programmer The Fast Function Compiler creates native-code functions which are called directly by the program. It uses a precedence parsing technique so ()s are needed only to change the normal precedence. The predence of operators is given below from highest to lowest. Named functions, eg. sin(), fa2(), min() not, unary minus ^ (exponentiation) * / % mod +, - >, <, >=, <=, ==, !=, <>, and xor or ? : (if-else) , (comma) Sometimes the compiler cannot figure out what you mean. Then it gives you one of the following messages at the bottom of the screen. Too Many Operations Pending Functions Too Large You should not get these errors, but if you do, simplify your function, and report the error. Unknown Function The compiler expected a function from the function list. (See Functions in the Info menu) Either you misspelled it, were daydreaming about some other programming language, or you put in an unknown character. For example, you must spell out 'and,', not just put &. Note that function names must be delimited by a space, ), or something. Extra ) Missing ) Your parentheses must balance. Otherwise the compiler would not be sure what you meant. Not Enough Operands / Too Many Operators Too Many Operands / Not Enough Operators When the compiler got to this point, it realized it had a situation like '3+2+' or '3+2 4'. In the first example, it doesn't know what to do with the second plus sign. In the second example, compiler can't use the 4. PLEASE NOTE that the error is usually a ways back, NOT where the cursor is. : Must Follow ? In using the if-else statement, each if (?) MUST be paired with an else (:). If you are nesting ifs, putting a '+0' before the ':' may help. (compiler deficiency) Missing : Make sure you complete the ?: pair. No Value For Argument A1,a2,a3, and a4 are generic names for the values you pass to functions fa,fb,fc or fd. If you call a function with 3 values (ie. fb3(1,2,3) ) you may reference only arguments a1 through a3. (a4 would be garbage) If you are not using the function this error occurs in, delete it. Recursion is supported by the Fast Function Compiler. All passed values and intermediate values are stored on the execution stack, so each new invocation of a function gets it's own space. Variables A-Z are global. When the bottom of the process stack is reached, it returns a value of zero for the function. To increase the recursion stack, execute the CLI command STACK to set the stack size to a larger value before running Doug's Math Aquarium.