#+begin_src elisp tangle: no :results none :exports none (setq pwd (file-name-directory buffer-file-name)) (setq name (file-name-nondirectory (substring buffer-file-name 0 -4))) (setq lib (concat pwd "lib/")) (setq testdir (concat pwd "test/")) (setq mli (concat lib name ".mli")) (setq ml (concat lib name ".ml")) (setq test-ml (concat testdir name ".ml")) (org-babel-tangle) #+end_src * Constants :PROPERTIES: :header-args: :noweb yes :comments both :END: All constants used in the program. ** Thresholds #+begin_src ocaml :tangle (eval mli) val epsilon : float val integrals_cutoff : float #+end_src | ~epsilon~ | Value below which a float is considered null. Default is \epsilon = 2.10^{-15} | | ~integrals_cutoff~ | Cutoff value for integrals. Default is \epsilon | #+begin_src ocaml :tangle (eval ml) :exports none let epsilon = 2.e-15 let integrals_cutoff = epsilon #+end_src ** Mathematical constants #+begin_src ocaml :tangle (eval mli) val pi : float val two_pi : float val sq_pi : float val sq_pi_over_two : float val pi_inv : float val two_over_sq_pi : float #+end_src | ~pi~ | $\pi = 3.141~592~653~589~793~12$ | | ~two_pi~ | $2 \pi$ | | ~sq_pi~ | $\sqrt{\pi}$ | | ~sq_pi_over_two~ | $\sqrt{\pi} / 2$ | | ~pi_inv~ | $1 / \pi$ | | ~two_over_sq_pi~ | $2 / \sqrt{\pi}$ | #+begin_src ocaml :tangle (eval ml) :exports none let pi = acos (-1.) let two_pi = 2. *. pi let sq_pi = sqrt pi let sq_pi_over_two = sq_pi *. 0.5 let pi_inv = 1. /. pi let two_over_sq_pi = 2. /. sq_pi #+end_src ** Physical constants #+begin_src ocaml :tangle (eval mli) val a0 : float val a0_inv : float val ha_to_ev : float val ev_to_ha : float #+end_src | ~a0~ | Bohr's radius : $a_0 = 0.529~177~210~67(23)$ angstrom | | ~a0_inv~ | $1 / a_0$ | | ~ha_to_ev~ | Hartree to eV conversion factor : $27.211~386~02(17)$ | | ~ev_to_ha~ | eV to Hartree conversion factor : 1 / ~ha_to_ev~ | #+begin_src ocaml :tangle (eval ml) :exports none let a0 = 0.529_177_210_67 let a0_inv = 1. /. a0 let ha_to_ev = 27.211_386_02 let ev_to_ha = 1. /. ha_to_ev #+end_src