changed: version of the library: 0.8.3 now
gitsvnid: svn://ttmath.org/publicrep/ttmath/trunk@120 e52654a788a9db11a3e90013d4bc506e
This commit is contained in:
parent
fca1bc1a33
commit
d8b829f4c5
520
CHANGELOG
520
CHANGELOG

@ 1,258 +1,262 @@


Version 0.8.3 prerelease:


* fixed: RclMoveAllWords() and RcrMoveAllWords() sometimes didn't return


the proper carry, (when 'bits' was greater than or equal to 'value_size')


this had impact on Rcl() and Rcr(), they also returned the wrong carry


* fixed: UInt::Div() didn't return a correct result when the divisor was equal 1


there was an error in UInt::DivInt()  when the divisor was 1 it returned


zero and the carry was set


* fixed: there was a TTMATH_REREFENCE_ASSERT error in Big::PowUInt() caused by: start.Mul(start)


* 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: template Big::FromBig(const Big<another_exp, another_man> & another)


didn't correctly set the exponent (when the mantisses had different size 


when 'man' was different from 'another_man')


this had impact on operator= too


sample:


Big<2,3> a = 100;


Big<3,5> b;


b = a; // b had a wrong value


* 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+ 1e10000) ^ 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 multipied 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', '1234e5'


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: UInt::FromString, added a parametr 'after_source'


which is pointing at the end of the parsing string


* changed: renamed: Big::PowUInt(UInt<pow_size> pow) > Big::Pow(UInt<pow_size> pow)


it returns 2 when there is: 0^0


* changed: renamed: Big::PowInt(Int<pow_size> pow) > Big::Pow(Int<pow_size> pow)


it returns 2 when there is: 0^0 or 0^(something)


* changed: renamed: Big::PowBUInt() > PowUInt(), Big::PowBInt() > Big::PowInt()


they return 2 when the arguments are incorrect (like above)


* changed: UInt::SetBitInWord(uint & value, uint bit) is taking the first argument by a reference now,


the specific bit is set in the 'value' and the method returns the last state of the bit (zero or one)


* changed: UInt::SetBit(uint bit_index)  it's using TTMATH_ASSERT now


* changed: the size of builtin variables (constants) in ttmathbig.h


now they consist of 256 32bit words


macro TTMATH_BUILTIN_VARIABLES_SIZE is equal: 256u on a 32bit platform and 128ul on a 64bit platform


* changed: the asm code in ttmathuint.h and ttmathuint64.h has been completely rewritten (much faster now)


* changed: in the parser: the form with operators '#' and '&' is as follows:


