Artifact 1dcc7f29d240ed556fb8d98e324ef967348afd4971542737f105bd93126d6cf0:
- Executable file
r37/packages/normform/matarg.red
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 1765) [annotate] [blame] [check-ins using] [more...]
- Executable file
r38/packages/normform/matarg.red
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 1765) [annotate] [blame] [check-ins using]
module matarg; % This module forms the ability for matrices to be passed % between functions. % % This module can be used independently from algebraic % mode. % % It was written by W. Neun. % symbolic procedure mkmatrix(n,m); 'mat . (for i:=1:n collect for j:=1:m collect 0); symbolic procedure setmat(matri,i,j,val); << if !*modular then << off modular; on mod_was_on; >>; i := reval i; j := reval j; val := mk!*sq simp reval val; letmtr(list(matri,i,j),val,matri); if !*mod_was_on then << on modular; off mod_was_on; >>; matri>>; symbolic procedure letmtr(u,v,y); %substitution for matrix elements; begin scalar z; if not eqcar(y,'mat) then rerror(matrix,10,list("Matrix",car u,"not set")) else if not numlis (z := revlis cdr u) or length z neq 2 then return errpri2(u,'hold); rplaca(pnth(nth(cdr y,car z),cadr z),v); end; symbolic procedure getmat(matri,i,j); << i := off_mod_reval i; j := off_mod_reval j; unchecked_getmatelem list(matri,i,j)>>; symbolic procedure unchecked_getmatelem u; begin scalar x; if not eqcar(x := car u,'mat) then rerror(matrix,1,list("Matrix",car u,"not set")) else return nth(nth(cdr x,cadr u),caddr u); end; flag('(setmat,getmat,mkmatrix,letmtr),'opfn); % So they can be used % independently from % algebraic mode. endmodule; end;