(** Two-electron integrals with an arbitrary operator, with a functorial interface parameterized by the fundamental two-electron integrals. {% $(00|00)^m = \int \int \phi_p(r1) \hat{O} \phi_q(r2) dr_1 dr_2 $ %} : Fundamental two-electron integral *) module type Zero_mType = sig val name : string (** Name of the kind of integrals, for printing purposes. *) val zero_m : Zero_m_parameters.t -> float array (** The returned float array contains all the {% $(00|00)^m$ %} values, where [m] is the index of the array. - [maxm] : Maximum total angular momentum - [expo_pq_inv] : {% $1/p + 1/q$ %} where {% $p$ %} and {% $q$ %} are the exponents of {% $\phi_p$ %} and {% $\phi_q$ %} - [norm_pq_sq] : square of the distance between the centers of {% $\phi_p$ %} and {% $\phi_q$ %} *) end module Make : functor (Zero_m : Zero_mType) -> sig include module type of FourIdxStorage val filter_contracted_shell_pairs : ?cutoff:float -> ContractedShellPair.t list -> ContractedShellPair.t list (** Uses Schwartz screening on contracted shell pairs. *) val of_basis : Basis.t -> t (** Compute all ERI's for a given {!Basis.t}. *) end