9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-11-07 05:53:37 +01:00

Fix int64 overflow in qp_import_trexio
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Anthony Scemama 2023-09-25 14:26:43 +02:00
parent cc606ba8f8
commit a493e15110

View File

@ -38,6 +38,15 @@ else:
QP_ROOT + "/install", QP_ROOT + "/install",
QP_ROOT + "/scripts"] + sys.path QP_ROOT + "/scripts"] + sys.path
def uint64_to_int64(u):
# Check if the most significant bit is set
if u & (1 << 63):
# Calculate the two's complement
result = -int(np.bitwise_not(np.uint64(u))+1)
else:
# The number is already positive
result = u
return result
def generate_xyz(l): def generate_xyz(l):
@ -473,8 +482,15 @@ def write_ezfio(trexio_filename, filename):
beta_s[i] = '1' beta_s[i] = '1'
alpha_s = ''.join(alpha_s)[::-1] alpha_s = ''.join(alpha_s)[::-1]
beta_s = ''.join(beta_s)[::-1] beta_s = ''.join(beta_s)[::-1]
alpha = [ int(i,2) for i in qp_bitmasks.string_to_bitmask(alpha_s) ][::-1] def conv(i):
beta = [ int(i,2) for i in qp_bitmasks.string_to_bitmask(beta_s ) ][::-1] try:
result = np.int64(i)
except:
result = np.int64(i-2**63-1)
return result
alpha = [ uint64_to_int64(int(i,2)) for i in qp_bitmasks.string_to_bitmask(alpha_s) ][::-1]
beta = [ uint64_to_int64(int(i,2)) for i in qp_bitmasks.string_to_bitmask(beta_s ) ][::-1]
ezfio.set_determinants_bit_kind(8) ezfio.set_determinants_bit_kind(8)
ezfio.set_determinants_n_int(1+mo_num//64) ezfio.set_determinants_n_int(1+mo_num//64)
ezfio.set_determinants_n_det(1) ezfio.set_determinants_n_det(1)