double-complex precision

------------------------------------------------------------ More...

Functions

magma_int_t magma_zlarfb_gemm_batched (magma_side_t side, magma_trans_t trans, magma_direct_t direct, magma_storev_t storev, magma_int_t m, magma_int_t n, magma_int_t k, magmaDoubleComplex_const_ptr dV_array[], magma_int_t lddv, magmaDoubleComplex_const_ptr dT_array[], magma_int_t lddt, magmaDoubleComplex_ptr dC_array[], magma_int_t lddc, magmaDoubleComplex_ptr dwork_array[], magma_int_t ldwork, magmaDoubleComplex_ptr dworkvt_array[], magma_int_t ldworkvt, magma_int_t batchCount, cublasHandle_t myhandle, magma_queue_t queue)
 ZLARFB applies a complex block reflector H or its transpose H^H to a COMPLEX_16 m by n matrix C, from the left.
magma_int_t magma_zlarfb_gpu (magma_side_t side, magma_trans_t trans, magma_direct_t direct, magma_storev_t storev, magma_int_t m, magma_int_t n, magma_int_t k, magmaDoubleComplex_const_ptr dV, magma_int_t lddv, magmaDoubleComplex_const_ptr dT, magma_int_t lddt, magmaDoubleComplex_ptr dC, magma_int_t lddc, magmaDoubleComplex_ptr dwork, magma_int_t ldwork)
 ZLARFB applies a complex block reflector H or its transpose H^H to a COMPLEX_16 m by n matrix C, from the left.
magma_int_t magma_zlarfb_gpu_gemm (magma_side_t side, magma_trans_t trans, magma_direct_t direct, magma_storev_t storev, magma_int_t m, magma_int_t n, magma_int_t k, magmaDoubleComplex_const_ptr dV, magma_int_t lddv, magmaDoubleComplex_const_ptr dT, magma_int_t lddt, magmaDoubleComplex_ptr dC, magma_int_t lddc, magmaDoubleComplex_ptr dwork, magma_int_t ldwork, magmaDoubleComplex_ptr dworkvt, magma_int_t ldworkvt)
 ZLARFB applies a complex block reflector H or its transpose H^H to a COMPLEX_16 m by n matrix C, from the left.

Detailed Description

------------------------------------------------------------


Function Documentation

magma_int_t magma_zlarfb_gemm_batched ( magma_side_t  side,
magma_trans_t  trans,
magma_direct_t  direct,
magma_storev_t  storev,
magma_int_t  m,
magma_int_t  n,
magma_int_t  k,
magmaDoubleComplex_const_ptr  dV_array[],
magma_int_t  lddv,
magmaDoubleComplex_const_ptr  dT_array[],
magma_int_t  lddt,
magmaDoubleComplex_ptr  dC_array[],
magma_int_t  lddc,
magmaDoubleComplex_ptr  dwork_array[],
magma_int_t  ldwork,
magmaDoubleComplex_ptr  dworkvt_array[],
magma_int_t  ldworkvt,
magma_int_t  batchCount,
cublasHandle_t  myhandle,
magma_queue_t  queue 
)

ZLARFB applies a complex block reflector H or its transpose H^H to a COMPLEX_16 m by n matrix C, from the left.

__Note that this function assumes__ that the upper part of dV_array is 0 because it is referenced. Same for upper/lower part of dT_array.

Parameters:
[in] side magma_side_t

  • = MagmaLeft: apply H or H^H from the Left
  • = MagmaRight: apply H or H^H from the Right
[in] trans magma_trans_t

  • = MagmaNoTrans: apply H (No transpose)
  • = Magma_ConjTrans: apply H^H (Conjugate transpose)
[in] direct magma_direct_t Indicates how H is formed from a product of elementary reflectors

  • = MagmaForward: H = H(1) H(2) . . . H(k) (Forward)
  • = MagmaBackward: H = H(k) . . . H(2) H(1) (Backward)
