(** Representation for two-electron operators expressed in a Gaussian basis set. *) open Constants type t = { coef_g : float array; expo_g : float array; expo_g_inv : float array; } let make coef_g expo_g = let expo_g_inv = Array.map (fun x -> 1. /. x ) expo_g in { coef_g ; expo_g ; expo_g_inv } let one_over_r = let coef_g = [| 841.88478132 ; 70.590185207 ; 18.3616020768 ; 7.2608642093 ; 3.57483416444 ; 2.01376031082 ; 1.24216542801 ; 0.81754348620 ; 0.564546514023 ; 0.404228610699 ; 0.297458536575 ; 0.223321219537 ; 0.169933732064 ; 0.130190978230 ; 0.099652303426 ; 0.075428246546 ; 0.0555635614051 ; 0.0386791283055 ; 0.0237550435652 ; 0.010006278387 ; |] and expo_g = [| 84135.654509 ; 2971.58727634 ; 474.716025959 ; 130.676724560 ; 47.3938388887 ; 20.2078651631 ; 9.5411021938 ; 4.8109546955 ; 2.52795733067 ; 1.35894103210 ; 0.73586710268 ; 0.39557629706 ; 0.20785895177 ; 0.104809693858 ; 0.049485682527 ; 0.021099788990 ; 0.007652472186 ; 0.0021065225215 ; 0.0003365204879 ; 0.0000118855674 |] in make coef_g expo_g