About / What is ctCalc
---------------------------

  Thanks for using ctCalc.
  ctCalc is an engine / function to calculate strings as far as possible.
  The first version was designed for QuickBasic (4.5).
  It had been modified several times, now its optimized for Visual Basic (6).
  ctCalc GUI is a programm that uses this engine to let the user perform
  different calculations

  As long as there are bugs or requests, ctCalc is under development. The latest
  official version can be found at http://www.ctuser.net. For suggestions,
  questions, requests or bug reports, send eMail to info@ctuser.net.
  
  So I optimized code (sharing, groups, ...), size grew with each new feature.
  ctCalc has now approximate 520kb / compressed 150 kb.
  The source code & resources take about 410 kb (8500 lines / 130 kb pure code).

  This document will give you additional information of ctCalc features.
  It will not contain any information about general mathematic operations.

Features
--------

Engine features:
 - Automatic () adding
 - hex support
 - variables ("var(<expression/number>)")
 - calculation conditions ("vld(<expression>")
     (aborts calculation returning "()" if <expression> is 0)
 - P and % support
 - "help <expression>" support: returns specific help for <expression>
 - < <= = => > <> support (returns 0 if false, 1 if true)
 - and or xor eqv not support
 - log sqr int cnt abs frc rnd sgn sin cos tan atn vld support
 - Hierarchy (no hierarchy within relational operations)
 

GUI features:
 - Graph mode
 - Scripting support for custom calculations with display

