Skip to content

Commit 0252acb

Browse files
Introduce a guard against overflow in the dense FOE
1 parent 20f55fe commit 0252acb

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

Source/Fortran/FermiOperatorModule.F90

+6-2
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,12 @@ SUBROUTINE ComputeDenseFOE(H, ISQ, trace, K, inv_temp_in, &
122122
chemical_potential = left + (right - left) / 2
123123
DO II = 1, num_eigs
124124
sval = eigs(II) - chemical_potential
125-
! occ(II) = 0.5_NTREAL * (1.0_NTREAL - ERF(inv_temp * sval))
126-
occ(II) = 1.0_NTREAL / (1.0_NTREAL + EXP(inv_temp * sval))
125+
! Guard against overflow
126+
IF (inv_temp * sval .GT. 30) THEN
127+
occ(II) = 0.5_NTREAL * (1.0_NTREAL - ERF(inv_temp * sval))
128+
ELSE
129+
occ(II) = 1.0_NTREAL / (1.0_NTREAL + EXP(inv_temp * sval))
130+
END IF
127131
END DO
128132
sv = SUM(occ)
129133
IF (ABS(trace - sv) .LT. 1E-8_NTREAL) THEN

0 commit comments

Comments
 (0)