I propose making the following changes to determinant:
if constantp(p), then determinant(p) --> p,
if not(matrixp(p)), then determinant(p) --> determinant(p)
else determinant(p) --> it's a matrix, do the math.
This change would allow me to make linalg more block matrix
friendly (I think). Currently, determinant does this:
(%i1) determinant(a);
(%o1) determinant(a) <--- noun form; OK
(%i2) determinant(a+b); <--- error; why not a noun form?
Not matrix:
b+a
-- an error. Quitting. To debug this try DEBUGMODE(TRUE);
(%i3) determinant(5);
(%o3) determinant(5) <--- noun form; why not 5?
(%i4) determinant(a[1]); <--- error; why not a noun form?
Not matrix:
a[1]
-- an error. Quitting. To debug this try DEBUGMODE(TRUE);
(%i5)
Barton