Suppose you have a determinant with 3 orbitals : |1 2 3>
If you store it in a bitfield, you get the integer 7 (111 in binary).
Now, if I have a determinant |1 3 2>, it also gives 7, but there is no way we can get back to |1 3 2>. We will go to |1 2 3>, and the problem is that |1 2 3> = -|1 3 2>. It imposes that the users are aware that they might need to compute a phase factor.
The helper function was modified to automatically compute the phase factor and returns the new exit code TREXIO_PHASE_CHANGE if a change of sign is needed in the coefficient, so that the users can update the CI coefficients accordingly.
Suppose you have a determinant with 3 orbitals : |1 2 3> If you store it in a bitfield, you get the integer 7 (111 in binary). Now, if I have a determinant |1 3 2>, it also gives 7, but there is no way we can get back to |1 3 2>. We will go to |1 2 3>, and the problem is that |1 2 3> = -|1 3 2>. It imposes that the users are aware that they might need to compute a phase factor.
The helper function was modified to automatically compute the phase factor and returns the new exit code
TREXIO_PHASE_CHANGE
if a change of sign is needed in the coefficient, so that the users can update the CI coefficients accordingly.