On 7/7/17, nore...@z505.com <nore...@z505.com> wrote: > For integers beyond 64 bit, or even beyond 32 bit on a 64 bit machine, > why can't the math be broken down into peices the way a human does it on > paper, and then theoretically any number can be added and subtracted, > even if it is beyond 32/64 bit? > > Example: > > type TSuperLargeInt = string; > > var > i, j: TSuperLargeInt; > output: TSuperLargeInt; > begin > i := '100000000000000000009'; > j := '100000000000000000001'; > output := AddLargeInts(i,j); > writeln(output); > end.
http://svn.code.sf.net/p/flyingsheep/code/trunk/wtf/ncalc.pp does exactly that (all dependenies are also found at http://svn.code.sf.net/p/flyingsheep/code/trunk/wtf). It can handle integers (and only integers) up to 2GB digits with absolut precision. It can handle GoogolPlex. Calculate 9^99 with absolute precision: 29512665430652752148753480226197736314359272517043832886063884637676943433478020332709411004889 Fac(100)? 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000 It's not lightning fast, but there is room for optimization I guess. Bart _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal