mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-06-04 18:54:00 +08:00
blas: fix SYRK
This commit is contained in:
parent
3cc9e3f5bb
commit
abfed301cb
@ -263,7 +263,7 @@ int EIGEN_BLAS_FUNC(symm)(char *side, char *uplo, int *m, int *n, RealScalar *pa
|
|||||||
// c = alpha*a'*a + beta*c for op = 'T'or't','C'or'c'
|
// c = alpha*a'*a + beta*c for op = 'T'or't','C'or'c'
|
||||||
int EIGEN_BLAS_FUNC(syrk)(char *uplo, char *op, int *n, int *k, RealScalar *palpha, RealScalar *pa, int *lda, RealScalar *pbeta, RealScalar *pc, int *ldc)
|
int EIGEN_BLAS_FUNC(syrk)(char *uplo, char *op, int *n, int *k, RealScalar *palpha, RealScalar *pa, int *lda, RealScalar *pbeta, RealScalar *pc, int *ldc)
|
||||||
{
|
{
|
||||||
// std::cerr << "in syrk " << *uplo << " " << *op << " " << *n << " " << *k << " " << *palpha << " " << *lda << " " << *pbeta << "\n";
|
// std::cerr << "in syrk " << *uplo << " " << *op << " " << *n << " " << *k << " " << *palpha << " " << *lda << " " << *pbeta << " " << *ldc << "\n";
|
||||||
typedef void (*functype)(int, int, const Scalar *, int, Scalar *, int, Scalar);
|
typedef void (*functype)(int, int, const Scalar *, int, Scalar *, int, Scalar);
|
||||||
static functype func[8];
|
static functype func[8];
|
||||||
|
|
||||||
@ -298,10 +298,12 @@ int EIGEN_BLAS_FUNC(syrk)(char *uplo, char *op, int *n, int *k, RealScalar *palp
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(beta!=Scalar(1))
|
if(beta!=Scalar(1))
|
||||||
matrix(c, *n, *n, *ldc) *= beta;
|
if(UPLO(*uplo)==UP) matrix(c, *n, *n, *ldc).triangularView<Upper>() *= beta;
|
||||||
|
else matrix(c, *n, *n, *ldc).triangularView<Lower>() *= beta;
|
||||||
|
|
||||||
func[code](*n, *k, a, *lda, c, *ldc, alpha);
|
func[code](*n, *k, a, *lda, c, *ldc, alpha);
|
||||||
return 1;
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// c = alpha*a*b' + alpha*b*a' + beta*c for op = 'N'or'n'
|
// c = alpha*a*b' + alpha*b*a' + beta*c for op = 'N'or'n'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user