This fixes some bugs in the contraction logic which only show up for more complicated in-place contractions. Basically they were off-by-one errors from the translation of the 0-based indexing used in C++ and the 1-based indexing used in Julia.
Also, this extends the definition of Spectrum to allow the eigenvalues to be nothing, for cases like QR where the eigenspectrum is not efficient enough to compute.
This fixes some bugs in the contraction logic which only show up for more complicated in-place contractions. Basically they were off-by-one errors from the translation of the 0-based indexing used in C++ and the 1-based indexing used in Julia.
Also, this extends the definition of
Spectrum
to allow the eigenvalues to benothing
, for cases like QR where the eigenspectrum is not efficient enough to compute.