# Changelog

## Version 0.9.3 (2011.06.04):

- added: German translation made by

Moritz Beleites

<morbel at gmx dot net> - added: on display tab: an option how many digits should be grouped
- changed: the way how buttons on display tab work

suppose we have "123+34+56" in the first edit, then select (by mouse or a keyboard) "123+34" similar as you would like to copy them to the clipboard, then press a button let we say "sin" - the result is: "sin(123+34)+56" - updated: Chinese translation
- fixed: ttcalc didn't correctly delete variables/functions from its config file so when you restarted the program you still had the deleted variables/functions
- fixed: option: "parameters separated by" was not correctly read from the config file

## Version 0.9.2 (2010.09.24):

- added: Italian translation made by

Damiano Monaco

<dmonax at gmail dot com> - added: menu: edit->swap (ctrl+W)

swapping the input for the output edit

Changes from TTMath 0.9.2 relating to TTCalc:

- fixed: Big::Add() sometimes incorrectly rounded the last bit from its mantissa
- fixed: Big::ToString method

in some cases when in the output string the exponent should be equal zero the method changes the exponent to one so the last digit from the mantissa was lost

## Version 0.9.1 (2010.02.07):

- fixed: the pad window didn't take into account following options (from display tab): grouping, input commas and parameter separators
- updated: Chinese translation

Changes from TTMath 0.9.1 relating to TTCalc:

- fixed: the parser didn't use characters for changing the base (# and &)

those characters were skipped

(this bug was introduced in 0.9.0) - fixed: added in the parser: operator's associativity

operator ^ (powering) is right-associative:

sample: 2^3^4 is equal 2^(3^4) and it is: 2.41e+24

previously was: 2^3^4 = (2^3)^4 = 4096 - changed: in Big::ToString() the base rounding is made only if the result value

would not be an integer, e.g. if the value is 1.999999999999 then