[in] storev magma_storev_t Indicates how the vectors which define the elementary reflectors are stored:

  • = MagmaColumnwise: Columnwise
  • = MagmaRowwise: Rowwise
[in] m INTEGER The number of rows of the matrix C.
[in] n INTEGER The number of columns of the matrix C.
[in] k INTEGER The order of the matrix T (= the number of elementary reflectors whose product defines the block reflector).
[in] dV_array COMPLEX_16 array on the GPU, dimension (LDDV,K) if STOREV = MagmaColumnwise (LDDV,M) if STOREV = MagmaRowwise and SIDE = MagmaLeft (LDDV,N) if STOREV = MagmaRowwise and SIDE = MagmaRight The matrix V. See further details.
[in] lddv INTEGER The leading dimension of the array V. If STOREV = MagmaColumnwise and SIDE = MagmaLeft, LDDV >= max(1,M); if STOREV = MagmaColumnwise and SIDE = MagmaRight, LDDV >= max(1,N); if STOREV = MagmaRowwise, LDDV >= K.
[in] dT_array COMPLEX_16 array on the GPU, dimension (LDDT,K) The triangular k by k matrix T in the representation of the block reflector.
[in] lddt INTEGER The leading dimension of the array T. LDDT >= K.
[in,out] dC_array COMPLEX_16 array on the GPU, dimension (LDDC,N) On entry, the m by n matrix C. On exit, C is overwritten by H*C, or H^H*C, or C*H, or C*H^H.
[in] lddc INTEGER The leading dimension of the array C. LDA >= max(1,M).
dwork_array (workspace) COMPLEX_16 array, dimension (LDWORK,K)
[in] ldwork INTEGER The leading dimension of the array WORK. If SIDE = MagmaLeft, LDWORK >= max(1,N); if SIDE = MagmaRight, LDWORK >= max(1,M);
dworkvt_array (workspace) COMPLEX_16 array, dimension (LDWORKT,K)
[in] ldworkvt INTEGER The leading dimension of the array WORKVT. LDWORKVT >= max(1,min(M,N));

Further Details --------------- The shape of the matrix V and the storage of the vectors which define the H(i) is best illustrated by the following example with n = 5 and k = 3. All elements including 0's and 1's are stored, unlike LAPACK.

DIRECT = MagmaForward and DIRECT = MagmaForward and STOREV = MagmaColumnwise: STOREV = MagmaRowwise:

V = ( 1 0 0 ) V = ( 1 v1 v1 v1 v1 ) ( v1 1 0 ) ( 0 1 v2 v2 v2 ) ( v1 v2 1 ) ( 0 0 1 v3 v3 ) ( v1 v2 v3 ) ( v1 v2 v3 )

DIRECT = MagmaBackward and DIRECT = MagmaBackward and STOREV = MagmaColumnwise: STOREV = MagmaRowwise:

V = ( v1 v2 v3 ) V = ( v1 v1 1 0 0 ) ( v1 v2 v3 ) ( v2 v2 v2 1 0 ) ( 1 v2 v3 ) ( v3 v3 v3 v3 1 ) ( 0 1 v3 ) ( 0 0 1 )

magma_int_t magma_zlarfb_gpu ( magma_side_t  side,
magma_trans_t  trans,
magma_direct_t  direct,
magma_storev_t  storev,
magma_int_t  m,
magma_int_t  n,
magma_int_t  k,
magmaDoubleComplex_const_ptr  dV,
magma_int_t  lddv,
magmaDoubleComplex_const_ptr  dT,
magma_int_t  lddt,
magmaDoubleComplex_ptr  dC,
magma_int_t  lddc,
magmaDoubleComplex_ptr  dwork,
magma_int_t  ldwork 
)

ZLARFB applies a complex block reflector H or its transpose H^H to a COMPLEX_16 m by n matrix C, from the left.

Parameters:
[in] side magma_side_t

  • = MagmaLeft: apply H or H^H from the Left
  • = MagmaRight: apply H or H^H from the Right
