1
0
mirror of https://github.com/paboyle/Grid.git synced 2025-04-09 21:50:45 +01:00

Precision coverage

This commit is contained in:
Peter Boyle 2023-06-22 19:19:20 +03:00
parent d72e914cf0
commit 769eb0eecb

View File

@ -40,18 +40,20 @@ Lattice<iScalar<iScalar<iScalar<Vec> > > > Determinant(const Lattice<iScalar<iSc
GridBase *grid=Umu.Grid(); GridBase *grid=Umu.Grid();
auto lvol = grid->lSites(); auto lvol = grid->lSites();
Lattice<iScalar<iScalar<iScalar<Vec> > > > ret(grid); Lattice<iScalar<iScalar<iScalar<Vec> > > > ret(grid);
typedef typename Vec::scalar_type scalar;
autoView(Umu_v,Umu,CpuRead); autoView(Umu_v,Umu,CpuRead);
autoView(ret_v,ret,CpuWrite); autoView(ret_v,ret,CpuWrite);
thread_for(site,lvol,{ thread_for(site,lvol,{
Eigen::MatrixXcd EigenU = Eigen::MatrixXcd::Zero(N,N); Eigen::MatrixXcd EigenU = Eigen::MatrixXcd::Zero(N,N);
Coordinate lcoor; Coordinate lcoor;
grid->LocalIndexToLocalCoor(site, lcoor); grid->LocalIndexToLocalCoor(site, lcoor);
iScalar<iScalar<iMatrix<ComplexD, N> > > Us; iScalar<iScalar<iMatrix<scalar, N> > > Us;
peekLocalSite(Us, Umu_v, lcoor); peekLocalSite(Us, Umu_v, lcoor);
for(int i=0;i<N;i++){ for(int i=0;i<N;i++){
for(int j=0;j<N;j++){ for(int j=0;j<N;j++){
EigenU(i,j) = Us()()(i,j); scalar tmp= Us()()(i,j);
ComplexD ztmp(real(tmp),imag(tmp));
EigenU(i,j)=ztmp;
}} }}
ComplexD detD = EigenU.determinant(); ComplexD detD = EigenU.determinant();
typename Vec::scalar_type det(detD.real(),detD.imag()); typename Vec::scalar_type det(detD.real(),detD.imag());