the base rounding will not be done - because as the result would be 2 - added: IEEE 754 half-to-even rounding (bankers' rounding) to the following floating point algorithms: Big::Add, Big::Sub, Big::Mul, Big::Div

## Version 0.9.0 (2009.11.25):

- fixed: when 'C' button was pressed, the cursor was not placed in the edit window
- added: Pad window - a multiline edit window
- added: Checking for update dialog box

also the program can check automatically for an update at startup - added: there are some new buttons on the standard tab

- (...) - the whole expression is surrounded by brackets (ctrl+0 short cut)

- 1/(...)

- ;

- % - a new percentage operator

- floor/ceil/min/max/sqrt/root/gamma - added: some new options on display tab:

- grouping

- input decimal point

- parameters separated by - changed: precision:

Medium - 512 bits mantissa, 64 bits exponent

Big - 1024 bits mantissa, 128 bits exponent

Changes from TTMath 0.9.0 relating to TTCalc:

- added: operator percentage

e.g. 1000-50% = 1000-(1000*0,5) = 500 - added: function frac(x) - returns a value without the integer part

(only fraction remains) - changed: algorithms in sqrt(x) and root(x ; n)

they were not too much accurate for some integers

e.g. Root(16;4) returned a value very closed to 2 but not exactly 2 - changed: added specializations to Big::ToString() when the base is equal 4, 8 or 16

the previous version was not accurate on some last digits (after the comma operator)

consider this binary value (32 bit mantissa):

base 2: 1.1111 1111 1111 1111 1111 1111 1110 101

previous ToString() gave:

base 4: 1.33333333333332

base 8: 1.777777777

base 16: 1.FFFFFF

now we have:

base 4: 1.3333333333333222

base 8: 1.77777777724

base 16: 1.FFFFFFEA

## Version 0.8.7 (2009.09.16):

- added: new language: Swedish

translation made by: Lars 'Bafvert' Gafvert

<lars.gafvert at gmail dot com> - changed: version of the TTMath library: 0.9.0 prerelease now

Changes from TTMath 0.9.0 prerelease relating to TTCalc:

- added: gamma() function
- changed: factorial() function is very fast now

## Version 0.8.6 (2009.06.30):

- added: new language: Russian

translation made by: Vladimir Gladilovich

<vdgladilovich at gmail dot com>

## Version 0.8.5 (2009.06.18):

- added: new language: Chinese

translation made by: Juis <zsyfly at gmail dot com> - changed: version of the TTMath library: 0.8.5 now

Changes from TTMath 0.8.5 relating to TTCalc:

- fixed: Big::Mod(x) didn't correctly return a carry and the result was sometimes very big (even greater than x)
- changed: factorial() function is much faster now

## Version 0.8.4 (2009.05.08):

- added: new language: Danish

translation made by: Rune Bisgaard Vammen <runebisgaard at gmail dot com>

## Version 0.8.3 (2009.04.06):

- fixed: calculating the size of the main window

now it looks good on MS Vista and when a user changes size of some widgets such as a border, font size, etc. - changed: variables and functions are case-sensitive now, e.g. 'x' is not the same as 'X'
- changed: precision:

small - the same as previous

medium - 288 bits for the mantissa, 64 bits for the exponent

big - 864 bits for the mantissa, 128 bits for the exponent

previous were:

medium - 192 bits for the mantissa, 64 bits for the exponent

big - 288 bits for the mantissa, 96 bits for the exponent - changed: new version of TTMath bignum library: 0.8.3
- added: when a user presses CTRL+C then the result will be copied into the clipboard (if the current control which has a focus is not an edit control, or if it is an edit but has no selection)
- added: when a user presses CTRL+V then the text from the clipboard
will be copied into the edit control

(the focus can be anywhere but it cannot be on another edit control) - added: 'decimal point' option on the display tab
- added: variables and functions can have underline characters in their names
- added: 'remove trailing zeroes' option on 'display' tab
- added: new language: spanish

translation made by Alejandro S. Valdezate

alesanval at gmail dot com - added: on display tab: we can select 'deg' 'rad' or 'grad' for calculating in such functions: sin,cos,tan,cot,asin,acos,atan,acot
- added: when the program exits new variables and functions are read from
the configuration file and then the file is saved

(if you have inserted some variables or functions in a different instance of TTCalc those variables or functions were previously skipped) - removed: 'cut off last non valid digits' on 'rounding' option on 'display' tab

Changes from TTMath 0.8.3 relating to TTCalc:

- fixed: Big::Add incorrectly rounded 'this' when both exponents were equal

it caused that sometimes when adding a zero the result has changed

this had impact among other things on FromString() method

"0,8" had different binary representation from "0,80" - fixed: Big::Pow(const Big<exp, man> & pow)

it's using PowInt() only when pow.exponent is in range (-man*TTMATH_BITS_PER_UINT; 0]

previously the powering 'hung' on an input like this: "(1+ 1e-10000) ^ 10e100000000"

(there was 10e100000000 iterations in PowInt()) - fixed: in function DegToRad(const ValueType & x, ErrorCode * err = 0) it is better to make division first and then mutliplication -- the result is more accurate especially when x is: 90,180,270 or 360
- fixed: the parser didn't correctly treat operators for changing the base
(radix) -- operators '#' and '&', e.g.:

'#sin(1)' was equal '0' -- there was a zero from '#' and then it was multiplied by 'sin(1)'

the parser didn't check whether Big::FromString() has actually read a proper value -- the method Big::FromString() didn't have something to report such a situation - fixed: Big::FromString() when the base is 10, the method reads the scientific
part only if such a part it correctly supplied, e.g:

'1234e10', '1234e+10', '1234e-5'

previous '1234e' was treated as: '1234e0' (now parsing stops on 'e' and the 'e' can be parsed by other parsers, e.g. the mathematical parser -- now in the parser would be: '1234e' = '1234 * e' = '3354,3597...' ) - changed: in the parser: the form with operators '#' and '&' is as follows:

[-|+][#|&]numeric_value

previous was: [-|+][#|&][-|+]numeric_value - changed: the parser is allowed to recognize values which begin with a dot, e.g '.5' is treated as '0.5'
- added: functions to the parser: gradtorad(grad), radtograd(rad), degtograd(deg), degtograd(d,m,s), gradtodeg(grad)
- added: a short form of multiplication

(without the '*' character) e.g. '5y'

(it's used only if the second parameter is a variable or function)

## Version 0.8.2 portable (2007.07.01):

- added: the portable version of the program TTCalc

it uses *.ini config file from the same folder where is the executable file, and it's much smaller in size (in the portable version there's only one kind of precision and the program is packed with UPX - the Ultimate Packer for eXecutables)

there are no other differences between version 0.8.1 and this one

## Version 0.8.1 (2007.04.17):

- changed: on win9x the configuration file is in a folder like: "c:\windows\data application\ttcalc\" now
- changed: the program uses the TTMath 0.8.1 now
- added: from TTMath 0.8.1: root(x, index), bitand(x,y), bitor(x,y), bitxor(x,y) /band(x,y), bor(x,y), bxor(x,y)/ asinh(x), acosh(x), atanh(x), acoth(x) /atgh(x), actgh(x)/
- changed: from TTMath 0.8.1: calculations are much faster now especially the factorial() function
- changed: from TTMath 0.8.1: the way of parsing operators

## Version 0.8.0 (2007.04.02):

- added: the del key deletes a variable or a function now (if the focus is on the list)
- added: a user can change the names of variables or functions now
- changed: the program uses TTMath 0.8.0 now
- added: functions: from TTMath 0.8.0: DegToDeg(deg, min, sec), DegToRad(deg), DegToRad(deg, min, sec), RadToDeg(rad), Ceil(x), Floor(x), Sqrt(x), Sinh(x), Cosh(x), Tanh(x) /Tgh(x)/, Coth(x) /Ctgh(x)/
- added: a help
- changed: from TTMath 0.8.0:

renamed: CTan() into Cot() or Ctg()

renamed: ACTan() into ACot() or ACtg()

Factorial() has a history log now (it can remember last 10 calculated values) - fixed: the vertical size of the main window when a user uses a different size of the window caption (especially under the Windows XP Luna)
- fixed: on Windows 9x: the program hung when a user clicks on a control on the first tab
- fixed: when a user started navigating from the keyboard the program showed a wrong variable or a funtion in the edit dialog

## Version 0.7.3 (2007.03.08):

- added: the program shows some kind of errors itself
- added: checking whether a user has inserted a correct value of a variable or a function
- fixed: navigation from the keyboard
- changed: the esc key selects the entire input text now (in the input edit)
- added: a test when the program is being starded which checks if the coordinates of the main window actually pointing at the valid area (for example when someone took his configuration file into a new computer and the new computer has a smaller screen)

## Version 0.7.2 (2007.02.28):

- added buttons Sgn and Mod
- the button 'err' is active when there's actually an error now
- added buttons: ASin, ACos, ATan, ACTan
- fixed: the program didn't save the current language into the configuration file
- fixed: the second thread didn't read the main window correctly and it caused small problems when a user was typing into the first edit control

## Version 0.7.1 (2007.02.08):

- added a button 'err' (error) on the first tab
- the input edit can have 2048 characters now
- added remembering the vertical size into the config file
- fixed a problem with the 'tab' key
- added a message 'Calculating...' when an user clicks on the 'err' button during calculating something