Exact!

here is Exact! test release 0.3

some of the interesting new ideas have been implemented, but it is by no means finished or properly tested.

here is the exact.cab file to instatall on pocket pc windows 2003SE ARM

here is the exactsetup.cab file to instatall on PocketPC 5 to 6.1 ARM

here is a exact.exe Windows console program

note: vga mode is supported!

recent changes here.

what is exact

exact is a new kind of calculator for pocket devices. operationally, exact is formula centric rather than number centric. when you type out a calculation in exact, it constructs the expression as you go as a formula. pressing = reuduces the formula to a result. when you chain from a previous calculation, exact brings back the original expression as a formula and your calculation edits this into a new expression.

in this way, exact always knows the complete expression. it is this approach that allows exact to guard against numerical inaccuracy by preventing errors from being carried forward.

exact calculation engine

underneath, exact has a powerful multiprecision evalution engine. it uses this approach to target a specific deliverable precision. you can set the precision, but by default it is 12 significant figures. internally, numbers are represented in decimal so that there are no representability problems. for example, the number 0.1 is not representable in binary, it recurrs. most real calculators use decimal internally for this reason.

input methods

exact supports different input styles. these is AOS (algebraic logic), the style of older casio and ti calculators where operations act upon the current expression (eg 2 sqrt =), RPN (reverse polish), where expressions are accumulated on a stack then evaluated, and finally, formula entry, where functions preceed their parameters as they are written (eg sqrt(2) =).

[note: formula entry not implemented in test version yet]

object types

as well as multiprecision decimals, exact supports integers, rationals, complex numbers, symbols, strings and arrays. you might notice some rather odd looking buttons on the front. these are to support the new types. exact performs automatic conversion between types. usually this means converting to a more general type. for example, from real to compex.

when you start typing a number into exact, it thinks you are entering an integer. like this you can type a long integer and work with it.

examples:

67280421310721 * 274177 = 18446744073709551617
(2^64+1)/274177 = 67280421310721
30! = 265252859812191058636308480000000

when an integer does not divide exactly, it becomes a rational. like this you can work with fractions

examples:

1/3+1/4 = 7/12
22/7*3+1/13 = 9+46/91

at any time, you can force the conversion of an integer or rational into floating point using the ~= button (aos: on 2nd page).

examples:

22/7*3+1/13 = 9+46/91 ~= 9.50549450549
69! ~= 1.71122452428E98

whenever you enter a decimal point, or E (for exponent), the number is interpreted as floating point. this can be a handy shortcut.

examples:

22/7*3+1/13.0 = 9.50549450549
1/3. = 0.333333333333
99 sqrt = 9.94987437106

you can work with complex numbers by using i as part of numeric input. also, results of real expressions may be complex if no real solution exists.

examples:

(1+2i) sqrt = 1.27201964951+0.786151377757i_
-2 sqrt = 1.41421356237i_
2 acos = 1.31695789692i_
i*pi = exp = -1+0E-13i_

[note: i_ is a temporary indicator until the fancy display fonts are implemented.]
[aos note: enter () 1 + 2i () sqrt for first example, brackets automatically start and end]

this last result demonstrates the precision targeting. by default, the default precision is 12 digits. thus a number like 0E-13 indicates at least 12 zeros. if you increase precision, you will get a correspondingly smaller unknown complex part in this case.

[note: the other types, symbols, strings and arrays arent useful in this test release, in new versions they will implement variables, string notes, vectors and matrices accordingly].