Manual B. Features

  1. Xzfracal computes the EXACT answers to all supported operations on integers and fractions provided there is enough memory and time to complete the computations. Please be aware that exact answers to complex problems tend to require extensive resources (memory, computing power and time), the algorithms used by Xzfracal eventually stop and produce exact answers, provided it is given enough memory and time.

  2. Xzfracal accepts complete mathematical expression as a single input. You can build complex expressions with many levels of nested parentheses and function calls. Xzfracal parses and evaluates the expression when you submit it. You can edit (for typos or variations) and resubmit the expression for calculation if necessary. This makes (repeatedly) calculating complex expressions easier. More importantly, you have a better sense of what you are calculating.

  3. Xzfracal has a native support of proper, improper and mixed fractions. It uses the character “:” to delimit the whole (integer) part, numerator and the denominator of a fraction. For example, \( \dfrac{3}{16} \) and \( 5 \dfrac{7}{12} \) are represented by 3:16 and 5:7:21 respectively.

  4. Xzfracal has a native support of repeating decimals. It uses the character “&” to mark the beginning of the repeating decimal group. For example, \( 0.\overline{3} = 0.33333\ldots \) and \( -64.51\overline{7328} = -64.51732873287328\ldots \) are represented by 0.&3 and -64.51&7328 respectively.

  5. Xzfracal has a native support of expressing numbers in various number basis (from 2 to 36). It uses the character “#” to indicate the base. NOTE: The base itself must be in decimal. For example, the binary number 110.01#2 is the decimal number 6.25. Letters are used to represent digits larger than 10: 'A'='a'=10, 'B'='b'=11, 'C'='c'=12, ... Numbers must start with digits in the range 0, 1, 2, ..., 9. The digit 0 can be used for this purpose. For example, the hexadecimal number 0A3#16 is the decimal number 163.

  6. Xzfracal saves previous results in a history stack whose values can be used in new input. Xzfracal uses the character “$” to indicate stack reference. For example, the expression 3+$ means “the sum of 3 and the most recent result”. In general, you can include values of any previous results in your new input by using their absolute or relative “addresses”.

  7. Xzfracal has many built-in mathematical operations and functions. In addition to the four basic arithmetic operations, Xzfracal has exponentiation, integer division, modulo division, and factorial operation. Xzfracal also has many functions. Some of these functions, such as the optimal rational approximations, are only found on more sophisticated mathematical software.

  8. Xzfracal supports operations on lists of fractions. There are two types of objects in Xzfracal: (1) fractions and (2) lists of fractions. The following is an example of list (of 4 fractions): [7,2:3,5.6&72,(3+7:2)^4/max(4,8)]. Xzfracal lists are low-level (generic) objects: they are just lists of fractions, no more and no less meaning. A user, however, can choose to interpret such lists anyway he sees fit and manipulate them as if they have high-level meanings (such as vectors, polynomials, matrices, etc).

  9. Xzfracal supports polynomial operations. Xzfracal has built-in supports of many useful high-level list interpretation and manipulations. In particular, Xzfracal supports the following polynomial operations: addition, subtraction, mulitiplication, long division, power, (function) composition, evaluation, ... etc. For example p#eval([2,4,0,7],5) evaluate the polynomial   \( p(x)=2+4x+7x^3 \)   at   \( x=5 \) .

  10. Xzfracal supports matrix operations. Xzfracal supports the following matrix operations: addition, subtraction, scalar mulitiplication, multiplication, transpose, determinant, trace, inverse, ... etc. For example m#add() performs matrix addition, s#sub() performs square matrix subtraction.

  11. Xzfracal solves systems of linear equations. The simple function call x#solve([1,-2,3,4,5,-6]) solves the system: \[ \left\{ \begin{array}{cccc} x & - & 2y &=& 3 \\ 4x & + & 5y &=& -6 \end{array} \right. \] for \( x \) and \( y \).

  12. Exact computations tend to produce long answers. For example, the exact decimal representation of \( \dfrac{1}{97} \) has a group of 96 repeating digits. Xzfracal supports the use of “spacer” character “_” between the digits to enhance the readability. You can control the “distance” between the spacer characters in the output. You can use the spacer characters any way you see fit in your input. For example, 12.34&56 and 12_._3_4_&_56__ are the same number.

  13. Xzfracal can print the answer in multiple exact or approximate formats for each single computation. Here are the three (3) exact and one (1) approximate formats:

    Fraction: A fraction is the ratio of two integers. The fraction may be improper, i.e. the numerator may be larger than the denominator. This format is exact. The icon suggests that it is a “two-component number” arranged like a fraction.

    Mixed fraction: A mixed fraction is a fraction with a whole (integer) part. The fractional part is proper, i.e. the numerator is less than the denominator. This format is exact. The icon suggests that it is a “three-component number” arranged like a mixed fraction.

    Decimal: All fractions, when expressed as a decimal, are either

    1. a terminating decimals (finite number of non-zero digits), or

    2. a repeating decimals (infinite number of non-zero digits).

    The beginning of repeating digits is indicated by the character “&” in Xzfracal. This format is exact. The icon suggests that it is a number with a decimal point and possibly a “repeating loop” at the end.

    Approximation: An approximation is an exact decimal rounded to a prescribed number of decimal places. Note: The information of repeating digits is lost forever, the special character “&” is never used in this format. It is impossible to determine the repeating group of digits, if any. This format is approximate. The icon suggests that it is an exact decimal number with the tail ripped off, destroying the “repeating loop”, if any..

    Here are examples of numbers printed in various formats (Approx n means rounding to n decimal places):


    Mixed fraction


    Approx 2

    Approx 5































    Important Note: While it is possible to ask Xzfracal to output numbers in approximation formats. Xzfracal always assumes numbers in the input expressions are all exact! For example, when you enter 3.57, Xzfracal assumes that you mean to enter the mathematically exact decimal \( 3.57000000\ldots \), or in other words, the exact fraction \( \dfrac{357}{100} \). It is important to keep this in mind, because decimal numbers in real world are not always meant to be mathematically exact. For example, numbers originating from measurements are almost never meant to be trated as mathematically exact.