-
Liam Healy authored
LU-solve and LU-decomposition now have optional arguments. For LU-solve, the choice of whether to solve in-place or in a new vector depends on how this last argument is specified. Because of the different call paths, it is possible that x is a vector or nil. If it is a vector, it will change after the foreign call, which means it needs to be added to :outputs. In order to prevent an error from the call to (setf cl-invalid) and (setf c-invalid) when x is nil, these two functions have been defined for class T to do nothing but return the value. Also, copy-c-to-cl and copy-cl-to-c check whether the argument is a mobject, though this change isn't needed. There are two additional tests in 'lu that do a solve and then remultiply the results with matrix-product-triangular. In both SBCL and CCL, the answer comes out reversed. When multiplied by matrix-product, it is correct.
c04147d7