[+][#&]numeric_value


previous was: [+][#&][+]numeric_value


* changed: in the parser: the short form of multiplication has the same


priority as the normal multiplication, e.g.:


'2x^3' = 2 * (x^3)


previous the priority was greater than powering priority


previous: '2x^3' = (2*x) ^ 3


* added: UInt::GetBit(uint bit_index)  returning the state of the specific bit


* added: Big::operator=(double) and Big::Big(double)


* added: UInt::Pow(UInt<value_size> pow) and Int::Pow(Int<value_size> pow)


* added: global template functions in ttmath.h:


ValueType GradToRad(const ValueType & x, ErrorCode * err = 0)


ValueType RadToGrad(const ValueType & x, ErrorCode * err = 0)


ValueType DegToGrad(const ValueType & x, ErrorCode * err = 0)


ValueType DegToGrad(const ValueType & d, const ValueType & m,


const ValueType & s, ErrorCode * err = 0)


ValueType GradToDeg(const ValueType & x, ErrorCode * err = 0)


* added: Parser::SetDegRadGrad(int angle)  0 deg, 1 rad (default), 2 grad


this affects following functions (in the parser only): sin, cos, tan, cot,


asin, acos, atan, acot


* added: functions to the parser: gradtorad(grad), radtograd(rad), degtograd(deg),


degtograd(d,m,s), gradtodeg(grad)


* added: to Int::FromString(): parameter 'const char ** after_source = 0'


if exists it's pointing at the end of the parsed string


* added: to UInt::FromString(), Int::FromString(), Big::FromString():


parameter 'bool * value_read = 0'  (if exists) tells


whether something has actually been read (at least one digit)


* removed: Big::FromString() this method doesn't longer recognize operators


for changing the base ('#' and '&')






Version 0.8.2 (2008.06.18):


* added: UInt::BitNot2() this method has been proposed by


Arek <kmicicc AnTispam users.sourceforge.net>


* changed: Int::FromInt(const Int<argument_size> & p),


Int::FromInt(sint value) (it returns zero now)


Int::operator=(uint i)


Int::Int(uint i)


* added: Int::FromUInt(const UInt<argument_size> & p),


Int::FromUInt(uint value)


and appropriate constructors and assignment


operators as well


* changed: Big::FromInt(Int<int_size> value),


* added: Big::FromUInt(UInt<int_size> value),


Big::operator=(const UInt<int_size> & value)


Big::Big(const UInt<int_size> & value)


* changed: the parser is allowed to recognize values which


begin with a dot, e.g '.5' is treated as '0.5'


* added: a method Big::FromDouble(double) which converts from


standard double into a Big


* added: uint Big::ToDouble(double&)  converting into double


* added: Big::FromBig() and an operator= and a contructor


for converting from another kind of a Big class


* added: to the parser: avg(), sum()


* added: 'decimal_point' parameter into Big::ToString(...)


* fixed: Big::operator>> didn't use TTMATH_COMMA_CHARACTER_2 macro


* 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)


* changed: variables and functions are casesensitive now


* added: variables and functions can have underline characters


in their names


* changed: 'max_digit_after_comma' in Big::ToString()


remove the 2 state


* added: 'remove_trailing_zeroes' in Big::ToString()


it's either true or false


* fixed/changed: the way of using Big::SetSign()


the method do not check whether there is a zero or not now


(even if there's a zero the method can set a sign bit)


I changed this due to some prior errors


(errors corrected in revision 17, 49 and 58)






Version 0.8.1 (2007.04.17):


* fixed: Big::PowFrac(..) didn't return a correct error code


(when 'this' was negative)


* added: Root(x; index) (and to the parser as well)


* added: macro: TTMATH_PRERELEASE_VER (can be either zero or one)


* added: UInt::MulInt(int, UInt<int another_size>::&)


* added: Big::MulUInt(uint)


* changed: Big::MulInt(sint)


* added: Big::ToUInt(uint &)


* changed: Big::ToInt(sint&)


* changed: Factorial() it uses Big::MulUInt() at the beginning


(faster now especially more on a 32bit platform)


* added: doxygen.cfg for generating a documentation from the doxygen


* changed: UInt::Rcl(uint c=0) and UInt::Rcr(uint c=0) into


UInt::Rcl2(uint bits, uint c) and UInt::Rcr2(uint bits, uint c)


now they can move more than one bit and they are only private


* fixed: UInt::Rcl(uint bits, uint c) and UInt::Rcr(uint bits, uint c)


didn't correctly return a carry if the 'bits' were equal


to 'value_size*TTMATH_BITS_PER_UINT'


* changed: UInt::Rcl(uint bits, uint c) and UInt::Rcr(uint bits, uint c)


into UInt::Rcl(uint bits, uint c=0) and


UInt::Rcr(uint bits, uint c=0)


they are faster now when the bits is greater than a half of


the TTMATH_BITS_PER_UINT


* changed: UInt::CompensationToLeft() it's faster now


* changed: more small changes where there were UInt::Rcl(uint c=0) and


UInt::Rcr(uint c=0) used


* changed: as the Big type uses UInt::Rcl() and UInt::Rcr() a lot then


it is much faster now (about 525%)


* added: ASinh(), ACosh(), ATanh() /ATgh()/, ACoth() /ACtgh()/


and to the parser as well


* added: UInt::BitAnd(), UInt::BitOr(), UInt::BitXor(), UInt::BitNot(),


Big::BitAnd(), Big::BitOr(), Big::BitXor()


* added: to the parser: bitand(), bitor(), bitxor()


/band(), bor(), bxor()/


* changed: the way of parsing operators in the mathematical parser


(the parser is not too much greedy now)






Version 0.8.0 (2007.03.28):


* added: into the parser: SetFactorialMax()


* added: 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)/


* changed: class Objects in ttmathobjects.h has been completely rewritten,


we can change the names of userdefined variables or functions,


and the names are casesensitive now


* added: class History which is used in functions which take a lot of time


during calculating e.g. Factorial(x)


* added: Tg(x) a wrapper for Tan(x)


* changed: CTan(x) is Cot(x) now


* added: Ctg(x) a wrapper for Cot(x)


* added: ATg(x) a wrapper for ATan(x)


* changed: ACTan(x) is ACot(x) now


* added: ACtg(x) a wrapper for ACot(x)


* added: UInt::PrintTable() (for debugging etc.)


* changed: the methods Big::SetPi() Big::SetE() and Big::SetLn2() have


been rewritten, now they have 128 32bit words (it's about


1232 valid decimal digits)


* fixed: previous values from Big::SetPi() Big::SetE() and


Big::SetLn2() were not too much accurate (last 23 words were wrong)


* added: Big::SetLn10() (128 32bit words as well)


* added: macro TTMATH_BUILTIN_VARIABLES_SIZE which is equal 128u on


32bit platforms and 64ul on 64bit platforms (128/2=64)


* added: macros TTMATH_PLATFORM32 and TTMATH_PLATFORM64


* changed: a small optimisation in UInt::Mul2Big()


* added: at the end of ttmath.h: #include "ttmathparser.h"


this is for convenience for a programmer, he can only use #include


with ttmath.h even if he uses the parser


* added: to samples: big.cpp, parser.cpp


* added/changes/fixed: in copyconstructors and operators= in Int,


Uint and Big (more info in the commit log)


* renamed: Big::SetDotOne() into Big::Set05()


* changes: a few small optimisations in Big


* deleted: the word 'virtual' from destructors: UInt, Int, Big


(types in this library are not projected to be baseclasses for


another ones derived from them)


* and more small changes (look at the commit log)






Version 0.7.2 (2007.03.09):


* added: Big::Mod  the remainder from a division


* added: Big::Sgn  the 'sign' from the value (1,0,1)


* added: global functions Mod and Sgn too


* added: checking whether a user gives a correct value of a variable or function


(userdefined variables/functions in the mathematical parser)


* added: into the parser: logical operators: > < >= <= == != && 


* added: into the parser: logical functions: and() or() not() if()


* added: ErrorCode::err_unknown_operator when the parser couldn't read an operator






Version 0.7.1 (2007.02.27):


* fixed: the error 'overflow during printing' which was caused


by Big::FromInt(Int<int_size> value) (the sign has to be set at the end)


* fixed: many small errors


* added: ATan (arctan), ACTan (arc ctan) functions






Version 0.7.0 (2007.02.24):


* finished: support for 64bit platforms


* added: ASin (arcsin), ACos (arccos) functions






Version 0.6.4 (2007.01.29):


* fixed: the problem with a sign in the mathematical parser /(1) was 1/


* added: UInt::AddInt and UInt::SubInt


* changed: UInt::AddOne and UInt::SubOne (much faster now)


* added: UInt::SetBitInWord


* changed: UInt::SetBit (much faster now)


UInt::AddTwoUints renamed to UInt::AddTwoInts


UInt::FindLeadingBit32 renamed to UInt::FindLeadingBitInWord


UInt::Mul64 renamed to UInt::MulTwoWords


UInt::Div64 renamed to UInt::DivTwoWords


* added: UInt::SetBitInWord


* and more small changes in UInt type


* start adding support for Amd64 (not finished yet) (added ttmathuint64.h)






Version 0.6.3 (2007.01.22):


* changed: position of arguments (x and base) in logarithm functions are swapped


* changed: it's possible to use any multiplication algorithms in the same time


(macros UINT_MUL_VERSION_'X' have gone)


* added: ExceptionInfo, ReferenceError and RuntimeError classes


* changed: the mess in macros has been cleaned up


* added: TTMATH_RELEASE macro






Version 0.6.2 (2007.01.10):


* added: New division algorithm (radix b) where b is 2^32


Version 0.8.3 (2009.04.06):


* fixed: RclMoveAllWords() and RcrMoveAllWords() sometimes didn't return


the proper carry, (when 'bits' was greater than or equal to 'value_size')


this had impact on Rcl() and Rcr(), they also returned the wrong carry


* fixed: UInt::Div() didn't return a correct result when the divisor was equal 1


there was an error in UInt::DivInt()  when the divisor was 1 it returned


zero and the carry was set


* fixed: there was a TTMATH_REREFENCE_ASSERT error in Big::PowUInt() caused by: start.Mul(start)


* 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: template Big::FromBig(const Big<another_exp, another_man> & another)


didn't correctly set the exponent (when the mantisses had different size 


when 'man' was different from 'another_man')


