mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-06-04 18:54:00 +08:00
update BLAS interface to general_matrix_matrix_triangular_product
This commit is contained in:
parent
e58827d2ed
commit
2f9e6314b1
@ -315,7 +315,7 @@ int EIGEN_BLAS_FUNC(syrk)(char *uplo, char *op, int *n, int *k, RealScalar *palp
|
|||||||
{
|
{
|
||||||
// std::cerr << "in syrk " << *uplo << " " << *op << " " << *n << " " << *k << " " << *palpha << " " << *lda << " " << *pbeta << " " << *ldc << "\n";
|
// std::cerr << "in syrk " << *uplo << " " << *op << " " << *n << " " << *k << " " << *palpha << " " << *lda << " " << *pbeta << " " << *ldc << "\n";
|
||||||
#if !ISCOMPLEX
|
#if !ISCOMPLEX
|
||||||
typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, const Scalar&);
|
typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, const Scalar&, internal::level3_blocking<Scalar,Scalar>&);
|
||||||
static functype func[8];
|
static functype func[8];
|
||||||
|
|
||||||
static bool init = false;
|
static bool init = false;
|
||||||
@ -381,8 +381,10 @@ int EIGEN_BLAS_FUNC(syrk)(char *uplo, char *op, int *n, int *k, RealScalar *palp
|
|||||||
matrix(c, *n, *n, *ldc).triangularView<Lower>() += alpha * matrix(a,*k,*n,*lda).transpose() * matrix(a,*k,*n,*lda);
|
matrix(c, *n, *n, *ldc).triangularView<Lower>() += alpha * matrix(a,*k,*n,*lda).transpose() * matrix(a,*k,*n,*lda);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
internal::gemm_blocking_space<ColMajor,Scalar,Scalar,Dynamic,Dynamic,Dynamic> blocking(*n,*n,*k,1,false);
|
||||||
|
|
||||||
int code = OP(*op) | (UPLO(*uplo) << 2);
|
int code = OP(*op) | (UPLO(*uplo) << 2);
|
||||||
func[code](*n, *k, a, *lda, a, *lda, c, *ldc, alpha);
|
func[code](*n, *k, a, *lda, a, *lda, c, *ldc, alpha, blocking);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -516,7 +518,7 @@ int EIGEN_BLAS_FUNC(herk)(char *uplo, char *op, int *n, int *k, RealScalar *palp
|
|||||||
{
|
{
|
||||||
// std::cerr << "in herk " << *uplo << " " << *op << " " << *n << " " << *k << " " << *palpha << " " << *lda << " " << *pbeta << " " << *ldc << "\n";
|
// std::cerr << "in herk " << *uplo << " " << *op << " " << *n << " " << *k << " " << *palpha << " " << *lda << " " << *pbeta << " " << *ldc << "\n";
|
||||||
|
|
||||||
typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, const Scalar&);
|
typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, const Scalar&, internal::level3_blocking<Scalar,Scalar>&);
|
||||||
static functype func[8];
|
static functype func[8];
|
||||||
|
|
||||||
static bool init = false;
|
static bool init = false;
|
||||||
@ -571,7 +573,8 @@ int EIGEN_BLAS_FUNC(herk)(char *uplo, char *op, int *n, int *k, RealScalar *palp
|
|||||||
|
|
||||||
if(*k>0 && alpha!=RealScalar(0))
|
if(*k>0 && alpha!=RealScalar(0))
|
||||||
{
|
{
|
||||||
func[code](*n, *k, a, *lda, a, *lda, c, *ldc, alpha);
|
internal::gemm_blocking_space<ColMajor,Scalar,Scalar,Dynamic,Dynamic,Dynamic> blocking(*n,*n,*k,1,false);
|
||||||
|
func[code](*n, *k, a, *lda, a, *lda, c, *ldc, alpha, blocking);
|
||||||
matrix(c, *n, *n, *ldc).diagonal().imag().setZero();
|
matrix(c, *n, *n, *ldc).diagonal().imag().setZero();
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user