open Qptypes;;

(** A long basis is a basis set where 
  * all the P orbitals are converted to x, y, z
  * all the D orbitals are converted to xx, xy, xz, yy, yx
  * etc
*)
type t = (Symmetry.Xyz.t * Gto.t * Nucl_number.t) list with sexp

(** Transform a basis to a long basis *)
val of_basis :
  (Gto.t * Nucl_number.t) list -> (Symmetry.Xyz.t * Gto.t * Nucl_number.t) list

(** Transform a long basis to a basis *)
val to_basis :
  (Symmetry.Xyz.t * Gto.t * Nucl_number.t) list -> (Gto.t * Nucl_number.t) list 

(** Convert the basis into its string representation *)
val to_string :
  (Symmetry.Xyz.t * Gto.t * Nucl_number.t) list -> string
