home *** CD-ROM | disk | FTP | other *** search
- Builtin functions
-
- There is a large number of built-in functions. Many of the
- functions work on several types of arguments, whereas some only
- work for the correct types (e.g., numbers or strings). In the
- following description, this is indicated by whether or not the
- description refers to values or numbers. This display is generated
- by the 'show builtins' command.
-
- Name Args Description
-
- abs 1-2 absolute value within accuracy b
- acos 1-2 arccosine of a within accuracy b
- acosh 1-2 hyperbolic arccosine of a within accuracy b
- append 2 append value to end of list
- appr 1-2 approximate a with simpler fraction to within b
- arg 1-2 argument (the angle) of complex number
- asin 1-2 arcsine of a within accuracy b
- asinh 1-2 hyperbolic arcsine of a within accuracy b
- atan 1-2 arctangent of a within accuracy b
- atan2 2-3 angle to point (b,a) within accuracy c
- atanh 1-2 hyperbolic arctangent of a within accuracy b
- avg 1+ arithmetic mean of values
- bround 1-2 round value a to b number of binary places
- btrunc 1-2 truncate a to b number of binary places
- ceil 1 smallest integer greater than or equal to number
- cfappr 1-2 approximate a within accuracy b using
- continued fractions
- cfsim 1 simplify number using continued fractions
- char 1 character corresponding to integer value
- cmp 2 compare values returning -1, 0, or 1
- comb 2 combinatorial number a!/b!(a-b)!
- config 1-2 set or read configuration value
- conj 1 complex conjugate of value
- cos 1-2 cosine of value a within accuracy b
- cosh 1-2 hyperbolic cosine of a within accuracy b
- cp 2 Cross product of two vectors
- delete 2 delete element from list a at position b
- den 1 denominator of fraction
- det 1 determinant of matrix
- digit 2 digit at specified decimal place of number
- digits 1 number of digits in number
- dp 2 Dot product of two vectors
- epsilon 0-1 set or read allowed error for real calculations
- eval 1 Evaluate expression from string to value
- exp 1-2 exponential of value a within accuracy b
- fcnt 2 count of times one number divides another
- fib 1 Fibonacci number F(n)
- frem 2 number with all occurrences of factor removed
- fact 1 factorial
- fclose 1 close file
- feof 1 whether EOF reached for file
- ferror 1 whether error occurred for file
- fflush 1 flush output to file
- fgetc 1 read next char from file
- fgetline 1 read next line from file
- files 0-1 return opened file or max number of opened files
- floor 1 greatest integer less than or equal to number
- fopen 2 open file name a in mode b
- fprintf 2+ print formatted output to opened file
- frac 1 fractional part of value
- gcd 1+ greatest common divisor
- gcdrem 2 a divided repeatedly by gcd with b
- hash 1+ return non-negative hash value for one or
- more values
- highbit 1 high bit number in base 2 representation
- hmean 1+ harmonic mean of values
- hypot 2-3 hypotenuse of right triangle within accuracy c
- ilog 2 integral log of one number with another
- ilog10 1 integral log of a number base 10
- ilog2 1 integral log of a number base 2
- im 1 imaginary part of complex number
- insert 3 insert value c into list a at position b
- int 1 integer part of value
- inverse 1 multiplicative inverse of value
- iroot 2 integer b'th root of a
- iseven 1 whether a value is an even integer
- isfile 1 whether a value is a file
- isint 1 whether a value is an integer
- islist 1 whether a value is a list
- ismat 1 whether a value is a matrix
- ismult 2 whether a is a multiple of b
- isnull 1 whether a value is the null value
- isnum 1 whether a value is a number
- isobj 1 whether a value is an object
- isodd 1 whether a value is an odd integer
- isqrt 1 integer part of square root
- isreal 1 whether a value is a real number
- isset 2 whether bit b of abs(a) (in base 2) is set
- isstr 1 whether a value is a string
- isrel 2 whether two numbers are relatively prime
- issimple 1 whether value is a simple type
- issq 1 whether or not number is a square
- istype 2 whether the type of a is same as the type of b
- jacobi 2 -1 => a is not quadratic residue mod b
- 1 => b is composite, or a is quad residue of b
- lcm 1+ least common multiple
- lcmfact 1 lcm of all integers up till number
- lfactor 2 lowest prime factor of a in first b primes
- list 0+ create list of specified values
- ln 1-2 natural logarithm of value a within accuracy b
- lowbit 1 low bit number in base 2 representation
- ltol 1-2 leg-to-leg of unit right triangle (sqrt(1 - a^2))
- matdim 1 number of dimensions of matrix
- matfill 2-3 fill matrix with value b (value c on diagonal)
- matmax 2 maximum index of matrix a dim b
- matmin 2 minimum index of matrix a dim b
- mattrans 1 transpose of matrix
- max 1+ maximum value
- meq 3 whether a and b are equal modulo c
- min 1+ minimum value
- minv 2 inverse of a modulo b
- mmin 2 a mod b value with smallest abs value
- mne 3 whether a and b are not equal modulo c
- near 2-3 sign of (abs(a-b) - c)
- norm 1 norm of a value (square of absolute value)
- null 0 null value
- num 1 numerator of fraction
- ord 1 integer corresponding to character value
- param 1 value of parameter n (or parameter count if n
- is zero)
- perm 2 permutation number a!/(a-b)!
- pfact 1 product of primes up till number
- pi 0-1 value of pi accurate to within epsilon
- places 1 places after decimal point (-1 if infinite)
- pmod 3 mod of a power (a ^ b (mod c))
- polar 2-3 complex value of polar coordinate (a * exp(b*1i))
- poly 2+ (a1,a2,...,an,x) = a1*x^n+a2*x^(n-1)+...+an
- pop 1 pop value from front of list
- power 2-3 value a raised to the power b within accuracy c
- ptest 2 probabilistic primality test
- printf 1+ print formatted output to stdout
- prompt 1 prompt for input line using value a
- push 2 push value onto front of list
- quomod 4 set c and d to quotient and remainder of a
- divided by b
- rcin 2 convert normal number a to REDC number mod b
- rcmul 3 multiply REDC numbers a and b mod c
- rcout 2 convert REDC number a mod b to normal number
- rcpow 3 raise REDC number a to power b mod c
- rcsq 2 square REDC number a mod b
- re 1 real part of complex number
- remove 1 remove value from end of list
- root 2-3 value a taken to the b'th root within accuracy c
- round 1-2 round value a to b number of decimal places
- rsearch 2-3 reverse search matrix or list for value b
- starting at index c
- runtime 0 user mode cpu time in seconds
- scale 2 scale value up or down by a power of two
- search 2-3 search matrix or list for value b starting
- at index c
- sgn 1 sign of value (-1, 0, 1)
- sin 1-2 sine of value a within accuracy b
- sinh 1-2 hyperbolic sine of a within accuracy b
- size 1 total number of elements in value
- sqrt 1-2 square root of value a within accuracy b
- ssq 1+ sum of squares of values
- str 1 simple value converted to string
- strcat 1+ concatenate strings together
- strlen 1 length of string
- strprintf 1+ return formatted output as a string
- substr 3 substring of a from position b for c chars
- swap 2 swap values of variables a and b (can be dangerous)
- tan 1-2 tangent of a within accuracy b
- tanh 1-2 hyperbolic tangent of a within accuracy b
- trunc 1-2 truncate a to b number of decimal places
- xor 1+ logical xor
-
- The config function sets or reads the value of a configuration
- parameter. The first argument is a string which names the parameter
- to be set or read. If only one argument is given, then the current
- value of the named parameter is returned. If two arguments are given,
- then the named parameter is set to the value of the second argument,
- and the old value of the parameter is returned. Therefore you can
- change a parameter and restore its old value later. The possible
- parameters are explained in the next section.
-
- The scale function multiplies or divides a number by a power of 2.
- This is used for fractional calculations, unlike the << and >>
- operators, which are only defined for integers. For example,
- scale(6, -3) is 3/4.
-
- The quomod function is used to obtain both the quotient and remainder
- of a division in one operation. The first two arguments a and b are
- the numbers to be divided. The last two arguments c and d are two
- variables which will be assigned the quotient and remainder. For
- nonnegative arguments, the results are equivalent to computing a//b
- and a%b. If a is negative and the remainder is nonzero, then the
- quotient will be one less than a//b. This makes the following three
- properties always hold: The quotient c is always an integer. The
- remainder d is always 0 <= d < b. The equation a = b * c + d always
- holds. This function returns 0 if there is no remainder, and 1 if
- there is a remainder. For examples, quomod(10, 3, x, y) sets x to 3,
- y to 1, and returns the value 1, and quomod(-4, 3.14159, x, y) sets x
- to -2, y to 2.28318, and returns the value 1.
-
- The eval function accepts a string argument and evaluates the
- expression represented by the string and returns its value.
- The expression can include function calls and variable references.
- For example, eval("fact(3) + 7") returns 13. When combined with
- the prompt function, this allows the calculator to read values from
- the user. For example, x=eval(prompt("Number: ")) sets x to the
- value input by the user.
-
- The digit and isset functions return individual digits of a number,
- either in base 10 or in base 2, where the lowest digit of a number
- is at digit position 0. For example, digit(5678, 3) is 5, and
- isset(0b1000100, 2) is 1. Negative digit positions indicate places
- to the right of the decimal or binary point, so that for example,
- digit(3.456, -1) is 4.
-
- The ptest function is a primality testing function. The first
- argument is the suspected prime to be tested. The second argument
- is an iteration count. The function returns 0 if the number is
- definitely not prime, and 1 is the number is probably prime. The
- chance of a number which is probably prime being actually composite
- is less than 1/4 raised to the power of the iteration count. For
- example, for a random number p, ptest(p, 10) incorrectly returns 1
- less than once in every million numbers, and you will probably never
- find a number where ptest(p, 20) gives the wrong answer.
-
- The functions rcin, rcmul, rcout, rcpow, and rcsq are used to
- perform modular arithmetic calculations for large odd numbers
- faster than the usual methods. To do this, you first use the
- rcin function to convert all input values into numbers which are
- in a format called REDC format. Then you use rcmul, rcsq, and
- rcpow to multiply such numbers together to produce results also
- in REDC format. Finally, you use rcout to convert a number in
- REDC format back to a normal number. The addition, subtraction,
- negation, and equality comparison between REDC numbers are done
- using the normal modular methods. For example, to calculate the
- value 13 * 17 + 1 (mod 11), you could use:
-
- p = 11;
- t1 = rcin(13, p);
- t2 = rcin(17, p);
- t3 = rcin(1, p);
- t4 = rcmul(t1, t2, p);
- t5 = (t4 + t3) % p;
- answer = rcout(t5, p);
-
- The swap function exchanges the values of two variables without
- performing copies. For example, after:
-
- x = 17;
- y = 19;
- swap(x, y);
-
- then x is 19 and y is 17. This function should not be used to
- swap a value which is contained within another one. If this is
- done, then some memory will be lost. For example, the following
- should not be done:
-
- mat x[5];
- swap(x, x[0]);
-
- The hash function returns a relatively small non-negative integer
- for one or more input values. The hash values should not be used
- across runs of the calculator, since the algorithms used to generate
- the hash value may change with different versions of the calculator.
-