Refs #615. Import bug fixes for LAPACKE dormlq.
This commit is contained in:
parent
11ac4665c8
commit
90aa8e24b9
|
@ -1,5 +1,5 @@
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
Copyright (c) 2011, Intel Corp.
|
Copyright (c) 2014, Intel Corp.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
|
|
||||||
#include "lapacke_utils.h"
|
#include "lapacke_utils.h"
|
||||||
|
|
||||||
lapack_int LAPACKE_cunmlq_work( int matrix_order, char side, char trans,
|
lapack_int LAPACKE_cunmlq_work( int matrix_layout, char side, char trans,
|
||||||
lapack_int m, lapack_int n, lapack_int k,
|
lapack_int m, lapack_int n, lapack_int k,
|
||||||
const lapack_complex_float* a, lapack_int lda,
|
const lapack_complex_float* a, lapack_int lda,
|
||||||
const lapack_complex_float* tau,
|
const lapack_complex_float* tau,
|
||||||
|
@ -41,20 +41,22 @@ lapack_int LAPACKE_cunmlq_work( int matrix_order, char side, char trans,
|
||||||
lapack_complex_float* work, lapack_int lwork )
|
lapack_complex_float* work, lapack_int lwork )
|
||||||
{
|
{
|
||||||
lapack_int info = 0;
|
lapack_int info = 0;
|
||||||
if( matrix_order == LAPACK_COL_MAJOR ) {
|
lapack_int r;
|
||||||
|
if( matrix_layout == LAPACK_COL_MAJOR ) {
|
||||||
/* Call LAPACK function and adjust info */
|
/* Call LAPACK function and adjust info */
|
||||||
LAPACK_cunmlq( &side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work,
|
LAPACK_cunmlq( &side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work,
|
||||||
&lwork, &info );
|
&lwork, &info );
|
||||||
if( info < 0 ) {
|
if( info < 0 ) {
|
||||||
info = info - 1;
|
info = info - 1;
|
||||||
}
|
}
|
||||||
} else if( matrix_order == LAPACK_ROW_MAJOR ) {
|
} else if( matrix_layout == LAPACK_ROW_MAJOR ) {
|
||||||
|
r = LAPACKE_lsame( side, 'l' ) ? m : n;
|
||||||
lapack_int lda_t = MAX(1,k);
|
lapack_int lda_t = MAX(1,k);
|
||||||
lapack_int ldc_t = MAX(1,m);
|
lapack_int ldc_t = MAX(1,m);
|
||||||
lapack_complex_float* a_t = NULL;
|
lapack_complex_float* a_t = NULL;
|
||||||
lapack_complex_float* c_t = NULL;
|
lapack_complex_float* c_t = NULL;
|
||||||
/* Check leading dimension(s) */
|
/* Check leading dimension(s) */
|
||||||
if( lda < m ) {
|
if( lda < r ) {
|
||||||
info = -8;
|
info = -8;
|
||||||
LAPACKE_xerbla( "LAPACKE_cunmlq_work", info );
|
LAPACKE_xerbla( "LAPACKE_cunmlq_work", info );
|
||||||
return info;
|
return info;
|
||||||
|
@ -84,8 +86,8 @@ lapack_int LAPACKE_cunmlq_work( int matrix_order, char side, char trans,
|
||||||
goto exit_level_1;
|
goto exit_level_1;
|
||||||
}
|
}
|
||||||
/* Transpose input matrices */
|
/* Transpose input matrices */
|
||||||
LAPACKE_cge_trans( matrix_order, k, m, a, lda, a_t, lda_t );
|
LAPACKE_cge_trans( matrix_layout, k, m, a, lda, a_t, lda_t );
|
||||||
LAPACKE_cge_trans( matrix_order, m, n, c, ldc, c_t, ldc_t );
|
LAPACKE_cge_trans( matrix_layout, m, n, c, ldc, c_t, ldc_t );
|
||||||
/* Call LAPACK function and adjust info */
|
/* Call LAPACK function and adjust info */
|
||||||
LAPACK_cunmlq( &side, &trans, &m, &n, &k, a_t, &lda_t, tau, c_t, &ldc_t,
|
LAPACK_cunmlq( &side, &trans, &m, &n, &k, a_t, &lda_t, tau, c_t, &ldc_t,
|
||||||
work, &lwork, &info );
|
work, &lwork, &info );
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
Copyright (c) 2011, Intel Corp.
|
Copyright (c) 2014, Intel Corp.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -33,27 +33,29 @@
|
||||||
|
|
||||||
#include "lapacke_utils.h"
|
#include "lapacke_utils.h"
|
||||||
|
|
||||||
lapack_int LAPACKE_dormlq_work( int matrix_order, char side, char trans,
|
lapack_int LAPACKE_dormlq_work( int matrix_layout, char side, char trans,
|
||||||
lapack_int m, lapack_int n, lapack_int k,
|
lapack_int m, lapack_int n, lapack_int k,
|
||||||
const double* a, lapack_int lda,
|
const double* a, lapack_int lda,
|
||||||
const double* tau, double* c, lapack_int ldc,
|
const double* tau, double* c, lapack_int ldc,
|
||||||
double* work, lapack_int lwork )
|
double* work, lapack_int lwork )
|
||||||
{
|
{
|
||||||
lapack_int info = 0;
|
lapack_int info = 0;
|
||||||
|
lapack_int r;
|
||||||
lapack_int lda_t, ldc_t;
|
lapack_int lda_t, ldc_t;
|
||||||
double *a_t = NULL, *c_t = NULL;
|
double *a_t = NULL, *c_t = NULL;
|
||||||
if( matrix_order == LAPACK_COL_MAJOR ) {
|
if( matrix_layout == LAPACK_COL_MAJOR ) {
|
||||||
/* Call LAPACK function and adjust info */
|
/* Call LAPACK function and adjust info */
|
||||||
LAPACK_dormlq( &side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work,
|
LAPACK_dormlq( &side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work,
|
||||||
&lwork, &info );
|
&lwork, &info );
|
||||||
if( info < 0 ) {
|
if( info < 0 ) {
|
||||||
info = info - 1;
|
info = info - 1;
|
||||||
}
|
}
|
||||||
} else if( matrix_order == LAPACK_ROW_MAJOR ) {
|
} else if( matrix_layout == LAPACK_ROW_MAJOR ) {
|
||||||
|
r = LAPACKE_lsame( side, 'l' ) ? m : n;
|
||||||
lda_t = MAX(1,k);
|
lda_t = MAX(1,k);
|
||||||
ldc_t = MAX(1,m);
|
ldc_t = MAX(1,m);
|
||||||
/* Check leading dimension(s) */
|
/* Check leading dimension(s) */
|
||||||
if( lda < m ) {
|
if( lda < r ) {
|
||||||
info = -8;
|
info = -8;
|
||||||
LAPACKE_xerbla( "LAPACKE_dormlq_work", info );
|
LAPACKE_xerbla( "LAPACKE_dormlq_work", info );
|
||||||
return info;
|
return info;
|
||||||
|
@ -81,8 +83,8 @@ lapack_int LAPACKE_dormlq_work( int matrix_order, char side, char trans,
|
||||||
goto exit_level_1;
|
goto exit_level_1;
|
||||||
}
|
}
|
||||||
/* Transpose input matrices */
|
/* Transpose input matrices */
|
||||||
LAPACKE_dge_trans( matrix_order, k, m, a, lda, a_t, lda_t );
|
LAPACKE_dge_trans( matrix_layout, k, m, a, lda, a_t, lda_t );
|
||||||
LAPACKE_dge_trans( matrix_order, m, n, c, ldc, c_t, ldc_t );
|
LAPACKE_dge_trans( matrix_layout, m, n, c, ldc, c_t, ldc_t );
|
||||||
/* Call LAPACK function and adjust info */
|
/* Call LAPACK function and adjust info */
|
||||||
LAPACK_dormlq( &side, &trans, &m, &n, &k, a_t, &lda_t, tau, c_t, &ldc_t,
|
LAPACK_dormlq( &side, &trans, &m, &n, &k, a_t, &lda_t, tau, c_t, &ldc_t,
|
||||||
work, &lwork, &info );
|
work, &lwork, &info );
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
Copyright (c) 2011, Intel Corp.
|
Copyright (c) 2014, Intel Corp.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -33,27 +33,29 @@
|
||||||
|
|
||||||
#include "lapacke_utils.h"
|
#include "lapacke_utils.h"
|
||||||
|
|
||||||
lapack_int LAPACKE_sormlq_work( int matrix_order, char side, char trans,
|
lapack_int LAPACKE_sormlq_work( int matrix_layout, char side, char trans,
|
||||||
lapack_int m, lapack_int n, lapack_int k,
|
lapack_int m, lapack_int n, lapack_int k,
|
||||||
const float* a, lapack_int lda,
|
const float* a, lapack_int lda,
|
||||||
const float* tau, float* c, lapack_int ldc,
|
const float* tau, float* c, lapack_int ldc,
|
||||||
float* work, lapack_int lwork )
|
float* work, lapack_int lwork )
|
||||||
{
|
{
|
||||||
lapack_int info = 0;
|
lapack_int info = 0;
|
||||||
|
lapack_int r;
|
||||||
lapack_int lda_t, ldc_t;
|
lapack_int lda_t, ldc_t;
|
||||||
float *a_t = NULL, *c_t = NULL;
|
float *a_t = NULL, *c_t = NULL;
|
||||||
if( matrix_order == LAPACK_COL_MAJOR ) {
|
if( matrix_layout == LAPACK_COL_MAJOR ) {
|
||||||
/* Call LAPACK function and adjust info */
|
/* Call LAPACK function and adjust info */
|
||||||
LAPACK_sormlq( &side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work,
|
LAPACK_sormlq( &side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work,
|
||||||
&lwork, &info );
|
&lwork, &info );
|
||||||
if( info < 0 ) {
|
if( info < 0 ) {
|
||||||
info = info - 1;
|
info = info - 1;
|
||||||
}
|
}
|
||||||
} else if( matrix_order == LAPACK_ROW_MAJOR ) {
|
} else if( matrix_layout == LAPACK_ROW_MAJOR ) {
|
||||||
|
r = LAPACKE_lsame( side, 'l' ) ? m : n;
|
||||||
lda_t = MAX(1,k);
|
lda_t = MAX(1,k);
|
||||||
ldc_t = MAX(1,m);
|
ldc_t = MAX(1,m);
|
||||||
/* Check leading dimension(s) */
|
/* Check leading dimension(s) */
|
||||||
if( lda < m ) {
|
if( lda < r ) {
|
||||||
info = -8;
|
info = -8;
|
||||||
LAPACKE_xerbla( "LAPACKE_sormlq_work", info );
|
LAPACKE_xerbla( "LAPACKE_sormlq_work", info );
|
||||||
return info;
|
return info;
|
||||||
|
@ -81,8 +83,8 @@ lapack_int LAPACKE_sormlq_work( int matrix_order, char side, char trans,
|
||||||
goto exit_level_1;
|
goto exit_level_1;
|
||||||
}
|
}
|
||||||
/* Transpose input matrices */
|
/* Transpose input matrices */
|
||||||
LAPACKE_sge_trans( matrix_order, k, m, a, lda, a_t, lda_t );
|
LAPACKE_sge_trans( matrix_layout, k, m, a, lda, a_t, lda_t );
|
||||||
LAPACKE_sge_trans( matrix_order, m, n, c, ldc, c_t, ldc_t );
|
LAPACKE_sge_trans( matrix_layout, m, n, c, ldc, c_t, ldc_t );
|
||||||
/* Call LAPACK function and adjust info */
|
/* Call LAPACK function and adjust info */
|
||||||
LAPACK_sormlq( &side, &trans, &m, &n, &k, a_t, &lda_t, tau, c_t, &ldc_t,
|
LAPACK_sormlq( &side, &trans, &m, &n, &k, a_t, &lda_t, tau, c_t, &ldc_t,
|
||||||
work, &lwork, &info );
|
work, &lwork, &info );
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
Copyright (c) 2011, Intel Corp.
|
Copyright (c) 2014, Intel Corp.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
|
|
||||||
#include "lapacke_utils.h"
|
#include "lapacke_utils.h"
|
||||||
|
|
||||||
lapack_int LAPACKE_zunmlq_work( int matrix_order, char side, char trans,
|
lapack_int LAPACKE_zunmlq_work( int matrix_layout, char side, char trans,
|
||||||
lapack_int m, lapack_int n, lapack_int k,
|
lapack_int m, lapack_int n, lapack_int k,
|
||||||
const lapack_complex_double* a, lapack_int lda,
|
const lapack_complex_double* a, lapack_int lda,
|
||||||
const lapack_complex_double* tau,
|
const lapack_complex_double* tau,
|
||||||
|
@ -41,20 +41,22 @@ lapack_int LAPACKE_zunmlq_work( int matrix_order, char side, char trans,
|
||||||
lapack_complex_double* work, lapack_int lwork )
|
lapack_complex_double* work, lapack_int lwork )
|
||||||
{
|
{
|
||||||
lapack_int info = 0;
|
lapack_int info = 0;
|
||||||
if( matrix_order == LAPACK_COL_MAJOR ) {
|
lapack_int r;
|
||||||
|
if( matrix_layout == LAPACK_COL_MAJOR ) {
|
||||||
/* Call LAPACK function and adjust info */
|
/* Call LAPACK function and adjust info */
|
||||||
LAPACK_zunmlq( &side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work,
|
LAPACK_zunmlq( &side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work,
|
||||||
&lwork, &info );
|
&lwork, &info );
|
||||||
if( info < 0 ) {
|
if( info < 0 ) {
|
||||||
info = info - 1;
|
info = info - 1;
|
||||||
}
|
}
|
||||||
} else if( matrix_order == LAPACK_ROW_MAJOR ) {
|
} else if( matrix_layout == LAPACK_ROW_MAJOR ) {
|
||||||
|
r = LAPACKE_lsame( side, 'l' ) ? m : n;
|
||||||
lapack_int lda_t = MAX(1,k);
|
lapack_int lda_t = MAX(1,k);
|
||||||
lapack_int ldc_t = MAX(1,m);
|
lapack_int ldc_t = MAX(1,m);
|
||||||
lapack_complex_double* a_t = NULL;
|
lapack_complex_double* a_t = NULL;
|
||||||
lapack_complex_double* c_t = NULL;
|
lapack_complex_double* c_t = NULL;
|
||||||
/* Check leading dimension(s) */
|
/* Check leading dimension(s) */
|
||||||
if( lda < m ) {
|
if( lda < r ) {
|
||||||
info = -8;
|
info = -8;
|
||||||
LAPACKE_xerbla( "LAPACKE_zunmlq_work", info );
|
LAPACKE_xerbla( "LAPACKE_zunmlq_work", info );
|
||||||
return info;
|
return info;
|
||||||
|
@ -84,8 +86,8 @@ lapack_int LAPACKE_zunmlq_work( int matrix_order, char side, char trans,
|
||||||
goto exit_level_1;
|
goto exit_level_1;
|
||||||
}
|
}
|
||||||
/* Transpose input matrices */
|
/* Transpose input matrices */
|
||||||
LAPACKE_zge_trans( matrix_order, k, m, a, lda, a_t, lda_t );
|
LAPACKE_zge_trans( matrix_layout, k, m, a, lda, a_t, lda_t );
|
||||||
LAPACKE_zge_trans( matrix_order, m, n, c, ldc, c_t, ldc_t );
|
LAPACKE_zge_trans( matrix_layout, m, n, c, ldc, c_t, ldc_t );
|
||||||
/* Call LAPACK function and adjust info */
|
/* Call LAPACK function and adjust info */
|
||||||
LAPACK_zunmlq( &side, &trans, &m, &n, &k, a_t, &lda_t, tau, c_t, &ldc_t,
|
LAPACK_zunmlq( &side, &trans, &m, &n, &k, a_t, &lda_t, tau, c_t, &ldc_t,
|
||||||
work, &lwork, &info );
|
work, &lwork, &info );
|
||||||
|
|
Loading…
Reference in New Issue