¿Está implementado el algoritmo de Strassen para la multiplicación de matrices?

No veo ningún paso del algoritmo de Strassen que requiera absolutamente la copia, por ejemplo, cualquier tipo de paso destructivo de reescritura en el lugar.

La pregunta de si es posible o deseable implementar el algoritmo puramente in situ (con variables de pila para los productos intermedios, por supuesto) depende del idioma en el que esté trabajando. Muchos lenguajes de alto nivel (por ejemplo, Matlab y Python / NumPy) ) copiará los datos (de forma predeterminada) al pasar un segmento o una submatriz a una llamada recursiva. Hay formas de garantizar que lo que se transmite es una “vista” de los mismos datos sin requerir que se haga una copia, pero a los nuevos usuarios generalmente no se les informa sobre esto, ya que pueden tener efectos inesperados.

Por otro lado, en C / C ++, las matrices son típicamente double** desnudos double** s; y pasar un puntero nunca copiará los datos subyacentes a menos que se lo indique explícitamente.