Let's say I want to do Newton-Krylov on some DAG of computations. Building the Jacobian is programmatic from the chain rule, requiring just a lot of matrix-matrix multiplications in the correct sequence.
If it really is more efficient for two Jacobians to be contracted into a matrix with random access, that's great, but if it's not, or if the appropriate implementation of MatMatMult_X_Y does not exist, having a MATCOMPOSITE is better than nothing. So why not make MATCOMPOSITE something that our matrix-matrix multiplication routines return when a specialization isn't found? It moves the "Not Implemented" warning from MatMatMult() to whenever I try to do something other than multiply with the output, but in some situations that's desirable. I'd be interested to hear what people think. Thanks, Toby
