Hi, I am working with large matrices (~100x100) and had trouble with restoring archives of them. I wrote the attached test program which just adds the same expression to an archive n times (with a unique name each time). For any n, the expression can always be retrieved from the original archive. But reloading it from file into a new archive object only succeeds for n<108 (in this case - other size expressions have different limits). Great package though. Our problem solution went from several hours under Macsyma to just 36 seconds with GiNaC! Will System: GiNaC 0.8.0 CLN 1.1.0 Linux Mandrake 7.2 AMD 700Mhz 128Mb
Hi! On Fri, Mar 30, 2001 at 04:20:18PM +0100, Will Woods wrote:
But reloading it from file into a new archive object only succeeds for n<108 (in this case - other size expressions have different limits).
There was a bug when there were exactly 128 items of any kind (strings in this case) in an archive. It is fixed now in the CVS.
Great package though. Our problem solution went from several hours under Macsyma to just 36 seconds with GiNaC!
We're all happy that you like it. :-) Bye, Christian -- / Coding on PowerPC and proud of it \/ http://www.uni-mainz.de/~bauec002/
Hello again, The problem appears to be with the routines write_unsigned(..) and read_unsigned(..) in archive.cpp. They work fine for values less than 128, but as an example, try passing 128. The former writes only one byte (and maybe there should be a char cast there??), but the read algorithm reads in two bytes. Sorry I don't have the fix for this, I just implemented a hack of always writing out precisely four bytes every time, which works for me at the moment... Hope this helps. Will On Fri, 30 Mar 2001, Will Woods wrote:
Hi,
I am working with large matrices (~100x100) and had trouble with restoring archives of them. I wrote the attached test program which just adds the same expression to an archive n times (with a unique name each time). For any n, the expression can always be retrieved from the original archive. But reloading it from file into a new archive object only succeeds for n<108 (in this case - other size expressions have different limits).
Great package though. Our problem solution went from several hours under Macsyma to just 36 seconds with GiNaC!
Will
System:
GiNaC 0.8.0 CLN 1.1.0 Linux Mandrake 7.2 AMD 700Mhz 128Mb
participants (2)
-
Christian Bauer
-
Will Woods