[in] trans magma_trans_t

  • = MagmaNoTrans: apply H (No transpose)
  • = Magma_ConjTrans: apply H^H (Conjugate transpose)
[in] direct magma_direct_t Indicates how H is formed from a product of elementary reflectors

  • = MagmaForward: H = H(1) H(2) . . . H(k) (Forward)
  • = MagmaBackward: H = H(k) . . . H(2) H(1) (Backward)
[in] storev magma_storev_t Indicates how the vectors which define the elementary reflectors are stored:

  • = MagmaColumnwise: Columnwise
  • = MagmaRowwise: Rowwise
[in] m INTEGER The number of rows of the matrix C.
[in] n INTEGER The number of columns of the matrix C.
[in] k INTEGER The order of the matrix T (= the number of elementary reflectors whose product defines the block reflector).
[in] dV COMPLEX_16 array on the GPU, dimension (LDDV,K) if STOREV = MagmaColumnwise (LDDV,M) if STOREV = MagmaRowwise and SIDE = MagmaLeft (LDDV,N) if STOREV = MagmaRowwise and SIDE = MagmaRight The matrix V. See further details.
[in] lddv INTEGER The leading dimension of the array V. If STOREV = MagmaColumnwise and SIDE = MagmaLeft, LDDV >= max(1,M); if STOREV = MagmaColumnwise and SIDE = MagmaRight, LDDV >= max(1,N); if STOREV = MagmaRowwise, LDDV >= K.
[in] dT COMPLEX_16 array on the GPU, dimension (LDDT,K) The triangular k by k matrix T in the representation of the block reflector.
[in] lddt INTEGER The leading dimension of the array T. LDDT >= K.
[in,out] dC COMPLEX_16 array on the GPU, dimension (LDDC,N) On entry, the m by n matrix C. On exit, C is overwritten by H*C, or H^H*C, or C*H, or C*H^H.
[in] lddc INTEGER The leading dimension of the array C. LDA >= max(1,M).
dwork (workspace) COMPLEX_16 array, dimension (LDWORK,K)
[in] ldwork INTEGER The leading dimension of the array WORK. If SIDE = MagmaLeft, LDWORK >= max(1,N); if SIDE = MagmaRight, LDWORK >= max(1,M);

Further Details --------------- The shape of the matrix V and the storage of the vectors which define the H(i) is best illustrated by the following example with n = 5 and k = 3. All elements including 0's and 1's are stored, unlike LAPACK.

DIRECT = MagmaForward and DIRECT = MagmaForward and STOREV = MagmaColumnwise: STOREV = MagmaRowwise:

V = ( 1 0 0 ) V = ( 1 v1 v1 v1 v1 ) ( v1 1 0 ) ( 0 1 v2 v2 v2 ) ( v1 v2 1 ) ( 0 0 1 v3 v3 ) ( v1 v2 v3 ) ( v1 v2 v3 )

DIRECT = MagmaBackward and DIRECT = MagmaBackward and STOREV = MagmaColumnwise: STOREV = MagmaRowwise:

V = ( v1 v2 v3 ) V = ( v1 v1 1 0 0 ) ( v1 v2 v3 ) ( v2 v2 v2 1 0 ) ( 1 v2 v3 ) ( v3 v3 v3 v3 1 ) ( 0 1 v3 ) ( 0 0 1 )

magma_int_t magma_zlarfb_gpu_gemm ( magma_side_t  side,
magma_trans_t  trans,
magma_direct_t  direct,
magma_storev_t  storev,
magma_int_t  m,
magma_int_t  n,
magma_int_t  k,
magmaDoubleComplex_const_ptr  dV,
magma_int_t  lddv,
magmaDoubleComplex_const_ptr  dT,
magma_int_t  lddt,
magmaDoubleComplex_ptr  dC,
magma_int_t  lddc,
magmaDoubleComplex_ptr  dwork,
magma_int_t  ldwork,
magmaDoubleComplex_ptr  dworkvt,
magma_int_t  ldworkvt 
)

ZLARFB applies a complex block reflector H or its transpose H^H to a COMPLEX_16 m by n matrix C, from the left.

__Note that this function assumes__ that the upper part of dV is 0 because it is referenced. Same for upper/lower part of dT.

Parameters:
[in] side magma_side_t

  • = MagmaLeft: apply H or H^H from the Left
  • = MagmaRight: apply H or H^H from the Right
[in] trans magma_trans_t

  • = MagmaNoTrans: apply H (No transpose)
  • = Magma_ConjTrans: apply H^H (Conjugate transpose)
[in] direct magma_direct_t Indicates how H is formed from a product of elementary reflectors

  • = MagmaForward: H = H(1) H(2) . . . H(k) (Forward)
  • = MagmaBackward: H = H(k) . . . H(2) H(1) (Backward)
[in] storev magma_storev_t Indicates how the vectors which define the elementary reflectors are stored:

  • = MagmaColumnwise: Columnwise
  • = MagmaRowwise: Rowwise
[in] m INTEGER The number of rows of the matrix C.
[in] n INTEGER The number of columns of the matrix C.
[in] k INTEGER The order of the matrix T (= the number of elementary reflectors whose product defines the block reflector).
[in] dV COMPLEX_16 array on the GPU, dimension (LDDV,K) if STOREV = MagmaColumnwise (LDDV,M) if STOREV = MagmaRowwise and SIDE = MagmaLeft (LDDV,N) if STOREV = MagmaRowwise and SIDE = MagmaRight The matrix V. See further details.
[in] lddv INTEGER The leading dimension of the array V. If STOREV = MagmaColumnwise and SIDE = MagmaLeft, LDDV >= max(1,M); if STOREV = MagmaColumnwise and SIDE = MagmaRight, LDDV >= max(1,N); if STOREV = MagmaRowwise, LDDV >= K.
[in] dT COMPLEX_16 array on the GPU, dimension (LDDT,K) The triangular k by k matrix T in the representation of the block reflector.
[in] lddt INTEGER The leading dimension of the array T. LDDT >= K.
[in,out] dC COMPLEX_16 array on the GPU, dimension (LDDC,N) On entry, the m by n matrix C. On exit, C is overwritten by H*C, or H^H*C, or C*H, or C*H^H.
[in] lddc INTEGER The leading dimension of the array C. LDA >= max(1,M).
dwork (workspace) COMPLEX_16 array, dimension (LDWORK,K)
[in] ldwork INTEGER The leading dimension of the array WORK. If SIDE = MagmaLeft, LDWORK >= max(1,N); if SIDE = MagmaRight, LDWORK >= max(1,M);
dworkvt (workspace) COMPLEX_16 array, dimension (LDWORKT,K)
[in] ldworkvt INTEGER The leading dimension of the array WORKVT. LDWORKVT >= max(1,min(M,N));

Further Details --------------- The shape of the matrix V and the storage of the vectors which define the H(i) is best illustrated by the following example with n = 5 and k = 3. All elements including 0's and 1's are stored, unlike LAPACK.

DIRECT = MagmaForward and DIRECT = MagmaForward and STOREV = MagmaColumnwise: STOREV = MagmaRowwise:

V = ( 1 0 0 ) V = ( 1 v1 v1 v1 v1 ) ( v1 1 0 ) ( 0 1 v2 v2 v2 ) ( v1 v2 1 ) ( 0 0 1 v3 v3 ) ( v1 v2 v3 ) ( v1 v2 v3 )

DIRECT = MagmaBackward and DIRECT = MagmaBackward and STOREV = MagmaColumnwise: STOREV = MagmaRowwise:

V = ( v1 v2 v3 ) V = ( v1 v1 1 0 0 ) ( v1 v2 v3 ) ( v2 v2 v2 1 0 ) ( 1 v2 v3 ) ( v3 v3 v3 v3 1 ) ( 0 1 v3 ) ( 0 0 1 )


Generated on 3 May 2015 for MAGMA by  doxygen 1.6.1