inteliCalc 1.5
==============
Author: Christoph Fabianek
Contact: fabianek@atp5000.tuwien.ac.at
Platform: Newton OS 2.x
Package-Size: 42 K
Overview
--------
inteliCalc is an easy to use scientific calculator using RPN and now
provides about 50 standard mathematical functions. iCalc supports full
pen input and drag & drop of all your data. Trigonometric functions are
in DEG, RAD or GRAD modes and all results can be displayed in standard,
fixed, scientific or engineering mode. Values can be displayed in
hexadecimal, octal or binary format. Additionally inteliCalc provides
some common constants, system parameters and you can store your own
constants. For a detailed discussion of all functions see the section
"Using inteliCalc" below.
inteliCalc is still Freeware.
New Features in Version 1.5
---------------------------
* Functions
- General: Abs, Floor, Ceiling, Erf, Erfc, Comb, Perm, Random
- Trigonometric: Sinh, Asinh, Cosh, Acosh, Tanh, Atanh, Atan2, Hypot
- Statistic: Total, Mean, Std. Deviation, Sum(x^2), Max, Min, Count
- Financial: Annuity, Compound
- View: ->Q, ->PiQ, Binary, Octal, Hexadecimal
- Constants: Pi, e, c, C (=Euler-/Mascheroni- Constant)
- System Parameters: CPU-Speed and some Battery-Info
* Preferences to
- set the number of visible stack-lines,
- enable / disable error messages
- name stored values
* Localization
- supports all kinds of number delimiters chosen in the Locale Panel
- runs on German MP2100
- see section below for detailed information
* enhanced Drag & Drop
- supports formatted Numbers (12,000.234 or 2e-5)
* enhanced Input
- see the last section "Interesting behaviour of the new Input-Parser"
System Requirements
-------------------
inteliCalc should run on any Newton with OS 2.1.
Mail me if you are using inteliCalc 1.5 on OS 2.0, the MP130 or the eMate.
Version 1.0 runs on MP130 as users reported back to me.
Installation
------------
Installation is simple. Just download inteliCalc with the Newton
Connection Utility (for Mac or Windows), the Newton Package Downloader,
or the Newton Backup Utility. See the documentation with each of these
for more information on installing packages with them.
IMPORTANT: inteliCalc has to be installed on the internal store!
Using inteliCalc
----------------
Display: Enter numbers with the numeric keypad or use your pen. When you
write a number on an empty line, it is inserted at this position in the
stack. If there is already a value, the input will be ignored. When you
drop values into the stack, it works the same way. You can scrub out
items in the stack, and if you drag out numbers they are also removed
(use double-tapping on the selected item to drag a copy of the number).
Angle-Indicator: Tap on the angle indicator (Deg, Rad, Grad) to rotate
through the angle modes, which determines how inteliCalc interprets
angle arguments and how it returns angle results:
Deg: Degrees - 1/360 of a circle
Rad: Radians - 1/(2*Pi) of a circle
Grad: Grads - 1/400 of a circle
Display-Indicator: Tap on the display indicator (Std, Fix, Sci, Eng, EngT)
to rotate through the display modes, which control the format
inteliCalc uses to display numbers. Tap on the number next to it to choose
the number of decimal digits.
ATTENTION:
Numbers are always stored with maximum precision, but operations
and the results are only at the chosen precision level!
Std: Standard mode displays numbers using full precision.
Fix: Fix mode displays numbers rounded to a specified number of decimal digits.
Sci: Scientific mode displays a number as a mantissa (with one digit to the
left of the decimal point) and an exponent.
Eng, EngT: Engineering mode displays a number as a mantissa followed by an
exponent that is a multiple of 3.
EngT is the Engineering mode as interpreted by Mr. Tiernan:
- contrary to my HP48 - EngT uses a fixed number of decimal digits;
try 15820 in Eng 4(15.820E+03) and EngT 4(15.8200E+3).
Edit-Indicator: Is shown in the upper right corner of the display and is
displayed when entering numbers or expressions.
Trigonometric functions - Sin, Cos, Tan (Asin, Acos, Atan): The angle
arguments and results are interpreted as degrees, radians, or grads,
depending on the current angle mode (see Angle-Indicator).
Arithmetic and general math functions - Sqr, y^x, 1/x, Log, +, -, *, /
(XRoot, !, e^x, Ln, Mod): These functions take either on or two
arguments from the stack and return the result in the first (bottom)
line of the stack.
Storing numbers - Sto (Rmv): Tapping this button removes the first
(bottom line) item of the stack and stores it on your Newton. With the
Constants-Menu you can recall stored values.
To remove stored numbers you have to execute 2 steps:
First recall the value and then tap Rmv
(inteliCalc knows the last recalled number, and this number will be
deleted from the list of stored numbers).
Edit (last): To secondary edit entered numbers, tap this Button. The
first (bottom line) value of the Stack will then be displayed left
justified and the Edit-Indicator is shown. If you tap Edit, when the
edit-Mode is already active, the value will be stored into the stack
again. If the Input can't be interpreted, an error message is displayed
and the whole line is removed. (Contrary to Enter: there an error
message is also displayed, but the input stays in Edit-Mode.) Executing
the Last-Command places the arguments of the most recently executed
command on the stack so that you can use them again.
Swp (Pick): Swap exchanges the contents of Line 1 and 2. Pick copies the
value of the n'th line (first line not included) into the first line
(the value of the n'th line is put into the first line).
Enter: If the Edit-Mode is active the value being edited is copied into the
Stack. If the input can't be interpreted, an error message is displayed,
and the Edit-Mode stays active. If you are not in the Edit-Mode the
value of the first line is duplicated.
Shift: Toggle with this Button the Shift-Mode. If a command in
Shift-Mode is executed, Shift-Mode is deactivated.
E+ (E-): To key in a number as a mantissa and an exponent type in the
mantissa, press E+ (or if is negative E-), type in the exponent. (To
change the sign of the value type +/-.)
Drop (CLR): Drop removes the value of the first (bottom) line in the
stack. If the Edit-Mode is active, the last character is removed. CLR
clears the entire stack.
Keys 0 .. 9, Comma: If the Edit-Mode is active the character is added at
the end. Otherwise, a new line is added, the Edit-Mode activated, and
the character is displayed. Shift+0 turns off your Newton and Shift+"."
adds Pi to the Stack. inteliCalc supports numbers with approximately 16
decimal digits of precision, ranging from +/-1.8E+308 to +/-2.2E-308.
+/-: Changes the sign of the value in the first (bottom) line.
Function-Button(fx): Choose the menu of the button beside:
General-Menu:
- Abs: Absolute value
- Floor: Greatest integer less than or equal to the argument
- Ceiling: Smallest integer greater than or equal to the argument
- Erf: Error function of x
- Erfc: Complementary error function of x
- Comb: Number of combinations of y items taken x at a time
- Perm: Number of permutations of y items taken x at a time
- Random: Random integer between y (lower limit) and x (upper limit) -
the range is inclusive of the numbers x and y
Trigonometric-Menu:
- Sinh: Hyperbolic sine: (e^x - e^-x)/2
- Cosh: Hyperbolic cosine: (e^x + e^-x)/2
- Tanh: Hyperbolic tangent: sinh x/cosh x
- Asinh: Inverse hyperbolic sine: sinh^-1 x
- Acosh: Inverse hyperbolic cosine: cosh^-1 x
- Atanh: Inverse hyperbolic tangent: sinh^-1 (x/sqrt(1-x^2))
- Atan2: Inverse tangent of x/y
- Hypot: Square root of the sum of the squares of x and y, avoiding the
hazards of overflow and underflow when the arguments are large or tiny
in magnitude but the result is within range.
Statistic-Menu:
- Total: Total of all stack-entries
- Mean: Mean (average) of all stack-entries
- Std. Deviation: Sample standard deviation of all stack-entries
- Sum(x^2): Sum of the squares of all stack-entries
- Max: Maximum of all stack-entries
- Min: Minimum of all stack-entries
- Count: Number of stack-entries
Financial-Menu:
- Annuity: Value of the financial formula (1-(1+y)^-x)/y;
y is the periodic interest rate and x the number of periods
- Compound: Value of the financial formula (1+y)^x;
y is the periodic interest rate and x the number of periods
Note: That are not many financial formulas, but there are no more built in.
Mail me some financial formulas, if you think they are useful.
View-Menu:
- -> Q: Converts a decimal value to its best-guess fractional approximation
- -> PiQ: Converts a decimal value to its best-guess fractional approximation * Pi
- Binary: Show the argument in binary format
- Octal: Show the argument in octal format
- Hexadecimal: Show the argument in hexadecimal format
Constants-Menu:
- Values of 4 constants: Pi, e, C (=Euler-/Mascheroni- Constant) and c;
- Your stored values
- Clear All: removes all stored values
System-Parameters-Menu:
- free Heap memory (before showing it, a garbage collection is executed)
- ambient Temperature
- CPU-Speed
- Battery Temperature (did you know, that your Newton has two built-in thermometers?)
- Battery Capacity in %: The percentage of a full charge that the battery contains.
- Battery Voltage: The current battery voltage.
- AC Voltage: If AC power is supplied the AC voltage being supplied by an AC adapter.
Error Messages: If inteliCalc can't interpret an input, or can't
perform an command an error message is displayed for 3 seconds. The
error message closes immediately if you tap on it. The message includes
the command and an error text:
- Bad Argument Value - The command can't be performed with these arguments
- Invalid Syntax - Check your input
- Overflow / Infinite Result - Division by 0; Number out of range
- Too Few Arguments - Enter all arguments to perform the command
- Undefined Result - The command can't be perform on the number
If inteliCalc does not start (i.e. starts with an error message and
quits): delete the 'iCalc Stack' in the Storage area of the Extras drawer.
this procedure should clear the stack and inteliCalc should start again.
Localization
------------
InteliCalc supports now all kinds of number delimiters chosen in the
Locale Panel in the Extras drawer.
Please make sure that your Stack is empty before you change the
localization. You might also experience troubles with stored values,
when you change the localization. It is advised to clear the stored
values before changing, too.
You can also delete the 'iCalc Stack' and 'iCalc Stored' in the Storage area
of the Extras drawer. They will be rebuild after inteliCalc starts.
Note:
InteliCalc was tested with the built in localizations of the
MP2000 (OS 2.1), the German MP2100, austria.pkg (I can not
remember where I got it from), and the packages from
Compower AG (Swiss, German and Austrian).
Please send me an email if you experience troubles with your
localization (include the localisation package in the email,
otherwise I am unable to check).
Interesting Behaviour of the new Input-Parser
--------------------------------------------
If you have used version 1.0 of inteliCalc, you may have noticed that
inteliCalc (and many other calculators on the Newton) don't handle
exponents correctly (e.g. 76E+3 becomes 76000.0000000001). This is
due to a problem converting your input-string into a number. In
version 1.0 the conversion is done by the StringToNumber function, which
doesn't support exponents. So I had to write some crude work-around, and
you got those rounding errors. After playing around some time with the
problem I replaced the StringToNumber with the Compile function. The
Compile function did a nice job to convert all my strings (including
exponents) to numbers. The thing got interesting when I dragged an
expression ("2+3") onto the Input-Line and it was also correctly
interpreted. Wow! inteliCalc is the first calculator supporting both:
RPN and AOS. To use this UNDOCUMENTED feature of inteliCalc write the
expression in Notepad and drag it onto an Input-Line of inteliCalc.
You can also enter such expressions with the numeric Keyboard, directly
at the first Input-Line, but then it is recommended to put your
expression into brackets: (2+(3*5))
After that press Enter to evaluate it. You can use there all of the
built-in functions. Please refer to "The NewtonScript Programming
Language"-Manual, Chapter 6 for a detailed discussion.
Here just a short table of useful functions:
exp(x) exponential of x
gamma(x) gamma function applied to x [=(x-1)!]
log(x) natural logarithm of x
log10(x) logarithm base 10 of x
pow(x,y) returns x^y
Sin, Asin, Sinh, Asinh - trigonometric functions (equivalent Cos and Tan);
the calculation is always in RAD-Mode
You can use the constant Pi by typing [Option]+p on the keyboard in expressions
NOTE: Some of the functions will only work with the U.S. number format
(decimal separator: ".", groupSepStr:",") chosen in the Locale Panel of Preferences.
And now something for the absolute Newton freaks:
You can even drag whole functions onto Input-Lines like:
local x;
for i:=1 to 10000 do begin
x:=x+1/i:
end;
return x;
(I have this function as a separate Note in the Notepad and changed the
formula in the loop (x:=x+1/i) to estimate the limes of recursive
series. And even 100,000 iterations take just a few seconds - thanks to
the StrongARM.)
You think just tiny programs - try this to reference to the stack:
local theStore, theStackValue, myCursor, StackStr, arg1, arg2;
theStore:=getStores()[0];
theStackValue:=theStore:GetSoup("StackSoup:Fabi");
myCursor:=theStackValue:Query({});
myCursor:ResetToEnd();
StackStr:=myCursor:Entry().StackValue;
DefGlobalFn('var1, compile(StackStr));
arg1:=var1();
myCursor:Prev();
StackStr:=myCursor:Entry().StackValue;
DefGlobalFn('var1, compile(StackStr));
arg2:=var1();
return arg1+arg2;
Nice way to add the first 2 numbers in the stack - but please use the
button of inteliCalc at the bottom right instead! OK, you can do
virtually anything, but it's of not much use to write functions with more than
10 lines, because there is no syntax checking, nor any other response if
the code doesn't work. So if someone is interested in a programming
environment, let me know, perhaps there will be a version 2.0 if there
is some response. As mentioned above, this is an UNDOCUMENTED feature.
Make a backup before playing around, and remember that it is absolutely
yours, if you destroy your data because of erroneous code.
Disclaimer
----------
Although I have attempted to ensure the accuracy of results produced by
the included software, I am not responsible for any erroneous results,
caused by software defects known or unknown. If however, you do discover
an error, please request support using the contact information given
above.
This package is free but the Copyright remains with Christoph Fabianek.
This Package can be freely redistributed to electronic sites as long as
it is posted in its entirety, including this README. It can't be sold as
a standalone package or as part of commercial package without my written
permission.
Christoph Fabianek, February 1998