(** Storage for four-index data (integrals, density matrices, ...). There are two kinds of ordering of indices: - Physicist's : {% $\langle i j | k l \rangle$ %} - Chemist's : {% $(ij|kl)$ %} *) type t val create : size:int -> [< `Dense | `Sparse ] -> t (** If [`Dense] is chosen, internally the data is stored as a 4-dimensional [Bigarray]. Else, it is stored as a hash table. *) (** {2 Accessors} *) val get_chem : t -> int -> int -> int -> int -> float val get_phys : t -> int -> int -> int -> int -> float val set_chem : t -> int -> int -> int -> int -> float -> unit val set_phys : t -> int -> int -> int -> int -> float -> unit (** {2 I/O} *) val to_file : ?cutoff:float -> filename:string -> t -> unit (** Write the data to file, using the physicist's ordering. *)