this had impact on operator= too


sample:


Big<2,3> a = 100;


Big<3,5> b;


b = a; // b had a wrong value


* 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+ 1e10000) ^ 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 multipied 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', '1234e5'


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: renamed: Big::PowUInt(UInt<pow_size> pow) > Big::Pow(UInt<pow_size> pow)


it returns 2 when there is: 0^0


* changed: renamed: Big::PowInt(Int<pow_size> pow) > Big::Pow(Int<pow_size> pow)


it returns 2 when there is: 0^0 or 0^(something)


* changed: renamed: Big::PowBUInt() > PowUInt(), Big::PowBInt() > Big::PowInt()


they return 2 when the arguments are incorrect (like above)


* changed: UInt::SetBitInWord(uint & value, uint bit) is taking the first argument by a reference now,


the specific bit is set in the 'value' and the method returns the last state of the bit (zero or one)


* changed: UInt::SetBit(uint bit_index)  it's using TTMATH_ASSERT now


* changed: the size of builtin variables (constants) in ttmathbig.h


now they consist of 256 32bit words


macro TTMATH_BUILTIN_VARIABLES_SIZE is equal: 256u on a 32bit platform and 128ul on a 64bit platform


* changed: the asm code in ttmathuint.h and ttmathuint64.h has been completely rewritten


