LAPACKE: don't allocate transposed matrix in ?lantr_work #382
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR modifies
LAPACKE_?lantr_work
functions to avoid allocation (and filling) of the transposed triangular matrixa_t
. It uses the standard trick that a lower triangular matrix in row-major storage can be viewed as an upper triangular matrix in column-major (and vice versa) if the parameters are properly adjusted. In fact, this is the same approach thatLAPACKE_?lange_work
functions use. With this approach a newwork
array must be allocated because the rows and columns are "swapped" between row/column-major (and not because LAPACKE is taking into account that it would make sense to havework
sized differently in row major as I originally misunderstood).I feel a little uneasy because of the lack of any tests but at least for double precision our Gonum test passes.