Commit Graph

  • 28964d30f7 merged: x86_64 asm code for Microsoft Visual compiler file: ttmathuint_x86_64_msvc.asm from chk branch (original was: ttmathuint_x86_amd64_msvc.asm) (this file should be compiled first because MS VC doesn't support inline assembler in x86_64 mode) Tomasz Sowa 2009-09-07 02:03:00 +0000
  • 0d71b0cec2 merged: AboutEqual() from chk branch deleted: properties svn:mime-type from ttmath.h (it was for testing viewvc) Tomasz Sowa 2009-09-05 16:43:38 +0000
  • 3544a1df3c setting svn:mime-type to text/plain for ttmath.h Tomasz Sowa 2009-08-24 05:08:13 +0000
  • 00519ff26d added/fixed: special version of ToString_LogBase() method in single thread environment the previous version of the method didn't store the calculated logarithms Tomasz Sowa 2009-08-04 18:55:18 +0000
  • 799e2c32a7 added: multithread support for Big<> class you should compile with TTMATH_MULTITHREADS and use TTMATH_MULTITHREADS_HELPER macro somewhere in your *.cpp file added file: ttmaththreads.h (look there for more info) Tomasz Sowa 2009-08-04 18:23:35 +0000
  • 51e938eaa7 - update to current root trunc's version - update to root trunc's UNICODE support chk Christian Kaiser 2009-07-29 10:46:48 +0000
  • e102086f80 - fixed a bug in 64 bit ASM for MSVC Christian Kaiser 2009-07-28 16:34:04 +0000
  • 53547cfab5 * added: global Gamma() function * added: gamma() function to the parser * added: Big::IsInteger() method returns true if the value is integer * added: CGamma<ValueType> class is used with Gamma() and Factorial() in multithreaded environment * changed: Factorial() is using the Gamma() function now * removed: Parser<>::SetFactorialMax() method the factorial() is such a fast now that we don't need the method longer * removed: ErrorCode::err_too_big_factorial Tomasz Sowa 2009-07-16 03:22:29 +0000
  • d3a64b79ca added: support for wide characters (wchar_t) wide characters are used when macro TTMATH_USE_WCHAR is defined this macro is defined automatically when there is macro UNICODE or _UNICODE defined some types have been changed char -> tt_char std::string -> tt_string std::ostringstream -> tt_ostringstream std::ostream -> tt_ostream std::istream -> tt_istream normally tt_char is equal char but when you are using wide characters then tt_char will be wchar_t (and so on) (all typedef's are in ttmathtypes.h) Tomasz Sowa 2009-07-02 01:04:25 +0000
  • 51b2c974a1 - changed "AboutEqualWithoutSign()" to "AboutEqual()" because we need to take the sign into account! Christian Kaiser 2009-06-26 15:24:27 +0000
  • 5597373093 - "streamlined" ttmathconfig.h a bit: a) Unicode support if TTMATH_USE_WCHAR is set (compiler must know wchar_t etc, of course) b) threading synchonisation uses WIN32 instead of __MSVC__ define, as this is OS dependent, not compiler dependent Christian Kaiser 2009-06-26 11:14:51 +0000
  • de58378488 - added AboutEqualWithoutSign() to big<> to allow 'suppression' of some unexpected results (that are perfectly logical though, given the possibly unrepresentable nature of binary representation of decimals) like Christian Kaiser 2009-06-25 14:11:17 +0000
  • de64608eba Merged against the current original ttmath trunk Christian Kaiser 2009-06-25 11:07:55 +0000
  • b80f73f16b creating 0.8.x branch of the ttmath library (copied from trunk) Tomasz Sowa 2009-06-16 20:28:52 +0000
  • c70a947c07 updated changelog to previous commit 0.8.5 Tomasz Sowa 2009-06-16 18:33:20 +0000
  • 8972fdfdb3 fixed: Sqrt(), Root() and Factorial() didn't correctly treat the NaN flag fixed: some methods should set 'err_improper_argument' when the argument is a NaN object (was: err_overflow) changed: version of the library: 0.8.5 now Tomasz Sowa 2009-06-16 18:31:39 +0000
  • 019a902fed changed: small optimization in Big::ExpSurrounding0() and Big::LnSurrounding1() the remainder from a division '%' was changed with a bitwise And operation '&' ((i % 5) == 0) was changed to: ((i & 3) == 0) - it means ((i % 4) == 0) now the test if performed after 4 iterations (early were after 5 iterations) we can do that when the divisor is a power of 2 changed: optimization in Factorial() we're testing WasStopSignal() only after a few iterations it's faster now about 4 times on GCC 4.3.3 (when stop object is provided to the factorial) Tomasz Sowa 2009-06-14 19:55:15 +0000
  • 74553109a5 fixed: (performance) in Big::LnSurrounding1() and Big::ExpSurrounding0() we can copy 'old_value = *this' only when 'testing' is true Tomasz Sowa 2009-06-14 18:45:36 +0000
  • 9e42a5a9fd fixed: Big::FromDouble() on a 32 bit platform: SetNaN() should be SetNan() /*compilation error*/ Tomasz Sowa 2009-06-11 15:03:22 +0000
  • 1b6858616d fixed: in Big::FromDouble(): SetNaN() should be SetNan(); Tomasz Sowa 2009-06-11 10:04:50 +0000
  • d789ac5396 added: using NaN flag in method Big::ToDouble() and Big::FromDouble() changed: some cosmetic changes to get rid of warnings generated by MS Visual 2008 when warning level is 4 changed: names of labels in asm code: p to ttmath_loop, end to ttmath_end p2 to ttmath_loop2 Robert Muir reported that there was a confict with boost::end Tomasz Sowa 2009-06-11 02:31:41 +0000
  • be8913866a - 32 bit ASM code and ASSERTS did not work as the ASM code put its result in EAX, but the ASSERT afterwards did destroy the EAX's contents, of course. Christian Kaiser 2009-05-28 14:42:19 +0000
  • b31d34ebdd - fixed a bug in ttmath.g (missing closing brace in Cos()) Christian Kaiser 2009-05-28 11:52:31 +0000
  • be821b59dd - optimizations Christian Kaiser 2009-05-28 11:31:29 +0000
  • bb2583649e added: to Big<> class: support for NaN flag (Not a Number) bool Big::IsNan() - returns true if the NaN flag is set void Big::SetNan() - sets the NaN flag The NaN flag is set by default after creating an object: Big<1, 2> a; // NaN is set (it means the object has not a valid number) std::cout << a; // cout gives "NaN" a = 123; // now NaN is not set std::cout << a; // cout gives "123" The NaN is set if there was a carry during calculations a.Mul(very_big_value); // a will have a NaN set The NaN is set if an argument is NaN too b.SetNan(); a.Add(b); // a will have NaN because b has NaN too If you try to do something on a NaN object, the result is a NaN too a.SetNan(); a.Add(2); // a is still a NaN The NaN is set if you use incorrect arguments a.Ln(-10); // a will have the NaN flag The only way to clear the NaN flag is to assign a correct value or other correct object supposing 'a' has NaN flag, to remove the flag you can either: a = 10; a.FromInt(30); a.SetOne(); a.FromBig(other_object_without_nan); etc. changed: renamed macro CONSTANTSGENERATOR to TTMATH_CONSTANTSGENERATOR Tomasz Sowa 2009-05-26 23:13:22 +0000
  • de1e7ac957 more optimizations for MSVC assembler (parallelism, prefetch optimization, loop alignment, ...) Christian Kaiser 2009-05-20 08:48:51 +0000
  • fdc292e91a current chk version - too many changes on both sides for now ;-( Christian Kaiser 2009-05-19 10:50:41 +0000
  • 5e5a106605 changed: a little changes in all asm code it should be a little faster Tomasz Sowa 2009-05-17 00:04:42 +0000
  • eaa19dd46a added: uint UInt::Mul3(const UInt<value_size> & ss2) void UInt::Mul3Big(const UInt<value_size> & ss2, UInt<value_size*2> & result) a new multiplication algorithm: Karatsuba multiplication, on a vector UInt<100> with all items different from zero this algorithm is faster about 3 times than Mul2Big(), and on a vector UInt<1000> with all items different from zero this algorithm is faster more than 5 times than Mul2Big() (measured on 32bit platform with GCC 4.3.3 with -O3 and -DTTMATH_RELEASE) added: uint MulFastest(const UInt<value_size> & ss2) void MulFastestBig(const UInt<value_size> & ss2, UInt<value_size*2> & result) those methods are trying to select the fastest multiplication algorithm changed: uint Mul(const UInt<value_size> & ss2, uint algorithm = 100) void MulBig(const UInt<value_size> & ss2, UInt<value_size*2> & result, uint algorithm = 100) those methods by default use MulFastest() and MulFastestBig() changed: changed a little Mul2Big() to cooperate with Mul3Big() changed: names of methods in macros TTMATH_LOG() added: uint AddVector(const uint * ss1, const uint * ss2, uint ss1_size, uint ss2_size, uint * result) uint SubVector(const uint * ss1, const uint * ss2, uint ss1_size, uint ss2_size, uint * result) three forms: asm x86, asm x86_64, no-asm those methods are used by the Karatsuba multiplication algorithm Tomasz Sowa 2009-05-15 22:27:04 +0000
  • 9b576ddbe2 - corrected 64 bit assembler code (ebx was not preserved) - minor optimization Christian Kaiser 2009-05-15 14:42:43 +0000
  • a8c3a506ea MSVC ASM improvements (no register saves necessary, as this is done automatically by the C compiler) Christian Kaiser 2009-05-14 12:59:12 +0000
  • 3ba94dca90 git-svn-id: svn://ttmath.org/publicrep/ttmath/branches/chk@145 e52654a7-88a9-db11-a3e9-0013d4bc506e Christian Kaiser 2009-05-11 12:30:05 +0000
  • cae50cd425 - merged Tomasz' version 0.8.5 Christian Kaiser 2009-05-11 12:25:25 +0000
  • 939d0f7519 fixed: Big::Mod(x) didn't correctly return a carry and the result was sometimes very big (even greater than x) fixed: global function Mod(x) didn't set an ErrorCode object fixed: global function Round() didn't test a carry now it sets ErrorCode object changed: function Sin(x) to Sin(x, ErrorCode * err=0) when x was very big the function returns zero now it sets ErrorCode object to err_overflow and the result is undefined the same is to Cos() function changed: PrepareSin(x) is using Big::Mod() now when reducing 2PI period should be a little accurate especially on a very big 'x' Tomasz Sowa 2009-05-11 01:50:00 +0000
  • 05b67e7103 changed: corrected spaces in changelog Tomasz Sowa 2009-05-09 01:34:45 +0000
  • 3231780a85 changed: version of the library: 0.8.4 0.8.4 Tomasz Sowa 2009-05-08 19:13:25 +0000
  • 1bae0d6cb8 changed: in ttmathtypes.h 'typedef unsigned long long int ulint' has been put inside '#ifdef TTMATH_NOASM' in order to not confuse a compiler while compiling with strict iso c++ (errors about not defining 'long long' in the c++ standard) Tomasz Sowa 2009-05-08 18:40:32 +0000
  • 277dd72fb6 fixed: UInt::AddInt() in no-asm code has incorrect assertion changed: UInt::SubInt() in no-asm code is a little faster now changed: small cosmetic changes in commentaries deleted: some debug #ifdef's from UInt::Div() (in no-asm code) Tomasz Sowa 2009-05-08 18:14:00 +0000
  • 00e39d3608 added thread-safety to static history buffers (factorial and logarithm) for MSVC Christian Kaiser 2009-05-07 11:37:10 +0000
  • 37379d2f1f - fulfills test file log diff (32 and 64 bit) - macro for issuing the debug output to something else than std::out if specified Christian Kaiser 2009-05-07 09:33:57 +0000
  • d7b67e4d47 - minor changes for ASSERT macros - some more "unification" of 32 and 64 bits in typedefs - use of 'char' instead of 'unsigned char', as I may hope that 'char' usually is set to 'unsigned' in most development environments Christian Kaiser 2009-05-06 15:47:15 +0000
  • c91bd24e98 - support for MS specific code (__int64 etc) and warnings - support for AMD64 assembler (not thoroughly tested) - support for UNICODE I/O (strings and streams) Christian Kaiser 2009-05-06 15:11:29 +0000
  • cbc12db22f dummy commit (user/password checking) Christian Kaiser 2009-05-06 13:24:00 +0000
  • 3e9bd5b093 creating a chk branch for ChristianK Tomasz Sowa 2009-05-06 13:16:56 +0000
  • a7a7eb7808 fixed: deleted default values for variables in some methods (file ttmathuint_x86.h) (they should only be put in declaration) Tomasz Sowa 2009-05-05 07:47:10 +0000
  • e665f91682 fixed: the problem with GCC optimization on x86_64 sometimes when using -O2 or -O3 GCC doesn't set correctly the stack pointer (actually the stack is used for other things) and you can't use instructions like push/pop in assembler code. All the asm code in x86_64 have been rewritten, now instructions push/pop are not used, other thing which have access to stack (like "m" (mask) constraints in Rcl2 and Rcr2) have also gone away, now the library works well with -O2 and -O3 and the asm code is a little faster Tomasz Sowa 2009-05-05 07:20:10 +0000
  • 85945b2bb0 added: ttmathuint_x86.h, ttmathuint_x86_64.h, ttmathuint_noasm.h, all the methods which are using assembler code have been rewritten to no-asm forms, now we have: 1. asm for x86 file: ttmathuint_x86.h 2. asm for x86_64 file: ttmathuint_x86_64.h 3. no asm file: ttmathuint_noasm.h (it's used when macro TTMATH_NOASM is defined) The third form can be used on x86 and x86_64 as well and on other platforms with a little effort. (Temporarily I left there some '#ifdef's for debugging.) Tomasz Sowa 2009-05-04 20:51:12 +0000
  • 1efe39686b added: UInt::PrintLog(const char * msg, std::ostream & output) used for debugging purposes by macro TTMATH_LOG(msg) (it is used in nearly all methods in UInt class) added: macro TTMATH_DEBUG_LOG: when defined then TTMATH_LOG() put some debug information (to std::cout) Tomasz Sowa 2009-05-01 14:53:21 +0000
  • d8b829f4c5 changed: version of the library: 0.8.3 now 0.8.3 Tomasz Sowa 2009-04-06 16:34:19 +0000
  • fca1bc1a33 added: Objects::IsDefined(const std::string & name) returning true if such an object is defined Tomasz Sowa 2009-04-02 05:21:49 +0000
  • c65857297b 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', '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...' ) 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) added: the parser checks itself for the operators for changing the base (operators '#' and '&') changed: in the parser: the form with operators '#' and '&' is as follows: [-|+][#|&]numeric_value previous was: [-|+][#|&][-|+]numeric_value removed: Big::FromString() this method doesn't longer recognize operators for changing the base ('#' and '&') 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 Tomasz Sowa 2009-03-28 17:40:36 +0000
  • f530635262 changed: doxygen.cfg changed lines ends: dos mode to unix mode (\r\n to \n) Tomasz Sowa 2009-03-27 22:35:41 +0000
  • 9327b4ebd4 changed: updated CHANGELOG to previous commit Tomasz Sowa 2009-03-27 22:31:54 +0000
  • d695785cbb 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 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) removed: Big::Ln() and Big::Log() some old info was removed Tomasz Sowa 2009-03-27 22:26:51 +0000
  • 85d1b87ac0 added: '#ifndef __GNUC__' to Big::Pow() where is using '#pragma warning' in order to not confuse GCC Tomasz Sowa 2009-03-25 02:01:42 +0000
  • bfdc6d3df3 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" (the was 10e100000000 iterations in PowInt()) Tomasz Sowa 2009-03-25 01:12:00 +0000
  • 5668fbecf5 changed: current info in CHANGELOG Tomasz Sowa 2009-03-24 21:10:17 +0000
  • 3899b8631c 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 Tomasz Sowa 2009-03-24 20:34:33 +0000
  • 460608859c added: 'constgen' directory -- there is a program there to generate some constants used in ttmathbig.h changed: the size of built-in 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 added: macro CONSTANTSGENERATOR which is useful for generating constants (it's used by 'gen' program in 'constgen' directory) after declaring this macro the methods: ExpSurrounding0() and LnSurrounding1() will be public visible and the inner loop can do more iterations than TTMATH_ARITHMETIC_MAX_LOOP changed: in methods: ExpSurrounding0() and LnSurrounding1() - the way of comparising with the last word (now we're comparing not with the last state but with a state from a few words back) Tomasz Sowa 2009-03-12 20:54:46 +0000
  • 978815f12d 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" 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) added: UInt::GetBit(uint bit_index) - returning the state of the specific bit changed: UInt::SetBit(uint bit_index) - it's using TTMATH_ASSERT now changed: Big::Mod2() - it's using mantissa.GetBit() now added: Big::operator=(double) and Big::Big(double) added: TTMATH_ASSERT somewhere in ttmathuint64.h added: UInt::Pow(UInt<value_size> pow) and Int::Pow(Int<value_size> pow) Tomasz Sowa 2009-03-11 19:05:13 +0000
  • 404727f3de changed: small changes in: UInt:: RclMoveAllWords, UInt::RcrMoveAllWords, UInt::SetBitInWord(), UInt::FindLeadingBitInWord, UInt::SetBitInWord 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 this error was from the beginning of the TTMath library Tomasz Sowa 2009-03-07 22:54:42 +0000
  • 4aebe9aa18 fixed: UInt::Rcr2_one used edx but there was not a push/pop instruction (it was in the intel syntax, edx changed to ecx) Tomasz Sowa 2009-03-04 22:04:36 +0000
  • e18201ba35 changed: UInt::Div3_Normalize - faster now Tomasz Sowa 2009-03-03 20:41:00 +0000
  • 5b24101a83 added: macros TTMATH_ASSERT to: UInt::AddInt UInt::AddTwoInts UInt::SubInt UInt::SetBitInWord fixed: UInt::FindLeadingBitInWord(x) didn't correctly return result -1 when the x was 0 the mistake made by Thomas Braby, it was not in the 0.8.2 release changed: tests: we do not test for lahf/sahf instructions now (in 64bit code) we don't use these instructions Tomasz Sowa 2009-02-17 11:37:12 +0000
  • 6da0386a2d added: tests: addtwoints for 64bits Tomasz Sowa 2009-02-16 18:11:38 +0000
  • c7c859fc76 changed: UInt::FromString(...) skips the input digits when the value is too big added: tests: addtwoints (only 32bit) Tomasz Sowa 2009-02-16 17:57:34 +0000
  • 1d81dc75ff 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 Tomasz Sowa 2008-10-31 20:43:08 +0000
  • 712bfc9c3b added: UInt::Rcl2_one(c) and UInt::Rcr2_one(c) they are much faster than UInt::Rcl2(1,c) and Rcr2(1,c) changed: UInt::Rcl() and UInt::Rcr() we don't longer make the things with moving a half in the left and a half in the right we simply use Rcl2_one() and Rcl2() /Rcr2_one() and Rcr2()/ Tomasz Sowa 2008-10-30 23:38:24 +0000
  • 91e7badb62 changed: asm code in: UInt::Sub, UInt::SubInt (32 and 64bit) (much faster now) changed: asm code in: UInt::Rcl2, UInt::Rcr2 (32 and 64bit) previous versions of Rcl2 and Rcr2 had O(n2) complexity, now they have O(n) and are much faster changed: now we do not use LAHF and SAHF instructions (both in 32 and 64 bit code) Tomasz Sowa 2008-10-29 21:54:27 +0000
  • cfd719cca2 changed: asm code in UInt::Add, UInt::AddInt, AddTwoInts 32 and 64 bits, much faster now added: tests for UInt::AddInt fixed: tests: test_lahf() returned incorrect value for 32bit platform Tomasz Sowa 2008-10-25 20:05:51 +0000
  • f1115a2ce9 added: test of the LAHF and SAHF instructions (on a 64bit platform) Tomasz Sowa 2008-10-23 20:17:40 +0000
  • ca51020fe6 changed: 64bit asm code didn't want to compile there were used 'lahf' and 'sahf' instructions probably they are supported in a new version of GCC with '-msahf' option but GCC 4.2.1 has no such option at the moment I'm using opcodes: lahf -> 9f sahf -> 9e Warning! these instructions are not on all 64bit processors from: http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html "Early Intel CPUs with Intel 64 lacked LAHF and SAHF instructions supported by AMD64 until introduction of Pentium 4 G1 step in December 2005." changed: UInt::Add on 64bit platform changed: UInt::Add on 32bit platform (a little) Tomasz Sowa 2008-10-22 18:56:04 +0000
  • f8f324f98f changed: UInt::FromString, added a parametr 'after_source' which is pointing at the end of the parsing string added: initial import of tests: testing UInt::Add method (not finished) Tomasz Sowa 2008-10-21 17:42:41 +0000
  • cdd95f602c some optimisations made in assembler code by thomasbraby at zoom.co.uk (not verified yet) modified files: ttmathuint.h ttmathuint64.h I've changed a little the intel syntax (it didn't want to compile) Tomasz Sowa 2008-10-17 09:57:36 +0000
  • 98c2379182 changed: small changes especially cosmetic in documentation (commentaries) changed: version of the library: now 0.8.2 0.8.2 Tomasz Sowa 2008-06-18 00:33:05 +0000
  • 2933213a02 changed: info about Big::ToString() the changes which were made in revision 60 and 63 (I forgot to change the info there) Tomasz Sowa 2008-06-07 16:17:37 +0000
  • 4d0241c9c9 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) added: in Big::MulInt() checking whether the values are zeros and if so the metdhod returns zero immediately removed: file TODO (I didn't use it) Tomasz Sowa 2008-06-07 14:07:59 +0000
  • 4f3f05fa9d 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 Tomasz Sowa 2008-04-12 08:46:09 +0000
  • f139e6457c 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 case-sensitive now added: variables and functions can have underline characters in their names Tomasz Sowa 2008-01-23 23:45:42 +0000
  • 29bb4fb3f7 added: 'decimal_point' parameter into Big::ToString(...) fixed: Big::operator>> didn't use TTMATH_COMMA_CHARACTER_2 macro Tomasz Sowa 2007-12-09 20:07:45 +0000
  • 5002f435ae fixed: there was an error in Big::FromInt(Int<int_size> value) SetSign() was used before the object was initialized Tomasz Sowa 2007-11-09 13:28:36 +0000
  • 61886fc829 added: Big::FromBig() and an operator= and a contructor for converting from another kind of a Big class added: to the parser: avg(), sum() Tomasz Sowa 2007-11-04 21:56:04 +0000
  • 25f876762a fixed: Big::FromDouble(double) sometimes sets a wrong value there was SetSign() used when the value was not defined, and also was a small mistake when the mantissa was equal one word (on 32bit platforms) added: uint Big::ToDouble(double&) - converting into double Tomasz Sowa 2007-07-29 22:42:45 +0000
  • 692ff5406e added: a method Big::FromDouble(double) for 64bit platforms Tomasz Sowa 2007-07-23 21:29:27 +0000
  • 669698c6d7 added: method Big::FromDouble(double) which converts from standard double into a Big<> (only 32bit platforms) Tomasz Sowa 2007-07-22 23:20:09 +0000
  • 93ba8ce17d changed: the parser is allowed to recognize values which begin with a dot, e.g '.5' is treated as '0.5' Tomasz Sowa 2007-07-22 14:15:44 +0000
  • d27cabec93 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) Tomasz Sowa 2007-05-27 23:33:47 +0000
  • bc9d528a75 added: Uint::BitNot2() this method has been proposed by Arek <kmicicc AnTispam users.sourceforge.net> Tomasz Sowa 2007-04-23 21:35:55 +0000
  • bb16c871c9 changed: the way of parsing operators in the mathematical parser (the parser is not too much greedy now) 0.8.1 Tomasz Sowa 2007-04-17 13:42:19 +0000
  • 2116418f08 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()/ Tomasz Sowa 2007-04-13 18:14:11 +0000
  • 062881900a changed: small changes in: Big::SetPi(), Big::Set05Pi(), Big::Set2Pi(), Big::ChangeSign() added: ASinh(), ACosh(), ATanh() /ATgh()/, ACoth() /ACtgh()/ and to the parser as well Tomasz Sowa 2007-04-12 17:17:22 +0000
  • 0170572f84 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 Tomasz Sowa 2007-04-11 22:14:17 +0000
  • e40ed603c6 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) Tomasz Sowa 2007-04-07 22:21:31 +0000
  • c97ebf282f 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) Tomasz Sowa 2007-04-05 19:08:15 +0000
  • 837490e8b9 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 user-defined variables or functions, and the names are case-sensitive 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 2-3 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 fixed: constructor Big::Big(uint) - it was wrong because it was using the method Big::FromInt(sint) which could produce wrong values (if the 'uint' couldn't correctly be casted into the 'sint') added: Big::FromUInt(uint) changed: Big::FromInt(sint), Big::SetOne(), renamed Big::SetDotOne() into Big::Set05() (they are a little faster now) added: Big::operator=(uint) changed: in 64bit mode: constructor: Big::Big(int) added: in 64bit mode: constructor: Big::Big(unsigned int), operators: Big::operator=(signed int) and Big::operator=(unsigned int) (these operators and the constructor take a 32bit value) deleted: the word 'virtual' from destructors: UInt, Int, Big (types in this library are not projected to be base-classes for another ones derived from them) changed: UInt::operator=(uint), UInt::UInt(uint), Int::operator=(sint), Int::Int(sint) added: UInt::FromUInt(uint), UInt::operator=(sint), UInt::UInt(sint), Int::FromInt(sint), Int::operator=(uint), Int::Int(uint), Int::operator==(const Int<>&), Int::operator!=(const Int<>&) added: in 64bit mode: UInt::operator=(unsigned int), UInt::UInt(unsigned int), UInt::operator=(signed int), UInt::UInt(signed int) (these operators and the constructors take a 32bit value) added: in 64bit mode: Int::operator=(signed int), Int::Int(signed int), Int::operator=(unsigned int), Int::Int(unsigned int) (these operators and the constructors take a 32bit value) 0.8.0 Tomasz Sowa 2007-03-28 22:27:57 +0000
  • abb8f292ab added: into the parser: SetFactorialMax() Tomasz Sowa 2007-03-21 16:01:50 +0000
  • 06e0294841 added: checking whether an user gives a correct value of a variable or function (user-defined variables/functions in the mathematical parser) added: into the parser: logical operators: > < >= <= == != && || added: into the parser: logical functions: and() or() not() if() changed: a method for looking for a mathematical operator (there's the operators table now) added: ErrorCode::err_unknown_operator when the parser couldn't read an operator Tomasz Sowa 2007-03-09 19:05:38 +0000
  • 1a12d3692a 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 Tomasz Sowa 2007-02-28 17:52:53 +0000
  • e14e65002b fixed: removed 'const' from some methods (operators: += -= *= /=) in the Big class fixed: bad sizes in tables in some 'Set...' methods in the Big class fixed: Big::FromInt(Int<int_size> value) - the sign must be set at the end because SetSign checks whether there is zero and depends on it sets the sign or not (this was the stupid error which causes sometimes the errors 'overflow during printing') fixed: Big::SetMin - the sign must be set at the and changed: Big::Pow can use the reference now (the problem was actually with the Big::FromInt) added: a namespace 'auxiliaryfunctions' (in ttmath.h) added: ATan - arc tan, ACTan - arc ctan Tomasz Sowa 2007-02-27 20:18:33 +0000
  • d04632ea74 fixed: constraints in asm operands for gcc added: UInt::SetFromTable for 64bit code (now the support for 64bit platforms seems to be completed) added: asin - arc sin, acos - arc cos Tomasz Sowa 2007-02-24 18:59:05 +0000