now UInt<> is faster about 1530% than UInt<> from 0.8.2


this has impact on Big<> too  it's faster about 10% now


* changed: in the parser: the form with operators '#' and '&' is as follows:


[+][#&]numeric_value


previous was: [+][#&][+]numeric_value


* changed: in the parser: the short form of multiplication has the same


priority as the normal multiplication, e.g.:


'2x^3' = 2 * (x^3)


previous the priority was greater than powering priority


previous: '2x^3' = (2*x) ^ 3


* added: UInt::GetBit(uint bit_index)  returning the state of the specific bit


* added: Big::operator=(double) and Big::Big(double)


* added: UInt::Pow(UInt<value_size> pow) and Int::Pow(Int<value_size> pow)


* added: global template functions in ttmath.h:


ValueType GradToRad(const ValueType & x, ErrorCode * err = 0)


ValueType RadToGrad(const ValueType & x, ErrorCode * err = 0)


ValueType DegToGrad(const ValueType & x, ErrorCode * err = 0)


ValueType DegToGrad(const ValueType & d, const ValueType & m,


const ValueType & s, ErrorCode * err = 0)


ValueType GradToDeg(const ValueType & x, ErrorCode * err = 0)


* added: Parser::SetDegRadGrad(int angle)  0 deg, 1 rad (default), 2 grad


this affects following functions (in the parser only): sin, cos, tan, cot,


asin, acos, atan, acot


* added: functions to the parser: gradtorad(grad), radtograd(rad), degtograd(deg),


degtograd(d,m,s), gradtodeg(grad)


* added: UInt::FromString, added a parametr 'after_source'


which is pointing at the end of the parsed string


* added: Int::FromString(): parameter 'const char ** after_source = 0'


if exists it's pointing at the end of the parsed string


* added: to UInt::FromString(), Int::FromString(), Big::FromString():


parameter 'bool * value_read = 0'  (if exists) tells


whether something has actually been read (at least one digit)


* added: Objects::IsDefined(const std::string & name)


returning true if such an object is defined


* removed: Big::FromString() this method doesn't longer recognize operators


for changing the base ('#' and '&')






Version 0.8.2 (2008.06.18):


* added: UInt::BitNot2() this method has been proposed by


Arek <kmicicc AnTispam users.sourceforge.net>


* changed: Int::FromInt(const Int<argument_size> & p),


Int::FromInt(sint value) (it returns zero now)


Int::operator=(uint i)


Int::Int(uint i)


* added: Int::FromUInt(const UInt<argument_size> & p),


Int::FromUInt(uint value)


and appropriate constructors and assignment


operators as well


* changed: Big::FromInt(Int<int_size> value),


* added: Big::FromUInt(UInt<int_size> value),


Big::operator=(const UInt<int_size> & value)


Big::Big(const UInt<int_size> & value)


* changed: the parser is allowed to recognize values which


begin with a dot, e.g '.5' is treated as '0.5'


* added: a method Big::FromDouble(double) which converts from


standard double into a Big


* added: uint Big::ToDouble(double&)  converting into double


* added: Big::FromBig() and an operator= and a contructor


for converting from another kind of a Big class


* added: to the parser: avg(), sum()


* added: 'decimal_point' parameter into Big::ToString(...)


* fixed: Big::operator>> didn't use TTMATH_COMMA_CHARACTER_2 macro


* 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)


* changed: variables and functions are casesensitive now


* added: variables and functions can have underline characters


in their names


* changed: 'max_digit_after_comma' in Big::ToString()


remove the 2 state


* added: 'remove_trailing_zeroes' in Big::ToString()


it's either true or false


* fixed/changed: the way of using Big::SetSign()


the method do not check whether there is a zero or not now


(even if there's a zero the method can set a sign bit)


I changed this due to some prior errors


(errors corrected in revision 17, 49 and 58)






Version 0.8.1 (2007.04.17):


* fixed: Big::PowFrac(..) didn't return a correct error code


(when 'this' was negative)


* added: Root(x; index) (and to the parser as well)


* added: macro: TTMATH_PRERELEASE_VER (can be either zero or one)


* added: UInt::MulInt(int, UInt<int another_size>::&)


* added: Big::MulUInt(uint)


* changed: Big::MulInt(sint)


* added: Big::ToUInt(uint &)


* changed: Big::ToInt(sint&)


* changed: Factorial() it uses Big::MulUInt() at the beginning


(faster now especially more on a 32bit platform)


* added: doxygen.cfg for generating a documentation from the doxygen


* changed: UInt::Rcl(uint c=0) and UInt::Rcr(uint c=0) into


UInt::Rcl2(uint bits, uint c) and UInt::Rcr2(uint bits, uint c)


now they can move more than one bit and they are only private


* fixed: UInt::Rcl(uint bits, uint c) and UInt::Rcr(uint bits, uint c)


didn't correctly return a carry if the 'bits' were equal


to 'value_size*TTMATH_BITS_PER_UINT'


* changed: UInt::Rcl(uint bits, uint c) and UInt::Rcr(uint bits, uint c)


into UInt::Rcl(uint bits, uint c=0) and


UInt::Rcr(uint bits, uint c=0)


they are faster now when the bits is greater than a half of


the TTMATH_BITS_PER_UINT


* changed: UInt::CompensationToLeft() it's faster now


* changed: more small changes where there were UInt::Rcl(uint c=0) and


UInt::Rcr(uint c=0) used


* changed: as the Big type uses UInt::Rcl() and UInt::Rcr() a lot then


it is much faster now (about 525%)


* added: ASinh(), ACosh(), ATanh() /ATgh()/, ACoth() /ACtgh()/


and to the parser as well


* added: UInt::BitAnd(), UInt::BitOr(), UInt::BitXor(), UInt::BitNot(),


Big::BitAnd(), Big::BitOr(), Big::BitXor()


* added: to the parser: bitand(), bitor(), bitxor()


/band(), bor(), bxor()/


* changed: the way of parsing operators in the mathematical parser


(the parser is not too much greedy now)






Version 0.8.0 (2007.03.28):


* added: into the parser: SetFactorialMax()


* added: 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)/


* changed: class Objects in ttmathobjects.h has been completely rewritten,


we can change the names of userdefined variables or functions,


and the names are casesensitive now


* added: class History which is used in functions which take a lot of time


during calculating e.g. Factorial(x)


* added: Tg(x) a wrapper for Tan(x)


* changed: CTan(x) is Cot(x) now


* added: Ctg(x) a wrapper for Cot(x)


* added: ATg(x) a wrapper for ATan(x)


* changed: ACTan(x) is ACot(x) now


* added: ACtg(x) a wrapper for ACot(x)


* added: UInt::PrintTable() (for debugging etc.)


* changed: the methods Big::SetPi() Big::SetE() and Big::SetLn2() have


been rewritten, now they have 128 32bit words (it's about


1232 valid decimal digits)


* fixed: previous values from Big::SetPi() Big::SetE() and


Big::SetLn2() were not too much accurate (last 23 words were wrong)


* added: Big::SetLn10() (128 32bit words as well)


* added: macro TTMATH_BUILTIN_VARIABLES_SIZE which is equal 128u on


32bit platforms and 64ul on 64bit platforms (128/2=64)


* added: macros TTMATH_PLATFORM32 and TTMATH_PLATFORM64


* changed: a small optimisation in UInt::Mul2Big()


* added: at the end of ttmath.h: #include "ttmathparser.h"


this is for convenience for a programmer, he can only use #include


with ttmath.h even if he uses the parser


* added: to samples: big.cpp, parser.cpp


* added/changes/fixed: in copyconstructors and operators= in Int,


Uint and Big (more info in the commit log)


* renamed: Big::SetDotOne() into Big::Set05()


* changes: a few small optimisations in Big


* deleted: the word 'virtual' from destructors: UInt, Int, Big


(types in this library are not projected to be baseclasses for


another ones derived from them)


* and more small changes (look at the commit log)






Version 0.7.2 (2007.03.09):


* added: Big::Mod  the remainder from a division


* added: Big::Sgn  the 'sign' from the value (1,0,1)


* added: global functions Mod and Sgn too


* added: checking whether a user gives a correct value of a variable or function


(userdefined variables/functions in the mathematical parser)


* added: into the parser: logical operators: > < >= <= == != && 


* added: into the parser: logical functions: and() or() not() if()


* added: ErrorCode::err_unknown_operator when the parser couldn't read an operator






Version 0.7.1 (2007.02.27):


* fixed: the error 'overflow during printing' which was caused


by Big::FromInt(Int<int_size> value) (the sign has to be set at the end)


* fixed: many small errors


* added: ATan (arctan), ACTan (arc ctan) functions






Version 0.7.0 (2007.02.24):


* finished: support for 64bit platforms


* added: ASin (arcsin), ACos (arccos) functions






Version 0.6.4 (2007.01.29):


* fixed: the problem with a sign in the mathematical parser /(1) was 1/


* added: UInt::AddInt and UInt::SubInt


* changed: UInt::AddOne and UInt::SubOne (much faster now)


* added: UInt::SetBitInWord


* changed: UInt::SetBit (much faster now)


UInt::AddTwoUints renamed to UInt::AddTwoInts


UInt::FindLeadingBit32 renamed to UInt::FindLeadingBitInWord


UInt::Mul64 renamed to UInt::MulTwoWords


UInt::Div64 renamed to UInt::DivTwoWords


* added: UInt::SetBitInWord


* and more small changes in UInt type


* start adding support for Amd64 (not finished yet) (added ttmathuint64.h)






Version 0.6.3 (2007.01.22):


* changed: position of arguments (x and base) in logarithm functions are swapped


* changed: it's possible to use any multiplication algorithms in the same time


(macros UINT_MUL_VERSION_'X' have gone)


* added: ExceptionInfo, ReferenceError and RuntimeError classes


* changed: the mess in macros has been cleaned up


* added: TTMATH_RELEASE macro






Version 0.6.2 (2007.01.10):


* added: New division algorithm (radix b) where b is 2^32




56
COPYRIGHT
56
COPYRIGHT

@ 1,28 +1,28 @@


Copyright (c) 20062009, Tomasz Sowa


All rights reserved.




Redistribution and use in source and binary forms, with or without


modification, are permitted provided that the following conditions are met:




* Redistributions of source code must retain the above copyright notice,


this list of conditions and the following disclaimer.




* Redistributions in binary form must reproduce the above copyright


notice, this list of conditions and the following disclaimer in the


documentation and/or other materials provided with the distribution.




* Neither the name Tomasz Sowa nor the names of contributors to this


project may be used to endorse or promote products derived


from this software without specific prior written permission.




THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"


AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE


IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE


ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE


LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR


CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF


SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS


INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN


CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)


ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF


THE POSSIBILITY OF SUCH DAMAGE.


Copyright (c) 20062009, Tomasz Sowa


All rights reserved.




Redistribution and use in source and binary forms, with or without


modification, are permitted provided that the following conditions are met:




* Redistributions of source code must retain the above copyright notice,


this list of conditions and the following disclaimer.




* Redistributions in binary form must reproduce the above copyright


notice, this list of conditions and the following disclaimer in the


documentation and/or other materials provided with the distribution.




* Neither the name Tomasz Sowa nor the names of contributors to this


project may be used to endorse or promote products derived


from this software without specific prior written permission.




THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"


AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE


IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE


ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE


LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR


CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF


SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS


INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN


CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)


ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF


THE POSSIBILITY OF SUCH DAMAGE.




52
README
52
README

@ 1,26 +1,26 @@


TTMath  a bignum library for C++




TTMath is a small library which allows one to perform arithmetic operations


with big unsigned integer, big signed integer and big floating point


numbers. It provides standard mathematical operations like adding,


subtracting, multiplying, dividing etc. With the library also goes


a mathematical parser which helps you solving input formulas read directly


from a user.




TTMath is developed under the BSD licence which means that it is free


for both personal and commercial use.




The library has some technical limitations:


* there are only two platforms that are supported: x86 and x86_64,


