float support for tensor

This commit is contained in:
jiri committed 2026-11-05 16:43:09 +01:00
1 parent c711270e25
commit b3b023bfc3
1 file changed
+26
+26
View File
@@ -1187,6 +1187,16 @@ std::cout<<"cblas_dgemm CPU time " << (clock()-t0)/(double)CLOCKS_PER_SEC<<std::
#endif
}
template<>
void auxmatmult<float>(int nn, int mm, int kk, float *r, const float *a, const float *b, float alpha, float beta, bool conjugate)
{
clock_t t0=clock();
cblas_sgemm(CblasRowMajor, CblasNoTrans, CblasTrans, nn, mm, kk, alpha, a, kk, b, kk, beta, r, mm);
#ifdef TIMING
std::cout<<"cblas_sgemm CPU time " << (clock()-t0)/(double)CLOCKS_PER_SEC<<std::endl;
#endif
}
template<>
void auxmatmult<std::complex<double> >(int nn, int mm, int kk, std::complex<double> *r, const std::complex<double> *a, const std::complex<double> *b, std::complex<double> alpha, std::complex<double> beta, bool conjugate)
{
@@ -1197,6 +1207,16 @@ std::cout<<"cblas_zgemm CPU time " << (clock()-t0)/(double)CLOCKS_PER_SEC<<std::
#endif
}
template<>
void auxmatmult<std::complex<float> >(int nn, int mm, int kk, std::complex<float> *r, const std::complex<float> *a, const std::complex<float> *b, std::complex<float> alpha, std::complex<float> beta, bool conjugate)
{
clock_t t0=clock();
cblas_cgemm(CblasRowMajor, CblasNoTrans, (conjugate?CblasConjTrans:CblasTrans), nn, mm, kk, &alpha, a, kk, b, kk, &beta, r, mm);
#ifdef TIMING
std::cout<<"cblas_cgemm CPU time " << (clock()-t0)/(double)CLOCKS_PER_SEC<<std::endl;
#endif
}
template<typename T>
@@ -2646,6 +2666,12 @@ template std::ostream & operator<<(std::ostream &s, const Tensor<double> &x);
template std::ostream & operator<<(std::ostream &s, const Tensor<std::complex<double> > &x);
template std::istream & operator>>(std::istream &s, Tensor<double> &x);
template std::istream & operator>>(std::istream &s, Tensor<std::complex<double> > &x);
template class Tensor<float>;
template class Tensor<std::complex<float> >;
template std::ostream & operator<<(std::ostream &s, const Tensor<float> &x);
template std::ostream & operator<<(std::ostream &s, const Tensor<std::complex<float> > &x);
template std::istream & operator>>(std::istream &s, Tensor<float> &x);
template std::istream & operator>>(std::istream &s, Tensor<std::complex<float> > &x);
}//namespace