Hierarchy:
----------

  Pre/Postfixes:         & E ! %
    ("E" invalid if hex value (&))
    (! and % according to position)
  Arithmetic operations: )( ^ - * / # +
  Relational operations: < <= = => > <>
    (no hierarchy within relational operations)
  Logical operations: not and or xor eqv

Examples:
---------

Here are some examples how to use ctCalc in common:
3+5
3+5/2*sin(p)
3+5/2*sin(p)+&e3f+3e3+3e-1%

Here are some examples how to use ctCalc in the graphs mode
3+x
3+5/2*sin(x*p)
3+5/2*sin(x*p)+&e3f vld(x>=0)

Please note that vld does not affect the result of the expression; if the
expression within vld is zero (0), the calculation is aborted, and () is
returned, whether the result of the term itself is valid or not.
This is usefull if you want the graph only be shown for a small interval
(e.g. "vld(x=1 or x=2 or x=3 or x>5)" ...)

And or xor eqv not:
 0 and 0  ->  0        0 or 0  ->  0        0 xor 0  ->  0        0 eqv 0  ->  1
 0 and 1  ->  0        0 or 1  ->  1        0 xor 1  ->  1        0 eqv 1  ->  0
 1 and 0  ->  0        1 or 0  ->  1        1 xor 0  ->  1        1 eqv 0  ->  0
 1 and 1  ->  1        1 or 1  ->  1        1 xor 1  ->  0        1 eqv 1  ->  1

 not 0  ->  1
 not 1  ->  0

Relational operations ("< <= = => > <>") are interpreted without any care of
hierarchy. So adoid expressions like "5<x<7". Use the following expression
instead: "5<x and x<7".

System Requirements
-------------------
(according to Microsoft)
 - Pentium 90MHz / high
 - VGA 640x480 or higher
 - 24MB RAM for Windows 95 / 32MB for Windows NT.
 - Microsoft Windows NT 3.51 / 95 or later (Windows 95 users may need DCOM
   update (or at least some files of)

Copying / License / ...
-----------------------

ctCalc is freeware. You may use and copy for free. If you copy ctCalc, you must
copy both "ctCalc.exe" and "ctCalc.txt". If you use the "ctCalc.clk" that was
shipped with ctCalc, we recommend to also copy "ctCalc.clk". Otherwise, see if
the author allowes it (please open this file with a standart editor and look
for further information)
  If you want to copy "msvbvm60.dll", see Microsoft's homepage
  (http://www.microsoft.com)

files:
  ctCalc.clk     optional   contains scripts for ctCalc
  ctCalc.exe     required
  ctCalc.txt     readme     information / help
  msvbvm60.dll   required   (not included)

You may not sell or lend, modify (if you want to translate it (the GUI), please
contact me: info@ctuser.net), decompile or disassemble.
Any commercial usage is prohibited!

GUI Version history:
--------------------

New: New feature
Bug: Essential bugfix (Programm hangs, ...)
Fix: Other bugfix (Display, ...)
Chg: Changes (Optimation, ...)
Del: Removed 'feature' (Automation, ...)

3.00 beta 4:
 - Fix: Graph mode when using negative x caused invalid, e.g.:
         ...-x^2  in case of -5 was ...--5^2    corrected by the engine: ...+5^2
         Now x is automatically used internally as (x), e.g;
         ...-x^2  in case of -5 is  ...-(-5)^2  (as it should be)
 - Fix: Some scripting bugfixes          
 - Fix: Shows single seperator line when no scripts found
 - Chg: In script mode, no longer shows empty lines at list end
 - Chg: Added a Seperator line display command in script mode
        (Display [<line>],-

3.00 beta 3:
 - New: This readme file
 - Fix: Lots of bugfixes ....
   ...

Engine Version history:
-----------------------

New: New feature
Bug: Essential bugfix (Programm hangs, ...)
Fix: Other bugfix (Display, ...)
Chg: Changes (Optimation, ...)
Del: Removed 'feature' (Automation, ...)

4.00 beta 02:
 - Bug: Fixed some "and or xor eqv not" issues
 - Fix: negative hexadecimal values (-&...) working
 - Fix: Better support for / with multiple Postfixes (! %)

4.00 beta 01:
 - New: This readme file
 - New: "vld" support (complete expression returns "()" if vld value is 0)
 - New: hex support: "&e3f" returns 3647
 - New: Automatic sets missing ()
 - New: "()" returns 'nothing' ("")
 - Del: Removed |. Will maybe used for other calculations; use <> instead!
 - Fix: Hierarchy for "not and or xor eqv"
 - Fix: Arithmetic operations <-> Relational operations hierarchy
        (no hierarchy within relational operations)
 - Fix: "-x^y" / "(-x)^y" fix:
        "-x^y" is now calculated as "-(x^y)", "-x^-y" as "-(x^(-y))"
        "(-x)^y" is now calculated as it should be, "(-x)^-y as (-x)^(-y)"
        Expressions like sin/cos/log/... work, to:
        "sin(x)^y" if calculated as (sin(x))^y
 - New: Faculty: fac(x) or x!
   ...

Behaviours, Bugs, Errors, Problems
----------------------------------

What you should do:
Of course I'm testing my software and find most errors myself.
Additionally, a good friend of mine tests any version (alpha, pre-beta, beta,
...). If you find an error anyway (that's why it's a beta), here's what you
should check first:
 
FIRST of all, please check if you have the latest versions of ctCalc
(http://www.ctuser.net). Try to find out what you did that caused the error
(bug) and the easiest way to reproduce this error (or a very short and easy
expression that is not calculated correctly) and eMail your report
(info@ctuser.net).

Credits
-------

Jan Vorel (thats me):
 - Programming
 - Layout (design)
 - Testing
 - Readme file
 - Homepage (Text, screenshots, ...)
 - Lots of features
   
Christian Falk:
 - Beta tester

Ali Chaudry:
 - Missed some mathematic functions
 - Mathematic help
 - Some testing
 - lots of discussions resulting in better
   performance / compatiblity,
 - Showed me UPX

Thomas Vorel:
 - Mathematic help

------------------ General Credits: ------------------

ULEAD System:
 - Photo Impact (best image editing programm)

PlanetSourceCode:
 - Visual Basic Source Codes to see how to use API

Markus F.X.J. Oberhumer & Laszlo Molnar:
 - UPX

Grennady Feldman
 - Win32Pad (Notepad replacement)

Eugene Roshal
 - WinRar
 - Rar ('DosShell' / HexViewer)

Toshi:
 - ExeScope: Additional resource operations / checking

Lothar Rossipaul:
 - Wörterbuch (For some translations)

Microsoft:
 - Windows 95/98
 - Visual Basic
 - MSDN
