{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Test of F12 matrix elements" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Initialization" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val png_image : string -> unit = \n" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "- : unit = ()\n", "Findlib has been successfully loaded. Additional directives:\n", " #require \"package\";; to load a package\n", " #list;; to list the available packages\n", " #camlp4o;; to load camlp4 (standard syntax)\n", " #camlp4r;; to load camlp4 (revised syntax)\n", " #predicates \"p,q,...\";; to set these predicates\n", " Topfind.reset();; to force that packages will be reloaded\n", " #thread;; to enable threads\n", "\n", "- : unit = ()\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/scemama/qp2/external/opam/4.07.1/lib/bytes: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/base64: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/base64/base64.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/ocaml/compiler-libs: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/ocaml/compiler-libs/ocamlcommon.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/result: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/result/result.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/ppx_deriving/runtime: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/ppx_deriving/runtime/ppx_deriving_runtime.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/ppx_deriving_yojson/runtime: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/ppx_deriving_yojson/runtime/ppx_deriving_yojson_runtime.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/ocaml/unix.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/uuidm: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/uuidm/uuidm.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/easy-format: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/easy-format/easy_format.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/biniou: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/biniou/biniou.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/yojson: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/yojson/yojson.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/jupyter: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/jupyter/jupyter.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/jupyter/notebook: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/jupyter/notebook/jupyter_notebook.cma: loaded\n" ] }, { "data": { "text/plain": [ "val png_image : string -> Jupyter_notebook.display_id = \n" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" }, { "name": "stderr", "output_type": "stream", "text": [ "/home/scemama/qp2/external/opam/4.07.1/lib/ocaml/compiler-libs/ocamlbytecomp.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/ocaml/compiler-libs/ocamltoplevel.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/ocaml/bigarray.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/lacaml: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/lacaml/lacaml.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/lacaml/top: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/lacaml/top/lacaml_top.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/astring: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/astring/astring.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/cmdliner: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/cmdliner/cmdliner.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/seq: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/stdlib-shims: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/stdlib-shims/stdlib_shims.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/fmt: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/fmt/fmt.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/fmt/fmt_cli.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/fmt/fmt_tty.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/alcotest: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/alcotest/alcotest.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/ocaml/str.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/zarith: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/zarith/zarith.cma: loaded\n", "/home/scemama/qp2/external/opam/4.07.1/lib/getopt: added to search path\n", "/home/scemama/qp2/external/opam/4.07.1/lib/getopt/getopt.cma: loaded\n" ] } ], "source": [ "let png_image = print_endline ;;\n", "\n", "(* --------- *)\n", "\n", "#cd \"/home/scemama/QCaml\";;\n", "#use \"topfind\";;\n", "#require \"jupyter.notebook\";;\n", "\n", "let png_image name = \n", " Jupyter_notebook.display_file ~base64:true \"image/png\" (\"Notebooks/images/\"^name)\n", ";;\n", "\n", "#require \"lacaml.top\";;\n", "#require \"alcotest\";;\n", "#require \"str\";;\n", "#require \"bigarray\";;\n", "#require \"zarith\";;\n", "#require \"getopt\";;\n", "#directory \"_build\";;\n", "#directory \"_build/Basis\";;\n", "#directory \"_build/CI\";;\n", "#directory \"_build/MOBasis\";;\n", "#directory \"_build/Nuclei\";;\n", "#directory \"_build/Parallel\";;\n", "#directory \"_build/Perturbation\";;\n", "#directory \"_build/SCF\";;\n", "#directory \"_build/Utils\";;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Modules" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "#load \"Constants.cmo\";;\n", "#load_rec \"Util.cma\";;\n", "#load_rec \"Matrix.cmo\";;\n", "#load_rec \"Simulation.cmo\";;\n", "#load_rec \"Spindeterminant.cmo\";;\n", "#load_rec \"Determinant.cmo\";;\n", "#load_rec \"HartreeFock.cmo\";;\n", "#load_rec \"MOBasis.cmo\";;\n", "#load_rec \"F12CI.cmo\";;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Printers" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val pp_mo : Format.formatter -> MOBasis.t -> unit = \n" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#install_printer AngularMomentum.pp_string ;;\n", "#install_printer Basis.pp ;;\n", "#install_printer Charge.pp ;;\n", "#install_printer Coordinate.pp ;;\n", "#install_printer Vector.pp;;\n", "#install_printer Matrix.pp;;\n", "#install_printer Util.pp_float_2darray;;\n", "#install_printer Util.pp_float_array;;\n", "#install_printer Util.pp_matrix;;\n", "#install_printer HartreeFock.pp ;;\n", "#install_printer Fock.pp ;;\n", "#install_printer MOClass.pp ;;\n", "let pp_mo ppf t = MOBasis.pp ~start:1 ~finish:0 ppf t ;;\n", "#install_printer pp_mo;;\n", "(*\n", "#install_printer DeterminantSpace.pp;;\n", "*)\n", "#install_printer SpindeterminantSpace.pp;;\n", "#install_printer Bitstring.pp;;\n", "\n", "(* --------- *)\n", "\n", "open Lacaml.D\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Run" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Simulation\n" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val basis_filename : string = \"/home/scemama/qp2/data/basis/6-31g\"\n" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val aux_basis_filename : string = \"/home/scemama/qp2/data/basis/cc-pvdz\"\n" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val nuclei : Nuclei.t = [|(Element.N, 0.0000 0.0000 0.0000)|]\n" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val frozen_core : bool = true\n" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val multiplicity : int = 2\n" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val state : int = 1\n" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val basis : Basis.t =\n", " \n", " Atomic Basis set\n", " ----------------\n", "\n", "-----------------------------------------------------------------------\n", " # Angular Coordinates (Bohr) Exponents Coefficients\n", " Momentum X Y Z\n", "-----------------------------------------------------------------------\n", " 1-3 S 0.0000 0.0000 0.0000 4.17351100e+03 1.83480000e-03\n", " 6.27457900e+02 1.39950000e-02\n", " 1.42902100e+02 6.85870000e-02\n", " 4.02343300e+01 2.32241000e-01\n", " 1.28202100e+01 4.69070000e-01\n", " 4.39043700e+00 3.60455000e-01\n", " \n", " 1.16263580e+01 -1.14961000e-01\n", " 2.71628000e+00 -1.69118000e-01\n", " 7.72218000e-01 1.14585200e+00\n", " \n", " 2.12031300e-01 1.00000000e+00\n", " \n", " \n", "-----------------------------------------------------------------------\n", " 3-8 P 0.0000 0.0000 0.0000 1.16263580e+01 6.75800000e-02\n", " 2.71628000e+00 3.23907000e-01\n", " 7.72218000e-01 7.40895000e-01\n", " \n", " 2.12031300e-01 1.00000000e+00\n", " \n", " \n", "-----------------------------------------------------------------------\n", "\n" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val aux_basis : Basis.t =\n", " \n", " Atomic Basis set\n", " ----------------\n", "\n", "-----------------------------------------------------------------------\n", " # Angular Coordinates (Bohr) Exponents Coefficients\n", " Momentum X Y Z\n", "-----------------------------------------------------------------------\n", " 1-6 S 0.0000 0.0000 0.0000 4.17351100e+03 1.83480000e-03\n", " 6.27457900e+02 1.39950000e-02\n", " 1.42902100e+02 6.85870000e-02\n", " 4.02343300e+01 2.32241000e-01\n", " 1.28202100e+01 4.69070000e-01\n", " 4.39043700e+00 3.60455000e-01\n", " \n", " 1.16263580e+01 -1.14961000e-01\n", " 2.71628000e+00 -1.69118000e-01\n", " 7.72218000e-01 1.14585200e+00\n", " \n", " 2.12031300e-01 1.00000000e+00\n", " \n", " 9.04600000e+03 7.00000000e-04\n", " 1.35700000e+03 5.38900000e-03\n", " 3.09300000e+02 2.74060000e-02\n", " 8.77300000e+01 1.03207000e-01\n", " 2.85600000e+01 2.78723000e-01\n", " 1.02100000e+01 4.48540000e-01\n", " 3.83800000e+00 2.78238000e-01\n", " 7.46600000e-01 1.54400000e-02\n", " \n", " 9.04600000e+03 -1.53000000e-04\n", " 1.35700000e+03 -1.20800000e-03\n", " 3.09300000e+02 -5.99200000e-03\n", " 8.77300000e+01 -2.45440000e-02\n", " 2.85600000e+01 -6.74590000e-02\n", " 1.02100000e+01 -1.58078000e-01\n", " 3.83800000e+00 -1.21831000e-01\n", " 7.46600000e-01 5.49003000e-01\n", " \n", " 2.24800000e-01 1.00000000e+00\n", " \n", " \n", "-----------------------------------------------------------------------\n", " 3-14 P 0.0000 0.0000 0.0000 1.16263580e+01 6.75800000e-02\n", " 2.71628000e+00 3.23907000e-01\n", " 7.72218000e-01 7.40895000e-01\n", " \n", " 2.12031300e-01 1.00000000e+00\n", " \n", " 1.35500000e+01 3.99190000e-02\n", " 2.91700000e+00 2.17169000e-01\n", " 7.97300000e-01 5.10319000e-01\n", " \n", " 2.18500000e-01 1.00000000e+00\n", " \n", " \n", "-----------------------------------------------------------------------\n", " 19-24 D 0.0000 0.0000 0.0000 8.17000000e-01 1.00000000e+00\n", " \n", " \n", "-----------------------------------------------------------------------\n", "\n" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val f12 : F12factor.t =\n", " {F12factor.expo_s = 1.;\n", " gaussian =\n", " {GaussianOperator.coef_g =\n", " [ -0.314400 -0.303700 -0.168100 -0.098110 -0.060240 -0.037260 ];\n", " expo_sg =\n", " [ 0.220900 1.004000 3.622000 12.160000 45.870000 254.400000 ];\n", " expo_sg_inv =\n", " [ 4.526935 0.996016 0.276091 0.082237 0.021801 0.003931 ]}}\n" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val charge : int = 0\n" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val simulation : Simulation.t = \n" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let basis_filename = \"/home/scemama/qp2/data/basis/6-31g\" \n", "let aux_basis_filename = \"/home/scemama/qp2/data/basis/cc-pvdz\" \n", "let nuclei = Nuclei.of_zmt_string \"n\" \n", "let frozen_core = true \n", "let multiplicity = 2\n", "let state = 1\n", "\n", "let basis = Basis.of_nuclei_and_basis_filenames ~nuclei [basis_filename] \n", "let aux_basis = Basis.of_nuclei_and_basis_filenames ~nuclei (basis_filename :: aux_basis_filename :: []) \n", "let f12 = F12factor.gaussian_geminal 1.0 \n", "let charge = 0 \n", "\n", "\n", "let simulation =\n", " Simulation.make \n", " ~f12 ~charge ~multiplicity ~nuclei\n", " ~cartesian:true\n", " basis\n" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val n_elec_alfa : int = 4\n", "val n_elec_beta : int = 3\n", "val n_elec : int = 7\n" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let n_elec_alfa, n_elec_beta, n_elec = \n", " let e = Simulation.electrons simulation in\n", " Electrons.(n_alfa e, n_beta e, n_elec e)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Hartree-Fock" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "15 significant shell pairs computed in 0.005208 seconds\n", "1\n", "2\n", "5\n", "6\n", "Computed ERIs in 0.026325 seconds\n", "MOs =\n", "\n", "\n", " -- 1 -- -- 2 -- -- 3 -- -- 4 -- -- 5 --\n", " 1 0.995805 -0.228629 -0 0 -0\n", " 2 0.0207488 0.523688 2.54045E-16 1.78891E-15 -0\n", " 3 0 -3.45043E-16 0.516899 5.11587E-15 0.306901\n", " ... ... ... ... ...\n", " 7 0 -0 0.381023 3.3482E-15 0.401251\n", " 8 0 -6.37589E-16 -0.238604 0.273454 0.404641\n", " 9 0 -6.8E-16 0.182264 0.357982 -0.309095\n", " \n", "\n", " -- 6 -- -- 7 -- -- 8 -- -- 9 --\n", " 1 -0 0 0.0896964 4.08276E-15\n", " 2 1.33506E-15 -3.60646E-15 -1.51213 -6.87142E-14\n", " 3 -0.759946 0.656011 -2.25085E-15 -1.25628E-14\n", " ... ... ... ...\n", " 7 0.836375 -0.602939 2.17188E-15 1.39379E-14\n", " 8 -0.523755 -0.608033 -2.87741E-14 0.655571\n", " 9 0.400083 0.464461 -3.95033E-14 0.858218\n", " \n" ] }, { "data": { "text/plain": [ "val hf : HartreeFock.t = \n", "======================================================================\n", " Restricted Open-shell Hartree-Fock \n", "======================================================================\n", "\n", " ------------------------------------------------------------\n", " # HF energy Convergence HOMO-LUMO\n", " ------------------------------------------------------------\n", " 1 -52.57862719 9.9817e-01 0.0835\n", " 2 -54.20380931 2.2021e-01 0.2639\n", " 3 -54.23392256 5.7771e-02 0.2682\n", " 4 -54.24023663 2.1083e-02 0.2680\n", " 5 -54.24159726 8.9827e-03 0.2673\n", " 6 -54.24188853 4.2281e-03 0.2669\n", " 7 -54.24195106 1.9862e-03 0.2667\n", " 8 -54.24196836 1.6000e-05 0.2665\n", " 9 -54.24196836 1.6302e-06 0.2665\n", " 10 -54.24196843 3.8429e-08 0.2665\n", " ------------------------------------------------------------\n", "\n", "\n", " ============================================================\n", " One-electron energy -73.7477460896\n", " Kinetic 54.1465371332\n", " Potential -127.8942832228\n", " -------------------------------------------------------- \n", " Two-electron energy 19.5057776578\n", " Coulomb 26.0005985081\n", " Exchange -6.4948208503\n", " -------------------------------------------------------- \n", " HF HOMO -5.3102635644\n", " HF LUMO 1.9421331121\n", " HF LUMO-LUMO 7.2523966765\n", " -------------------------------------------------------- \n", " Electronic energy -54.2419684318\n", " Nuclear repulsion 0.0000000000\n", " Hartree-Fock energy -54.2419684318\n", " ============================================================\n", " \n", "\n" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val mo_basis : MOBasis.t =\n", " Eigenvalues: -15.681404 -0.961606 -0.451178 -0.195149 0.040479 \n", " -- 1 -- -- 2 -- -- 3 -- -- 4 -- -- 5 --\n", " 1 0.995805 -0.228629 -0 0 -0\n", " 2 0.0207488 0.523688 2.54045E-16 1.78891E-15 -0\n", " 3 0 -3.45043E-16 0.516899 5.11587E-15 0.306901\n", " ... ... ... ... ...\n", " 7 0 -0 0.381023 3.3482E-15 0.401251\n", " 8 0 -6.37589E-16 -0.238604 0.273454 0.404641\n", " 9 0 -6.8E-16 0.182264 0.357982 -0.309095\n", " \n", " Eigenvalues: 0.908849 0.950925 0.975309 0.912008 \n", " -- 6 -- -- 7 -- -- 8 -- -- 9 --\n", " 1 -0 0 0.0896964 4.08276E-15\n", " 2 1.33506E-15 -3.60646E-15 -1.51213 -6.87142E-14\n", " 3 -0.759946 0.656011 -2.25085E-15 -1.25628E-14\n", " ... ... ... ...\n", " 7 0.836375 -0.602939 2.17188E-15 1.39379E-14\n", " 8 -0.523755 -0.608033 -2.87741E-14 0.655571\n", " 9 0.400083 0.464461 -3.95033E-14 0.858218\n", " \n", " \n" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let hf = HartreeFock.make ~guess:`Hcore ~max_scf:10 simulation ;;\n", "\n", "let mo_basis = MOBasis.of_hartree_fock hf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " FCI-F12" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notations:\n", "\n", "* $\\langle ij || kl \\rangle = \\int \\phi_i(r_1) \\phi_j(r_2) \\frac{1}{r_{12}} \\phi_k(r1) \\phi_l(r2) $ \n", "* $\\left[ ij || kl \\right] = \\int \\phi_i(r_1) \\phi_j(r_2) f_{12} \\phi_k(r1) \\phi_l(r2) $ \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Common functions" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val f12 : F12factor.t =\n", " {F12factor.expo_s = 1.;\n", " gaussian =\n", " {GaussianOperator.coef_g =\n", " [ -0.314400 -0.303700 -0.168100 -0.098110 -0.060240 -0.037260 ];\n", " expo_sg =\n", " [ 0.220900 1.004000 3.622000 12.160000 45.870000 254.400000 ];\n", " expo_sg_inv =\n", " [ 4.526935 0.996016 0.276091 0.082237 0.021801 0.003931 ]}}\n" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val mo_num : int = 9\n" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val pp_spindet : Format.formatter -> Spindeterminant.t -> unit = \n" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val pp_det : Format.formatter -> Determinant.t -> unit = \n" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let f12 = Util.of_some @@ Simulation.f12 simulation \n", "\n", "let mo_num = MOBasis.size mo_basis \n", "\n", "let pp_spindet = Spindeterminant.pp mo_num\n", "\n", "let pp_det = Determinant.pp mo_num\n", "\n", ";;\n", "\n", "#install_printer pp_spindet ;;\n", "#install_printer pp_det ;;\n", "\n" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val simulation_aux : Simulation.t = \n" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "66 significant shell pairs computed in 0.050789 seconds\n", "1\n", "2\n", "5\n", "6\n", "9\n", "10\n", "11\n", "12\n", "15\n", "18\n", "Computed ERIs in 0.889029 seconds\n" ] }, { "data": { "text/plain": [ "val aux_basis : MOBasis.t =\n", " Eigenvalues: -15.681404 -0.961606 -0.451178 -0.195149 0.040479 \n", " -- 1 -- -- 2 -- -- 3 -- -- 4 -- -- 5 --\n", " 1 0.995805 -0.228629 -1.04121E-12 -1.20393E-11 -7.74166E-12\n", " 2 0.0207488 0.523688 -3.08871E-13 -4.88506E-13 -3.2349E-13\n", " 3 2.26649E-12 -2.08563E-12 0.516899 3.82452E-12 0.306901\n", " ... ... ... ... ...\n", " 22 0 0 0 0 -0\n", " 23 0 0 0 0 -0\n", " 24 0 0 0 0 -0\n", " \n", " Eigenvalues: 0.908849 0.950925 0.975309 0.912008 2.032635 \n", " -- 6 -- -- 7 -- -- 8 -- -- 9 -- -- 10 --\n", " 1 -1.59863E-11 1.67271E-11 0.0896964 8.01274E-12 0\n", " 2 7.28187E-13 -1.60327E-12 -1.51213 -2.11029E-13 0\n", " 3 -0.759946 0.656011 -6.79771E-13 -6.65308E-12 0\n", " ... ... ... ... ...\n", " 22 -0 -0 0 0 0\n", " 23 -0 -0 0 0 1\n", " 24 -0 -0 0 0 0\n", " \n", " Eigenvalues: 2.209274 2.205946 2.198723 2.627905 18.044176 \n", " -- 11 -- -- 12 -- -- 13 -- -- 14 -- -- 15 --\n", " 1 4.4959E-10 -2.92245E-09 -6.60522E-10 7.27202 39.53\n", " 2 -2.27871E-11 1.81557E-11 8.06971E-11 -19.3218 -84.1067\n", " 3 -8.99756 -28.2245 -4.1365 -1.31641E-12 -1.85784E-10\n", " ... ... ... ... ...\n", " 22 -0 -0 2.75019E-14 0 0\n", " 23 -0 -0 0 0 0\n", " 24 -3.45546E-14 -7.00504E-14 0 0 0\n", " \n", " Eigenvalues: 31.400935 31.392955 31.387019 476.102993 2.036553 \n", " -- 16 -- -- 17 -- -- 18 -- -- 19 -- -- 20 --\n", " 1 -2.50732E-08 -1.36441E-09 1.64713E-08 416.882 -2.63792E-11\n", " 2 5.37419E-10 -1.14011E-10 5.52992E-10 -1.46938 4.55954E-13\n", " 3 -190.497 18.1424 30.0485 -1.1041E-08 -1.61968E-10\n", " ... ... ... ... ...\n", " 22 1.51034E-13 2.01121E-13 1.28118E-13 0 -0.128674\n", " 23 -0 -0 -0 0 -0\n", " 24 -7.82065E-13 -0 -0 0 0.923094\n", " \n", " Eigenvalues: 2.033307 2.036684 2.036990 \n", " -- 21 -- -- 22 -- -- 23 --\n", " 1 -5.67082E-11 1.56263E-12 3.6287E-10\n", " 2 9.80094E-13 -2.68735E-14 -6.29775E-12\n", " 3 -4.74932E-12 1.67489E-13 -0\n", " ... ... ...\n", " 22 0.986223 -0.103886 -0.00379526\n", " 23 0 0 -0\n", " 24 -0.383449 0.0293605 0.00152471\n", " \n", " \n" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val aux_num : int = 23\n" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let simulation_aux = \n", " let charge = Charge.to_int @@ Simulation.charge simulation \n", " and multiplicity = Electrons.multiplicity @@ Simulation.electrons simulation\n", " and nuclei = Simulation.nuclei simulation\n", " in\n", " let general_basis = \n", " Basis.general_basis @@ Simulation.basis simulation\n", " in\n", " GeneralBasis.combine [\n", " general_basis ; GeneralBasis.read aux_basis_filename\n", " ]\n", " |> Basis.of_nuclei_and_general_basis nuclei\n", " |> Simulation.make ~f12 ~charge ~multiplicity ~nuclei \n", "\n", "\n", "let aux_basis = \n", " MOBasis.of_mo_basis simulation_aux mo_basis\n", "\n", "let aux_num = \n", " MOBasis.size aux_basis\n" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "66 significant shell pairs computed in 0.842000 seconds\n", "1\n", "2\n", "5\n", "6\n", "9\n", "10\n", "11\n", "12\n", "15\n", "18\n", "Computed ERIs in 17.257765 seconds\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "4-idx transformation \n", "23 / 23\n", "4-idx transformation \n", "23 / 23\n" ] } ], "source": [ "let () = ignore @@ MOBasis.f12_ints aux_basis\n", "let () = ignore @@ MOBasis.two_e_ints aux_basis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Integral-based functions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{equation}\n", "\\langle I | \\hat{H} | J \\rangle = \\begin{cases}\n", "\\sum_i h_{ii} + \\frac{1}{2} \\sum_{ij} \\langle ij || ij \\rangle \\text{ when } |J\\rangle = |I\\rangle \\\\\n", "h_{ik} + \\sum_{j} \\langle ij || kj \\rangle \\text{ when } |J\\rangle = \\hat{T}_i^k |I\\rangle \\\\\n", "\\langle ij || kl \\rangle \\text{ when } |J\\rangle = \\hat{T}_{ij}^{kl} |I\\rangle \\\\\n", "\\end{cases}\n", "\\end{equation}\n", "\n", "\n", "\\begin{equation}\n", "\\langle I | \\hat{F} | J \\rangle = \\begin{cases}\n", "\\sum_i f_{ii} + \\frac{1}{2} \\sum_{ij} \\langle ij || ij \\rangle \\text{ when } |J\\rangle = |I\\rangle \\\\\n", "f_{ik} + \\sum_{j} \\langle ij || kj \\rangle \\text{ when } |J\\rangle = \\hat{T}_i^k |I\\rangle \\\\\n", "\\langle ij || kl \\rangle \\text{ when } |J\\rangle = \\hat{T}_{ij}^{kl} |I\\rangle \\\\\n", "\\end{cases}\n", "\\end{equation}" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val cancel_singles : bool = false\n" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val mos_cabs : int list =\n", " [10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20; 21; 22; 23]\n" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val mos_abs : int list =\n", " [1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20; 21;\n", " 22; 23]\n" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val mos_in : int list = [1; 2; 3; 4; 5; 6; 7; 8; 9]\n" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val mos_a : Determinant.t -> int list = \n" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val mos_b : Determinant.t -> int list = \n" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let cancel_singles = false \n", "\n", "let mos_cabs = \n", " Util.list_range (mo_num+1) aux_num\n", " \n", "let mos_abs = \n", " Util.list_range 1 aux_num\n", " \n", "let mos_in = \n", " Util.list_range 1 mo_num\n", "\n", "let mos_a k =\n", " Determinant.alfa k\n", " |> Spindeterminant.to_list\n", " \n", "let mos_b k =\n", " Determinant.beta k\n", " |> Spindeterminant.to_list\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### H integrals" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val h_one : int -> int -> '_weak2 -> float = \n" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val h_two : int -> int -> int -> int -> Spin.t -> Spin.t -> float = \n" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let h_one =\n", " let h = \n", " MOBasis.one_e_ints aux_basis\n", " in fun i j _ -> h.{i,j}\n", " \n", "let h_two = \n", " let two_e_ints = MOBasis.two_e_ints aux_basis in\n", " let h2 i j k l (s:Spin.t) (s':Spin.t) =\n", " if s' <> s then\n", " ERI.get_phys two_e_ints i j k l\n", " else\n", " (ERI.get_phys two_e_ints i j k l) -. \n", " (ERI.get_phys two_e_ints i j l k)\n", " in\n", " h2\n", "\n", " \n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### F12 integrals" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val f_two : int -> int -> int -> int -> Spin.t -> Spin.t -> float = \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val f_one : 'a -> 'b -> 'c -> float = \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val f_one : int -> int -> '_weak2 -> float = \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let f_two = \n", " let two_e_ints = MOBasis.f12_ints aux_basis in\n", " let f2 i j k l (s:Spin.t) (s':Spin.t) =\n", " if s' <> s then\n", " 0.5 *. F12.get_phys two_e_ints i j k l\n", " else\n", " 0.5 *. (\n", " (F12.get_phys two_e_ints i j k l) -. \n", " (F12.get_phys two_e_ints i j l k) )\n", " in\n", " let f3 i j k l (s:Spin.t) (s':Spin.t) = \n", " if (i=k && j<>l) || (j=l && i<>k) then\n", " 0.\n", " else\n", " f2 i j k l s s'\n", " in\n", " if cancel_singles then f3 else f2\n", "\n", "let f_one = fun _ _ _ -> 0.\n", "\n", "(*\n", "let f_two = h_two\n", "*)\n", "\n", "let f_one = h_one" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Determinant-based functions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Integrals" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val f12_integrals :\n", " 'a ->\n", " (int -> int -> '_weak2 -> float) *\n", " (int -> int -> int -> int -> Spin.t -> Spin.t -> float) * 'b option = \n" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val h_ij : MOBasis.t -> CIMatrixElement.De.t -> CIMatrixElement.De.t -> float =\n", " \n" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val f_ij : 'a -> CIMatrixElement.De.t -> CIMatrixElement.De.t -> float =\n", " \n" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val hf_ij :\n", " MOBasis.t -> CIMatrixElement.De.t -> CIMatrixElement.De.t -> float list =\n", " \n" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let f12_integrals mo_basis =\n", " ( f_one, f_two, None )\n", "\n", "let h_ij mo_basis ki kj =\n", " let integrals =\n", " List.map (fun f -> f mo_basis)\n", " [ CI.h_integrals ]\n", " in\n", " CIMatrixElement.make integrals ki kj \n", " |> List.hd\n", "\n", "\n", "let f_ij mo_basis ki kj =\n", " let integrals =\n", " List.map (fun f -> f mo_basis)\n", " [ f12_integrals ]\n", " in\n", " CIMatrixElement.make integrals ki kj \n", " |> List.hd \n", "\n", "\n", "let hf_ij mo_basis ki kj =\n", " let integrals =\n", " List.map (fun f -> f mo_basis)\n", " [ CI.h_integrals ; f12_integrals ]\n", " in\n", " CIMatrixElement.make integrals ki kj\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Determinant space" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val is_a_double : DeterminantSpace.t -> Determinant.t -> bool = \n" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let is_a_double det_space =\n", " let mo_class = DeterminantSpace.mo_class det_space in\n", " let mo_num = Array.length @@ MOClass.mo_class_array mo_class in\n", " let m l =\n", " List.fold_left (fun accu i ->\n", " let j = i-1 in Bitstring.logor accu (Bitstring.shift_left_one mo_num j)\n", " ) (Bitstring.zero mo_num) l\n", " in\n", " let aux_mask = m (MOClass.auxiliary_mos mo_class) in\n", " fun k -> \n", " let alfa =\n", " Determinant.alfa k\n", " |> Spindeterminant.bitstring\n", " in\n", " let beta =\n", " Determinant.beta k\n", " |> Spindeterminant.bitstring\n", " in\n", " let a = Bitstring.logand aux_mask alfa\n", " and b = Bitstring.logand aux_mask beta\n", " in\n", " match Bitstring.popcount a + Bitstring.popcount b with\n", " | 2 | 1 -> true\n", " | 0 | _ -> false\n", "\n" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of determinants : 56 28 1568\n" ] }, { "data": { "text/plain": [ "val in_space : DeterminantSpace.t = \n" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "Number of determinants : 1540 231 355740\n" ] }, { "data": { "text/plain": [ "val aux_space : DeterminantSpace.t = \n" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val det_space_in : unit -> Determinant.t Stream.t = \n" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val det_space_out : unit -> (Determinant.t * Determinant.t) Stream.t = \n" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let in_space = \n", " DeterminantSpace.fci_f12_of_mo_basis aux_basis ~frozen_core mo_num\n", " \n", "let aux_space = \n", " DeterminantSpace.fci_of_mo_basis aux_basis ~frozen_core \n", "\n", "let det_space_in () =\n", " DeterminantSpace.determinant_stream in_space\n", "\n", "let det_space_out () =\n", " let s = \n", " DeterminantSpace.determinant_stream aux_space\n", " in\n", " Stream.from (fun _ ->\n", " try\n", " let is_a_double = is_a_double in_space in\n", " let rec result () =\n", " let ki = Stream.next s in\n", " if is_a_double ki then\n", " Some (ki,ki)\n", " else\n", " result ()\n", " in\n", " result ()\n", " with Stream.Failure -> None\n", " )\n", " " ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "val ci : CI.t =\n", " {CI.e_shift = -54.2419683633284677; det_space = ; m_H = ;\n", " m_S2 = ; eigensystem = ; n_states = 1}\n" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ " 1 0.0000000000 5.38465905e-01\n", " 2 -0.0538262193 1.87217169e-01\n", " 3 -0.0657011468 6.52524404e-02\n", " 4 -0.0682884307 4.47790537e-02\n", " 5 -0.0722202576 2.28670803e-02\n", " 6 -0.0732730385 5.26351716e-03\n", " 7 -0.0733234182 9.38250052e-04\n", " 8 -0.0733249420 2.14671657e-04\n", " 0 -0.0733250301 7.26676403e-05\n", " 1 -0.0733250395 2.46738965e-05\n", " 2 -0.0733250400 1.50948498e-05\n", " 3 -0.0733250400 4.00236940e-06\n", " 4 -0.0733250400 1.38596264e-06\n" ] }, { "data": { "text/plain": [ "val ci_coef : Lacaml.D.Mat.t =\n", " \n", "\n", " -- 1 --\n", " 1 0.701258\n", " 2 0\n", " 3 0\n", " ...\n", " 1566 0\n", " 1567 0\n", " 1568 0\n", " \n", "val ci_energy : Lacaml.D.Vec.t =\n", " R1 R2 R3 R5 R6 R7\n", " -54.3153 -54.1549 -53.2726 ... -51.7367 -51.4918 -50.3061\n" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ " 5 -0.0733250400 7.40047633e-07\n", "\n" ] }, { "data": { "text/plain": [ "- : unit = ()\n" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let ci = CI.make ~n_states:state in_space\n", "\n", "let ci_coef, ci_energy = Lazy.force ci.eigensystem \n", "\n", "let _ = print_newline () \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Permutation operator $p_{12}$ that generates a new determinant with electrons 1 and 2 swapped." ] }, { "cell_type": "raw", "metadata": {}, "source": [ "let p12 det_space =\n", " let mo_class = DeterminantSpace.mo_class det_space in\n", " let mo_num = Array.length @@ MOClass.mo_class_array mo_class in\n", " let m l =\n", " List.fold_left (fun accu i ->\n", " let j = i-1 in Bitstring.logor accu (Bitstring.shift_left_one mo_num j)\n", " ) (Bitstring.zero mo_num) l\n", " in\n", " let aux_mask = m (MOClass.auxiliary_mos mo_class) in\n", " let not_aux_mask =\n", " Bitstring.(shift_left_one mo_num (mo_num-1) |> minus_one |> logxor aux_mask)\n", " in\n", " fun k ->\n", " let alfa =\n", " Determinant.alfa k\n", " |> Spindeterminant.bitstring\n", " in\n", " let beta =\n", " Determinant.beta k\n", " |> Spindeterminant.bitstring\n", " in\n", " let a = Bitstring.logand aux_mask alfa\n", " and b = Bitstring.logand aux_mask beta\n", " in\n", " match Bitstring.popcount a, Bitstring.popcount b with\n", " | 2, 0 \n", " | 0, 2 -> Some (Determinant.negate_phase k)\n", " | 1, 1 -> Some (Determinant.of_spindeterminants\n", " (Spindeterminant.of_bitstring @@\n", " Bitstring.(logor b (logand not_aux_mask alfa)) )\n", " (Spindeterminant.of_bitstring @@\n", " Bitstring.(logor a (logand not_aux_mask beta))\n", " ) )\n", " | 1, 0 \n", " | 0, 1 -> Some k\n", " | _ -> None\n", " \n", " \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Matrices $\\langle I | H | \\alpha \\rangle$ and $\\langle I | F | \\alpha \\rangle$ " ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "val randomize : bool = false\n" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val out_list : (Determinant.t * Determinant.t) list =\n", " [(phase:+1\n", " a:+1 +++------+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +++------+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++-+-----+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++-+-----+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-++-----+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-++-----+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++--+----+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++--+----+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-+-+----+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-+-+----+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +--++----+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +--++----+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++---+---+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++---+---+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-+--+---+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-+--+---+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +--+-+---+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +--+-+---+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +---++---+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +---++---+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++----+--+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++----+--+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-+---+--+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-+---+--+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +--+--+--+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +--+--+--+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +---+-+--+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +---+-+--+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +----++--+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +----++--+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++-----+-+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++-----+-+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-+----+-+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-+----+-+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +--+---+-+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +--+---+-+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +---+--+-+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +---+--+-+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +----+-+-+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +----+-+-+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-----++-+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-----++-+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++------++------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++------++------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-+-----++------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-+-----++------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +--+----++------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +--+----++------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +---+---++------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +---+---++------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +----+--++------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +----+--++------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-----+-++------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-----+-++------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +------+++------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +------+++------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +++-------+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +++-------+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++-+------+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++-+------+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-++------+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-++------+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++--+-----+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++--+-----+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-+-+-----+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-+-+-----+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +--++-----+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +--++-----+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++---+----+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++---+----+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-+--+----+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-+--+----+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +--+-+----+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +--+-+----+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +---++----+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +---++----+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++----+---+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++----+---+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-+---+---+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-+---+---+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +--+--+---+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +--+--+---+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +---+-+---+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +---+-+---+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +----++---+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +----++---+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++-----+--+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++-----+--+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-+----+--+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-+----+--+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +--+---+--+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +--+---+--+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +---+--+--+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +---+--+--+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +----+-+--+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +----+-+--+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-----++--+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-----++--+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++------+-+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++------+-+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-+-----+-+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-+-----+-+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +--+----+-+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +--+----+-+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +---+---+-+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +---+---+-+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +----+--+-+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +----+--+-+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-----+-+-+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-----+-+-+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +------++-+-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +------++-+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++-------++-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++-------++-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-+------++-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-+------++-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +--+-----++-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +--+-----++-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +---+----++-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +---+----++-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +----+---++-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +----+---++-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-----+--++-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-----+--++-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +------+-++-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +------+-++-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-------+++-----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-------+++-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +++--------+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +++--------+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++-+-------+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++-+-------+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-++-------+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-++-------+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++--+------+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++--+------+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-+-+------+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-+-+------+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +--++------+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +--++------+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++---+-----+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++---+-----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-+--+-----+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-+--+-----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +--+-+-----+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +--+-+-----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +---++-----+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +---++-----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++----+----+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++----+----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-+---+----+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-+---+----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +--+--+----+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +--+--+----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +---+-+----+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +---+-+----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +----++----+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +----++----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++-----+---+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++-----+---+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-+----+---+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-+----+---+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +--+---+---+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +--+---+---+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +---+--+---+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +---+--+---+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +----+-+---+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +----+-+---+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-----++---+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-----++---+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++------+--+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++------+--+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-+-----+--+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-+-----+--+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +--+----+--+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +--+----+--+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +---+---+--+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +---+---+--+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +----+--+--+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +----+--+--+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-----+-+--+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-----+-+--+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +------++--+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +------++--+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 ++-------+-+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 ++-------+-+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-+------+-+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-+------+-+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +--+-----+-+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +--+-----+-+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +---+----+-+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +---+----+-+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +----+---+-+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +----+---+-+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-----+--+-+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +-----+--+-+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +------+-+-+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ",\n", "phase:+1\n", "a:+1 +------+-+-+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ");\n", "(phase:+1\n", " a:+1 +-------++-+----------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ", ...);\n", "...]\n" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val in_list : Determinant.t list =\n", " [phase:+1\n", " a:+1 ++++------------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-+-----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-++-----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+++-----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++--+----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+-+----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++-+----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--++----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-++----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+++----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++---+---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+--+---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++--+---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+-+---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+-+---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++-+---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---++---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--++---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-++---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+++---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++----+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+---+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++---+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+--+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+--+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++--+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+-+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+-+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+-+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++-+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----++--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---++--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--++--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-++--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+++--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-----+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+----+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++----+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+---+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+---+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++---+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+--+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+--+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+--+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++--+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----+-+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---+-+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--+-+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-+-+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----++-+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-----++-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+----++-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+---++-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+--++-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-++-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+++-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++++------------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-+-----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-++-----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+++-----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++--+----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+-+----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++-+----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--++----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-++----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+++----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++---+---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+--+---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++--+---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+-+---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+-+---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++-+---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---++---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--++---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-++---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+++---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++----+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+---+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++---+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+--+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+--+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++--+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+-+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+-+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+-+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++-+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----++--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---++--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--++--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-++--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+++--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-----+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+----+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++----+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+---+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+---+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++---+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+--+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+--+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+--+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++--+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----+-+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---+-+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--+-+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-+-+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----++-+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-----++-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+----++-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+---++-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+--++-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-++-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+++-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++++------------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-+-----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-++-----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+++-----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++--+----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+-+----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++-+----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--++----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-++----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+++----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++---+---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+--+---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++--+---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+-+---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+-+---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++-+---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---++---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--++---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-++---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+++---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++----+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+---+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++---+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+--+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+--+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++--+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+-+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+-+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+-+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++-+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----++--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---++--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--++--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-++--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+++--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-----+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+----+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++----+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+---+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+---+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++---+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+--+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+--+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+--+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++--+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----+-+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---+-+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--+-+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-+-+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----++-+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-----++-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+----++-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+---++-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+--++-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-++-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+++-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++++------------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-+-----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-++-----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+++-----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++--+----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+-+----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++-+----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--++----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-++----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+++----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++---+---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+--+---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++--+---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+-+---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+-+---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++-+---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---++---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--++---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-++---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+++---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++----+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+---+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++---+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+--+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+--+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++--+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+-+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+-+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+-+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++-+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----++--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---++--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--++--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-++--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+++--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-----+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+----+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++----+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+---+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+---+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++---+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+--+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+--+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+--+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++--+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----+-+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---+-+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--+-+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-+-+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----++-+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-----++-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+----++-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+---++-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+--++-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-++-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+++-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++++------------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-+-----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-++-----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+++-----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++--+----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+-+----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++-+----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--++----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-++----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+++----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++---+---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+--+---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++--+---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+-+---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+-+---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++-+---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---++---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--++---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-++---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+++---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++----+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+---+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++---+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+--+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+--+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++--+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+-+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+-+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+-+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++-+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----++--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---++--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--++--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-++--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+++--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-----+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+----+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++----+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+---+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+---+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++---+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+--+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+--+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+--+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++--+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----+-+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---+-+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--+-+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-+-+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----++-+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-----++-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+----++-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+---++-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+--++-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-++-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+++-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++++------------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-+-----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-++-----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+++-----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++--+----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+-+----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++-+----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--++----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-++----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+++----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++---+---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+--+---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++--+---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+-+---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+-+---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++-+---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---++---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--++---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-++---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "...]\n" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val det_a : Determinant.t array =\n", " [|phase:+1\n", " a:+1 +++------+------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+-----+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++-----+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+----+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+----+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++----+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+---+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+---+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+---+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++---+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----+--+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---+--+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--+--+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-+--+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----++--+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-----+-+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+----+-+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+---+-+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+--+-+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-+-+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----++-+------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++------++------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-----++------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+----++------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+---++------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+--++------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+-++------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------+++------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-------+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+------+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++------+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+-----+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+-----+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++-----+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+----+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+----+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+----+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++----+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----+---+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---+---+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--+---+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-+---+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----++---+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-----+--+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+----+--+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+---+--+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+--+--+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-+--+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----++--+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++------+-+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-----+-+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+----+-+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+---+-+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+--+-+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+-+-+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------++-+-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-------++-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+------++-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-----++-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+----++-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+---++-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+--++-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------+-++-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-------+++-----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++--------+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+-------+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++-------+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+------+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+------+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++------+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+-----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+-----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+-----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++-----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----+----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---+----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--+----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-+----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----++----+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-----+---+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+----+---+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+---+---+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+--+---+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-+---+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----++---+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++------+--+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-----+--+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+----+--+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+---+--+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+--+--+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+-+--+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------++--+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-------+-+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+------+-+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-----+-+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+----+-+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+---+-+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+--+-+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------+-+-+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-------++-+----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--------++----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-------++----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+------++----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-----++----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+----++----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+---++----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------+--++----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-------+-++----------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++---------+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+--------+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++--------+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+-------+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+-------+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++-------+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+------+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+------+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+------+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++------+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----+-----+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---+-----+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--+-----+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-+-----+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----++-----+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-----+----+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+----+----+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+---+----+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+--+----+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-+----+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----++----+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++------+---+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-----+---+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+----+---+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+---+---+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+--+---+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+-+---+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------++---+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-------+--+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+------+--+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-----+--+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+----+--+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+---+--+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+--+--+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------+-+--+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-------++--+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--------+-+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-------+-+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+------+-+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-----+-+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+----+-+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+---+-+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------+--+-+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-------+-+-+---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---------++---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--------++---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-------++---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+------++---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-----++---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+----++---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------+---++---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-------+--++---------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++----------+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+---------+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++---------+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+--------+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+--------+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++--------+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+-------+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+-------+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+-------+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++-------+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----+------+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---+------+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--+------+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-+------+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----++------+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-----+-----+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+----+-----+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+---+-----+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+--+-----+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-+-----+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----++-----+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++------+----+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-----+----+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+----+----+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+---+----+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+--+----+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+-+----+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------++----+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-------+---+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+------+---+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-----+---+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+----+---+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+---+---+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+--+---+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------+-+---+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-------++---+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--------+--+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-------+--+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+------+--+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-----+--+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+----+--+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+---+--+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------+--+--+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-------+-+--+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---------+-+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--------+-+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-------+-+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+------+-+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-----+-+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+----+-+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------+---+-+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-------+--+-+--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----------++--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---------++--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--------++--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-------++--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+------++--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+-----++--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------+----++--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-------+---++--------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-----------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+----------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++----------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+---------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+---------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++---------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+--------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+--------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+--------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++--------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----+-------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---+-------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--+-------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-+-------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----++-------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-----+------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+----+------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+---+------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+--+------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-+------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----++------+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++------+-----+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-----+-----+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+----+-----+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+---+-----+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+--+-----+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+-+-----+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------++-----+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-------+----+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+------+----+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-----+----+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+----+----+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+---+----+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+--+----+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------+-+----+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-------++----+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--------+---+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-------+---+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+------+---+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-----+---+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+----+---+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+---+---+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------+--+---+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-------+-+---+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---------+--+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--------+--+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-------+--+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+------+--+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-----+--+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+----+--+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------+---+--+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-------+--+--+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----------+-+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---------+-+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--------+-+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-------+-+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+------+-+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+-----+-+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------+----+-+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-------+---+-+-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-----------++-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+----------++-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+---------++-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+--------++-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-------++-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+------++-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +------+-----++-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-------+----++-------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++------------+------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+-----------+------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++-----------+------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+----------+------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+----------+------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++----------+------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+---------+------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+---------+------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+---------+------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++---------+------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----+--------+------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "...|]\n" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val det_I : Determinant.t array =\n", " [|phase:+1\n", " a:+1 ++++------------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-+-----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-++-----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+++-----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++--+----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+-+----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++-+----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--++----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-++----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+++----------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++---+---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+--+---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++--+---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+-+---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+-+---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++-+---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---++---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--++---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-++---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+++---------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++----+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+---+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++---+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+--+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+--+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++--+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+-+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+-+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+-+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++-+--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----++--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---++--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--++--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-++--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+++--------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-----+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+----+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++----+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+---+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+---+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++---+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+--+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+--+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+--+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++--+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----+-+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---+-+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--+-+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-+-+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----++-+-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-----++-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+----++-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+---++-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+--++-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-++-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+++-------------------------------------------------------\n", "b:+1 +++-------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++++------------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-+-----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-++-----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+++-----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++--+----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+-+----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++-+----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--++----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-++----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+++----------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++---+---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+--+---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++--+---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+-+---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+-+---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++-+---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---++---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--++---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-++---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+++---------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++----+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+---+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++---+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+--+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+--+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++--+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+-+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+-+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+-+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++-+--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----++--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---++--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--++--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-++--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+++--------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-----+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+----+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++----+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+---+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+---+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++---+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+--+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+--+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+--+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++--+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----+-+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---+-+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--+-+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-+-+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----++-+-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-----++-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+----++-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+---++-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+--++-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-++-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+++-------------------------------------------------------\n", "b:+1 ++-+------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++++------------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-+-----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-++-----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+++-----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++--+----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+-+----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++-+----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--++----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-++----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+++----------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++---+---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+--+---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++--+---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+-+---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+-+---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++-+---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---++---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--++---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-++---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+++---------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++----+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+---+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++---+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+--+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+--+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++--+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+-+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+-+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+-+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++-+--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----++--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---++--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--++--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-++--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+++--------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-----+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+----+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++----+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+---+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+---+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++---+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+--+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+--+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+--+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++--+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----+-+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---+-+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--+-+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-+-+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----++-+-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-----++-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+----++-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+---++-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+--++-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-++-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+++-------------------------------------------------------\n", "b:+1 +-++------------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++++------------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-+-----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-++-----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+++-----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++--+----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+-+----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++-+----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--++----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-++----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+++----------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++---+---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+--+---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++--+---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+-+---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+-+---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++-+---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---++---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--++---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-++---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+++---------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++----+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+---+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++---+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+--+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+--+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++--+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+-+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+-+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+-+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++-+--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----++--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---++--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--++--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-++--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+++--------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-----+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+----+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++----+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+---+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+---+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++---+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+--+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+--+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+--+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++--+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----+-+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---+-+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--+-+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-+-+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----++-+-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-----++-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+----++-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+---++-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+--++-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-++-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+++-------------------------------------------------------\n", "b:+1 ++--+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++++------------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-+-----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-++-----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+++-----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++--+----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+-+----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++-+----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--++----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-++----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+++----------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++---+---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+--+---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++--+---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+-+---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+-+---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++-+---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---++---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--++---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-++---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+++---------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++----+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+---+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++---+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+--+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+--+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++--+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+-+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+-+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+-+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++-+--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----++--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---++--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--++--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-++--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+++--------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-----+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+----+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++----+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+---+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+---+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++---+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---+--+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--+--+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-+--+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---++--+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++----+-+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+---+-+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+--+-+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+-+-+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----++-+-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-----++-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+----++-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+---++-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +---+--++-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +----+-++-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-----+++-------------------------------------------------------\n", "b:+1 +-+-+-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++++------------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++-+-----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-++-----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+++-----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++--+----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+-+----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++-+----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--++----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-++----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+++----------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +++---+---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++-+--+---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-++--+---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++--+-+---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+-+-+---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--++-+---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 ++---++---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +-+--++---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "phase:+1\n", "a:+1 +--+-++---------------------------------------------------------\n", "b:+1 +--++-----------------------------------------------------------\n", ";\n", "...|]\n" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let randomize = false\n", "\n", "let out_list =\n", " Util.stream_to_list (det_space_out ())\n", " \n", "let in_list =\n", " Util.stream_to_list (det_space_in ())\n", " \n", "let det_a = Array.of_list out_list\n", " |> Array.map (fun (i,_) -> i)\n", "\n", "let det_I =\n", " if randomize then\n", " let n = 123456789 in\n", " in_list\n", " |> List.map (fun k -> (Random.int n, k))\n", " |> List.sort compare\n", " |> List.map (fun (_,k) -> k)\n", " |> Array.of_list\n", " else\n", " Array.of_list in_list\n" ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/markdown" }, "source": [ "let m_H_aux, m_F_aux = \n", " \n", " let rec col_vecs_list accu_H accu_F = function\n", " | [] -> \n", " List.rev accu_H, \n", " List.rev accu_F \n", " | (ki, ki') :: rest when ki = ki' ->\n", " begin\n", " let h, f = \n", " List.map (fun kj ->\n", " match hf_ij aux_basis kj ki with\n", " | [ a ; b ] -> a, b\n", " | _ -> assert false ) in_list\n", " |> List.split\n", " in\n", " let h = Vec.of_list h in\n", " let f = Vec.of_list f in\n", " scal 0.5 f; (* Specific to He singlet *)\n", " col_vecs_list (h::accu_H) (f::accu_F) rest\n", " end\n", " | (ki, ki') :: rest ->\n", " begin\n", " assert false;\n", " end\n", " in\n", " let h, f = \n", " col_vecs_list [] [] out_list\n", " in\n", " Mat.of_col_vecs_list h,\n", " Mat.of_col_vecs_list f" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Function to generate all intermediate external determinants $|\\alpha \\rangle$ between $|I\\rangle$ and $|J\\rangle$, with a positive phase factor.\n", "\n", "* `exc` is the degree of excitation between $|I\\rangle$ and $|J\\rangle$\n", "* `cabs` is the number of electrons in the CABS\n", "* `l` is the degree of excitation between $|I\\rangle$ and $|\\alpha \\rangle$\n", "* `r` is the degree of excitation between $|\\alpha \\rangle$ and $|J\\rangle$" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val generate_alphas :\n", " Determinant.t ->\n", " Determinant.t -> int -> int -> int -> int -> Determinant.t list = \n" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val compute_HaaF :\n", " CIMatrixElement.De.t ->\n", " CIMatrixElement.De.t list -> CIMatrixElement.De.t -> float = \n" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let generate_alphas ki kj exc cabs l r =\n", " (* Check input excitation degree *)\n", " let d = Determinant.degree ki kj in\n", " if d <> exc then\n", " Printf.sprintf \"Invalid excitation degree. Expected %d and found %d.\" exc d\n", " |> failwith;\n", " \n", " (* Generate single excitations *)\n", " let all_singles ki =\n", " let mos_a, mos_b = Determinant.to_lists ki in\n", " [ List.map (fun hole -> \n", " List.map (fun particle ->\n", " if hole = particle then None else\n", " Some (Determinant.single_excitation Spin.Alfa hole particle ki)\n", " ) mos_abs\n", " ) mos_a\n", " ;\n", " List.map (fun hole -> \n", " List.map (fun particle ->\n", " if hole = particle then None else\n", " Some (Determinant.single_excitation Spin.Beta hole particle ki)\n", " ) mos_abs\n", " ) mos_b \n", " ]\n", " |> List.concat\n", " |> List.concat\n", " |> Util.list_some\n", " |> List.filter (fun x -> Determinant.is_none x = false)\n", " |> List.map (fun x -> Determinant.set_phase Phase.Pos x)\n", " in\n", " \n", " (* Generate double excitations *)\n", " let all_doubles ki =\n", " let mos_a, mos_b = Determinant.to_lists ki in\n", " [ List.map (fun hole -> (* Alpha-Alpha *)\n", " List.map (fun particle ->\n", " List.map (fun hole' -> \n", " List.map (fun particle' ->\n", " if hole = particle || hole' = particle' then None else\n", " if hole' > hole && particle' < particle then\n", " Some (Determinant.double_excitation Spin.Alfa hole particle Spin.Alfa hole' particle' ki)\n", " else None\n", " ) mos_abs\n", " ) mos_a \n", " ) mos_abs\n", " ) mos_a\n", " ; \n", " List.map (fun hole -> (* Beta-Beta *)\n", " List.map (fun particle ->\n", " List.map (fun hole' -> \n", " List.map (fun particle' ->\n", " if hole' > hole && particle' < particle && hole <> particle && hole' <> particle' then\n", " Some (Determinant.double_excitation Spin.Beta hole particle Spin.Beta hole' particle' ki)\n", " else None\n", " ) mos_abs\n", " ) mos_b \n", " ) mos_abs\n", " ) mos_b\n", " ;\n", " List.map (fun hole -> (* Alpha-Beta *)\n", " List.map (fun particle ->\n", " List.map (fun hole' -> \n", " List.map (fun particle' ->\n", " if hole = particle || hole' = particle' then None else\n", " Some (Determinant.double_excitation Spin.Alfa hole particle Spin.Beta hole' particle' ki)\n", " ) mos_abs\n", " ) mos_b \n", " ) mos_abs\n", " ) mos_a\n", " ]\n", " |> List.concat\n", " |> List.concat\n", " |> List.concat\n", " |> List.concat\n", " |> Util.list_some\n", " |> List.filter (fun x -> Determinant.is_none x = false)\n", " |> List.map (fun x -> Determinant.set_phase Phase.Pos x)\n", " in\n", "\n", " (* Generate left and right excitations *)\n", " let al = \n", " match l with\n", " | 1 -> all_singles ki\n", " | 2 -> all_doubles ki\n", " | _ -> assert false\n", " in\n", " let ar = \n", " match r with\n", " | 1 -> all_singles kj\n", " | 2 -> all_doubles kj\n", " | _ -> assert false\n", " in\n", " \n", " let mo_class = DeterminantSpace.mo_class in_space in\n", " let m l =\n", " List.fold_left (fun accu i ->\n", " let j = i-1 in Bitstring.logor accu (Bitstring.shift_left_one mo_num j)\n", " ) (Bitstring.zero mo_num) l\n", " in\n", " let aux_mask = m (MOClass.auxiliary_mos mo_class) in\n", " let good_cabs k = \n", " let alfa =\n", " Determinant.alfa k\n", " |> Spindeterminant.bitstring\n", " in\n", " let beta =\n", " Determinant.beta k\n", " |> Spindeterminant.bitstring\n", " in\n", " let a = Bitstring.logand aux_mask alfa\n", " and b = Bitstring.logand aux_mask beta\n", " in\n", " Bitstring.popcount a + Bitstring.popcount b = cabs\n", " in\n", " let good_lr k =\n", " Determinant.degree ki k = l &&\n", " Determinant.degree k kj = r \n", " in\n", "\n", "\n", " \n", " (* Merge lists in a set of unique determinants *)\n", " List.concat [ al; ar ]\n", " |> List.sort_uniq compare\n", " \n", " (* Filter out all determinants with incorrect numbers of electrons in the CABS *)\n", " |> List.filter good_cabs \n", " \n", " (* Filter out all determinants with incorrect excitation numbers *)\n", " |> List.filter good_lr \n", " \n", " \n", "let compute_HaaF ki alphas kj =\n", " List.fold_left (fun accu alpha -> accu\n", " +. h_ij aux_basis ki alpha\n", " *. f_ij aux_basis alpha kj\n", " ) 0. alphas\n" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val check :\n", " int ->\n", " (CIMatrixElement.De.t -> CIMatrixElement.De.t -> float) ->\n", " int -> int -> int -> int -> unit = \n" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val sum : 'a list -> ('a -> float) -> float = \n" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let check n integral_value exc cabs lexc rexc =\n", " let cpudet, cpuint = ref 0., ref 0. in\n", " let det_list =\n", " match n with\n", " | 0 -> det_I\n", " | n -> Array.sub det_I 0 n\n", " in\n", " let result =\n", " Printf.printf \"Checking ... \\n%!\";\n", " let percent = ref 0 in\n", " let task (i,ki) =\n", " (let p = (10 * (i+1))/(Array.length det_list) in\n", " if p <> !percent then\n", " ( percent := p ; Printf.printf \" - %3d %%\\n%!\" (p*10) ));\n", " Array.mapi (fun j kj -> \n", " if i > j || Determinant.degree ki kj <> exc then\n", " (0,0,0.,0.)\n", " else\n", " begin\n", " let alphas = generate_alphas ki kj exc cabs lexc rexc in\n", " let det_value =\n", " let t0 = Unix.gettimeofday () in\n", " let result = compute_HaaF ki alphas kj in\n", " cpudet := !cpudet +. Unix.gettimeofday () -. t0;\n", " result\n", " in\n", " let int_value = \n", " let t0 = Unix.gettimeofday () in\n", " let result = integral_value ki kj in\n", " cpuint := !cpuint +. Unix.gettimeofday () -. t0;\n", " result\n", " in\n", "(* Printf.printf \"%d %d %e %e\\n%!\" i j det_value int_value; *)\n", " (i,j,det_value,int_value)\n", " end\n", " ) det_list\n", " in\n", " det_list\n", " |> Array.mapi (fun i ki -> (i,ki))\n", " |> Array.to_list\n", " |> Stream.of_list\n", " |> Farm.run ~f:task\n", " |> Util.stream_to_list\n", " |> Array.concat\n", " in\n", " let i,j,d,v = \n", " let rec aux k imax jmax emax dmax vmax = \n", " if k = -1 then\n", " imax, jmax, dmax, vmax\n", " else\n", " let i, j, d, v = result.(k) in\n", " let e = abs_float (d -. v) in\n", " if e >= emax then\n", " aux (k-1) i j e d v\n", " else\n", " aux (k-1) imax jmax emax dmax vmax\n", " in\n", " aux (Array.length result - 1) 0 0 0. 0. 0.\n", " in\n", " let error = abs_float (d -. v) in\n", " if error < epsilon_float then\n", " (*\n", " Printf.printf \"OK: %e\\n%!\" error\n", " *)\n", " Printf.printf \"OK: (%d, %d) | %e %e | %e | cpu : %f %f\\n%!\" i j d v error !cpudet !cpuint\n", " else\n", " Printf.printf \"Failed: (%d, %d) | %e %e | %e | cpu : %f %f\\n%!\" i j d v error !cpudet !cpuint\n", "\n", " \n", "let sum l f = List.fold_left (fun accu i -> accu +. f i) 0. l" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val array_3_init :\n", " int ->\n", " int ->\n", " int ->\n", " (int -> int -> int -> float) ->\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array3.t =\n", " \n" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val array_4_init :\n", " int ->\n", " int ->\n", " int ->\n", " int ->\n", " (int -> int -> int -> int -> float) ->\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val array_5_init :\n", " int ->\n", " int ->\n", " int ->\n", " int ->\n", " int ->\n", " (int -> int -> int -> int -> int -> float) ->\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let array_3_init d1 d2 d3 f =\n", " let result = \n", " Bigarray.(Array3.create Float64 fortran_layout) d1 d2 d3\n", " in\n", " for k=1 to d3 do\n", " for j=1 to d2 do\n", " for i=1 to d1 do\n", " result.{i,j,k} <- f i j k\n", " done\n", " done\n", " done;\n", " result\n", "\n", "\n", "let array_4_init d1 d2 d3 d4 f =\n", " let result = \n", " Bigarray.(Genarray.create Float64 fortran_layout) [| d1;d2;d3;d4 |]\n", " in\n", " for l=1 to d4 do\n", " for k=1 to d3 do\n", " for j=1 to d2 do\n", " for i=1 to d1 do\n", " result.{i,j,k,l} <- f i j k l\n", " done\n", " done\n", " done\n", " done;\n", " result\n", "\n", "\n", "let array_5_init d1 d2 d3 d4 d5 f =\n", " let result = \n", " Bigarray.(Genarray.create Float64 fortran_layout) [| d1;d2;d3;d4;d5 |]\n", " in\n", " for m=1 to d5 do\n", " for l=1 to d4 do\n", " for k=1 to d3 do\n", " for j=1 to d2 do\n", " for i=1 to d1 do\n", " result.{i,j,k,l,m} <- f i j k l m\n", " done\n", " done\n", " done\n", " done\n", " done;\n", " result\n", "\n", "(* ----- *)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "******" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 1. 0 1 11" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "- : Jupyter_notebook.display_id = \n" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let _ = png_image \"0_1_11.png\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$i,j$ : orbital indices of MOs occupied in $|I\\rangle$.\n", "\n", "$\\sum_i \\sum_a \\hat{T}_{i}^{a} \\hat{T}_{a}^{i}$\n", "\n", "\\begin{align}\n", "\\sum_{a} \\sum_{i}\n", " \\left( h_{ia} +\n", " \\sum_{j} \\langle i j || a j \\rangle +\n", " \\sum_{\\bar{j}} \\langle i \\bar{j} | a \\bar{j} \\rangle \\right) \n", " \\left( f_{ai} +\n", " \\sum_{j} \\left[ a j || i j \\right] + \n", " \\sum_{\\bar{j}} \\left[ a \\bar{j} | i \\bar{j} \\right] \\right) + \\\\\n", "\\sum_{\\bar{a}} \\sum_{\\bar{i}}\n", " \\left( h_{ia} +\n", " \\sum_{j} \\langle \\bar{i} j | \\bar{a} j \\rangle +\n", " \\sum_{\\bar{j}} \\langle \\bar{i} \\bar{j} || \\bar{a} \\bar{j} \\rangle \\right) \n", " \\left( f_{ai} +\n", " \\sum_{j} \\left[ \\bar{a} j | \\bar{i} j \\right] + \n", " \\sum_{\\bar{j}} \\left[ \\bar{a} \\bar{j} || \\bar{i} \\bar{j} \\right] \\right) \n", "\\end{align}" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val integral_value : Determinant.t -> 'a -> float = \n" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "Checking ... \n", " - 10 %\n", " - 20 %\n", " - 30 %\n", " - 40 %\n", " - 50 %\n", " - 60 %\n", " - 70 %\n", " - 80 %\n", " - 90 %\n", " - 100 %\n", "Failed: (135, 135) | 2.284769e+00 2.284769e+00 | 1.776357e-15 | cpu : 2.160390 0.491860\n" ] }, { "data": { "text/plain": [ "- : unit = ()\n" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let integral_value ki kj = \n", " (* Alpha-Beta *)\n", " let s, s' = Spin.(Alfa, Beta) in \n", " let mos_a, mos_b = mos_a ki, mos_b ki in\n", " \n", " sum mos_cabs (fun a ->\n", " sum mos_a (fun i -> \n", " (h_one i a s +.\n", " sum mos_a (fun j -> h_two i j a j s s ) +.\n", " sum mos_b (fun j -> h_two i j a j s s')\n", " ) *. \n", " (f_one a i s +.\n", " sum mos_a (fun j -> f_two a j i j s s ) +.\n", " sum mos_b (fun j -> f_two a j i j s s')\n", " )\n", " )\n", " +.\n", " sum mos_b (fun i -> \n", " (h_one i a s' +.\n", " sum mos_b (fun j -> h_two i j a j s' s') +.\n", " sum mos_a (fun j -> h_two i j a j s' s )\n", " ) *. \n", " (f_one a i s' +.\n", " sum mos_b (fun j -> f_two a j i j s' s') +.\n", " sum mos_a (fun j -> f_two a j i j s' s )\n", " )\n", " ) \n", " ) \n", " \n", "let _ =\n", " check 0 integral_value 0 1 1 1\n", " " ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "val m_0111_1H_1F : Lacaml.D.vec =\n", " R1 R2 R3 R7 R8 R9\n", " 1.23163 0.512679 0.379158 ... 1.15717 0.783246 0.94134\n" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_0111_1H_2Fa : Lacaml.D.mat =\n", " \n", "\n", " -- 1 -- -- 2 -- -- 3 -- -- 4 -- -- 5 --\n", " 1 0 9.54805E-05 0.000949414 0.00102124 0.000612123\n", " 2 0.0157601 0 0.00387182 0.0040609 0.00288411\n", " 3 0.0123451 0.00482411 0 0.00262065 0.00153994\n", " ... ... ... ... ...\n", " 7 0.0638665 0.0309407 0.0280828 0.0291155 0.0201909\n", " 8 0.035099 0.00993291 0.0123105 0.0128627 0.0095454\n", " 9 0.0546496 0.0268732 0.0249878 0.0209954 0.02047\n", " \n", "\n", " -- 6 -- -- 7 -- -- 8 -- -- 9 --\n", " 1 0.00135039 0.00168769 -2.50132E-05 0.00127857\n", " 2 0.00164244 0.00263016 -0.0049468 0.00145336\n", " 3 -0.00786828 0.00262225 0.000307787 0.00154154\n", " ... ... ... ...\n", " 7 0.0210255 0 0.0169901 0.0199928\n", " 8 0.0097481 0.0125132 0 0.00919583\n", " 9 0.0187406 0.0232584 0.0154703 0\n", " \n" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_0111_1H_2Fb : Lacaml.D.mat =\n", " \n", "\n", " -- 1 -- -- 2 -- -- 3 -- -- 4 -- -- 5 --\n", " 1 0.00838947 0.000802512 0.000774268 0.000824527 0.000531664\n", " 2 0.0167558 0.00284141 0.00289398 0.00311638 0.00181881\n", " 3 0.0138217 0.00142914 0.000717031 0.00205097 0.00097096\n", " ... ... ... ... ...\n", " 7 0.0672127 0.0297099 0.0280681 0.029107 0.022267\n", " 8 0.0361343 0.0135355 0.0127802 0.0133849 0.00974314\n", " 9 0.0572555 0.0267995 0.0251558 0.0264006 0.020602\n", " \n", "\n", " -- 6 -- -- 7 -- -- 8 -- -- 9 --\n", " 1 0.000838226 0.00108083 0.000590322 0.000787968\n", " 2 0.00312393 0.0041991 0.00210452 0.00290152\n", " 3 0.00156923 0.00296985 0.000876672 0.00188984\n", " ... ... ... ...\n", " 7 0.0206994 0.0254055 0.0187116 0.0196605\n", " 8 0.00965382 0.0126909 0.00818378 0.00904916\n", " 9 0.0183365 0.0228903 0.0168998 0.0166274\n", " \n" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_0111_2Ha_1F : Lacaml.D.mat =\n", " \n", "\n", " -- 1 -- -- 2 -- -- 3 -- -- 4 -- -- 5 --\n", " 1 0 0.00346355 -0.00957818 -0.0103791 -0.00586334\n", " 2 -0.121634 0 -0.019873 -0.0209946 -0.0141534\n", " 3 -0.115395 -0.0247239 0 -0.017339 -0.0100747\n", " ... ... ... ... ...\n", " 7 -0.405587 -0.140299 -0.129164 -0.134263 -0.0844326\n", " 8 -0.207751 -0.0414479 -0.0574012 -0.0601297 -0.0438726\n", " 9 -0.335499 -0.120993 -0.113422 -0.0875797 -0.091945\n", " \n", "\n", " -- 6 -- -- 7 -- -- 8 -- -- 9 --\n", " 1 -0.0155848 -0.0192997 0.00228062 -0.0147839\n", " 2 -0.0112498 -0.0169694 0.0224836 -0.0101282\n", " 3 0.0322167 -0.0204013 -0.00423111 -0.013137\n", " ... ... ... ...\n", " 7 -0.106147 0 -0.0844097 -0.101048\n", " 8 -0.0490936 -0.0626221 0 -0.0463651\n", " 9 -0.0928575 -0.114335 -0.0760592 0\n", " \n" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_0111_2Hb_1F : Lacaml.D.mat =\n", " \n", "\n", " -- 1 -- -- 2 -- -- 3 -- -- 4 -- -- 5 --\n", " 1 -0.267262 -0.0092275 -0.00385375 -0.00417671 -0.00235846\n", " 2 -0.165952 -0.0180838 -0.0197588 -0.0214917 -0.0115557\n", " 3 -0.149576 -0.0113644 -0.010116 -0.0155245 -0.00736965\n", " ... ... ... ... ...\n", " 7 -0.487134 -0.140774 -0.13287 -0.138318 -0.111128\n", " 8 -0.253633 -0.0687529 -0.0664679 -0.0700869 -0.0486229\n", " 9 -0.399565 -0.125537 -0.117439 -0.133629 -0.0946778\n", " \n", "\n", " -- 6 -- -- 7 -- -- 8 -- -- 9 --\n", " 1 -0.00636217 -0.00785747 -0.00673128 -0.00603921\n", " 2 -0.0272961 -0.0354992 -0.0184917 -0.0255632\n", " 3 -0.0207391 -0.0252065 -0.0100414 -0.0170516\n", " ... ... ... ...\n", " 7 -0.111178 -0.151723 -0.0978176 -0.10573\n", " 8 -0.0587109 -0.0765558 -0.0468344 -0.0550919\n", " 9 -0.0962035 -0.118965 -0.0866369 -0.0978307\n", " \n" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_0111_2Ha_2Fa :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array3.t =\n", " \n" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_0111_2Hb_2Fa :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array3.t =\n", " \n" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_0111_2Ha_2Fb :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array3.t =\n", " \n" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_0111_2Hb_2Fb :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array3.t =\n", " \n" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val integral_value : Determinant.t -> 'a -> float = \n" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "Checking ... \n", " - 10 %\n", " - 20 %\n", " - 30 %\n", " - 40 %\n", " - 50 %\n", " - 60 %\n", " - 70 %\n", " - 80 %\n", " - 90 %\n", " - 100 %\n", "Failed: (225, 225) | 2.333780e+00 2.333780e+00 | 1.776357e-15 | cpu : 2.156856 0.039502\n" ] }, { "data": { "text/plain": [ "- : unit = ()\n" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let m_0111_1H_1F = \n", " Vec.init mo_num (fun i -> \n", " sum mos_cabs (fun a ->\n", " h_one i a Spin.Alfa *. f_one a i Spin.Alfa ))\n", "\n", " \n", "let m_0111_1H_2Fa = \n", " Mat.init_cols mo_num mo_num (fun i j -> sum mos_cabs (fun a ->\n", " h_one i a Spin.Alfa *. f_two a j i j Spin.Alfa Spin.Alfa ))\n", "\n", " \n", "let m_0111_1H_2Fb = \n", " Mat.init_cols mo_num mo_num (fun i j -> sum mos_cabs (fun a ->\n", " h_one i a Spin.Alfa *. f_two a j i j Spin.Alfa Spin.Beta ))\n", "\n", "\n", "let m_0111_2Ha_1F = \n", " Mat.init_cols mo_num mo_num (fun i j -> sum mos_cabs (fun a ->\n", " h_two i j a j Spin.Alfa Spin.Alfa *. f_one a i Spin.Alfa ))\n", "\n", " \n", "let m_0111_2Hb_1F = \n", " Mat.init_cols mo_num mo_num (fun i j -> sum mos_cabs (fun a ->\n", " h_two i j a j Spin.Alfa Spin.Beta *. f_one a i Spin.Alfa ))\n", "\n", "\n", "let m_0111_2Ha_2Fa =\n", " array_3_init mo_num mo_num mo_num (fun i j k ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a j Spin.Alfa Spin.Alfa *.\n", " f_two a k i k Spin.Alfa Spin.Alfa \n", " )\n", " )\n", "\n", "\n", "let m_0111_2Hb_2Fa =\n", " array_3_init mo_num mo_num mo_num (fun i j k ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a j Spin.Alfa Spin.Beta *.\n", " f_two a k i k Spin.Alfa Spin.Alfa \n", " )\n", " )\n", "\n", "\n", "let m_0111_2Ha_2Fb =\n", " array_3_init mo_num mo_num mo_num (fun i j k ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a j Spin.Alfa Spin.Alfa *.\n", " f_two a k i k Spin.Alfa Spin.Beta \n", " )\n", " )\n", "\n", "\n", "let m_0111_2Hb_2Fb =\n", " array_3_init mo_num mo_num mo_num (fun i j k ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a j Spin.Alfa Spin.Beta *.\n", " f_two a k i k Spin.Alfa Spin.Beta \n", " )\n", " )\n", "\n", "\n", "\n", "let integral_value ki kj = \n", "\n", " let mos_a, mos_b = mos_a ki, mos_b ki in\n", " \n", " sum mos_a (fun i ->\n", " m_0111_1H_1F.{i} +. \n", " sum mos_a (fun j ->\n", " m_0111_2Ha_1F.{i,j} +.\n", " m_0111_1H_2Fa.{i,j} +.\n", " sum mos_a (fun k -> m_0111_2Ha_2Fa.{i,j,k}) +.\n", " sum mos_b (fun k -> m_0111_2Ha_2Fb.{i,j,k})\n", " ) +.\n", " sum mos_b (fun j ->\n", " m_0111_2Hb_1F.{i,j} +.\n", " m_0111_1H_2Fb.{i,j} +.\n", " sum mos_a (fun k -> m_0111_2Hb_2Fa.{i,j,k}) +.\n", " sum mos_b (fun k -> m_0111_2Hb_2Fb.{i,j,k})\n", " )\n", " )\n", " +.\n", " sum mos_b (fun i ->\n", " m_0111_1H_1F.{i} +. \n", " sum mos_b (fun j ->\n", " m_0111_2Ha_1F.{i,j} +.\n", " m_0111_1H_2Fa.{i,j} +.\n", " sum mos_b (fun k -> m_0111_2Ha_2Fa.{i,j,k}) +.\n", " sum mos_a (fun k -> m_0111_2Ha_2Fb.{i,j,k})\n", " ) +.\n", " sum mos_a (fun j ->\n", " m_0111_2Hb_1F.{i,j} +.\n", " m_0111_1H_2Fb.{i,j} +.\n", " sum mos_b (fun k -> m_0111_2Hb_2Fa.{i,j,k}) +.\n", " sum mos_a (fun k -> m_0111_2Hb_2Fb.{i,j,k})\n", " )\n", " )\n", " \n", "let _ =\n", " check 0 integral_value 0 1 1 1\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2. 0 1 22" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV4AAAGeCAMAAADrHZmcAAAJJmlDQ1BpY2MAAEiJlZVnUJNZF8fv8zzphUASQodQQ5EqJYCUEFoo0quoQOidUEVsiLgCK4qINEWQRQEXXJUia0UUC4uCAhZ0gywCyrpxFVFBWXDfGZ33HT+8/5l7z2/+c+bec8/5cAEgiINlwct7YlK6wNvJjhkYFMwE3yiMn5bC8fR0A9/VuxEArcR7ut/P+a4IEZFp/OW4uLxy+SmCdACg7GXWzEpPWeGjy0wPj//CZ1dYsFzgMt9Y4eh/eexLzr8s+pLj681dfhUKABwp+hsO/4b/c++KVDiC9NioyGymT3JUelaYIJKZttIJHpfL9BQkR8UmRH5T8P+V/B2lR2anr0RucsomQWx0TDrzfw41MjA0BF9n8cbrS48hRv9/z2dFX73kegDYcwAg+7564ZUAdO4CQPrRV09tua+UfAA67vAzBJn/eqiVDQ0IgALoQAYoAlWgCXSBETADlsAWOAAX4AF8QRDYAPggBiQCAcgCuWAHKABFYB84CKpALWgATaAVnAad4Dy4Aq6D2+AuGAaPgRBMgpdABN6BBQiCsBAZokEykBKkDulARhAbsoYcIDfIGwqCQqFoKAnKgHKhnVARVApVQXVQE/QLdA66At2EBqGH0Dg0A/0NfYQRmATTYQVYA9aH2TAHdoV94fVwNJwK58D58F64Aq6HT8Id8BX4NjwMC+GX8BwCECLCQJQRXYSNcBEPJBiJQgTIVqQQKUfqkVakG+lD7iFCZBb5gMKgaCgmShdliXJG+aH4qFTUVlQxqgp1AtWB6kXdQ42jRKjPaDJaHq2DtkDz0IHoaHQWugBdjm5Et6OvoYfRk+h3GAyGgWFhzDDOmCBMHGYzphhzGNOGuYwZxExg5rBYrAxWB2uF9cCGYdOxBdhK7EnsJewQdhL7HkfEKeGMcI64YFwSLg9XjmvGXcQN4aZwC3hxvDreAu+Bj8BvwpfgG/Dd+Dv4SfwCQYLAIlgRfAlxhB2ECkIr4RphjPCGSCSqEM2JXsRY4nZiBfEU8QZxnPiBRCVpk7ikEFIGaS/pOOky6SHpDZlM1iDbkoPJ6eS95CbyVfJT8nsxmpieGE8sQmybWLVYh9iQ2CsKnqJO4VA2UHIo5ZQzlDuUWXG8uIY4VzxMfKt4tfg58VHxOQmahKGEh0SiRLFEs8RNiWkqlqpBdaBGUPOpx6hXqRM0hKZK49L4tJ20Bto12iQdQ2fRefQ4ehH9Z/oAXSRJlTSW9JfMlqyWvCApZCAMDQaPkcAoYZxmjDA+SilIcaQipfZItUoNSc1Ly0nbSkdKF0q3SQ9Lf5RhyjjIxMvsl+mUeSKLktWW9ZLNkj0ie012Vo4uZynHlyuUOy33SB6W15b3lt8sf0y+X35OQVHBSSFFoVLhqsKsIkPRVjFOsUzxouKMEk3JWilWqUzpktILpiSTw0xgVjB7mSJleWVn5QzlOuUB5QUVloqfSp5Km8oTVYIqWzVKtUy1R1WkpqTmrpar1qL2SB2vzlaPUT+k3qc+r8HSCNDYrdGpMc2SZvFYOawW1pgmWdNGM1WzXvO+FkaLrRWvdVjrrjasbaIdo12tfUcH1jHVidU5rDO4Cr3KfFXSqvpVo7okXY5upm6L7rgeQ89NL0+vU++Vvpp+sP5+/T79zwYmBgkGDQaPDamGLoZ5ht2GfxtpG/GNqo3uryavdly9bXXX6tfGOsaRxkeMH5jQTNxNdpv0mHwyNTMVmLaazpipmYWa1ZiNsulsT3Yx+4Y52tzOfJv5efMPFqYW6RanLf6y1LWMt2y2nF7DWhO5pmHNhJWKVZhVnZXQmmkdan3UWmijbBNmU2/zzFbVNsK20XaKo8WJ45zkvLIzsBPYtdvNcy24W7iX7RF7J/tC+wEHqoOfQ5XDU0cVx2jHFkeRk4nTZqfLzmhnV+f9zqM8BR6f18QTuZi5bHHpdSW5+rhWuT5z03YTuHW7w+4u7gfcx9aqr01a2+kBPHgeBzyeeLI8Uz1/9cJ4eXpVez33NvTO9e7zofls9Gn2eedr51vi+9hP0y/Dr8ef4h/i3+Q/H2AfUBogDNQP3BJ4O0g2KDaoKxgb7B/cGDy3zmHdwXWTISYhBSEj61nrs9ff3CC7IWHDhY2UjWEbz4SiQwNCm0MXwzzC6sPmwnnhNeEiPpd/iP8ywjaiLGIm0iqyNHIqyiqqNGo62ir6QPRMjE1MecxsLDe2KvZ1nHNcbdx8vEf88filhICEtkRcYmjiuSRqUnxSb7JicnbyYIpOSkGKMNUi9WCqSOAqaEyD0tandaXTlz/F/gzNjF0Z45nWmdWZ77P8s85kS2QnZfdv0t60Z9NUjmPOT5tRm/mbe3KVc3fkjm/hbKnbCm0N39qzTXVb/rbJ7U7bT+wg7Ijf8VueQV5p3tudATu78xXyt+dP7HLa1VIgViAoGN1tubv2B9QPsT8M7Fm9p3LP58KIwltFBkXlRYvF/OJbPxr+WPHj0t6ovQMlpiVH9mH2Je0b2W+z/0SpRGlO6cQB9wMdZcyywrK3BzcevFluXF57iHAo45Cwwq2iq1Ktcl/lYlVM1XC1XXVbjXzNnpr5wxGHh47YHmmtVagtqv14NPbogzqnuo56jfryY5hjmceeN/g39P3E/qmpUbaxqPHT8aTjwhPeJ3qbzJqamuWbS1rgloyWmZMhJ+/+bP9zV6tua10bo63oFDiVcerFL6G/jJx2Pd1zhn2m9az62Zp2WnthB9SxqUPUGdMp7ArqGjzncq6n27K7/Ve9X4+fVz5ffUHyQslFwsX8i0uXci7NXU65PHsl+spEz8aex1cDr97v9eoduOZ67cZ1x+tX+zh9l25Y3Th/0+LmuVvsW523TW939Jv0t/9m8lv7gOlAxx2zO113ze92D64ZvDhkM3Tlnv296/d5928Prx0eHPEbeTAaMip8EPFg+mHCw9ePMh8tPN4+hh4rfCL+pPyp/NP637V+bxOaCi+M24/3P/N59niCP/Hyj7Q/Fifzn5Ofl08pTTVNG02fn3Gcufti3YvJlykvF2YL/pT4s+aV5quzf9n+1S8KFE2+Frxe+rv4jcyb42+N3/bMec49fZf4bmG+8L3M+xMf2B/6PgZ8nFrIWsQuVnzS+tT92fXz2FLi0tI/QiyQvpNzTVQAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAMxQTFRF////y8vLy8vLy8vLy8vLy8vL/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA9icn61dXAAAAAAAAAAAAAAAAAAAAAK7vAK7vAK7vAK7vAI7DAGWLAAAAAHejAEdhAK7vAK7vAK7vAK7vAK7vAK7vAK7vAK7vAK7vAK7vrgAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy8vL/wAA519f2ZWVAAAAAK7vAF1/AC5AiAAARAAA////KVPVDQAAADl0Uk5TAIi7RCIziEQz3Zlm7hGqu8wiVad1RCIziLszqohEp3Vmx6ciVd1mEe7Md5m7x6eq3ZnuEcxVx6d3T9HNtwAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAASwAAAEsAHOI6VIAAAAHdElNRQfjDAMPAxy/McnSAAAJT0lEQVR42u2de3ej1hVHadrIHtkaj5MgwHVS2mY8nkxbXlKr3ubSNt//QwXJssTjokfWPYDR3n/MWmLWYs/5CY4uEnNwnFb+fR6/c6zw1XnWr96slXiJ9+3G+/vz+IOdQr8+z/r1W7YCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJzNhAgEuVJkIHnwqmtCkOOdmhKCGDdK3c6IQYjZrVLqPTkIcafeqzt1QxAiTNXNRF2RrwjXH4pci3hnH9SE/ms73KlaH7VFvM5sqm4n90Rij/t3xUfavfMSr+N8U7y8IxV7x+7d9nB9ibcIeEq8IldtV4RAvMQLlxZv74O2vlXfjXjQVu9j4v6jfmYKH/ES7wDjpfeOe8ghCzPiJV4gXuIlXiBe4iVeIF7iJV4gXuIF4u2MG27vBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICB4Z7H3I7VO8/qvVmrPg/fTqHBedbgzVqJl3jfbrz0XmkrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAlHv5IBoI85t8TAvESLxAv8RIvEC/xEi8QL/ESLxAv8cLY4h3qoK0f8j8x5PC3cnxg23/z/zGFj3iJt894/fNw7RQaHhX9Of/L/kXYlbVC6IwXFmbES7xAvJ3x18eHWrw/PpKKNb7P849P+3g/PT7nOanY4+HxY/75YRvvj8/556dPhGKVn56fHzbxPuUfacACR/DH54ci3qf8C0euBJ+enx/zx/wLSQgdv3nBZ45duWVvzsJXsj3kfyMFOb7kT4Qgx1NO55W8Ov5MBgAAAAAAAAAAAAAAAAAA8MaZGLeOc9yguVbJYq+UcfMo/5dDS62SxU7U9cXE21KrZLHv1PRi4m2pVbDYG6VuZxcSb1utcsXObpVS7y8j3tZa5Yq9U+/Vnbq5iHhbaxUrdqpuJurK5BxfvO21ChV7/aFwFcrZBzWZjTzeQ7WKFHs9Vet3slA6s6m6ndyPON7DtQoUe/+uaPP3zovScb4pXt6NNd5jtQoUe323fQtflIV0Otp4j9Uqe9V2dUFXbVfdXxQTL/ESL/ESbyfxlsai/V/9cnRgW2dj4qwPbKtaW2qtFBsQL/FedLyloX5/V/84Om6wsyGHEuMGw6O1VooNO2n3fLQRL/ESL/F2Fu+4xw3W4u2i2Kpy3OMGa/F2UWxNOepxg/Xm0EGxzX403nGDht4rXaxBOdpxg6aPNuFiTcqxjhs0rhxkizUqRzpu0LwwEy3WrBznuMHWNb5csWblOMcNtsQrWWyLcpTjBtuu2gSLbVGOctxgW7yCxd6Yb3kd5bjBllqZrQgAAAAAAAAAAAAAAAAAABYx/6c1L7ocq6TW1eZ/iHYl6xyUVVLra6+HQgdlldTGOumh0EFZBbWh1mnWeaHDsspps1RrHXVd6MCsctpARzrQYceFDswqpk10WOza5JQsdGhWIa23KFzFrrOF9rPOCh2eVUTrJXr9Tq53nSU69eedFDpEq4B2Hhdtfr7b9TKuzeGQKXSYVgGtF2zfwtddL5MOCh2mVfaqze3l+mlAVuIlXuIlXuIdQbznzWsbzZi4rqzES7xvN97SgL9/6n+Z5v5VNtsfcniKNezKWtkejvhDhpUD8RIv8V5kvHPfq21e+mO1dqKtKl2t43C/OfNTreUL7cfaibam9PxYL7zt5mWqF2HWQaH9WLvQNvvOKk29zeZQx24nLak/q7jWoPTi1Cs2hzrJnO4K7ccqrTUpszT1td9yx9DIrMJao9JbX30vso4L7ccqqzUr/cIouQQdklVUa1Zmqa0vrIZvFdW2KBMd9lBoP1ZJbYsy1FkPhfZjldSG5lte5wvJOodlldYCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAISVeH/jZZdO+UEvdiPTw21tdLgXhPGFUrIO7FWpPO3T3z4qXI7J4TChUQm6xeqVwRa01aniK82rzOeolXQGyyxqVyPQlrU7p++Eu63GpCveonXvviNqtb1BvPhawGaapL50i66Cde++JWa6r3odq2NqXrgV77Dp+0PLdTPF7r4jart20MItamdFXospLc7yde6+K2/RX1pmLW5u4irctnyCLtJ17r4jZrVHl0pmVrU5pWH6Gw6mUFKiBus5Zbr3VrQ1ptvY6T6aifeG2LW6yV1mvd2pBWW+/m5Jn3Eq9tcYu10nqtWxvSWut1nKX8CrS4eDIs5y2LW+KNak8ttmttSNPG02viWDTeeZIukiANmpMH7Ypb4q22XtvWurTeep32R9ZbcWa+Xmwmwi9eB2R6QmJzvLXWa9talzZar8AXHSVnkep2nPZ8Oz3Xi4XE5njrrdeytS5ttN7NWjATirdIdzfwOXoZn7vyhcTmeKPmA+NtWuvS1PDgsNDyYNu9IdD7z+nVy1m6cIXE5ngbrdeutSY1tN71XOZAJl6//OWRu3ljvVhKbIy32XrtWmtSQ+vdfNEhsgLN0nJt7ibrZCUlNsbbbL12rTWpqfWKrUCLgzeuHEiBM6/2PZtiY7yG1mvVWpOmxmc2Wn4W1KtiUZWt4w1WYmJjvIbWa9ValRpbr/ULi60zq8mKeJcLObHxtzZD67VqrUrNrdf2ZfHW6dZkRV9KPTmxKV5j65XrSObWa/mTrRRvpTbdOFGtineVZn4aZQdar9znqbH1Wv9Kch9vUI13ISneVZbsHwpsar1WrZU4za13ZftxGfveW4s3kBTvKtW70yQszp9MtNzaLxOm1mv956BXZ1RuDlnUiNeuuBzv9ko8Np2sVq2V/Rtbr/0fM1936JWegeTGfrRZBfuekHi3tzjYPk6wctEoY91dQbnuct2U0pXrCn5BVy00fD2MlkHgrXtx5nj7s9WyeH8pHmev52piWuNLfAvqb24ESjd/Vlt7Knjb4DJOfd+P0sh9qTfyY09KvLcmcXH4eoGOTb9a2rUePRVC+8+BKju9lb/adYj5qvQUULnv6Rw3WeggCTso92i8kf2b+E7rbrbFvViPSSVuQT2pUMnfSLqzHpNK3EB9UqHWxb1Yj0mt/0x8aqHCv093ZD0idQXu4DupUFdstd2p9cj+Euu36JxYaNLLvUHWrYelmcjDT08oVEDci/WwNBR5+OkJhQqvtjuzHpYGqdNPvEE6Dqt3cBU99yTi9Y6v3AXE/VgBAAAAAAAAAGBw/Ar0dHG5yvfnjQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOS0xMi0wM1QxNTowMzoyOCswMTowME5oU1MAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTktMTItMDNUMTU6MDM6MjgrMDE6MDA/NevvAAAAFHRFWHRwZGY6VmVyc2lvbgBQREYtMS41IAVcCzkAAAAASUVORK5CYII=" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "- : Jupyter_notebook.display_id = \n" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let _ = png_image \"0_1_22.png\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$i,j$ : orbital indices of MOs occupied in $|I\\rangle$.\n", "\n", "$k$ : orbital indices of MOs unoccupied in $|I\\rangle$.\n", "\n", "$\\sum_i \\sum_a \\sum_j \\sum_k \\hat{T}_{ij}^{ak} \\hat{T}_{ak}^{ij}$\n", "\n", "\n", "\\begin{align}\n", "\\sum_{a} \\sum_{k} \\sum_{i} \\sum_{j Determinant.t -> float = \n" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "Checking ... \n", " - 10 %\n", " - 20 %\n", " - 30 %\n", " - 40 %\n", " - 50 %\n", " - 60 %\n", " - 70 %\n", " - 80 %\n", " - 90 %\n", " - 100 %\n", "OK: (22, 22) | -3.896807e-02 -3.896807e-02 | 6.245005e-17 | cpu : 2.708850 0.154509\n" ] }, { "data": { "text/plain": [ "- : unit = ()\n" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let integral_value ki kj = \n", " (* mos unoccupied in both I and J *)\n", " let mos_virt_a, mos_virt_b = \n", " Array.init mo_num (fun i -> Some (i+1)) , \n", " Array.init mo_num (fun i -> Some (i+1)) \n", " in\n", " List.iter (fun i -> mos_virt_a.(i-1) <- None) (mos_a ki);\n", " List.iter (fun i -> mos_virt_a.(i-1) <- None) (mos_a kj);\n", " List.iter (fun i -> mos_virt_b.(i-1) <- None) (mos_b ki);\n", " List.iter (fun i -> mos_virt_b.(i-1) <- None) (mos_b kj);\n", " \n", " let mos_virt_a, mos_virt_b = \n", " Array.to_list mos_virt_a |> Util.list_some,\n", " Array.to_list mos_virt_b |> Util.list_some\n", " in\n", " \n", " (* Alpha-Beta *)\n", " let s, s' = Spin.(Alfa, Beta) in\n", " sum mos_cabs (fun a ->\n", " sum (mos_b ki) (fun j -> \n", " sum (mos_a ki) (fun i -> \n", " sum mos_virt_b (fun k -> \n", " h_two i j a k s s' *. f_two a k i j s s'\n", " )))\n", " +.\n", " sum (mos_a ki) (fun j -> \n", " sum (mos_b ki) (fun i -> \n", " sum mos_virt_a (fun k -> \n", " h_two i j a k s s' *. f_two a k i j s s'\n", " )))) \n", " +.\n", " (* Alpha-Alpha / Beta-Beta *)\n", " List.fold_left (fun accu (mos_virt,mos,s) -> \n", " let s' = s in accu +.\n", " sum mos (fun j -> \n", " sum mos (fun i -> if i < j then 0. else\n", " sum mos_virt (fun k -> \n", " sum mos_cabs (fun a -> \n", " h_two i j a k s s' *. f_two a k i j s s'\n", " )))) \n", " ) 0. [ (mos_virt_a,mos_a ki,Spin.Alfa) ; (mos_virt_b,mos_b ki,Spin.Beta)]\n", " \n", "let _ =\n", " check 100 integral_value 0 1 2 2\n", " " ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val m_0122_Haa :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array3.t =\n", " \n" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_0122_Hab :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array3.t =\n", " \n" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val integral_value : Determinant.t -> Determinant.t -> float = \n" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "Checking ... \n", " - 10 %\n", " - 20 %\n", " - 30 %\n", " - 40 %\n", " - 50 %\n", " - 60 %\n", " - 70 %\n", " - 80 %\n", " - 90 %\n", " - 100 %\n", "OK: (22, 22) | -3.896807e-02 -3.896807e-02 | 6.938894e-17 | cpu : 2.688957 0.003098\n" ] }, { "data": { "text/plain": [ "- : unit = ()\n" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let m_0122_Haa = \n", " array_3_init mo_num mo_num mo_num (fun i j k ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a k Spin.Alfa Spin.Alfa *. f_two a k i j Spin.Alfa Spin.Alfa\n", " ) )\n", " \n", "let m_0122_Hab = \n", " array_3_init mo_num mo_num mo_num (fun i j k ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a k Spin.Alfa Spin.Beta *. f_two a k i j Spin.Alfa Spin.Beta\n", " ) )\n", "\n", "\n", "let integral_value ki kj = \n", " (* mos unoccupied in both I and J *)\n", " let mos_virt_a, mos_virt_b = \n", " Array.init mo_num (fun i -> Some (i+1)) , \n", " Array.init mo_num (fun i -> Some (i+1)) \n", " in\n", " List.iter (fun i -> mos_virt_a.(i-1) <- None) (mos_a ki);\n", " List.iter (fun i -> mos_virt_a.(i-1) <- None) (mos_a kj);\n", " List.iter (fun i -> mos_virt_b.(i-1) <- None) (mos_b ki);\n", " List.iter (fun i -> mos_virt_b.(i-1) <- None) (mos_b kj);\n", " \n", " let mos_virt_a, mos_virt_b = \n", " Array.to_list mos_virt_a |> Util.list_some,\n", " Array.to_list mos_virt_b |> Util.list_some\n", " in\n", " \n", " let result = \n", " sum (mos_a ki) (fun i -> \n", " sum (mos_b ki) (fun j -> \n", " sum mos_virt_b (fun k -> m_0122_Hab.{i,j,k} )))\n", " +.\n", " sum (mos_b ki) (fun i -> \n", " sum (mos_a ki) (fun j -> \n", " sum mos_virt_a (fun k -> m_0122_Hab.{i,j,k} )))\n", " +.\n", " (* Alpha-Alpha / Beta-Beta *)\n", " List.fold_left (fun accu (mos_virt,mos) -> \n", " accu +.\n", " sum mos (fun j -> \n", " sum mos (fun i -> if i <= j then 0. else\n", " sum mos_virt (fun k -> m_0122_Haa.{i,j,k} )))\n", " ) 0. [ (mos_virt_a,mos_a ki) ; (mos_virt_b,mos_b ki)]\n", " in \n", " result\n", " \n", "let _ =\n", " check 100 integral_value 0 1 2 2\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 3. 0 2 22" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "- : Jupyter_notebook.display_id = \n" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let _ = png_image \"0_2_22.png\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$i,j$ : orbital indices of MOs occupied in $|I\\rangle$.\n", "\n", "$\\sum_i \\sum_a \\sum_j \\sum_b \\hat{T}_{ij}^{ab} \\hat{T}_{ab}^{ij}$\n", "\n", "\\begin{align}\n", "\\sum_{a} \\sum_{b>a} \\sum_{i} \\sum_{j\\bar{a}} \\sum_{\\bar{i}} \\sum_{\\bar{j}<\\bar{i}}\n", " \\langle \\bar{i} \\bar{j} || \\bar{a} \\bar{b} \\rangle \n", " \\left[ \\bar{a} \\bar{b} || \\bar{i} \\bar{j} \\right] \n", "\\end{align}" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val integral_value : Determinant.t -> 'a -> float = \n" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "Checking ... \n", " - 10 %\n", " - 20 %\n", " - 30 %\n", " - 40 %\n", " - 50 %\n", " - 60 %\n", " - 70 %\n", " - 80 %\n", " - 90 %\n", " - 100 %\n", "OK: (95, 95) | -1.697991e-02 -1.697991e-02 | 2.775558e-17 | cpu : 3.329183 0.257722\n" ] }, { "data": { "text/plain": [ "- : unit = ()\n" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let integral_value ki kj = \n", " (* Alpha-Beta *)\n", " let s, s' = Spin.(Alfa, Beta) in\n", " sum mos_cabs (fun a -> \n", " sum mos_cabs (fun b -> \n", " sum (mos_a ki) (fun i -> \n", " sum (mos_b ki) (fun j -> \n", " h_two i j a b s s' *. f_two a b i j s s'\n", " ))))\n", " +.\n", " (* Alpha-Alpha / Beta-Beta *)\n", " List.fold_left (fun accu (mos,s) -> \n", " let s' = s in accu +.\n", " sum mos_cabs (fun b -> \n", " sum mos_cabs (fun a -> if b > a then 0. else\n", " sum mos (fun j -> \n", " sum mos (fun i -> if i < j then 0. else\n", " h_two i j a b s s' *. f_two a b i j s s'\n", " ))))\n", " ) 0. [ (mos_a ki,Spin.Alfa) ; (mos_b ki,Spin.Beta)]\n", " \n", "let _ =\n", " check 100 integral_value 0 2 2 2\n", " " ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val m_0222_Haa : Lacaml.D.mat =\n", " \n", "\n", " -- 1 -- -- 2 -- -- 3 -- -- 4 -- -- 5 --\n", " 1 0 -1.0063E-05 -0.000334496 -0.000347188 -0.000267608\n", " 2 -1.0063E-05 0 -0.00016695 -0.000173345 -0.000134367\n", " 3 -0.000334496 -0.00016695 0 -0.00370788 -0.00334839\n", " ... ... ... ... ...\n", " 7 -0.000232416 -0.000151236 -0.000542986 -0.000572891 -2.9266E-05\n", " 8 -4.11752E-05 -3.98219E-05 -0.000454591 -0.00047264 -0.000369248\n", " 9 -0.000152836 -0.000112257 -0.000183496 -2.9266E-05 -0.000103812\n", " \n", "\n", " -- 6 -- -- 7 -- -- 8 -- -- 9 --\n", " 1 -0.000165528 -0.000232416 -4.11752E-05 -0.000152836\n", " 2 -0.000118652 -0.000151236 -3.98219E-05 -0.000112257\n", " 3 -2.9266E-05 -0.000542986 -0.000454591 -0.000183496\n", " ... ... ... ...\n", " 7 -0.00083789 0 -0.000621663 -0.000807984\n", " 8 -0.00053632 -0.000621663 0 -0.000518271\n", " 9 -0.000728301 -0.000807984 -0.000518271 0\n", " \n" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_0222_Hab : Lacaml.D.mat =\n", " \n", "\n", " -- 1 -- -- 2 -- -- 3 -- -- 4 -- -- 5 --\n", " 1 -0.0026356 -8.37274E-05 -0.000318312 -0.000329372 -0.000258412\n", " 2 -8.37274E-05 -0.00329888 -0.00055028 -0.00055898 -0.000498185\n", " 3 -0.000318312 -0.00055028 -0.00651939 -0.00351919 -0.00318906\n", " ... ... ... ... ...\n", " 7 -0.000177876 -0.000280993 -0.000526737 -0.000561143 -0.000637823\n", " 8 -7.32564E-05 -0.000232089 -0.00062993 -0.000653508 -0.000521154\n", " 9 -0.000106915 -0.000220198 -0.000196607 -0.000319215 -0.000105067\n", " \n", "\n", " -- 6 -- -- 7 -- -- 8 -- -- 9 --\n", " 1 -0.000117975 -0.000177876 -7.32564E-05 -0.000106915\n", " 2 -0.000228899 -0.000280993 -0.000232089 -0.000220198\n", " 3 -0.000355709 -0.000526737 -0.00062993 -0.000196607\n", " ... ... ... ...\n", " 7 -0.00104342 -0.00180231 -0.000934604 -0.00100902\n", " 8 -0.000825828 -0.000934604 -0.000964699 -0.00080225\n", " 9 -0.000917478 -0.00100902 -0.00080225 -0.00135053\n", " \n" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val integral_value : Determinant.t -> 'a -> float = \n" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "Checking ... \n", " - 10 %\n", " - 20 %\n", " - 30 %\n", " - 40 %\n", " - 50 %\n", " - 60 %\n", " - 70 %\n", " - 80 %\n", " - 90 %\n", " - 100 %\n", "OK: (58, 58) | -2.336186e-02 -2.336186e-02 | 3.122502e-17 | cpu : 3.329266 0.000941\n" ] }, { "data": { "text/plain": [ "- : unit = ()\n" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let m_0222_Haa = \n", " Mat.init_cols mo_num mo_num (fun i j ->\n", " sum mos_cabs (fun a ->\n", " sum mos_cabs (fun b -> if b >= a then 0. else\n", " h_two i j a b Spin.Alfa Spin.Alfa *. f_two a b i j Spin.Alfa Spin.Alfa\n", " ) )\n", " )\n", " \n", "let m_0222_Hab = \n", " Mat.init_cols mo_num mo_num (fun i j ->\n", " sum mos_cabs (fun a ->\n", " sum mos_cabs (fun b ->\n", " h_two i j a b Spin.Alfa Spin.Beta *. f_two a b i j Spin.Alfa Spin.Beta\n", " ) )\n", " )\n", " \n", "let integral_value ki kj = \n", " (* Alpha-Beta *)\n", " sum (mos_a ki) (fun i -> \n", " sum (mos_b ki) (fun j -> \n", " m_0222_Hab.{i,j} \n", " ))\n", " +.\n", " (* Alpha-Alpha / Beta-Beta *)\n", " List.fold_left (fun accu (mos) -> \n", " accu +.\n", " sum mos (fun j -> \n", " sum mos (fun i -> if i < j then 0. else\n", " m_0222_Haa.{i,j} \n", " ))\n", " ) 0. [ (mos_a ki) ; (mos_b ki)]\n", " \n", "let _ =\n", " check 100 integral_value 0 2 2 2\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 4. 1 1 11" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "- : Jupyter_notebook.display_id = \n" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let _ = png_image \"1_1_11.png\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$|J\\rangle = \\hat{T}_{i}^{k}|I\\rangle$\n", "\n", "$j$ : orbital indices of MOs occupied both in $|I\\rangle$ and $|J\\rangle$.\n", "\n", "$\\sum_a \\hat{T}_{i}^{a} \\hat{T}_{a}^{k}$\n", "\n", "\\begin{align}\n", " \\sum_{a} \n", " \\left( h_{ia} +\\sum_{j} \\langle i j || a j \\rangle +\n", " \\sum_{\\bar{j}} \\langle i \\bar{j} | a \\bar{j} \\rangle \\right)\n", " \\left( f_{ak} +\\sum_{j} \\left[ a j || k j \\right] + \n", " \\sum_{\\bar{j}} \\left[ a \\bar{j} | k \\bar{j} \\right]\\right) \\\\\n", "\\end{align}" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val integral_value : Determinant.t -> Determinant.t -> float = \n" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "Checking ... \n", " - 10 %\n", " - 20 %\n", " - 30 %\n", " - 40 %\n", " - 50 %\n", " - 60 %\n", " - 70 %\n", " - 80 %\n", " - 90 %\n", " - 100 %\n", "OK: (0, 0) | 0.000000e+00 0.000000e+00 | 0.000000e+00 | cpu : 4.151429 1.045428\n" ] }, { "data": { "text/plain": [ "- : unit = ()\n" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let integral_value ki kj = \n", " let i, k, s, phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Single (phase, { hole ; particle ; spin })) ->\n", " hole, particle, spin, phase\n", " | _ -> assert false\n", " in\n", "\n", " let mos_i, mos_i' =\n", " match s with\n", " | Spin.Alfa -> mos_a ki, mos_b ki\n", " | Spin.Beta -> mos_b ki, mos_a ki\n", " in\n", " let mos_j, mos_j' =\n", " match s with\n", " | Spin.Alfa -> mos_a kj, mos_b kj\n", " | Spin.Beta -> mos_b kj, mos_a kj\n", " in\n", "\n", " let result = \n", " let s' = Spin.other s in\n", " \n", " sum mos_cabs (fun a -> \n", " (h_one i a s +. \n", " sum mos_i (fun j -> h_two i j a j s s ) +.\n", " sum mos_i' (fun j -> h_two i j a j s s') ) *.\n", " (f_one a k s +. \n", " sum mos_j (fun j -> f_two a j k j s s ) +.\n", " sum mos_j' (fun j -> f_two a j k j s s') ) \n", " )\n", " in\n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", " \n", "\n", "let _ = check 0 integral_value 1 1 1 1" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "let ki = det_I.(77)\n", "let kj = det_I.(83)\n", "\n", "let _ = integral_value ki kj" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": false }, "outputs": [], "source": [ "let m_1111_1H_1F = \n", " Mat.init_cols mo_num mo_num (fun i k -> \n", " sum mos_cabs (fun a ->\n", " h_one i a Spin.Alfa *. f_one a k Spin.Alfa ))\n", "\n", "\n", "let m_1111_1H_2Fa = \n", " array_3_init mo_num mo_num mo_num (fun i j k ->\n", " sum mos_cabs (fun a ->\n", " h_one i a Spin.Alfa *. f_two a j k j Spin.Alfa Spin.Alfa ))\n", "\n", " \n", "let m_1111_1H_2Fb = \n", " array_3_init mo_num mo_num mo_num (fun i j k ->\n", " sum mos_cabs (fun a ->\n", " h_one i a Spin.Alfa *. f_two a j k j Spin.Alfa Spin.Beta ))\n", "\n", "\n", "let m_1111_2Ha_1F = \n", " array_3_init mo_num mo_num mo_num (fun i j k ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a j Spin.Alfa Spin.Alfa *. f_one a k Spin.Alfa ))\n", "\n", " \n", "let m_1111_2Hb_1F = \n", " array_3_init mo_num mo_num mo_num (fun i j k ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a j Spin.Alfa Spin.Beta *. f_one a k Spin.Alfa ))\n", "\n", "\n", "let m_1111_2Ha_2Fa =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k l ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a j Spin.Alfa Spin.Alfa *.\n", " f_two a l k l Spin.Alfa Spin.Alfa \n", " )\n", " )\n", "\n", "\n", "let m_1111_2Hb_2Fa =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k l ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a j Spin.Alfa Spin.Beta *.\n", " f_two a l k l Spin.Alfa Spin.Alfa \n", " )\n", " )\n", "\n", "\n", "let m_1111_2Ha_2Fb =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k l ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a j Spin.Alfa Spin.Alfa *.\n", " f_two a l k l Spin.Alfa Spin.Beta \n", " )\n", " )\n", "\n", "\n", "let m_1111_2Hb_2Fb =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k l ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a j Spin.Alfa Spin.Beta *.\n", " f_two a l k l Spin.Alfa Spin.Beta \n", " )\n", " )\n", "\n", "\n", "let integral_value_11 ki kj = \n", " let i, k, s, phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Single (phase, { hole ; particle ; spin })) ->\n", " hole, particle, spin, phase\n", " | _ -> assert false\n", " in\n", " \n", " let mos_a, mos_b =\n", " match s with\n", " | Spin.Alfa -> mos_a ki, mos_b ki\n", " | Spin.Beta -> mos_b ki, mos_a ki\n", " in \n", " \n", " let result = \n", " m_1111_1H_1F.{i,k} +. \n", " sum mos_a (fun j -> if j = i then 0. else\n", " m_1111_1H_2Fa.{i,j,k} +. m_1111_2Ha_1F.{i,j,k} +.\n", " sum mos_a (fun l -> if l = i then 0. else m_1111_2Ha_2Fa.{i,j,k,l}) +.\n", " sum mos_b (fun l -> m_1111_2Ha_2Fb.{i,j,k,l})) +.\n", " sum mos_b (fun j ->\n", " m_1111_1H_2Fb.{i,j,k} +. m_1111_2Hb_1F.{i,j,k} +.\n", " sum mos_a (fun l -> if l = i then 0. else m_1111_2Hb_2Fa.{i,j,k,l}) +.\n", " sum mos_b (fun l -> m_1111_2Hb_2Fb.{i,j,k,l}))\n", " in\n", " \n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", " \n", "let _ =\n", " check 0 integral_value_11 1 1 1 1\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 5. 1 1 12" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "let _ = png_image \"1_1_12.png\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$|J\\rangle = \\hat{T}_{i}^{k}|I\\rangle$\n", "\n", "$\\sum_{j} \\sum_a \\hat{T}_{j}^{a} \\hat{T}_{ai}^{jk}$\n", "\n", "$j$ : orbital indices of MOs occupied both in $|I\\rangle$ and $|J\\rangle$.\n", "\n", "\\begin{align}\n", " \\sum_{a} \\sum_{j} \n", " \\left( h_{ja} +\\sum_{m} \\langle j m || a m \\rangle +\n", " \\sum_{\\bar{m}} \\langle j \\bar{m} | a \\bar{m} \\rangle \\right)\n", " \\left[ a i || j k \\right] + \\\\\n", " \\sum_{\\bar{a}} \\sum_{\\bar{j}} \n", " \\left( h_{\\bar{j}\\bar{a}} +\\sum_{m} \\langle \\bar{j} m | \\bar{a} m \\rangle +\n", " \\sum_{\\bar{m}} \\langle \\bar{j} \\bar{m} || \\bar{a} \\bar{m} \\rangle \\right)\n", " \\left[ \\bar{a} i | \\bar{j} k \\right] \n", "\\end{align}" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "let integral_value ki kj = \n", " let i, k, s, phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Single (phase, { hole ; particle ; spin })) ->\n", " hole, particle, spin, phase\n", " | _ -> assert false\n", " in\n", "\n", " let mos_j, mos_j' =\n", " let alfa = \n", " let i = Spindeterminant.bitstring @@ Determinant.alfa ki in\n", " let j = Spindeterminant.bitstring @@ Determinant.alfa kj in\n", " Bitstring.to_list (Bitstring.logand i j)\n", " in\n", " let beta = \n", " let i = Spindeterminant.bitstring @@ Determinant.beta ki in\n", " let j = Spindeterminant.bitstring @@ Determinant.beta kj in\n", " Bitstring.to_list (Bitstring.logand i j)\n", " in\n", " match s with\n", " | Spin.Alfa -> alfa, beta\n", " | Spin.Beta -> beta, alfa\n", " in\n", " \n", " let mos_i, mos_i' =\n", " match s with\n", " | Spin.Alfa -> mos_a ki, mos_b ki\n", " | Spin.Beta -> mos_b ki, mos_a ki\n", " in\n", "\n", " let result = \n", " let s' = Spin.other s in\n", " sum mos_cabs (fun a -> \n", " sum mos_j (fun j -> \n", " (h_one j a s +. \n", " sum mos_i (fun m -> h_two j m a m s s ) +.\n", " sum mos_i' (fun m -> h_two j m a m s s') ) *.\n", " (f_two a i j k s s )\n", " ) \n", " +.\n", " sum mos_j' (fun j -> \n", " (h_one j a s +. \n", " sum mos_i (fun m -> h_two j m a m s' s ) +.\n", " sum mos_i' (fun m -> h_two j m a m s' s') ) *.\n", " (f_two a i j k s' s )\n", " ) \n", " ) \n", " in\n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", " \n", "\n", "let _ = check 100 integral_value 1 1 1 2" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "let m_1112_1H_2Fa = \n", " array_3_init mo_num mo_num mo_num (fun i j k ->\n", " sum mos_cabs (fun a ->\n", " h_one j a Spin.Alfa *. f_two a i j k Spin.Alfa Spin.Alfa ))\n", "\n", " \n", "let m_1112_1H_2Fb = \n", " array_3_init mo_num mo_num mo_num (fun i j k ->\n", " sum mos_cabs (fun a ->\n", " h_one j a Spin.Beta *. f_two a i j k Spin.Alfa Spin.Beta ))\n", "\n", "\n", "let m_1112_2Ha_2Fa =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k m ->\n", " sum mos_cabs (fun a ->\n", " h_two j m a m Spin.Alfa Spin.Alfa *.\n", " f_two a i j k Spin.Alfa Spin.Alfa \n", " )\n", " )\n", "\n", "\n", "let m_1112_2Hb_2Fa =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k m ->\n", " sum mos_cabs (fun a ->\n", " h_two j m a m Spin.Alfa Spin.Beta *.\n", " f_two a i j k Spin.Alfa Spin.Alfa \n", " )\n", " )\n", "\n", "let m_1112_2Ha_2Fb =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k m ->\n", " sum mos_cabs (fun a ->\n", " h_two j m a m Spin.Alfa Spin.Alfa *.\n", " f_two a i j k Spin.Alfa Spin.Beta \n", " )\n", " )\n", "\n", "\n", "let m_1112_2Hb_2Fb =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k m ->\n", " sum mos_cabs (fun a ->\n", " h_two j m a m Spin.Alfa Spin.Beta *.\n", " f_two a i j k Spin.Alfa Spin.Beta \n", " )\n", " )\n", "\n", "\n", "let integral_value_12 ki kj = \n", " let i, k, s, phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Single (phase, { hole ; particle ; spin })) ->\n", " hole, particle, spin, phase\n", " | _ -> assert false\n", " in\n", " \n", " let mos_j, mos_j' =\n", " let alfa = \n", " let i = Spindeterminant.bitstring @@ Determinant.alfa ki in\n", " let j = Spindeterminant.bitstring @@ Determinant.alfa kj in\n", " Bitstring.to_list (Bitstring.logand i j)\n", " in\n", " let beta = \n", " let i = Spindeterminant.bitstring @@ Determinant.beta ki in\n", " let j = Spindeterminant.bitstring @@ Determinant.beta kj in\n", " Bitstring.to_list (Bitstring.logand i j)\n", " in\n", " match s with\n", " | Spin.Alfa -> alfa, beta\n", " | Spin.Beta -> beta, alfa\n", " in\n", " \n", " let mos_i, mos_i' =\n", " match s with\n", " | Spin.Alfa -> mos_a ki, mos_b ki\n", " | Spin.Beta -> mos_b ki, mos_a ki\n", " in\n", " \n", " let result = \n", " sum mos_j (fun j -> \n", " m_1112_1H_2Fa.{i,j,k} +. \n", " sum mos_i (fun m -> m_1112_2Ha_2Fa.{i,j,k,m}) +.\n", " sum mos_i' (fun m -> m_1112_2Hb_2Fa.{i,j,k,m})) +.\n", " sum mos_j' (fun j ->\n", " m_1112_1H_2Fb.{i,j,k} +. \n", " sum mos_i (fun m -> m_1112_2Hb_2Fb.{i,j,k,m}) +.\n", " sum mos_i' (fun m -> m_1112_2Ha_2Fb.{i,j,k,m}))\n", " in\n", " \n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", " \n", " \n", "\n", "let _ = check 100 integral_value_12 1 1 1 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 6. 1 1 21" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": false }, "outputs": [], "source": [ "let _ = png_image \"1_1_21.png\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$|J\\rangle = \\hat{T}_{i}^{k}|I\\rangle$\n", "\n", "$\\sum_{j} \\sum_a \\hat{T}_{ij}^{ka} \\hat{T}_{a}^{j}$\n", "\n", "$j$ : orbital indices of MOs occupied both in $|I\\rangle$ and $|J\\rangle$.\n", "\n", "\\begin{align}\n", " \\sum_{a} \\sum_{j} \n", " \\langle i j || k a \\rangle \n", " \\left( f_{aj} +\\sum_{m} \\left[ m a || m j \\right] +\n", " \\sum_{\\bar{m}} \\left[ \\bar{m} a | \\bar{m} j \\right] \\right) + \\\\\n", " \\sum_{\\bar{a}} \\sum_{\\bar{j}} \n", " \\langle i \\bar{j} | k \\bar{a} \\rangle\n", " \\left( f_{\\bar{a}\\bar{j}} +\\sum_{m} \\left[ m \\bar{a} | m \\bar{j} \\right] +\n", " \\sum_{\\bar{m}} \\left[ \\bar{m} \\bar{a} || \\bar{m} \\bar{j} \\right] \\right)\n", "\\end{align}" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "let integral_value ki kj = \n", " let i, k, s, phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Single (phase, { hole ; particle ; spin })) ->\n", " hole, particle, spin, phase\n", " | _ -> assert false\n", " in\n", "\n", " let mos_j, mos_j' =\n", " let alfa = \n", " let i = Spindeterminant.bitstring @@ Determinant.alfa ki in\n", " let j = Spindeterminant.bitstring @@ Determinant.alfa kj in\n", " Bitstring.to_list (Bitstring.logand i j)\n", " in\n", " let beta = \n", " let i = Spindeterminant.bitstring @@ Determinant.beta ki in\n", " let j = Spindeterminant.bitstring @@ Determinant.beta kj in\n", " Bitstring.to_list (Bitstring.logand i j)\n", " in\n", " match s with\n", " | Spin.Alfa -> alfa, beta\n", " | Spin.Beta -> beta, alfa\n", " in\n", " \n", " let mos_i, mos_i' =\n", " match s with\n", " | Spin.Alfa -> mos_a kj, mos_b kj\n", " | Spin.Beta -> mos_b kj, mos_a kj\n", " in\n", "\n", " let result = \n", " let s' = Spin.other s in\n", " sum mos_cabs (fun a -> \n", " sum mos_j (fun j -> \n", " (h_two i j k a s s ) *.\n", " (f_one a j s +. \n", " sum mos_i (fun m -> f_two m a m j s s) +.\n", " sum mos_i' (fun m -> f_two m a m j s' s) ) \n", " ) \n", " +.\n", " sum mos_j' (fun j -> \n", " (h_two i j k a s s') *.\n", " (f_one a j s' +. \n", " sum mos_i (fun m -> f_two m a m j s s') +.\n", " sum mos_i' (fun m -> f_two m a m j s' s') ) \n", " )) \n", " in\n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", " \n", "\n", "let _ = check 100 integral_value 1 1 2 1" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "let m_1121_2Ha_1F = \n", " array_3_init mo_num mo_num mo_num (fun i j k ->\n", " sum mos_cabs (fun a ->\n", " h_two i j k a Spin.Alfa Spin.Alfa *. f_one a j Spin.Alfa))\n", "\n", " \n", "let m_1121_2Hb_1F = \n", " array_3_init mo_num mo_num mo_num (fun i j k ->\n", " sum mos_cabs (fun a ->\n", " h_two i j k a Spin.Alfa Spin.Beta *. f_one a j Spin.Beta))\n", "\n", "\n", "let m_1121_2Ha_2Fa =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k m ->\n", " sum mos_cabs (fun a ->\n", " h_two i j k a Spin.Alfa Spin.Alfa *.\n", " f_two m a m j Spin.Alfa Spin.Alfa \n", " )\n", " )\n", "\n", "\n", "let m_1121_2Hb_2Fa =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k m ->\n", " sum mos_cabs (fun a ->\n", " h_two i j k a Spin.Alfa Spin.Beta *.\n", " f_two m a m j Spin.Alfa Spin.Alfa \n", " )\n", " )\n", "\n", "let m_1121_2Ha_2Fb =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k m ->\n", " sum mos_cabs (fun a ->\n", " h_two i j k a Spin.Alfa Spin.Alfa *.\n", " f_two m a m j Spin.Alfa Spin.Beta \n", " )\n", " )\n", "\n", "\n", "let m_1121_2Hb_2Fb =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k m ->\n", " sum mos_cabs (fun a ->\n", " h_two i j k a Spin.Alfa Spin.Beta *.\n", " f_two m a m j Spin.Alfa Spin.Beta \n", " )\n", " )\n", "\n", "\n", "let integral_value_21 ki kj = \n", " let i, k, s, phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Single (phase, { hole ; particle ; spin })) ->\n", " hole, particle, spin, phase\n", " | _ -> assert false\n", " in\n", " \n", " let mos_j, mos_j' =\n", " let alfa = \n", " let i = Spindeterminant.bitstring @@ Determinant.alfa ki in\n", " let j = Spindeterminant.bitstring @@ Determinant.alfa kj in\n", " Bitstring.to_list (Bitstring.logand i j)\n", " in\n", " let beta = \n", " let i = Spindeterminant.bitstring @@ Determinant.beta ki in\n", " let j = Spindeterminant.bitstring @@ Determinant.beta kj in\n", " Bitstring.to_list (Bitstring.logand i j)\n", " in\n", " match s with\n", " | Spin.Alfa -> alfa, beta\n", " | Spin.Beta -> beta, alfa\n", " in\n", " \n", " let mos_i, mos_i' =\n", " match s with\n", " | Spin.Alfa -> mos_a kj, mos_b kj\n", " | Spin.Beta -> mos_b kj, mos_a kj\n", " in\n", " \n", " let result = \n", " sum mos_j (fun j -> \n", " m_1121_2Ha_1F.{i,j,k} +. \n", " sum mos_i (fun m -> m_1121_2Ha_2Fa.{i,j,k,m}) +.\n", " sum mos_i' (fun m -> m_1121_2Ha_2Fb.{i,j,k,m})) +.\n", " sum mos_j' (fun j ->\n", " m_1121_2Hb_1F.{i,j,k} +. \n", " sum mos_i (fun m -> m_1121_2Hb_2Fb.{i,j,k,m}) +.\n", " sum mos_i' (fun m -> m_1121_2Hb_2Fa.{i,j,k,m}))\n", " in\n", " \n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", " \n", " \n", "\n", "let _ = check 100 integral_value_21 1 1 2 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 7. 1 1 22" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "let _ = png_image \"1_1_22.png\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$|J\\rangle = \\hat{T}_{i}^{k}|I\\rangle$\n", "\n", "$\\sum_{j} \\sum_{a} \\sum_{m}\n", " \\hat{T}_{ij}^{ma} \\hat{T}_{ma}^{kj} - \n", " \\hat{T}_{lj}^{ka} \\hat{T}_{ia}^{lj} + \\\\\n", "\\sum_{\\bar{j}} \\sum_{\\bar{a}} \\sum_{m}\n", " \\hat{T}_{i\\bar{j}}^{m\\bar{a}} \\hat{T}_{m\\bar{a}}^{k\\bar{j}} - \n", " \\hat{T}_{l\\bar{j}}^{k\\bar{a}} \\hat{T}_{i\\bar{a}}^{l\\bar{j}} +\n", "\\sum_{\\bar{j}} \\sum_{a} \\sum_{\\bar{m}}\n", " \\hat{T}_{i\\bar{j}}^{a\\bar{m}} \\hat{T}_{a\\bar{m}}^{k\\bar{j}} \n", "$\n", "\n", "$j,l$ : orbital indices of MOs occupied both in $|I\\rangle$ and $|J\\rangle$.\n", "\n", "$m$ : orbital indices of virtual MOs, unoccupied both in $|I\\rangle$ and $|J\\rangle$.\n", "\n", "$a$ : orbital indices of CABS MOs\n", "\n", "\\begin{align}\n", " \\sum_{a} \\sum_{j} \\sum_{m}\n", " \\langle i j || m a \\rangle \\left[ m a || k j \\right] - \\\\\n", " \\sum_{a} \\sum_{j} \\sum_{l}\n", " \\langle l j || k a \\rangle \\left[ i a || l j \\right] + \\\\\n", " \\sum_{\\bar{a}} \\sum_{\\bar{j}} \\sum_{m}\n", " \\langle i \\bar{j} | m \\bar{a} \\rangle \\left[ m \\bar{a} | k \\bar{j} \\right] + \\\\\n", " \\sum_{\\bar{a}} \\sum_{\\bar{j}} \\sum_{l}\n", " \\langle l \\bar{j} | k \\bar{a} \\rangle \\left[ i \\bar{a} | l \\bar{j} \\right] - \\\\\n", " \\sum_{\\bar{a}} \\sum_{\\bar{j}} \\sum_{\\bar{m}}\n", " \\langle i \\bar{j} | a \\bar{m} \\rangle \\left[ a \\bar{m} | k \\bar{j} \\right] \n", "\\end{align}" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "(*\n", "let ki = det_I.(6)\n", "let kj = det_I.(58)\n", "\n", "let _ = \n", " Format.printf \"|I> -> |J> : %a |\\n@.\" Excitation.pp (Excitation.of_det ki kj) ;\n", "generate_alphas ki kj 1 1 2 2\n", "|> Array.of_list\n", "|> Array.mapi (fun kk alpha -> \n", "\n", "(*\n", "let _ = Determinant.to_lists ki\n", "let _ = Determinant.to_lists alpha\n", "let _ = Determinant.to_lists kj\n", "\n", " \n", "let _ = \n", " Format.printf \"|I> -> |J> : %a\\n@.\" Excitation.pp (Excitation.of_det ki kj);\n", " Format.printf \"|I> -> |a> : %a\\n@.\" Excitation.pp (Excitation.of_det ki alpha);\n", " Format.printf \"|a> -> |J> : %a\\n@.\" Excitation.pp (Excitation.of_det alpha kj)\n", "*)\n", "\n", " let integral_value ki kj = \n", " \n", " let exc0 = Array.init (aux_num+1) (fun _ -> [|\"-\";\"-\"|]) in\n", " let exc1 = Array.init (aux_num+1) (fun _ -> [|\"-\";\"-\"|]) in \n", " let exc2 = Array.init (aux_num+1) (fun _ -> [|\"-\";\"-\"|]) in \n", " \n", " let i, k, s, phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Single (phase, { hole ; particle ; spin } )) ->\n", " hole, particle, spin, phase\n", " | _ -> assert false\n", " in\n", " let spin = function\n", " | Spin.Alfa -> 0\n", " | _ -> 1\n", " in\n", " exc0.(i).(spin s ) <- \"i\" \n", " ; exc0.(k).(spin s ) <- \"k\" \n", " ;\n", " let s0 = s in\n", " \n", " let i, j, k, l, s, s', p1 =\n", " match Excitation.of_det ki alpha with\n", " | Excitation.(Double (phase, { hole ; particle ; spin }, {hole=hole' ; particle=particle' ; spin=spin' })) ->\n", " hole, hole', particle, particle', spin, spin', phase\n", " | _ -> assert false\n", " in\n", " \n", " if exc0.(i).(spin s ) = \"-\" then exc0.(i).(spin s ) <- \"n\";\n", " if exc0.(j).(spin s') = \"-\" then exc0.(j).(spin s') <- \"n\";\n", " if exc0.(k).(spin s ) = \"-\" then exc0.(k).(spin s ) <- if k > mo_num then \"a\" else \"m\";\n", " if exc0.(l).(spin s') = \"-\" then exc0.(l).(spin s') <- if l > mo_num then \"a\" else \"m\";\n", " \n", " let string_h = \n", " Printf.sprintf \"h_two %s %s %s %s %s %s *. \" \n", " exc0.(i).(spin s )\n", " exc0.(j).(spin s')\n", " exc0.(k).(spin s )\n", " exc0.(l).(spin s')\n", " (if s = s0 then \"s \" else \"s'\")\n", " (if s' = s0 then \"s \" else \"s'\")\n", " (*\n", " (if exc0.(i).(spin s ) = \"i\" || exc0.(k).(spin s ) = \"k\" then \"s \" else \n", " if exc0.(i).(spin s ) = \"j\" || exc0.(k).(spin s ) = \"l\" then \"s' \" else \"s''\")\n", " (if exc0.(j).(spin s') = \"i\" || exc0.(l).(spin s') = \"k\" then \"s \" else \n", " if exc0.(j).(spin s') = \"j\" || exc0.(l).(spin s') = \"l\" then \"s' \" else \"s''\")\n", " *)\n", " in \n", " \n", " let i, j, k, l, s, s', p2 =\n", " match Excitation.of_det alpha kj with\n", " | Excitation.(Double (phase, { hole ; particle ; spin }, {hole=hole' ; particle=particle' ; spin=spin' })) ->\n", " hole, hole', particle, particle', spin, spin', phase\n", " | _ -> assert false\n", " in\n", " \n", " let string_f = \n", " Printf.sprintf \"f_two %s %s %s %s %s %s\" \n", " exc0.(i).(spin s )\n", " exc0.(j).(spin s')\n", " exc0.(k).(spin s )\n", " exc0.(l).(spin s')\n", " (*\n", " (if exc0.(i).(spin s ) = \"i\" || exc0.(k).(spin s ) = \"k\" then \"s \" else \n", " if exc0.(i).(spin s ) = \"j\" || exc0.(k).(spin s ) = \"l\" then \"s' \" else \n", " if exc0.(i).(spin s ) = \"n\" || exc0.(k).(spin s ) = \"n\" then \"s''\" else\n", " if s = s0 then \"s\" else \"s'\")\n", " (if exc0.(j).(spin s') = \"i\" || exc0.(l).(spin s') = \"k\" then \"s \" else \n", " if exc0.(j).(spin s') = \"j\" || exc0.(l).(spin s') = \"l\" then \"s' \" else \n", " if exc0.(j).(spin s') = \"n\" || exc0.(l).(spin s') = \"n\" then \"s''\" else\n", " if s' = s0 then \"s\" else \"s'\")\n", " *)\n", " (if s = s0 then \"s \" else \"s'\")\n", " (if s' = s0 then \"s \" else \"s'\")\n", " in\n", " \n", " Format.printf \"|I> -> |a> : %a | %s\\n@.\" Excitation.pp (Excitation.of_det ki alpha) string_h ;\n", " Format.printf \"|a> -> |J> : %a | %s\\n@.\" Excitation.pp (Excitation.of_det alpha kj) string_f ;\n", " \n", " let sign = \n", " if Phase.add p1 p2 = phase then \"+. \" else \"-. \"\n", " in\n", "sign ^ string_h ^ string_f\n", "(*\n", " \n", " let mos, mos' =\n", " match s with\n", " | Spin.Alfa -> mos_a ki, mos_b ki\n", " | Spin.Beta -> mos_b ki, mos_a ki\n", " in\n", "\n", " let result = \n", " let k=4 and l=5 in\n", " let i=1 and j=2 in\n", " let n=2 and a=7 in\n", " let s = Spin.Alfa\n", " and s' = Spin.Alfa\n", " and s'' = Spin.Beta\n", " in\n", " (* \n", " h_two j n l a s' s'' *. f_two a i n k s s''\n", " *)\n", " h_two i n k a s s'' *. f_two j a l n s s''\n", " in\n", "\n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", " *)\n", "\n", "in\n", "integral_value ki kj\n", "(*\n", "let a = (compute_HaaF ki [alpha] kj)\n", "and b = (integral_value ki kj)\n", "in\n", "if kk = 31 then\n", " Format.printf \"%6d %e %e@.@.\" (kk) a b\n", " *)\n", ")\n", "|> Array.to_list\n", "|> List.sort_uniq compare\n", "\n", "let _ = compute_HaaF ki (generate_alphas ki kj 1 1 2 2) kj\n", "\n", "let _ = integral_value ki kj\n", "\n", "*)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": false }, "outputs": [], "source": [ "let integral_value ki kj = \n", " let i, k, s, phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Single (phase, { hole ; particle ; spin })) ->\n", " hole, particle, spin, phase\n", " | _ -> assert false\n", " in\n", " \n", " (* MOs unoccupied in both I and J *)\n", " let mos_virt_a, mos_virt_b = \n", " Array.init mo_num (fun i -> Some (i+1)) , \n", " Array.init mo_num (fun i -> Some (i+1)) \n", " in\n", " List.iter (fun i -> mos_virt_a.(i-1) <- None) (mos_a ki);\n", " List.iter (fun i -> mos_virt_a.(i-1) <- None) (mos_a kj);\n", " List.iter (fun i -> mos_virt_b.(i-1) <- None) (mos_b ki);\n", " List.iter (fun i -> mos_virt_b.(i-1) <- None) (mos_b kj);\n", " \n", " let mos_virt_a, mos_virt_b = \n", " Array.to_list mos_virt_a |> Util.list_some,\n", " Array.to_list mos_virt_b |> Util.list_some\n", " in\n", "\n", " let mos_virt, mos_virt' =\n", " match s with\n", " | Spin.Alfa -> mos_virt_a, mos_virt_b\n", " | Spin.Beta -> mos_virt_b, mos_virt_a\n", " in\n", " \n", " let mos_j, mos_j' =\n", " let alfa = \n", " let i = Spindeterminant.bitstring @@ Determinant.alfa ki in\n", " let j = Spindeterminant.bitstring @@ Determinant.alfa kj in\n", " Bitstring.to_list (Bitstring.logand i j)\n", " in\n", " let beta = \n", " let i = Spindeterminant.bitstring @@ Determinant.beta ki in\n", " let j = Spindeterminant.bitstring @@ Determinant.beta kj in\n", " Bitstring.to_list (Bitstring.logand i j)\n", " in\n", " match s with\n", " | Spin.Alfa -> alfa, beta\n", " | Spin.Beta -> beta, alfa\n", " in\n", " let result = \n", " let s' = Spin.other s in\n", " sum mos_cabs (fun a -> \n", " sum mos_j (fun n -> \n", " sum mos_virt (fun m -> \n", " h_two n i a m s s *. f_two m a k n s s \n", " ))) +.\n", " sum mos_cabs (fun a' -> \n", " sum mos_j' (fun n' -> \n", " sum mos_virt (fun m -> \n", " h_two i n' m a' s s' *. f_two m a' k n' s s'\n", " ))) +.\n", " sum mos_cabs (fun a -> \n", " sum mos_j' (fun n' -> \n", " sum mos_virt' (fun m' -> \n", " h_two i n' a m' s s' *. f_two a m' k n' s s'\n", " ))) -. \n", " sum mos_cabs (fun a -> \n", " sum mos_j (fun n -> \n", " sum mos_j (fun l -> if l <=n then 0. else\n", " h_two n l a k s s *. f_two i a l n s s \n", " ))) -. \n", " sum mos_cabs (fun a' -> \n", " sum mos_j' (fun n' -> \n", " sum mos_j (fun l -> \n", " h_two l n' k a' s s' *. f_two i a' l n' s s'\n", " ))) \n", " in\n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", " \n", "let _ = check 100 integral_value 1 1 2 2\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": false }, "outputs": [], "source": [ "let m_1122_va =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k m ->\n", " sum mos_cabs (fun a ->\n", " h_two j i a m Spin.Alfa Spin.Alfa *.\n", " f_two m a k j Spin.Alfa Spin.Alfa \n", " )\n", " )\n", "\n", "let m_1122_v2 =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k m ->\n", " sum mos_cabs (fun a ->\n", " h_two i j m a Spin.Alfa Spin.Beta *.\n", " f_two m a k j Spin.Alfa Spin.Beta \n", " )\n", " )\n", "\n", "let m_1122_v3 =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k m ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a m Spin.Alfa Spin.Beta *.\n", " f_two a m k j Spin.Alfa Spin.Beta \n", " )\n", " )\n", "\n", "let m_1122_oa =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k l ->\n", " sum mos_cabs (fun a ->\n", " h_two j l a k Spin.Alfa Spin.Alfa *.\n", " f_two i a l j Spin.Alfa Spin.Alfa \n", " )\n", " )\n", "\n", "let m_1122_o =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k l ->\n", " sum mos_cabs (fun a ->\n", " h_two l j k a Spin.Alfa Spin.Beta *.\n", " f_two i a l j Spin.Alfa Spin.Beta \n", " )\n", " )\n", "\n", "\n", "let integral_value_22 ki kj = \n", " let i, k, s, phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Single (phase, { hole ; particle ; spin })) ->\n", " hole, particle, spin, phase\n", " | _ -> assert false\n", " in\n", " \n", " (* MOs unoccupied in both I and J *)\n", " let mos_virt_a, mos_virt_b = \n", " Array.init mo_num (fun i -> Some (i+1)) , \n", " Array.init mo_num (fun i -> Some (i+1)) \n", " in\n", " List.iter (fun i -> mos_virt_a.(i-1) <- None) (mos_a ki);\n", " List.iter (fun i -> mos_virt_a.(i-1) <- None) (mos_a kj);\n", " List.iter (fun i -> mos_virt_b.(i-1) <- None) (mos_b ki);\n", " List.iter (fun i -> mos_virt_b.(i-1) <- None) (mos_b kj);\n", " \n", " let mos_virt_a, mos_virt_b = \n", " Array.to_list mos_virt_a |> Util.list_some,\n", " Array.to_list mos_virt_b |> Util.list_some\n", " in\n", "\n", " let mos_virt, mos_virt' =\n", " match s with\n", " | Spin.Alfa -> mos_virt_a, mos_virt_b\n", " | Spin.Beta -> mos_virt_b, mos_virt_a\n", " in\n", " \n", " let mos_j, mos_j' =\n", " let alfa = \n", " let i = Spindeterminant.bitstring @@ Determinant.alfa ki in\n", " let j = Spindeterminant.bitstring @@ Determinant.alfa kj in\n", " Bitstring.to_list (Bitstring.logand i j)\n", " in\n", " let beta = \n", " let i = Spindeterminant.bitstring @@ Determinant.beta ki in\n", " let j = Spindeterminant.bitstring @@ Determinant.beta kj in\n", " Bitstring.to_list (Bitstring.logand i j)\n", " in\n", " match s with\n", " | Spin.Alfa -> alfa, beta\n", " | Spin.Beta -> beta, alfa\n", " in\n", " \n", " let result = \n", " sum mos_j (fun j -> \n", " sum mos_virt (fun m -> \n", " m_1122_va.{i,j,k,m}\n", " )) +.\n", " sum mos_j' (fun j -> \n", " sum mos_virt (fun m -> \n", " m_1122_v2.{i,j,k,m}\n", " )) +.\n", " \n", " sum mos_j' (fun j -> \n", " sum mos_virt' (fun m -> \n", " m_1122_v3.{i,j,k,m}\n", " )) -.\n", " sum mos_j (fun j -> \n", " sum mos_j (fun l -> if l <= j then 0. else\n", " m_1122_oa.{i,j,k,l}\n", " )) -. \n", " sum mos_j' (fun j -> \n", " sum mos_j (fun l -> \n", " m_1122_o.{i,j,k,l}\n", " )) \n", " in\n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", " \n", "\n", "let _ = check 100 integral_value_22 1 1 2 2\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "let ki = det_I.(77) and kj = det_I.(83)\n", "\n", "let _ =\n", "integral_value_11 ki kj\n", "+. integral_value_12 ki kj\n", "+. integral_value_21 ki kj\n", "+. integral_value_22 ki kj " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 8. 1 2 22" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "let _ = png_image \"1_2_22.png\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$|J\\rangle = \\hat{T}_{i}^{k}|I\\rangle$\n", "\n", "$j$ : orbital indices of MOs occupied both in $|I\\rangle$ and $|J\\rangle$.\n", "\n", "$\\sum_{j} \\sum_{a} \\sum_{b}\n", " \\hat{T}_{ij}^{ab} \\hat{T}_{ab}^{kj} +\n", "\\sum_{\\bar{j}} \\sum_{a} \\sum_{\\bar{b}}\n", " \\hat{T}_{i\\bar{j}}^{a\\bar{b}} \\hat{T}_{a\\bar{b}}^{k\\bar{j}} \n", "$\n", "\n", "\n", "$$\n", "\\sum_{j} \\sum_{b}\\sum_{a\n", " hole, particle, spin, phase\n", " | _ -> assert false\n", " in\n", "\n", " let mos, mos' =\n", " match s with\n", " | Spin.Alfa -> mos_a ki, mos_b ki\n", " | Spin.Beta -> mos_b ki, mos_a ki\n", " in\n", " \n", " \n", "\n", " let result = \n", " (* Alpha-Beta *)\n", " let s' = Spin.other s in\n", " sum mos_cabs (fun b -> \n", " sum mos_cabs (fun a -> \n", " sum mos' (fun j -> h_two h j a b s s' *. f_two a b p j s s')\n", " ))\n", " +.\n", " (* Alpha-Alpha / Beta-Beta *)\n", " sum mos_cabs (fun b -> \n", " sum mos_cabs (fun a -> if b >= a then 0. else\n", " sum mos (fun j -> h_two h j a b s s *. f_two a b p j s s)\n", " )) \n", " in\n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", " \n", "\n", "let _ = check 100 integral_value 1 2 2 2" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": false }, "outputs": [], "source": [ "let m_1222a =\n", " array_3_init mo_num mo_num mo_num (fun i j k ->\n", " sum mos_cabs (fun a ->\n", " sum mos_cabs (fun b -> if b > a then 0. else\n", " h_two i j a b Spin.Alfa Spin.Alfa *.\n", " f_two a b k j Spin.Alfa Spin.Alfa \n", " )\n", " )\n", " )\n", "\n", "let m_1222 =\n", " array_3_init mo_num mo_num mo_num (fun i j k ->\n", " sum mos_cabs (fun a ->\n", " sum mos_cabs (fun b ->\n", " h_two i j a b Spin.Alfa Spin.Beta *.\n", " f_two a b k j Spin.Alfa Spin.Beta \n", " )\n", " )\n", " )\n", " \n", "\n", "let integral_value ki kj = \n", " let i, k, s, phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Single (phase, { hole ; particle ; spin })) ->\n", " hole, particle, spin, phase\n", " | _ -> assert false\n", " in\n", " \n", " (* MOs unoccupied in both I and J *)\n", " let mos_j, mos_j' =\n", " let alfa = \n", " let i = Spindeterminant.bitstring @@ Determinant.alfa ki in\n", " let j = Spindeterminant.bitstring @@ Determinant.alfa kj in\n", " Bitstring.to_list (Bitstring.logand i j)\n", " in\n", " let beta = \n", " let i = Spindeterminant.bitstring @@ Determinant.beta ki in\n", " let j = Spindeterminant.bitstring @@ Determinant.beta kj in\n", " Bitstring.to_list (Bitstring.logand i j)\n", " in\n", " match s with\n", " | Spin.Alfa -> alfa, beta\n", " | Spin.Beta -> beta, alfa\n", " in\n", "\n", " let result = \n", " sum mos_j (fun j -> m_1222a.{i,j,k} ) +.\n", " sum mos_j' (fun j -> m_1222.{i,j,k} )\n", " in\n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", " \n", "\n", "let _ = check 100 integral_value 1 2 2 2\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 9. 2 1 12" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "let _ = png_image \"2_1_12.png\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$|J\\rangle = \\hat{T}_{ij}^{kl}|I\\rangle$\n", "\n", "$m$ : orbital indices of MOs unoccupied both in $|I\\rangle$ and $|J\\rangle$.\n", "\n", "$n$ : orbital indices of MOs occupied in $|I\\rangle$\n", "\n", "$\\sum_{a} \n", " \\hat{T}_{i}^{a} \\hat{T}_{aj}^{kl} +\n", " \\hat{T}_{j}^{a} \\hat{T}_{ia}^{kl} \n", "$\n", "\n", "\n", "$$\n", "\\sum_{a}\n", " \\left( h_{ia} + \\sum_{n} \\langle i n || a n \\rangle + \\sum_{\\bar{n}} \\langle i \\bar{n} | a \\bar{n} \\rangle \\right) \\left[ a j || k l \\right] + \\\\\n", "\\sum_{a}\n", " \\left( h_{ja} + \\sum_{n} \\langle j n || a n \\rangle + \\sum_{\\bar{n}} \\langle j \\bar{n} | a \\bar{n} \\rangle \\right) \\left[ i a || k l \\right] \n", "$$" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true }, "outputs": [], "source": [ "let integral_value ki kj = \n", " let i, j, k, l, s, s', phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Double (phase, { hole ; particle ; spin }, {hole=hole' ; particle=particle' ; spin=spin' })) ->\n", " hole, hole', particle, particle', spin, spin', phase\n", " | _ -> assert false\n", " in\n", "\n", " let mos, mos' =\n", " match s with\n", " | Spin.Alfa -> mos_a ki, mos_b ki\n", " | Spin.Beta -> mos_b ki, mos_a ki\n", " in\n", " \n", " let mos2, mos2' =\n", " match s' with\n", " | Spin.Alfa -> mos_a ki, mos_b ki\n", " | Spin.Beta -> mos_b ki, mos_a ki\n", " in\n", "\n", " let result = \n", " sum mos_cabs (fun a -> \n", " let s'' = Spin.other s in\n", " ( h_one i a s +.\n", " sum mos (fun n -> h_two i n a n s s ) +.\n", " sum mos' (fun n -> h_two i n a n s s'') \n", " ) *. f_two a j k l s s'\n", " ) +.\n", " sum mos_cabs (fun a -> \n", " let s'' = Spin.other s' in\n", " ( h_one j a s' +.\n", " sum mos2 (fun n -> h_two j n a n s' s' ) +.\n", " sum mos2' (fun n -> h_two j n a n s' s'') \n", " ) *. f_two i a k l s s'\n", " ) \n", " in\n", "\n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", "\n", "\n", "let _ = check 100 integral_value 2 1 1 2\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$|J\\rangle = \\hat{T}_{ij}^{kl}|I\\rangle$\n", "\n", "$m$ : orbital indices of MOs unoccupied both in $|I\\rangle$ and $|J\\rangle$.\n", "\n", "$n$ : orbital indices of MOs occupied in $|I\\rangle$\n", "\n", "$\\sum_{a} \n", " \\hat{T}_{i}^{a} \\hat{T}_{aj}^{kl} +\n", " \\hat{T}_{j}^{a} \\hat{T}_{ia}^{kl} \n", "$\n", "\n", "\n", "$$\n", "\\sum_{a}\n", " \\left( h_{ia} + \\sum_{n} \\langle i n || a n \\rangle + \\sum_{\\bar{n}} \\langle i \\bar{n} | a \\bar{n} \\rangle \\right) \\left[ a j || k l \\right] + \\\\\n", "\\sum_{a}\n", " \\left( h_{ja} + \\sum_{n} \\langle j n || a n \\rangle + \\sum_{\\bar{n}} \\langle j \\bar{n} | a \\bar{n} \\rangle \\right) \\left[ i a || k l \\right] \n", "$$" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": false }, "outputs": [], "source": [ "let m_2112_1H_2Fa =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k l ->\n", " sum mos_cabs (fun a ->\n", " h_one i a Spin.Alfa *. f_two a j k l Spin.Alfa Spin.Alfa +.\n", " h_one j a Spin.Alfa *. f_two i a k l Spin.Alfa Spin.Alfa )\n", " )\n", "\n", "let m_2112_1H_2Fb =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k l ->\n", " sum mos_cabs (fun a ->\n", " h_one i a Spin.Alfa *. f_two a j k l Spin.Alfa Spin.Beta +.\n", " h_one j a Spin.Alfa *. f_two i a k l Spin.Alfa Spin.Beta)\n", " )\n", "\n", "let m_2112_2Ha_2Fa =\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun i j k l n ->\n", " sum mos_cabs (fun a ->\n", " h_two i n a n Spin.Alfa Spin.Alfa *.\n", " f_two a j k l Spin.Alfa Spin.Alfa )\n", " )\n", " \n", "let m_2112_2Hb_2Fa =\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun i j k l n ->\n", " sum mos_cabs (fun a ->\n", " h_two i n a n Spin.Alfa Spin.Beta *.\n", " f_two a j k l Spin.Alfa Spin.Alfa )\n", " )\n", " \n", "let m_2112_2Ha_2Fb =\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun i j k l n ->\n", " sum mos_cabs (fun a ->\n", " h_two i n a n Spin.Alfa Spin.Alfa *.\n", " f_two a j k l Spin.Alfa Spin.Beta )\n", " )\n", " \n", "let m_2112_2Hb_2Fb =\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun i j k l n ->\n", " sum mos_cabs (fun a ->\n", " h_two i n a n Spin.Alfa Spin.Beta *.\n", " f_two a j k l Spin.Alfa Spin.Beta )\n", " )\n", " \n", "let integral_value ki kj = \n", " let i, j, k, l, s, s', phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Double (phase, { hole ; particle ; spin }, {hole=hole' ; particle=particle' ; spin=spin' })) ->\n", " hole, hole', particle, particle', spin, spin', phase\n", " | _ -> assert false\n", " in\n", " let mos, mos' =\n", " match s with\n", " | Spin.Alfa -> mos_a ki, mos_b ki\n", " | Spin.Beta -> mos_b ki, mos_a ki\n", " in\n", " \n", " let result = \n", " if s = s' then\n", " m_2112_1H_2Fa.{i,j,k,l} +. \n", " sum mos (fun n ->\n", " m_2112_2Ha_2Fa.{i,j,k,l,n} +. m_2112_2Ha_2Fa.{j,i,l,k,n}\n", " ) +.\n", " sum mos' (fun n ->\n", " m_2112_2Hb_2Fa.{i,j,k,l,n} +. m_2112_2Hb_2Fa.{j,i,l,k,n}\n", " ) \n", " else\n", " m_2112_1H_2Fb.{i,j,k,l} +.\n", " sum mos (fun n ->\n", " m_2112_2Ha_2Fb.{i,j,k,l,n} +. m_2112_2Hb_2Fb.{j,i,l,k,n}\n", " ) +.\n", " sum mos' (fun n ->\n", " m_2112_2Hb_2Fb.{i,j,k,l,n} +. m_2112_2Ha_2Fb.{j,i,l,k,n}\n", " ) \n", " in\n", "\n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", " \n", "let _ = check 100 integral_value 2 1 1 2\n", "\n", "let ki = det_I.(2)\n", "let kj = det_I.(33)\n", "\n", "let _ = integral_value ki kj\n", "let _ = \n", " let alphas = generate_alphas ki kj 2 1 1 2\n", " in compute_HaaF ki alphas kj\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 10. 2 1 21" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "let _ = png_image \"2_1_21.png\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$|J\\rangle = \\hat{T}_{ij}^{kl}|I\\rangle$\n", "\n", "$m$ : orbital indices of MOs unoccupied both in $|I\\rangle$ and $|J\\rangle$.\n", "\n", "$n$ : orbital indices of MOs occupied in $|J\\rangle$\n", "\n", "$\\sum_{a} \n", " \\hat{T}_{ij}^{al} \\hat{T}_{a}^{k} +\n", " \\hat{T}_{ij}^{ka} \\hat{T}_{a}^{l} +\n", " \\hat{T}_{i\\bar{j}}^{a\\bar{l}} \\hat{T}_{a}^{k} +\n", " \\hat{T}_{i\\bar{j}}^{k\\bar{a}} \\hat{T}_{\\bar{a}}^{\\bar{l}}\n", "$\n", "\n", "\n", "$$\n", "\\sum_{a}\n", " \\langle i j || a l \\rangle \\left( f_{ak} + \\sum_{n} \\left[ a n || k n \\right] + \\sum_{\\bar{n}} \\left[ a \\bar{n} | k \\bar{n} \\right] \\right) + \\\\\n", "\\sum_{a}\n", " \\langle i j || k a \\rangle \\left( f_{al} + \\sum_{n} \\left[ n a || n l \\right] + \\sum_{\\bar{n}} \\left[ \\bar{n} a | \\bar{n} l \\right] \\right) \n", "$$" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "let integral_value ki kj = \n", " let i, j, k, l, s, s', phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Double (phase, { hole ; particle ; spin }, {hole=hole' ; particle=particle' ; spin=spin' })) ->\n", " hole, hole', particle, particle', spin, spin', phase\n", " | _ -> assert false\n", " in\n", "\n", " let result = \n", " \n", " let mos, mos', s'' =\n", " match s with\n", " | Spin.Alfa -> mos_a kj, mos_b kj, Spin.Beta\n", " | Spin.Beta -> mos_b kj, mos_a kj, Spin.Alfa\n", " in\n", " sum mos_cabs (fun a -> \n", " h_two i j a l s s' *.\n", " ( f_one a k s +.\n", " sum mos (fun n -> f_two a n k n s s) +.\n", " sum mos' (fun n -> f_two a n k n s s'') \n", " ) ) +.\n", "\n", " let mos, mos', s'' =\n", " match s' with\n", " | Spin.Alfa -> mos_a kj, mos_b kj, Spin.Beta\n", " | Spin.Beta -> mos_b kj, mos_a kj, Spin.Alfa\n", " in\n", " sum mos_cabs (fun a -> \n", " h_two j i a k s' s *.\n", " ( f_one a l s' +.\n", " sum mos (fun n -> f_two a n l n s' s') +.\n", " sum mos' (fun n -> f_two a n l n s' s'') \n", " ) \n", " ) \n", " in\n", "\n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", "\n", "\n", "let _ = check 100 integral_value 2 1 2 1" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": false }, "outputs": [], "source": [ "let m_2121_2Ha_1F =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k l ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a l Spin.Alfa Spin.Alfa *. f_one a k Spin.Alfa +.\n", " h_two i j k a Spin.Alfa Spin.Alfa *. f_one a l Spin.Alfa)\n", " )\n", "\n", "let m_2121_2Hb_1F =\n", " array_4_init mo_num mo_num mo_num mo_num (fun i j k l ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a l Spin.Alfa Spin.Beta *. f_one a k Spin.Alfa +.\n", " h_two i j k a Spin.Alfa Spin.Beta *. f_one a l Spin.Alfa)\n", " )\n", "\n", "let m_2121_2Ha_2Fa =\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun i j k l n ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a l Spin.Alfa Spin.Alfa *.\n", " f_two a n k n Spin.Alfa Spin.Alfa )\n", " )\n", " \n", "let m_2121_2Hb_2Fa =\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun i j k l n ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a l Spin.Alfa Spin.Beta *.\n", " f_two a n k n Spin.Alfa Spin.Alfa )\n", " )\n", " \n", "let m_2121_2Ha_2Fb =\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun i j k l n ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a l Spin.Alfa Spin.Alfa *.\n", " f_two a n k n Spin.Alfa Spin.Beta )\n", " )\n", " \n", "let m_2121_2Hb_2Fb =\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun i j k l n ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a l Spin.Alfa Spin.Beta *.\n", " f_two a n k n Spin.Alfa Spin.Beta )\n", " )\n", " \n", "let integral_value ki kj = \n", " let i, j, k, l, s, s', phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Double (phase, { hole ; particle ; spin }, {hole=hole' ; particle=particle' ; spin=spin' })) ->\n", " hole, hole', particle, particle', spin, spin', phase\n", " | _ -> assert false\n", " in\n", " let mos, mos' =\n", " match s with\n", " | Spin.Alfa -> mos_a kj, mos_b kj\n", " | Spin.Beta -> mos_b kj, mos_a kj\n", " in\n", " \n", " let result = \n", " if s = s' then\n", " m_2121_2Ha_1F.{i,j,k,l} +. \n", " sum mos (fun n ->\n", " m_2121_2Ha_2Fa.{i,j,k,l,n} +. m_2121_2Ha_2Fa.{j,i,l,k,n}\n", " ) +.\n", " sum mos' (fun n ->\n", " m_2121_2Ha_2Fb.{i,j,k,l,n} +. m_2121_2Ha_2Fb.{j,i,l,k,n}\n", " ) \n", " else\n", " m_2121_2Hb_1F.{i,j,k,l} +.\n", " sum mos (fun n ->\n", " m_2121_2Hb_2Fa.{i,j,k,l,n} +. m_2121_2Hb_2Fb.{j,i,l,k,n}\n", " ) +.\n", " sum mos' (fun n ->\n", " m_2121_2Hb_2Fb.{i,j,k,l,n} +. m_2121_2Hb_2Fa.{j,i,l,k,n}\n", " ) \n", " in\n", "\n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", " \n", "\n", "let _ = check 100 integral_value 2 1 2 1\n", "\n", "(*\n", "let ki = det_I.(2)\n", "let kj = det_I.(33)\n", "\n", "let _ = integral_value ki kj\n", "let _ = \n", " let alphas = generate_alphas ki kj 2 1 2 1\n", " in compute_HaaF ki alphas kj\n", "*)\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 11. 2 1 22" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "let _ = png_image \"2_1_22.png\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$|J\\rangle = \\hat{T}_{ij}^{kl}|I\\rangle$\n", "\n", "$m$ : orbital indices of MOs unoccupied both in $|I\\rangle$ and $|J\\rangle$.\n", "\n", "$n$ : orbital indices of MOs occupied in both $|I\\rangle$ and $|J\\rangle$ .\n", "\n", "$\\sum_{a} \n", " \\hat{T}_{ij}^{am} \\hat{T}_{am}^{kl} +\n", " \\hat{T}_{ij}^{ma} \\hat{T}_{ma}^{kl} -\n", " \\hat{T}_{in}^{al} \\hat{T}_{aj}^{kn} -\n", " \\hat{T}_{nj}^{ka} \\hat{T}_{ia}^{nl} +\n", " \\sum_{n}\n", " \\hat{T}_{i\\bar{n}}^{k\\bar{a}} \\hat{T}_{\\bar{a}j}^{\\bar{n}l}\n", "$\n", "\n", "\n", "$$\n", "\\sum_{a}\n", "\\sum_{m} \\langle i j || a m \\rangle \\left[ a m || k l \\right] + \\langle i j || m a \\rangle \\left[ m a || k l \\right] - \\\\\n", "\\sum_{n} \\langle i n || a l \\rangle \\left[ a j || k n \\right] + \\langle n j || k a \\rangle \\left[ i a || n l \\right] \n", "$$" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "let integral_value ki kj = \n", " let i, j, k, l, s, s', phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Double (phase, { hole ; particle ; spin }, {hole=hole' ; particle=particle' ; spin=spin' })) ->\n", " hole, hole', particle, particle', spin, spin', phase\n", " | _ -> assert false\n", " in\n", "\n", " let mos_virt_a, mos_virt_b = \n", " Array.init mo_num (fun i -> Some (i+1)) , \n", " Array.init mo_num (fun i -> Some (i+1)) \n", " in\n", " List.iter (fun i -> mos_virt_a.(i-1) <- None) (mos_a ki);\n", " List.iter (fun i -> mos_virt_a.(i-1) <- None) (mos_a kj);\n", " List.iter (fun i -> mos_virt_b.(i-1) <- None) (mos_b ki);\n", " List.iter (fun i -> mos_virt_b.(i-1) <- None) (mos_b kj);\n", "\n", " let mos_virt_a, mos_virt_b = \n", " Array.to_list mos_virt_a |> Util.list_some,\n", " Array.to_list mos_virt_b |> Util.list_some\n", " in\n", " \n", " let result = \n", " \n", " let mos_virt, mos_virt' =\n", " match s with\n", " | Spin.Alfa -> mos_virt_a, mos_virt_b\n", " | Spin.Beta -> mos_virt_b, mos_virt_a\n", " in\n", " \n", " let mos, mos' =\n", " let alfa = \n", " let i = Spindeterminant.bitstring @@ Determinant.alfa ki in\n", " let j = Spindeterminant.bitstring @@ Determinant.alfa kj in\n", " Bitstring.to_list (Bitstring.logand i j)\n", " in\n", " let beta = \n", " let i = Spindeterminant.bitstring @@ Determinant.beta ki in\n", " let j = Spindeterminant.bitstring @@ Determinant.beta kj in\n", " Bitstring.to_list (Bitstring.logand i j)\n", " in\n", " match s with\n", " | Spin.Alfa -> alfa, beta\n", " | Spin.Beta -> beta, alfa\n", " in\n", "\n", " if s = s' then \n", " let s'' = Spin.other s' in\n", " sum mos_cabs (fun a -> \n", " sum mos (fun n ->\n", " h_two i n a k s s *. f_two j a n l s s \n", " +. h_two i n a l s s *. f_two j a k n s s \n", " -. h_two j n a k s s *. f_two i a n l s s \n", " -. h_two j n a l s s *. f_two i a k n s s\n", " )\n", " +. sum mos_virt (fun m ->\n", " -. h_two i j a m s s *. f_two m a k l s s )\n", " +. sum mos' (fun n ->\n", " h_two i n k a s s'' *. f_two j a l n s s''\n", " +. h_two j n l a s s'' *. f_two i a k n s s''\n", " -. h_two i n l a s s'' *. f_two j a k n s s''\n", " -. h_two j n k a s s'' *. f_two i a l n s s''\n", " )\n", " )\n", " else\n", " sum mos_cabs (fun a ->\n", " sum mos_virt' (fun m ->\n", " h_two i j a m s s' *. f_two a m k l s s' ) +.\n", " sum mos_virt (fun m ->\n", " h_two i j m a s s' *. f_two m a k l s s' ) +.\n", " sum mos (fun n ->\n", " h_two n i a k s s *. f_two a j n l s s'\n", " +. h_two n j a l s s' *. f_two i a k n s s \n", " -. h_two n j k a s s' *. f_two i a n l s s'\n", " ) +.\n", " sum mos' (fun n -> if n >= j then 0. else \n", " h_two i n k a s s' *. f_two j a l n s' s'\n", " +. h_two n j a l s' s' *. f_two i a k n s s' ) +. \n", " sum mos' (fun n -> if n <= j then 0. else \n", " -. h_two i n k a s s' *. f_two j a n l s' s' \n", " -. h_two j n a l s' s' *. f_two i a k n s s' ) +.\n", " sum mos' (fun n -> \n", " -. h_two i n a l s s' *. f_two a j k n s s'\n", " )\n", " )\n", " in\n", "\n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", "\n", "\n", "let _ = check 300 integral_value 2 1 2 2" ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/markdown", "scrolled": false }, "source": [ "let ki = det_I.(99)\n", "let kj = det_I.(193)\n", "\n", "let alpha_to_string alpha = \n", " \n", " let exc0 = Array.init (aux_num+1) (fun _ -> [|\"-\";\"-\"|]) in\n", " \n", " let i, j, k, l, s, s', phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Double (phase, { hole ; particle ; spin }, {hole=hole' ; particle=particle' ; spin=spin' })) ->\n", " hole, hole', particle, particle', spin, spin', phase\n", " | _ -> assert false\n", " in\n", " let spin = function\n", " | Spin.Alfa -> 0\n", " | _ -> 1\n", " in\n", " exc0.(i).(spin s ) <- \"i\" \n", " ; exc0.(j).(spin s') <- \"j\" \n", " ; exc0.(k).(spin s ) <- \"k\" \n", " ; exc0.(l).(spin s') <- \"l\" \n", " ;\n", " let s0, s0' = s, s' in\n", " \n", " let i, j, k, l, s, s', p1 =\n", " match Excitation.of_det ki alpha with\n", " | Excitation.(Double (phase, { hole ; particle ; spin }, {hole=hole' ; particle=particle' ; spin=spin' })) ->\n", " hole, hole', particle, particle', spin, spin', phase\n", " | _ -> assert false\n", " in\n", " \n", " if exc0.(i).(spin s ) = \"-\" then exc0.(i).(spin s ) <- \"n\";\n", " if exc0.(j).(spin s') = \"-\" then exc0.(j).(spin s') <- \"n\";\n", " if exc0.(k).(spin s ) = \"-\" then exc0.(k).(spin s ) <- if k > mo_num then \"a\" else \"m\";\n", " if exc0.(l).(spin s') = \"-\" then exc0.(l).(spin s') <- if l > mo_num then \"a\" else \"m\";\n", " \n", " let string_h = \n", " Printf.sprintf \"h_two %s %s %s %s %s %s *. \" \n", " exc0.(i).(spin s )\n", " exc0.(j).(spin s')\n", " exc0.(k).(spin s )\n", " exc0.(l).(spin s')\n", " (if s = s0 then \"s \" else \"s'\")\n", " (if s' = s0 then \"s \" else \"s'\")\n", " in \n", " \n", " let i, j, k, l, s, s', p2 =\n", " match Excitation.of_det alpha kj with\n", " | Excitation.(Double (phase, { hole ; particle ; spin }, {hole=hole' ; particle=particle' ; spin=spin' })) ->\n", " hole, hole', particle, particle', spin, spin', phase\n", " | _ -> assert false\n", " in\n", " \n", " let string_f = \n", " Printf.sprintf \"f_two %s %s %s %s %s %s\" \n", " exc0.(i).(spin s )\n", " exc0.(j).(spin s')\n", " exc0.(k).(spin s )\n", " exc0.(l).(spin s')\n", " (if s = s0 then \"s \" else \"s'\")\n", " (if s' = s0 then \"s \" else \"s'\")\n", " in\n", "(*\n", " Format.printf \"|I> -> |a> : %a | %s\\n@.\" Excitation.pp (Excitation.of_det ki alpha) string_h ;\n", " Format.printf \"|a> -> |J> : %a | %s\\n@.\" Excitation.pp (Excitation.of_det alpha kj) string_f ;\n", " *)\n", "\n", " \n", " let sign = \n", " if Phase.add p1 p2 = phase then \"+.\" else \"-.\"\n", " in\n", " sign ^ string_h ^ string_f\n", " \n", "\n", "let alpha_debug alpha = \n", " \n", " let i, j, k, l, s, s', p1 =\n", " match Excitation.of_det ki alpha with\n", " | Excitation.(Double (phase, { hole ; particle ; spin }, {hole=hole' ; particle=particle' ; spin=spin' })) ->\n", " hole, hole', particle, particle', spin, spin', phase\n", " | _ -> assert false\n", " in\n", " Printf.printf \"%d %d %d %d \" i j k l;\n", " \n", " let i, j, k, l, s, s', p2 =\n", " match Excitation.of_det alpha kj with\n", " | Excitation.(Double (phase, { hole ; particle ; spin }, {hole=hole' ; particle=particle' ; spin=spin' })) ->\n", " hole, hole', particle, particle', spin, spin', phase\n", " | _ -> assert false\n", " in\n", " (*\n", " Format.printf \"|I> -> |a> : %a | \\n@.\" Excitation.pp (Excitation.of_det ki alpha) ;\n", " Format.printf \"|a> -> |J> : %a | \\n@.\" Excitation.pp (Excitation.of_det alpha kj) ;\n", " *)\n", " Printf.printf \"%d %d %d %d \\n%!\" i j k l\n", "\n", " \n", "let strings = \n", " Format.printf \"|I> -> |J> : %a |\\n@.\" Excitation.pp (Excitation.of_det ki kj) ;\n", " generate_alphas ki kj 2 1 2 2\n", " |> Array.of_list\n", " |> Array.mapi (fun kk alpha -> alpha_to_string alpha)\n", " |> Array.to_list\n", " |> List.sort_uniq compare\n", " |> Array.of_list\n", "\n", "let _ = Array.iteri (fun i x -> Printf.printf \"%d %s \\n%!\" i x) strings\n", "\n", "let _ =\n", " let v =\n", " let alphas =\n", " generate_alphas ki kj 2 1 2 2\n", " (*\n", " |> List.filter (fun alpha ->\n", " let x = alpha_to_string alpha in\n", " x = strings.(6)\n", " )\n", " *)\n", " in\n", " (*\n", " List.iter alpha_debug alphas ;\n", " Printf.printf \"\\n%!\";\n", " *)\n", " compute_HaaF ki alphas kj \n", " in\n", " let x = (integral_value ki kj) in\n", " Printf.printf \"%20.8e %20.8e %20.8e\\n%!\" x v (v-. x)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 12. 2 2 22" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "let _ = png_image \"2_2_22.png\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$|J\\rangle = \\hat{T}_{ij}^{kl}|I\\rangle$\n", "\n", "$$\n", "\\sum_{b}\\sum_{a h, h', p, p', s, s', phase\n", " | _ -> assert false\n", " in\n", "\n", " let result = \n", " if s <> s' then (* Alpha-Beta *)\n", " sum mos_cabs (fun b -> \n", " sum mos_cabs (fun a -> \n", " h_two h h' a b s s' *. f_two a b p p' s s'\n", " )) \n", " else (* Alpha-Alpha / Beta-Beta *)\n", " sum mos_cabs (fun b -> \n", " sum mos_cabs (fun a -> if b >= a then 0. else\n", " h_two h h' a b s s' *. f_two a b p p' s s'\n", " )) \n", " in\n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", " \n", "\n", "let _ = check 100 integral_value 2 2 2 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 13. 3 1 2 2" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "let _ = png_image \"3_1_22.png\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$|J\\rangle = \\hat{T}_{ijm}^{kln}|I\\rangle$\n", "\n", "$\\sum_{a}\n", " \\hat{T}_{ij}^{al} \\hat{T}_{am}^{kn} \n", " + \\hat{T}_{ij}^{ka} \\hat{T}_{am}^{ln} \n", " + \\hat{T}_{im}^{ka} \\hat{T}_{ja}^{ln} \n", " + \\hat{T}_{im}^{an} \\hat{T}_{aj}^{kl} \n", " + \\hat{T}_{jm}^{an} \\hat{T}_{ia}^{kl} \n", " + \\hat{T}_{jm}^{la} \\hat{T}_{ia}^{kn} \n", "$\n", "\n", "$$\n", "\\sum_{a} \\langle i j || a l \\rangle \\left[ a m || k n \\right] +\n", " \\langle i j || k a \\rangle \\left[ a m || l n \\right] +\n", " \\langle i m || k a \\rangle \\left[ j a || l n \\right] +\n", " \\langle i m || a n \\rangle \\left[ a j || k l \\right] +\n", " \\langle j m || a n \\rangle \\left[ i a || k l \\right] +\n", " \\langle j m || l a \\rangle \\left[ i a || k n \\right] \n", "$$" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "let integral_value ki kj = \n", " let i, j, m, k, l, n, s1, s2, s3, phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Triple (phase,\n", " { hole=h1 ; particle=p1 ; spin=s1 },\n", " { hole=h2 ; particle=p2 ; spin=s2 },\n", " { hole=h3 ; particle=p3 ; spin=s3 }) ) -> h1, h2, h3, p1, p2, p3, s1, s2, s3, phase\n", " | _ -> assert false\n", " in\n", "\n", " let result = \n", " let open Spin in \n", " match s1, s2, s3 with\n", " | Alfa, Alfa, Alfa\n", " | Beta, Beta, Beta -> \n", " sum mos_cabs (fun a -> \n", " h_two i j a k s1 s2 *. f_two m a l n s3 s3 \n", " +. h_two i j a n s1 s2 *. f_two m a k l s3 s2 \n", " +. h_two i m a l s1 s3 *. f_two j a k n s2 s3 \n", " +. h_two j m a k s2 s3 *. f_two i a l n s1 s3 \n", " +. h_two j m a n s2 s3 *. f_two i a k l s1 s2 \n", " -. h_two i j a l s1 s2 *. f_two m a k n s3 s3 \n", " -. h_two i m a k s1 s3 *. f_two j a l n s2 s3 \n", " -. h_two i m a n s1 s3 *. f_two j a k l s2 s2 \n", " -. h_two j m a l s2 s3 *. f_two i a k n s1 s3 )\n", " | Alfa, Alfa, Beta\n", " | Beta, Beta, Alfa -> \n", " sum mos_cabs (fun a -> \n", " h_two i j a l s1 s2 *. f_two a m k n s1 s3\n", " +. h_two i m k a s1 s3 *. f_two j a l n s2 s3\n", " +. h_two j m a n s2 s3 *. f_two i a k l s1 s2 \n", " +. h_two j m l a s2 s3 *. f_two i a k n s1 s3\n", " -. h_two i j a k s1 s2 *. f_two a m l n s1 s3\n", " -. h_two i m a n s1 s3 *. f_two j a k l s2 s2 \n", " -. h_two i m l a s1 s3 *. f_two j a k n s2 s3\n", " -. h_two j m k a s2 s3 *. f_two i a l n s1 s3\n", " ) \n", " | Alfa, Beta, Beta\n", " | Beta, Alfa, Alfa -> \n", " sum mos_cabs (fun a -> \n", " h_two i j a l s1 s2 *. f_two a m k n s1 s3 \n", " +. h_two i m a n s1 s3 *. f_two a j k l s1 s2 \n", " +. h_two i m k a s1 s3 *. f_two j a l n s2 s3 \n", " +. h_two j m a n s2 s3 *. f_two i a k l s1 s2 \n", " -. h_two i j a n s1 s2 *. f_two a m k l s1 s2 \n", " -. h_two i j k a s1 s2 *. f_two m a l n s2 s3 \n", " -. h_two i m a l s1 s3 *. f_two a j k n s1 s3 \n", " -. h_two j m a l s2 s3 *. f_two i a k n s1 s3 \n", " ) \n", " | Beta, Alfa, Beta\n", " | Alfa, Beta, Alfa -> assert false (*TODO *)\n", " in\n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", " \n", "\n", "let _ = check 200 integral_value 3 1 2 2" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": false }, "outputs": [], "source": [ "let ki = det_I.(129)\n", "let kj = det_I.(349)\n", "\n", "let alpha_to_string alpha = \n", " \n", " let exc0 = Array.init (aux_num+1) (fun _ -> [|\"-\";\"-\"|]) in\n", " \n", " let i, j, m, k, l, n, s, s', s'', phase =\n", " match Excitation.of_det ki kj with\n", " | Excitation.(Triple (phase,\n", " { hole ; particle ; spin },\n", " {hole=hole' ; particle=particle' ; spin=spin' }, \n", " {hole=hole''; particle=particle''; spin=spin''} )) ->\n", " hole, hole', hole'', particle, particle', particle'', spin, spin', spin'', phase\n", " | _ -> assert false\n", " in\n", " let spin = function\n", " | Spin.Alfa -> 0\n", " | _ -> 1\n", " in\n", " exc0.(i).(spin s ) <- \"i\" \n", " ; exc0.(j).(spin s' ) <- \"j\" \n", " ; exc0.(k).(spin s ) <- \"k\" \n", " ; exc0.(l).(spin s' ) <- \"l\" \n", " ; exc0.(m).(spin s'') <- \"m\" \n", " ; exc0.(n).(spin s'') <- \"n\" \n", " ;\n", " let s0, s0', s0'' = s, s', s'' in\n", " \n", " let i, j, k, l, s, s', p1 =\n", " match Excitation.of_det ki alpha with\n", " | Excitation.(Double (phase, { hole ; particle ; spin }, {hole=hole' ; particle=particle' ; spin=spin' })) ->\n", " hole, hole', particle, particle', spin, spin', phase\n", " | _ -> assert false\n", " in\n", " \n", " if exc0.(i).(spin s ) = \"-\" then exc0.(i).(spin s ) <- \"p\";\n", " if exc0.(j).(spin s') = \"-\" then exc0.(j).(spin s') <- \"p\";\n", " if exc0.(k).(spin s ) = \"-\" then exc0.(k).(spin s ) <- if k > mo_num then \"a\" else \"q\";\n", " if exc0.(l).(spin s') = \"-\" then exc0.(l).(spin s') <- if l > mo_num then \"a\" else \"q\";\n", " \n", " let string_h = \n", " Printf.sprintf \"h_two %s %s %s %s %s %s *. \" \n", " exc0.(i).(spin s )\n", " exc0.(j).(spin s')\n", " exc0.(k).(spin s )\n", " exc0.(l).(spin s')\n", " (if s = s0 then \"s \" else if s = s0' then \"s'\" else \"s''\")\n", " (if s' = s0' then \"s'\" else if s = s0'' then \"s''\" else \"s\" )\n", " in \n", " \n", " let i, j, k, l, s, s', p2 =\n", " match Excitation.of_det alpha kj with\n", " | Excitation.(Double (phase, { hole ; particle ; spin }, {hole=hole' ; particle=particle' ; spin=spin' })) ->\n", " hole, hole', particle, particle', spin, spin', phase\n", " | _ -> assert false\n", " in\n", " \n", " let string_f = \n", " Printf.sprintf \"f_two %s %s %s %s %s %s\" \n", " exc0.(i).(spin s )\n", " exc0.(j).(spin s')\n", " exc0.(k).(spin s )\n", " exc0.(l).(spin s')\n", " (if s = s0 then \"s \" else if s = s0' then \"s'\" else \"s''\")\n", " (if s' = s0' then \"s'\" else if s = s0'' then \"s''\" else \"s\" )\n", " in\n", " (*\n", " Format.printf \"|I> -> |a> : %a | %s\\n@.\" Excitation.pp (Excitation.of_det ki alpha) string_h ;\n", " Format.printf \"|a> -> |J> : %a | %s\\n@.\" Excitation.pp (Excitation.of_det alpha kj) string_f ;\n", " *)\n", "\n", " \n", " let sign = \n", " if Phase.add p1 p2 = phase then \"+.\" else \"-.\"\n", " in\n", " sign ^ string_h ^ string_f\n", " \n", "\n", "let alpha_debug alpha = \n", " \n", " let i, j, k, l, s, s', p1 =\n", " match Excitation.of_det ki alpha with\n", " | Excitation.(Double (phase, { hole ; particle ; spin }, {hole=hole' ; particle=particle' ; spin=spin' })) ->\n", " hole, hole', particle, particle', spin, spin', phase\n", " | _ -> assert false\n", " in\n", " Printf.printf \"%d %d %d %d \" i j k l;\n", " \n", " let i, j, k, l, s, s', p2 =\n", " match Excitation.of_det alpha kj with\n", " | Excitation.(Double (phase, { hole ; particle ; spin }, {hole=hole' ; particle=particle' ; spin=spin' })) ->\n", " hole, hole', particle, particle', spin, spin', phase\n", " | _ -> assert false\n", " in\n", " (*\n", " Format.printf \"|I> -> |a> : %a | \\n@.\" Excitation.pp (Excitation.of_det ki alpha) ;\n", " Format.printf \"|a> -> |J> : %a | \\n@.\" Excitation.pp (Excitation.of_det alpha kj) ;\n", " *)\n", " Printf.printf \"%d %d %d %d \\n%!\" i j k l\n", "\n", " \n", "let strings = \n", " Format.printf \"|I> -> |J> : %a |\\n@.\" Excitation.pp (Excitation.of_det ki kj) ;\n", " generate_alphas ki kj 3 1 2 2\n", " |> Array.of_list\n", " |> Array.mapi (fun kk alpha -> alpha_to_string alpha)\n", " |> Array.to_list\n", " |> List.sort_uniq compare\n", " |> Array.of_list\n", "\n", "let _ = Array.iteri (fun i x -> Printf.printf \"%d %s \\n%!\" i x) strings\n", "\n", "let _ =\n", " let v =\n", " let alphas =\n", " generate_alphas ki kj 3 1 2 2\n", " (*\n", " |> List.filter (fun alpha ->\n", " let x = alpha_to_string alpha in\n", " x = strings.(6)\n", " )\n", " *)\n", " in\n", " (*\n", " List.iter alpha_debug alphas ;\n", " Printf.printf \"\\n%!\";\n", " *)\n", " compute_HaaF ki alphas kj \n", " in\n", " let x = (integral_value ki kj) in\n", " Printf.printf \"%20.8e %20.8e %20.8e\\n%!\" x v (v-. x)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Raw Cell Format", "kernelspec": { "display_name": "OCaml default", "language": "OCaml", "name": "ocaml-jupyter" }, "language_info": { "codemirror_mode": "text/x-ocaml", "file_extension": ".ml", "mimetype": "text/x-ocaml", "name": "OCaml", "nbconverter_exporter": null, "pygments_lexer": "OCaml", "version": "4.07.1" } }, "nbformat": 4, "nbformat_minor": 4 }