Optional argument defaults as GSL objects
Optional arguments may be specified easily as functions creating GSL objects, keying off the element type of the required arguments. For example, the arglist ((matrix matrix) i &optional (vector :make-marray vector (dim0 matrix))) means that if vector is not specified, it will make a vector whose element type is the same as matrix, and whose length is the number of rows of matrix. This is used to proved default arguments for a number of functions, including the workspace argument for eigenspaces. Some arguments that were required before are now optional and therefore placed after the required arguments. Renamed to matrix-transpose from matrix-transpose-copy, and the the in-place transpose renamed to matrix-transpose* from matrix-transpose. Tests on 64 bit: SBCL: TOTAL: 1223 assertions passed, 5 failed, 0 execution errors. CCL: TOTAL: 1228 assertions passed, 0 failed, 0 execution errors.
Showing with 127 additions and 111 deletions