Recently I was working on a problem where I expected to
decompose a matrix into components in such a way that I
need not depend on multiplication of these components to
get the original matrix, as multiplication is the operator
used by all decomposition techniques to revert.
I came up with slighly improvised echleon form method
that I have kept here "
"
I have also coded a small function to calculate it
available at "
"
It returns correct result. But the point to note here
is that just for 4-x-4 it takes 1 minute, 5-x-5 matrix takes
about 18 minutes to solve the equations constructed. In case
of 6-x-6 its just plain Maxima out of space. Its behaviour is somewhat same as exponential growth of subgroups problem.
Interesting thing to note is that on Mathematica 9, it took 3000
sec to complete the answer and return wrong results while maxima took 60 seconds for correct response !!
On sage it took 3 seconds. Sage solves it like magic for bigger matrices too.

The equations constructed are too long and intricate and lot
in number. The advantage I see is that there is no need to pre-fed
equations in test cases and on the fly equation can be developed
of any order using a baby small piece of code.Moreover it works
for square as well as rectangular matrix.
There is no other test needed other than comparing the input and
output matrix to check the validity of computing system.
This can also be used to test simplification, reduction of
equations. I think it can put quite a challenge to very efficient systems.
Using the code on git,

%in::  ii:map(parse_string,create_list(concat("a",i),i,1,9));
%out:: [a1,a2,a3,a4,a5,a6,a7,a8,a9]

%in::  iii:listpartition(ii,3,3);
%out:: [[a1,a2,a3],[a4,a5,a6],[a7,a8,a9]]

%in::  mk:apply(matrix,iii);
%out:: matrix([a1,a2,a3],[a4,a5,a6],[a7,a8,a9])

%in::  aaq:ech(mk);
%out:: [matrix([1,a2/a1,a3/a1],[0,1,(a6-(a3*a4)/a1)/(a5-(a2*a4)/a1)],[0,0,a9-((a6-(a3*a4)/a1)*(a8-(a2*a7)/a1))/(a5-(a2*a4)/a1)-(a3*a7)/a1]),[a4,a7,a8-(a2*a7)/a1],[a1,a5-(a2*a4)/a1]]

%in::  revech(aaq);
%out:: [[a11=a1,a12=a2,a13=a3,a14=a4,a21=a5,a22=a6,a23=a7,
a24=a8,a31=a9,a32=a10,a33=a1,a34=a2,a41=a3,a42=a4,a43=a15,a44=a16]]

Can it be used as a bench mark in maxima ?

--
Regards,
Pankaj Sejwal
_______________________________________________
"The more I read, the more I acquire, the more certain I am that I know nothing.” -
Voltaire