* you can use this library only with the C++ programming language.




The main goal of the library is to allow one to use big values in the same


way as the standard types like int, float, etc. It does not need to be


compiled first because the whole library is written as the C++ templates.


This means only C++ developers can use this library and one thing they have


to do is to use 'include' directive of the preprocessor. How big the


values can be is set directly in the source code by the programmer.




Author: Tomasz Sowa <t.sowa@slimaczek.pl>


Project pages: http://ttmath.slimaczek.pl


http://sourceforge.net/projects/ttmath


TTMath  a bignum library for C++




TTMath is a small library which allows one to perform arithmetic operations


with big unsigned integer, big signed integer and big floating point


numbers. It provides standard mathematical operations like adding,


subtracting, multiplying, dividing etc. With the library also goes


a mathematical parser which helps you solving input formulas read directly


from a user.




TTMath is developed under the BSD licence which means that it is free


for both personal and commercial use.




The library has some technical limitations:


* there are only two platforms that are supported: x86 and x86_64,


* you can use this library only with the C++ programming language.




The main goal of the library is to allow one to use big values in the same


way as the standard types like int, float, etc. It does not need to be


compiled first because the whole library is written as the C++ templates.


This means only C++ developers can use this library and one thing they have


to do is to use 'include' directive of the preprocessor. How big the


values can be is set directly in the source code by the programmer.




Author: Tomasz Sowa <t.sowa@slimaczek.pl>


Project pages: http://ttmath.slimaczek.pl


http://sourceforge.net/projects/ttmath




2514
doxygen.cfg
2514
doxygen.cfg
File diff suppressed because it is too large
Load Diff

@ 65,7 +65,7 @@


#define TTMATH_MAJOR_VER 0


#define TTMATH_MINOR_VER 8


#define TTMATH_REVISION_VER 3


#define TTMATH_PRERELEASE_VER 1


#define TTMATH_PRERELEASE_VER 0






/*!




Loading…
Reference in New Issue