The function converts <in> from <matrix_layout> to opposite layout.
E.g. for upper case (all indices are 0-based):
col-major, upper: a(i,j) is stored in ap[(1 + j)*j/2 + i]
row-major, upper: a(i,j) is stored in ap[(n + n-i+1)*i/2 + j-i]
* and col_major lower and row_major upper are equals too -
* using one code for equal cases. XOR( colmaj, upper )
*/
- if( ( colmaj || upper ) && !( colmaj && upper ) ) {
+ if( !( colmaj || upper ) || ( colmaj && upper ) ) {
for( j = st; j < n; j++ ) {
for( i = 0; i < j+1-st; i++ ) {
out[ j-i + (i*(2*n-i+1))/2 ] = in[ ((j+1)*j)/2 + i ];
* and col_major lower and row_major upper are equals too -
* using one code for equal cases. XOR( colmaj, upper )
*/
- if( ( colmaj || upper ) && !( colmaj && upper ) ) {
+ if( !( colmaj || upper ) || ( colmaj && upper ) ) {
for( j = st; j < n; j++ ) {
for( i = 0; i < j+1-st; i++ ) {
out[ j-i + (i*(2*n-i+1))/2 ] = in[ ((j+1)*j)/2 + i ];
* and col_major lower and row_major upper are equals too -
* using one code for equal cases. XOR( colmaj, upper )
*/
- if( ( colmaj || upper ) && !( colmaj && upper ) ) {
+ if( !( colmaj || upper ) || ( colmaj && upper ) ) {
for( j = st; j < n; j++ ) {
for( i = 0; i < j+1-st; i++ ) {
out[ j-i + (i*(2*n-i+1))/2 ] = in[ ((j+1)*j)/2 + i ];
* and col_major lower and row_major upper are equals too -
* using one code for equal cases. XOR( colmaj, upper )
*/
- if( ( colmaj || upper ) && !( colmaj && upper ) ) {
+ if( !( colmaj || upper ) || ( colmaj && upper ) ) {
for( j = st; j < n; j++ ) {
for( i = 0; i < j+1-st; i++ ) {
out[ j-i + (i*(2*n-i+1))/2 ] = in[ ((j+1)*j)/2 + i ];