We use double precision in most places, matching RDKit. A few exceptions in some of the FF code where I verified we could get away with it. Verification would need some heavy validation, both of MMFF and ETKDG relaxation, including the critical initial high energy steps after generation.
Though, if single precision is good enough for low energy minimization (possible but not proven), we could use a hybrid scheme. We've been discussing doing this with BFGS/FIRE anyway, the cost is some buffer allocation/reallocation, but since FIRE has less data associated with it, it's not a huge deal.
We use double precision in most places, matching RDKit. A few exceptions in some of the FF code where I verified we could get away with it. Verification would need some heavy validation, both of MMFF and ETKDG relaxation, including the critical initial high energy steps after generation.
Though, if single precision is good enough for low energy minimization (possible but not proven), we could use a hybrid scheme. We've been discussing doing this with BFGS/FIRE anyway, the cost is some buffer allocation/reallocation, but since FIRE has less data associated with it, it's not a huge deal.