ratmx problem



I have 5-10 matrices I multiply together to form a system model.  I
then need to take a
submatrix from the system matrix and invert.  I use that result to
find a transfer function that I need to find the denominator of.  All
of this was working well thanks to help from this list.

Last night I need to add 2 more matrices to the model and now when it
gets to the inversion step I get messages like:

Error in CATCH [or a callee]: The storage for CO5NS is exhausted.
Currently, 117758 pages are allocated.
Use ALLOCATE to expand the space.

The same is true if I try to use echelon.  One interesting thing is
that the inversion and all calculations before that go very smoothly
if I set ratmx:false.  But then trying to call ratdenom causes the
same error message as above (so does trying to call expand or rat on
the result).  Is there an efficient way to move between a result
calculated with ratmx:false and a CRE or is rat the best/only way to
do that?  Is there any other way to calculate the denominator of an
expression than with ratdenom?

Any other thoughts on how to approach this?

I am also using this function submitted by Robert:

fortran_optimize (e) := block ([o : optimize (e)],
 if atom (o) or op (o) # 'block then fortran (apply ("=", ['RESULT, e]))
 else block ([a : args (o)],
   for x in rest(a) do
     if atom (x) then print ("Hey, whence this atom", x, "??")
     else if op (x )= ":" then fortran (apply ("=", args(x)))
     else fortran (apply ("=", ['RESULT, x]))));

This works great if ratmx:true, but takes a very long time or crashes otherwise.

Thanks,

Ryan