Version: 0.9.0.20220918

2022-09-18: bigdecimalmath: set version to 0.9.0
2022-04-04: fix pointless warnings
2021-09-12: faster power function
2021-08-13: add a comment
2021-08-13: add a parse pchar to bigdecimal function
2021-06-20: update readme
2021-06-15: add useless assignments to hide useless not-initialized warnings because fpc non-trunk does not track variable initialization properly
2021-06-15: convert more functions to record methods
2021-06-15: move bigdecimalmath.is* functions to bigdecimal.is* advanced record methods, and raise an error if xpath operator to is used with non integers
2021-05-02: do not assume compiler settings
2021-03-27: fix use of localized strToFloat conversion when the english decimal dot should have been used
2021-03-09: update documentation, fix spelling errors
2021-01-30: add simpler functions to convert bigdecimal to integers
2020-10-24: fix tests compiling on systems without extended float type
2020-10-24: fix compiling on systems without extended float type
2020-10-16: update some big decimal tests to run on fpc trunk
2020-10-16: fix bad precision when converting bigdecimal to float; add toString, toSingle, toDouble, toExtended as advanced record methods
2020-10-15: fix test crash on fpc trunk
2020-10-10: fix warnings
2020-09-19: add function to get significant digit of bcd
2020-08-15: fix slow conversion of 0E10000* to integer 0
2019-05-25: fix warnings; remove dead/outdated code
2019-05-24: fix warnings
2019-01-20: fix/hide pointless warnings
2016-03-06: fix overflow in rounding
2016-01-29: fix parsing of big zeros like 0E9999999999999, which are too small to trigger the huge zero case, but still too big for the default case; report too big error code for numbers that are truly too big
2016-01-28: even more tests
2016-01-28: fix 1.00000000*2^something to string conversion; (1.1111111111 too but it probably was not broken, at most imprecise); fix digit rounding when the entire number has been rounded away; tests
2016-01-27: fix that the wrong digit was used for rounding decision; make rounding function public; support ranges containing zero; tests
2016-01-26: reimplement truncation of binary float number to the same float number with the minimal amount of decimal digits, because the old function did not even try to get close to the precise binary float number (just picking any number in the range of decimals with the same binary float representation) and had a sign error when inserting a 5 in the max = min + 1 case.
2016-01-07: add test for odd/even bigdecimals
2015-10-24: more detailed warning
2015-06-25: fix over/underflow when handling really big/small numbers (e.g. 1E-19327352814 )
2015-06-25: workaround for overflow when rounding to absurd high precision
2015-06-25: ...
2015-06-25: fix variable overflow when handling overflow during addition/subtraction
2015-05-23: fix that TryStrToBigDecimal could cause a range check error on an invalid input instead returning "invalid input"
2015-04-10: fix that tests using random numbers were breaking each other
2015-04-10: fix hints/warnings
2015-04-09: fix the extended->bigdecimal conversion depended on the default decimal separator. marked as deprecated, since it should not be used
2015-01-04: fix range check error in comparison of big decimals (if a number had a large exponent, but no digits)
2014-12-26: renamed isInteger to isIntegral and BigDecimalToInteger to BigDecimalToLongint because the two different meanings of "integer" could have lead to confusion
2014-12-26: bigdecimalmath: fix unitialized flag in return value of unary minus operator
2013-11-19: use int64 to store exponent during string conversion because the internal representation works with exponents larger than maxint
2013-11-18: fix another string conversion hidden digit rounding bug
2013-11-18: fix that not enough digit bins were allocated when dividing an integer with a hidden digit
2013-11-18: fix that string conversion might return incorrectly 0 after rounding a hidden digit away and leaving a single bin
2013-11-18: fix exception due to truncated trailing zeros when an integer number is an exact multiple of the bin size
2013-11-17: bigdecimal documentation
2013-11-17: documentation
2013-11-16: fix round-half-to-even for negative integers, reduce rounding errors for floats, tests
2013-11-16: fix strtobigdecimal for numbers starting with '+', additional tests
2013-10-17: fix isinteger for numbers with high absolute exponent, but low precision
2013-10-07: fix 2.7 arm compilation
2013-10-03: fix invalid precision calculation for 0, and endless loop when dividing 0 by anything
2013-10-03: use enum instead boolean for FloatToBigDecimal conversion mode
2013-10-03: return 0, instead 0.0E0 with format exponent
2013-10-03: changed precision calculation in divide again: moved non-constant precision condition of integer-division from the loop condition to a precision update in the outer loop; fix that bigdecimaltostr added an useless dot, if the hidden digit was the first digit in the first fractional bin
2013-10-03: added print scientific option to bigdecimaltostr, fix that the hidden digit was not hidden if it was an digit in the integer part
2013-10-02: ssimplified BigDecimalToStr, removed implicit rounding (call round instead), fix round in case of overflow
2013-10-01: added single/extended to bigdecimal conversion
2013-09-30: fix prettiest converted number choosing if an overflow occured (as almost always if 1-digit bins are used)
2013-09-30: double to bigdecimal conversion with perfect accuracy
2013-09-29: rewrote/simplified division function: precision now means the count of non-zero digits (previously: count of digits after decimal point),  added fast 2^i and 5^i calculation, 10^i shift, precision function, trailing zeros counter, fix bigdecimaltostr inserting an invalid zero when printing a implicitily incremented number < 1
2013-09-27: improve parsing of numbers with super-large-exponent (> E21470000000):  do not throw exception in try-convert, return 0 if digit part is 0
2013-09-02: fix precision loss when casting between float<->double by temoving an intermediate cast to decimal
2013-09-01: big decimal: reject invalid input in trystrtodecimal consisting of . and e as invalid, do not crash trying to convert it
2013-09-01: merge to template
2013-09-01: big decimal: fix parsing of numbers without digits after decimal point (e.g. (.3))
2013-09-01: big decimal: fix comparisons involving (-0)
2013-09-01: fix rounding to digit far larger than input, turning it to zero
2013-09-01: big decimal: added round half up method
2013-08-31: big decimal: fix conversion to int, fix wrong result of integer division on big decimals with negative exponents (there were fractional digits)
2013-08-30: fix bigdecimal->extended conversion, fix hidden digit after multiplication
2013-08-25: renamed big float to big decimal
