{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Test of F12 matrix elements" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true }, "source": [ "## Initialization" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2020-03-30T10:15:59.908500Z", "start_time": "2020-03-30T10:15:58.731Z" }, "hidden": true, "init_cell": true }, "outputs": [ { "data": { "text/plain": [ "val png_image : string -> unit = \n" ] }, "execution_count": 5, "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" ] }, { "data": { "text/plain": [ "val png_image : string -> Jupyter_notebook.display_id = \n" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "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": { "hidden": true }, "source": [ "### Modules" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2020-03-30T10:16:00.033900Z", "start_time": "2020-03-30T10:15:58.750Z" }, "hidden": true, "init_cell": true }, "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": { "hidden": true }, "source": [ "### Printers" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2020-03-30T10:16:00.095400Z", "start_time": "2020-03-30T10:15:58.760Z" }, "hidden": true, "init_cell": true }, "outputs": [ { "data": { "text/plain": [ "val pp_mo : Format.formatter -> MOBasis.t -> unit = \n" ] }, "execution_count": 7, "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": { "heading_collapsed": true }, "source": [ "## Run" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "### Simulation\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2020-03-30T10:16:00.287500Z", "start_time": "2020-03-30T10:15:58.769Z" }, "hidden": true, "init_cell": true, "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "val basis_filename : string = \"/home/scemama/qp2/data/basis/6-31g\"\n" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val aux_basis_filename : string = \"/home/scemama/qp2/data/basis/cc-pvdz\"\n" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val nuclei : Nuclei.t = [|(Element.C, 0.0000 0.0000 0.0000)|]\n" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val frozen_core : bool = false\n" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val multiplicity : int = 1\n" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val state : int = 1\n" ] }, "execution_count": 10, "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_g =\n", " [ 0.220900 1.004000 3.622000 12.160000 45.870000 254.400000 ];\n", " expo_g_inv =\n", " [ 4.526935 0.996016 0.276091 0.082237 0.021801 0.003931 ]}}\n" ] }, "execution_count": 10, "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 3.04752488e+03 1.83473713e-03\n", " 4.57369518e+02 1.40373228e-02\n", " 1.03948685e+02 6.88426223e-02\n", " 2.92101553e+01 2.32184443e-01\n", " 9.28666296e+00 4.67941348e-01\n", " 3.16392696e+00 3.62311985e-01\n", " \n", " 7.86827235e+00 -1.19332420e-01\n", " 1.88128854e+00 -1.60854152e-01\n", " 5.44249258e-01 1.14345644e+00\n", " \n", " 1.68714478e-01 1.00000000e+00\n", " \n", " \n", "-----------------------------------------------------------------------\n", " 4-9 P 0.0000 0.0000 0.0000 7.86827235e+00 6.89990666e-02\n", " 1.88128854e+00 3.16423961e-01\n", " 5.44249258e-01 7.44308291e-01\n", " \n", " 1.68714478e-01 1.00000000e+00\n", " \n", " \n", "-----------------------------------------------------------------------\n", "\n" ] }, "execution_count": 10, "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 3.04752488e+03 1.83473713e-03\n", " 4.57369518e+02 1.40373228e-02\n", " 1.03948685e+02 6.88426223e-02\n", " 2.92101553e+01 2.32184443e-01\n", " 9.28666296e+00 4.67941348e-01\n", " 3.16392696e+00 3.62311985e-01\n", " \n", " 7.86827235e+00 -1.19332420e-01\n", " 1.88128854e+00 -1.60854152e-01\n", " 5.44249258e-01 1.14345644e+00\n", " \n", " 1.68714478e-01 1.00000000e+00\n", " \n", " 6.66500000e+03 6.92000000e-04\n", " 1.00000000e+03 5.32900000e-03\n", " 2.28000000e+02 2.70770000e-02\n", " 6.47100000e+01 1.01718000e-01\n", " 2.10600000e+01 2.74740000e-01\n", " 7.49500000e+00 4.48564000e-01\n", " 2.79700000e+00 2.85074000e-01\n", " 5.21500000e-01 1.52040000e-02\n", " 1.59600000e-01 -3.19100000e-03\n", " \n", " 6.66500000e+03 -1.46000000e-04\n", " 1.00000000e+03 -1.15400000e-03\n", " 2.28000000e+02 -5.72500000e-03\n", " 6.47100000e+01 -2.33120000e-02\n", " 2.10600000e+01 -6.39550000e-02\n", " 7.49500000e+00 -1.49981000e-01\n", " 2.79700000e+00 -1.27262000e-01\n", " 5.21500000e-01 5.44529000e-01\n", " 1.59600000e-01 5.80496000e-01\n", " \n", " 1.59600000e-01 1.00000000e+00\n", " \n", " \n", "-----------------------------------------------------------------------\n", " 4-15 P 0.0000 0.0000 0.0000 7.86827235e+00 6.89990666e-02\n", " 1.88128854e+00 3.16423961e-01\n", " 5.44249258e-01 7.44308291e-01\n", " \n", " 1.68714478e-01 1.00000000e+00\n", " \n", " 9.43900000e+00 3.81090000e-02\n", " 2.00200000e+00 2.09480000e-01\n", " 5.45600000e-01 5.08557000e-01\n", " 1.51700000e-01 4.68842000e-01\n", " \n", " 1.51700000e-01 1.00000000e+00\n", " \n", " \n", "-----------------------------------------------------------------------\n", " 19-24 D 0.0000 0.0000 0.0000 5.50000000e-01 1.00000000e+00\n", " \n", " \n", "-----------------------------------------------------------------------\n", "\n" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val charge : int = 0\n" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val simulation : Simulation.t = \n" ] }, "execution_count": 10, "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 \"c\" \n", "let frozen_core = false\n", "let multiplicity = 1\n", "let state = 1\n", "\n", "let f12 = F12factor.gaussian_geminal 1.0 \n", "let basis = Basis.of_nuclei_and_basis_filenames ~f12 ~nuclei [basis_filename] \n", "let aux_basis = Basis.of_nuclei_and_basis_filenames ~nuclei (basis_filename :: aux_basis_filename :: []) \n", "let charge = 0 \n", "\n", "\n", "let simulation =\n", " Simulation.make \n", " ~charge ~multiplicity ~nuclei\n", " ~cartesian:true\n", " basis\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2020-03-30T10:16:00.298200Z", "start_time": "2020-03-30T10:15:58.778Z" }, "hidden": true, "init_cell": true }, "outputs": [ { "data": { "text/plain": [ "val n_elec_alfa : int = 3\n", "val n_elec_beta : int = 3\n", "val n_elec : int = 6\n" ] }, "execution_count": 11, "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": { "hidden": true }, "source": [ "### Hartree-Fock" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2020-03-30T10:16:00.474000Z", "start_time": "2020-03-30T10:15:58.786Z" }, "hidden": true, "init_cell": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "15 significant shell pairs computed in 0.030632 seconds\n", "1\n", "2\n", "3\n", "6\n", "Computed ERIs in 0.141639 seconds\n", "MOs =\n", "\n", "\n", " -- 1 -- -- 2 -- -- 3 -- -- 4 -- -- 5 --\n", " 1 0.995189 -0.236456 -0 -0 0\n", " 2 0.0272807 0.573253 -0 -0 0\n", " 3 -0.00753288 0.50151 -0 -6.64951E-16 0\n", " ... ... ... ... ...\n", " 7 -0 -0 -0.0346136 -0.103467 0.874392\n", " 8 -0 6.53154E-16 0.374215 -0.0232294 0.0788015\n", " 9 -0 7.4731E-16 0.00656013 0.779165 0.118461\n", " \n", "\n", " -- 6 -- -- 7 -- -- 8 -- -- 9 --\n", " 1 0 0.0649867 -0 -0\n", " 2 -1.35345E-15 -1.62901 -0 -0\n", " 3 7.04525E-16 1.63955 -0 -0\n", " ... ... ... ...\n", " 7 -0.106576 -0 0.122185 -0.823344\n", " 8 1.15222 -0 0.0274317 -0.074201\n", " 9 0.0201988 -0 -0.920122 -0.111546\n", " \n" ] }, { "data": { "text/plain": [ "val hf : HartreeFock.t = \n", "======================================================================\n", " Restricted Hartree-Fock \n", "======================================================================\n", "\n", " ------------------------------------------------------------\n", " # HF energy Convergence HOMO-LUMO\n", " ------------------------------------------------------------\n", " 1 -36.54848150 7.4861e-01 0.2723\n", " ------------------------------------------------------------\n", "\n", "\n", " ============================================================\n", " One-electron energy -52.6699343629\n", " Kinetic 42.4526846308\n", " Potential -95.1226189937\n", " -------------------------------------------------------- \n", " Two-electron energy 16.1214528647\n", " Coulomb 21.8535626014\n", " Exchange -5.7321097367\n", " -------------------------------------------------------- \n", " HF HOMO 0.8237527941\n", " HF LUMO 8.2337246898\n", " HF LUMO-LUMO 7.4099718957\n", " -------------------------------------------------------- \n", " Electronic energy -36.5484814981\n", " Nuclear repulsion 0.0000000000\n", " Hartree-Fock energy -36.5484814981\n", " ============================================================\n", " \n", "\n" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val mo_basis : MOBasis.t =\n", " Eigenvalues: -11.127416 -0.632049 -0.269831 0.131526 0.151773 \n", " -- 1 -- -- 2 -- -- 3 -- -- 4 -- -- 5 --\n", " 1 0.995189 -0.236456 -0 -0 0\n", " 2 0.0272807 0.573253 -0 -0 0\n", " 3 -0.00753288 0.50151 -0 -6.64951E-16 0\n", " ... ... ... ... ...\n", " 7 -0 -0 -0.0346136 -0.103467 0.874392\n", " 8 -0 6.53154E-16 0.374215 -0.0232294 0.0788015\n", " 9 -0 7.4731E-16 0.00656013 0.779165 0.118461\n", " \n", " Eigenvalues: 0.786913 0.828232 0.869410 0.849164 \n", " -- 6 -- -- 7 -- -- 8 -- -- 9 --\n", " 1 0 0.0649867 -0 -0\n", " 2 -1.35345E-15 -1.62901 -0 -0\n", " 3 7.04525E-16 1.63955 -0 -0\n", " ... ... ... ...\n", " 7 -0.106576 -0 0.122185 -0.823344\n", " 8 1.15222 -0 0.0274317 -0.074201\n", " 9 0.0201988 -0 -0.920122 -0.111546\n", " \n", " \n" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let hf = HartreeFock.make ~guess:`Hcore ~max_scf:1 simulation ;;\n", "\n", "let mo_basis = MOBasis.of_hartree_fock hf" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true }, "source": [ "# FCI-F12" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "## Common functions" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2020-03-30T10:16:00.507100Z", "start_time": "2020-03-30T10:15:58.791Z" }, "hidden": true, "init_cell": true }, "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_g =\n", " [ 0.220900 1.004000 3.622000 12.160000 45.870000 254.400000 ];\n", " expo_g_inv =\n", " [ 4.526935 0.996016 0.276091 0.082237 0.021801 0.003931 ]}}\n" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val mo_num : int = 9\n" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val pp_spindet : Format.formatter -> Spindeterminant.t -> unit = \n" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val pp_det : Format.formatter -> Determinant.t -> unit = \n" ] }, "execution_count": 13, "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": 17, "metadata": { "ExecuteTime": { "end_time": "2020-03-30T10:16:03.181400Z", "start_time": "2020-03-30T10:15:58.799Z" }, "hidden": true, "init_cell": true }, "outputs": [ { "data": { "text/plain": [ "val simulation_aux : Simulation.t = \n" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "66 significant shell pairs computed in 0.170052 seconds\n", "1\n", "2\n", "3\n", "6\n", "9\n", "10\n", "11\n", "12\n", "15\n", "18\n", "Computed ERIs in 3.375684 seconds\n" ] }, { "data": { "text/plain": [ "val aux_basis : MOBasis.t =\n", " Eigenvalues: -11.127416 -0.632049 -0.269831 0.131526 0.151773 \n", " -- 1 -- -- 2 -- -- 3 -- -- 4 -- -- 5 --\n", " 1 0.995189 -0.236456 -6.99905E-13 3.74871E-12 -1.80137E-11\n", " 2 0.0272807 0.573253 1.6881E-12 1.54414E-12 2.46497E-12\n", " 3 -0.00753288 0.50151 2.32851E-13 4.16589E-13 1.21024E-12\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.786913 0.828232 0.869410 0.849164 1.480837 \n", " -- 6 -- -- 7 -- -- 8 -- -- 9 -- -- 10 --\n", " 1 2.65719E-12 0.0649867 3.37785E-12 1.73781E-11 0\n", " 2 2.11976E-13 -1.62901 3.37812E-13 3.5811E-12 0\n", " 3 -1.352E-13 1.63955 -1.27564E-13 -8.81657E-13 0\n", " ... ... ... ... ...\n", " 22 0 0 0 0 -0.866025\n", " 23 0 0 0 0 0\n", " 24 0 0 0 0 0\n", " \n", " Eigenvalues: 1.033846 1.027840 1.023514 1.247024 25.958539 \n", " -- 11 -- -- 12 -- -- 13 -- -- 14 -- -- 15 --\n", " 1 -3.09588E-10 2.21922E-10 -9.52402E-10 3.79632 -6.98298E-09\n", " 2 1.67373E-10 1.08424E-10 1.58507E-10 -10.5897 1.20079E-09\n", " 3 3.96217E-11 1.2302E-11 6.11965E-11 53.7881 5.40421E-10\n", " ... ... ... ... ...\n", " 22 -0 0 0 -0 -0\n", " 23 1.4274E-14 0 0 -0 2.39877E-13\n", " 24 -1.04644E-14 -1.17777E-14 0 -0 -0\n", " \n", " Eigenvalues: 25.891758 25.895674 18.767112 377.619959 1.478100 \n", " -- 16 -- -- 17 -- -- 18 -- -- 19 -- -- 20 --\n", " 1 9.02237E-09 -1.52394E-08 27.2935 436.547 1.14358E-12\n", " 2 1.49437E-09 4.31003E-09 -127.494 -10.9671 -4.3086E-14\n", " 3 -2.24755E-10 1.44203E-09 -21.2025 -23.8199 -6.40841E-14\n", " ... ... ... ... ...\n", " 22 1.08099E-13 1.08791E-13 -0 0 -0.210667\n", " 23 1.28809E-13 0 -0 0 0.86485\n", " 24 -2.16198E-13 -2.17582E-13 -0 0 0.421334\n", " \n", " Eigenvalues: 1.480427 1.470884 1.461621 \n", " -- 21 -- -- 22 -- -- 23 --\n", " 1 -7.95748E-13 1.61942E-12 5.76543E-10\n", " 2 2.98909E-14 -6.0852E-14 -2.17012E-11\n", " 3 4.43594E-14 -9.03033E-14 -3.22277E-11\n", " ... ... ...\n", " 22 -0.188927 0.412218 -0.00158824\n", " 23 0.10621 0.490651 -0.00399134\n", " 24 0.377853 -0.824436 0.00317648\n", " \n", " \n" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val aux_num : int = 23\n" ] }, "execution_count": 17, "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 ~f12 nuclei\n", " |> Simulation.make ~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": 18, "metadata": { "ExecuteTime": { "end_time": "2020-03-30T10:16:41.349200Z", "start_time": "2020-03-30T10:15:58.806Z" }, "hidden": true, "init_cell": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "66 significant shell pairs computed in 2.944168 seconds\n", "1\n", "2\n", "3\n", "6\n", "9\n", "10\n", "11\n", "12\n", "15\n", "18\n", "Computed ERIs in 47.577040 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": { "hidden": true }, "source": [ "## Integral-based functions" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "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": 19, "metadata": { "hidden": true }, "outputs": [ { "data": { "text/plain": [ "val cancel_singles : bool = false\n" ] }, "execution_count": 19, "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": 19, "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": 19, "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": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val mos_a : Determinant.t -> int list = \n" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val mos_b : Determinant.t -> int list = \n" ] }, "execution_count": 19, "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": { "hidden": true }, "source": [ "### H integrals" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "hidden": true }, "outputs": [ { "data": { "text/plain": [ "val h_one : int -> int -> '_weak1 -> float = \n" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val h_two : int -> int -> int -> int -> Spin.t -> Spin.t -> float = \n" ] }, "execution_count": 20, "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": { "hidden": true }, "source": [ "### F12 integrals" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "hidden": true }, "outputs": [ { "data": { "text/plain": [ "val f_two : int -> int -> int -> int -> Spin.t -> Spin.t -> float = \n" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val f_one : 'a -> 'b -> 'c -> float = \n" ] }, "execution_count": 21, "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", "let f_one = h_one\n", "*)\n" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "## Determinant-based functions" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "### Integrals" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "hidden": true }, "outputs": [ { "data": { "text/plain": [ "val f12_integrals :\n", " 'a ->\n", " ('b -> 'c -> 'd -> float) *\n", " (int -> int -> int -> int -> Spin.t -> Spin.t -> float) * 'e option = \n" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val h_ij : MOBasis.t -> CIMatrixElement.De.t -> CIMatrixElement.De.t -> float =\n", " \n" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val f_ij : 'a -> CIMatrixElement.De.t -> CIMatrixElement.De.t -> float =\n", " \n" ] }, "execution_count": 22, "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": 22, "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": { "hidden": true }, "source": [ "### Determinant space" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "hidden": true }, "outputs": [ { "data": { "text/plain": [ "val is_a_double : DeterminantSpace.t -> Determinant.t -> bool = \n" ] }, "execution_count": 23, "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": 24, "metadata": { "hidden": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of determinants : 84 84 7056\n" ] }, { "data": { "text/plain": [ "val in_space : DeterminantSpace.t = \n" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "Number of determinants : 1771 1771 3136441\n" ] }, { "data": { "text/plain": [ "val aux_space : DeterminantSpace.t = \n" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val det_space_in : unit -> Determinant.t Stream.t = \n" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val det_space_out : unit -> (Determinant.t * Determinant.t) Stream.t = \n" ] }, "execution_count": 24, "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": 25, "metadata": { "hidden": true, "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "val ci : CI.t =\n", " {CI.e_shift = -37.5503734698766749; det_space = ; m_H = ;\n", " m_S2 = ; eigensystem = ; n_states = 1}\n" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ " 1 0.0000000000 4.27876562e-01\n", " 2 -0.0892428622 1.30475694e-01\n", " 3 -0.0992140908 8.74622552e-02\n", " 4 -0.1022422166 2.82063810e-02\n", " 5 -0.1043598897 3.75067379e-02\n", " 6 -0.1065557159 4.71900677e-02\n", " 7 -0.1080257508 1.17050850e-02\n", " 8 -0.1082438353 4.19578665e-03\n", " 0 -0.1082636845 1.74312819e-03\n", " 1 -0.1082673418 7.12907013e-04\n", " 2 -0.1082677387 3.29773623e-04\n", " 3 -0.1082678068 1.62017164e-04\n", " 4 -0.1082678363 1.97376384e-04\n", " 5 -0.1082678767 1.65667212e-04\n", " 6 -0.1082678966 1.24231166e-04\n", " 7 -0.1082679014 1.06697750e-05\n", " 8 -0.1082679016 5.05286931e-06\n", " 0 -0.1082679016 2.52890819e-06\n" ] }, { "data": { "text/plain": [ "val ci_coef : Lacaml.D.Mat.t =\n", " \n", "\n", " -- 1 --\n", " 1 -0.780949\n", " 2 -0\n", " 3 -0\n", " ...\n", " 7054 -0\n", " 7055 -0\n", " 7056 -3.12865E-06\n", " \n", "val ci_energy : Lacaml.D.Vec.t =\n", " R1 R2 R3\n", " -37.6586 -36.7238 -36.2286\n" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ " 1 -0.1082679016 4.37907116e-07\n", "\n" ] }, { "data": { "text/plain": [ "- : unit = ()\n" ] }, "execution_count": 25, "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": { "hidden": true }, "source": [ "Permutation operator $p_{12}$ that generates a new determinant with electrons 1 and 2 swapped." ] }, { "cell_type": "raw", "metadata": { "hidden": true }, "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": { "hidden": true }, "source": [ "## Matrices $\\langle I | H | \\alpha \\rangle$ and $\\langle I | F | \\alpha \\rangle$ " ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "hidden": true, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "val randomize : bool = false\n" ] }, "execution_count": 26, "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": 26, "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": 26, "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": 26, "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": 26, "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": { "hidden": true, "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": { "hidden": true }, "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$" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "hidden": true }, "outputs": [ { "data": { "text/plain": [ "val generate_alphas :\n", " Determinant.t -> Determinant.t -> int -> Determinant.t list = \n" ] }, "execution_count": 27, "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": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let generate_alphas ki kj exc =\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 = List.concat [ all_singles ki ; all_doubles ki ] in\n", " let ar = List.concat [ all_singles kj ; all_doubles kj ] 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", " match Bitstring.popcount a + Bitstring.popcount b with\n", " | 1 | 2 -> true\n", " | _ -> false\n", " in\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", " \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": 28, "metadata": { "hidden": true }, "outputs": [ { "data": { "text/plain": [ "val check :\n", " int ->\n", " (CIMatrixElement.De.t -> CIMatrixElement.De.t -> float) -> int -> unit =\n", " \n" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val sum : 'a list -> ('a -> float) -> float = \n" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let check n integral_value exc =\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 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": 29, "metadata": { "hidden": true }, "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": 29, "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": 29, "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": 29, "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": { "hidden": true }, "source": [ "******" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true }, "source": [ "# 1. 0 " ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "hidden": true }, "outputs": [ { "data": { "text/plain": [ "val m_0111_1H_1F : Lacaml.D.vec = R1 R2 R3 R7 R8 R9\n", " 0 0 0 ... 0 0 0\n" ] }, "execution_count": 30, "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 4.14783E-05 0.000191898 5.819E-05 3.17034E-05\n", " 2 0.00285395 0 0.00130169 0.000700753 0.000516776\n", " 3 0.0048103 0.000752348 0 0.00113768 0.000719116\n", " ... ... ... ... ...\n", " 7 -0.00384068 -0.00136624 -0.00343863 -0.00255958 -0.00227812\n", " 8 0.0164152 0.0118156 0.0104307 0.00609247 0.00526221\n", " 9 0.0169861 0.0119274 0.010345 0.00631195 0.00505777\n", " \n", "\n", " -- 6 -- -- 7 -- -- 8 -- -- 9 --\n", " 1 0.000201004 -1.30762E-06 0.000334712 0.000361198\n", " 2 0.000232139 -0.00168234 0.00083308 0.00101706\n", " 3 -0.00387497 0.000450355 0.00302132 0.00343988\n", " ... ... ... ...\n", " 7 -0.00166296 0 0.00138345 0.00154153\n", " 8 0.00316903 0.00287547 0 0.0177299\n", " 9 0.0026978 0.00232342 0.00673081 0\n", " \n", "val m_0111_2Ha_2Fa :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array3.t =\n", " \n" ] }, "execution_count": 30, "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.00296502 0.00298831 0.00488797 0.000118822 -0.000472343\n", " 2 0.00298831 -0.00136007 -0.00413131 -0.0063196 -0.00598212\n", " 3 0.00488797 -0.00413131 -0.00712707 -0.00508589 -0.00503032\n", " ... ... ... ... ...\n", " 7 -0.00407169 -0.00213075 -0.0040668 -0.00417519 -0.00370227\n", " 8 0.0160284 0.0113906 0.0122954 0.00422564 0.00433285\n", " 9 0.0166196 0.0110531 0.0122398 0.00511694 0.0023468\n", " \n", "\n", " -- 6 -- -- 7 -- -- 8 -- -- 9 --\n", " 1 0.0112593 -0.00407169 0.0160284 0.0166196\n", " 2 0.00920231 -0.00213075 0.0113906 0.0110531\n", " 3 0.00825183 -0.0040668 0.0122954 0.0122398\n", " ... ... ... ...\n", " 7 0.0043954 -0.00205631 0.0045038 0.00403087\n", " 8 0.0150589 0.0045038 0.0198249 0.0230215\n", " 9 0.0158986 0.00403087 0.0230215 0.0220599\n", " \n", "val m_0111_2Hb_2Fb :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array3.t =\n", " \n" ] }, "execution_count": 30, "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": 30, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val integral_value : Determinant.t -> 'a -> float = \n" ] }, "execution_count": 30, "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: (5594, 5594) | -2.621269e-01 -2.621269e-01 | 9.992007e-16 | cpu : 605.920079 0.214178\n" ] }, { "data": { "text/plain": [ "- : unit = ()\n" ] }, "execution_count": 30, "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", "let m_0111_1H_2Fa, m_0111_2Ha_2Fa =\n", "\n", " 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", " in \n", " \n", " let m_0111_1H_2Fa = \n", " Mat.init_cols mo_num mo_num (fun i j ->\n", " sum mos_cabs (fun a ->\n", " h_one i a Spin.Alfa *. f_two a j i j Spin.Alfa Spin.Alfa +.\n", " h_two i j a j Spin.Alfa Spin.Alfa *. f_one a i Spin.Alfa\n", " ) +.\n", " if i < j then 0. else\n", " begin\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", " sum mos_in (fun k -> m_0122_Haa.{i,j,k}) \n", " end\n", " )\n", " in\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", " ) -. if i < j then 0. else m_0122_Haa.{i,j,k}\n", " )\n", " in m_0111_1H_2Fa, m_0111_2Ha_2Fa\n", "\n", "\n", " \n", "let m_0111_1H_2Fb, m_0111_2Hb_2Fb =\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", " in\n", " \n", " let m_0111_1H_2Fb = \n", " Mat.init_cols mo_num mo_num (fun i j ->\n", " sum mos_cabs (fun a ->\n", " h_one i a Spin.Alfa *. f_two a j i j Spin.Alfa Spin.Beta +. \n", " h_two i j a j Spin.Alfa Spin.Beta *. f_one a i Spin.Alfa +.\n", " h_one j a Spin.Alfa *. f_two a i j i Spin.Alfa Spin.Beta +. \n", " h_two j i a i Spin.Alfa Spin.Beta *. f_one a j Spin.Alfa\n", " ) +.\n", " sum mos_in (fun k -> m_0122_Hab.{i,j,k} +. m_0122_Hab.{j,i,k} ) +.\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", " in \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 k i a i Spin.Alfa Spin.Beta *.\n", " f_two a j k j Spin.Alfa Spin.Beta +.\n", " h_two i k a k Spin.Alfa Spin.Beta *.\n", " f_two a j i j Spin.Alfa Spin.Alfa \n", " ) -. m_0122_Hab.{k,i,j}\n", " )\n", " in\n", " m_0111_1H_2Fb, m_0111_2Hb_2Fb\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", "\n", "\n", "let integral_value ki kj = \n", "\n", " let mos_i, mos_i' = mos_a ki, mos_b ki in\n", " let same = (mos_i = mos_i') in\n", " \n", " (* Alpha *)\n", " let a = \n", " sum mos_i (fun i -> m_0111_1H_1F.{i}) \n", " in\n", " \n", " let b = \n", " if same then a else\n", " sum mos_i' (fun i -> m_0111_1H_1F.{i})\n", " in\n", " \n", " let aa = \n", " sum mos_i (fun j ->\n", " sum mos_i (fun i -> m_0111_1H_2Fa.{i,j} ))\n", " in\n", " \n", " let bb = \n", " if same then aa else\n", " sum mos_i' (fun j ->\n", " sum mos_i' (fun i -> m_0111_1H_2Fa.{i,j} ))\n", " in\n", " \n", " let ab = \n", " sum mos_i' (fun j ->\n", " sum mos_i (fun i -> m_0111_1H_2Fb.{i,j} )) \n", " in\n", " \n", " let aaa = \n", " sum mos_i (fun k ->\n", " sum mos_i (fun j ->\n", " sum mos_i (fun i -> m_0111_2Ha_2Fa.{i,j,k} ))) \n", " in\n", " \n", " let bbb = \n", " if same then aaa else\n", " sum mos_i' (fun k ->\n", " sum mos_i' (fun j ->\n", " sum mos_i' (fun i -> m_0111_2Ha_2Fa.{i,j,k} )))\n", " in\n", " \n", " let baa = \n", " sum mos_i' (fun k ->\n", " sum mos_i (fun j ->\n", " sum mos_i (fun i ->\n", " m_0111_2Ha_2Fb.{i,j,k} +. m_0111_2Hb_2Fb.{i,j,k}\n", " )))\n", " in\n", " \n", " let bba = \n", " sum mos_i (fun k ->\n", " sum mos_i' (fun j ->\n", " sum mos_i' (fun i ->\n", " m_0111_2Ha_2Fb.{i,j,k} +. m_0111_2Hb_2Fb.{j,i,k} \n", " ))) \n", " in\n", "\n", " a +. b +. aa +. bb +. ab +. aaa +. baa +. bba +. bbb\n", " \n", " \n", "let _ =\n", " check 0 integral_value 0 \n", " \n", " " ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true }, "source": [ "# 2. 1" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "hidden": true, "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "val m_1111_1H_1F : Lacaml.D.mat =\n", " \n", "\n", " -- 1 -- -- 2 -- -- 3 -- -- 4 -- -- 5 --\n", " 1 0 0 0 0 0\n", " 2 0 0 0 0 0\n", " 3 0 0 0 0 0\n", " ... ... ... ... ...\n", " 7 0 0 0 0 0\n", " 8 0 0 0 0 0\n", " 9 0 0 0 0 0\n", " \n", "\n", " -- 6 -- -- 7 -- -- 8 -- -- 9 --\n", " 1 0 0 0 0\n", " 2 0 0 0 0\n", " 3 0 0 0 0\n", " ... ... ... ...\n", " 7 0 0 0 0\n", " 8 0 0 0 0\n", " 9 0 0 0 0\n", " \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_1111_2Ha_2Fa :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_1111_2Hb_2Fa :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_1111_2Ha_2Fb :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_1111_2Hb_2Fb :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_1121_2Ha_2Fa :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_1121_2Hb_2Fa :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_1121_2Ha_2Fb :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_1121_2Hb_2Fb :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_1122_va :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_1111_1H_2Fa :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array3.t =\n", " \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_1122_v2 :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_1122_v3 :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_1111_1H_2Fb :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array3.t =\n", " \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_1122_oa :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_1122_o :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val integral_value : Determinant.t -> Determinant.t -> float = \n" ] }, "execution_count": 31, "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: (1, 35) | 1.340491e-02 1.340491e-02 | 2.775558e-17 | cpu : 79.129396 0.030664\n" ] }, { "data": { "text/plain": [ "- : unit = ()\n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "let m_1111_1H_1F = \n", " Mat.init_cols mo_num mo_num (fun i k -> \n", " sum mos_cabs (fun a -> h_one i a Spin.Alfa *. f_one a k Spin.Alfa ))\n", "\n", "\n", " \n", "\n", "let m_1111_2Ha_2Fa =\n", " array_4_init mo_num mo_num mo_num mo_num (fun l j i k ->\n", " if l=i then\n", " sum mos_cabs (fun a ->\n", " h_two j l a l Spin.Alfa Spin.Alfa *.\n", " f_two a i j k Spin.Alfa Spin.Alfa \n", " )\n", " else\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", " h_two j l a l Spin.Alfa Spin.Alfa *.\n", " f_two a i j k 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 l j i k ->\n", " if l=i then\n", " sum mos_cabs (fun a ->\n", " h_two j l a l Spin.Alfa Spin.Beta *.\n", " f_two a i j k Spin.Alfa Spin.Beta \n", " )\n", " else\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", " h_two j l a l Spin.Alfa Spin.Beta *.\n", " f_two a i j k Spin.Alfa Spin.Beta \n", " )\n", " )\n", "\n", "\n", "let m_1111_2Ha_2Fb =\n", " array_4_init mo_num mo_num mo_num mo_num (fun l j i k ->\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", " h_two j l a l Spin.Alfa Spin.Beta *.\n", " f_two a i j k Spin.Alfa Spin.Alfa \n", " )\n", " )\n", "\n", "\n", "\n", "let m_1111_2Hb_2Fb =\n", " array_4_init mo_num mo_num mo_num mo_num (fun l j i k ->\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", " h_two j l a l Spin.Alfa Spin.Alfa *.\n", " f_two a i j k Spin.Alfa Spin.Beta \n", " )\n", " )\n", "\n", "\n", "\n", "\n", " \n", "\n", "\n", "let m_1121_2Ha_2Fa =\n", " array_4_init mo_num mo_num mo_num mo_num (fun l j i k ->\n", " sum mos_cabs (fun a ->\n", " h_two i j k a Spin.Alfa Spin.Alfa *.\n", " f_two l a l 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 l j i k ->\n", " sum mos_cabs (fun a ->\n", " h_two i j k a Spin.Alfa Spin.Beta *.\n", " f_two l a l 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 l j i k ->\n", " sum mos_cabs (fun a ->\n", " h_two i j k a Spin.Alfa Spin.Alfa *.\n", " f_two l a l 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 l j i k ->\n", " sum mos_cabs (fun a ->\n", " h_two i j k a Spin.Alfa Spin.Beta *.\n", " f_two l a l j Spin.Alfa Spin.Beta \n", " )\n", " )\n", "\n", "let m_1122_va =\n", " array_4_init mo_num mo_num mo_num mo_num (fun l j i k ->\n", " sum mos_cabs (fun a ->\n", " h_two j i a l Spin.Alfa Spin.Alfa *.\n", " f_two l a k j Spin.Alfa Spin.Alfa \n", " )\n", " )\n", " \n", "let m_1111_1H_2Fa = \n", " array_3_init mo_num mo_num mo_num (fun j i k ->\n", " sum mos_in (fun l -> m_1122_va.{l,j,i,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", " h_two i j a j Spin.Alfa Spin.Alfa *. f_one a k Spin.Alfa +.\n", " h_one j a Spin.Alfa *. f_two a i j k Spin.Alfa Spin.Alfa +.\n", " h_two i j k a Spin.Alfa Spin.Alfa *. f_one a j Spin.Alfa +.\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_1122_v2 =\n", " array_4_init mo_num mo_num mo_num mo_num (fun l j i k ->\n", " sum mos_cabs (fun a ->\n", " h_two i j l a Spin.Alfa Spin.Beta *.\n", " f_two l a k j Spin.Alfa Spin.Beta \n", " )\n", " )\n", "\n", "\n", "let m_1122_v3 =\n", " array_4_init mo_num mo_num mo_num mo_num (fun l j i k ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a l Spin.Alfa Spin.Beta *.\n", " f_two a l k j Spin.Alfa Spin.Beta \n", " )\n", " )\n", "\n", " \n", "let m_1111_1H_2Fb = \n", " array_3_init mo_num mo_num mo_num (fun j i k ->\n", " sum mos_in (fun l -> m_1122_v2.{l,j,i,k} +. m_1122_v3.{l,j,i,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", " h_two i j a j Spin.Alfa Spin.Beta *. f_one a k Spin.Alfa +.\n", " h_one j a Spin.Beta *. f_two a i j k Spin.Alfa Spin.Beta +.\n", " h_two i j k a Spin.Alfa Spin.Beta *. f_one a j Spin.Beta +.\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", "let m_1122_oa =\n", " array_4_init mo_num mo_num mo_num mo_num (fun l j i k ->\n", " if l > j then\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", " else 0.\n", " )\n", "\n", "let m_1122_o =\n", " array_4_init mo_num mo_num mo_num mo_num (fun l j i k ->\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", "\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", " let mos_novirt, mos_novirt' =\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.logor 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.logor i j)\n", " in\n", " match s with\n", " | Spin.Alfa -> alfa, beta\n", " | Spin.Beta -> beta, alfa\n", " in\n", " \n", " let mos_ij, mos_ij' =\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 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", " m_1111_1H_1F.{i,k} +. \n", " sum mos_ij (fun j -> \n", " m_1111_1H_2Fa.{j,i,k} \n", " +. sum mos_i (fun l -> m_1111_2Ha_2Fa.{l,j,i,k})\n", " +. sum mos_i' (fun l -> m_1111_2Ha_2Fb.{l,j,i,k})\n", " +. sum mos_j (fun l -> m_1121_2Ha_2Fa.{l,j,i,k})\n", " +. sum mos_j' (fun l -> m_1121_2Ha_2Fb.{l,j,i,k})\n", " -. sum mos_novirt (fun l -> m_1122_va.{l,j,i,k})\n", " -. sum mos_ij (fun l -> m_1122_oa.{l,j,i,k} )\n", " ) +.\n", " sum mos_ij' (fun j ->\n", " m_1111_1H_2Fb.{j,i,k} \n", " +. sum mos_i (fun l -> m_1111_2Hb_2Fa.{l,j,i,k})\n", " +. sum mos_i' (fun l -> m_1111_2Hb_2Fb.{l,j,i,k})\n", " +. sum mos_j (fun l -> m_1121_2Hb_2Fb.{l,j,i,k})\n", " +. sum mos_j' (fun l -> m_1121_2Hb_2Fa.{l,j,i,k})\n", " -. sum mos_novirt (fun l -> m_1122_v2.{l,j,i,k}) \n", " -. sum mos_novirt' (fun l -> m_1122_v3.{l,j,i,k})\n", " -. sum mos_ij (fun l -> m_1122_o.{l,j,i,k})\n", " ) \n", " in\n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", " \n", "\n", "(*\n", "let ki = det_I.(77)\n", "let kj = det_I.(83)\n", "\n", "let _ = integral_value ki kj\n", "let _ = \n", " let alphas = generate_alphas ki kj 1 1\n", " in compute_HaaF ki alphas kj\n", "*)\n", "\n", "let _ = check 100 integral_value 1 \n", "\n" ] }, { "cell_type": "raw", "metadata": { "hidden": true }, "source": [ "Timing : 40.020974 0.019294" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true }, "source": [ "# 3. 2" ] }, { "cell_type": "code", "execution_count": 129, "metadata": { "hidden": true }, "outputs": [ { "data": { "text/plain": [ "val m_2112_1H_2Fa :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_2112_1H_2Fb :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_2112_2Ha_2Fa :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_2112_2Hb_2Fa :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_2112_2Ha_2Fb :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_2121_2Ha_2Fa :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_2121_2Hb_2Fa :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_2121_2Ha_2Fb :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_2122_2Ha_2Fa_ij :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_2122_2Hb_2Fb_ij :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_2122_2Hb_2Fb_ij2 :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_2122_2Ha_2Fa_ij2 :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_2122_2Ha_2Fa_nv :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_2122_2Hb_2Fb_nv :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val m_2122_2Hb_2Fb_nv2 :\n", " (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Genarray.t =\n", " \n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val integral_value : Determinant.t -> Determinant.t -> float = \n" ] }, "execution_count": 129, "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: (2, 45) | 2.332967e-02 2.332967e-02 | 2.428613e-17 | cpu : 109.679883 0.039116\n" ] }, { "data": { "text/plain": [ "- : unit = ()\n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val ki : Determinant.t =\n", " phase:+1\n", " a:+1 +--++-----------------------------------------------------------\n", " b:+1 +++-------------------------------------------------------------\n", "\n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "val kj : Determinant.t =\n", " phase:+1\n", " a:+1 +-+-+-----------------------------------------------------------\n", " b:+1 ++-+------------------------------------------------------------\n", "\n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "- : float = 0.000896378780435275082\n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "- : float = 0.000896378780435274107\n" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" } ], "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", " 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", " sum mos_in (fun m -> -. h_two i j a m Spin.Alfa Spin.Alfa *.\n", " f_two m a k l Spin.Alfa Spin.Alfa) +.\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 k l Spin.Alfa Spin.Alfa \n", " )\n", " )\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", " 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", " sum mos_in (fun m ->\n", " h_two i j a m Spin.Alfa Spin.Beta *. f_two a m k l Spin.Alfa Spin.Beta +.\n", " h_two i j m a Spin.Alfa Spin.Beta *. f_two m a k l Spin.Alfa Spin.Beta ) +.\n", " sum mos_cabs (fun b -> \n", " h_two i j a b Spin.Alfa Spin.Beta *. f_two a b k l Spin.Alfa Spin.Beta \n", " )\n", " )\n", " )\n", "\n", "let m_2112_2Ha_2Fa =\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun n i j k l ->\n", " sum mos_cabs (fun a ->\n", " h_two i n a n Spin.Alfa Spin.Alfa *. f_two a j k l Spin.Alfa Spin.Alfa +. \n", " h_two j n a n Spin.Alfa Spin.Alfa *. f_two a i l k Spin.Alfa Spin.Alfa \n", " )\n", " )\n", " \n", "let m_2112_2Hb_2Fa =\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun n i j k l ->\n", " sum mos_cabs (fun a ->\n", " h_two i n a n Spin.Alfa Spin.Beta *. f_two a j k l Spin.Alfa Spin.Alfa +.\n", " h_two j n a n Spin.Alfa Spin.Beta *. f_two a i l k Spin.Alfa Spin.Alfa \n", " )\n", " )\n", " \n", "let m_2112_2Ha_2Fb =\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun n i j k l ->\n", " sum mos_cabs (fun a ->\n", " h_two i n a n Spin.Alfa Spin.Alfa *. f_two a j k l Spin.Alfa Spin.Beta +.\n", " h_two j n a n Spin.Alfa Spin.Beta *. f_two a i l k Spin.Alfa Spin.Beta )\n", " )\n", " \n", " \n", "let m_2121_2Ha_2Fa =\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun n i j k l ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a l Spin.Alfa Spin.Alfa *. f_two a n k n Spin.Alfa Spin.Alfa +.\n", " h_two j i a k Spin.Alfa Spin.Alfa *. f_two a n l n Spin.Alfa Spin.Alfa \n", " )\n", " )\n", " \n", "\n", "let m_2121_2Hb_2Fa =\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun n i j k l ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a l Spin.Alfa Spin.Beta *. f_two a n k n Spin.Alfa Spin.Alfa +.\n", " h_two j i a k Spin.Alfa Spin.Beta *. f_two a n l n Spin.Alfa Spin.Beta \n", " )\n", " )\n", " \n", "let m_2121_2Ha_2Fb =\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun n i j k l ->\n", " sum mos_cabs (fun a ->\n", " h_two i j a l Spin.Alfa Spin.Alfa *. f_two a n k n Spin.Alfa Spin.Beta +.\n", " h_two j i a k Spin.Alfa Spin.Alfa *. f_two a n l n Spin.Alfa Spin.Beta \n", " )\n", " )\n", " \n", "\n", "let m_2122_2Ha_2Fa_ij =\n", " let s = Spin.Alfa in\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun n i j k l ->\n", " sum mos_cabs (fun a ->\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", " )\n", " \n", "let m_2122_2Hb_2Fb_ij =\n", " let s, s' = Spin.(Alfa, Beta) in\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun n i j k l ->\n", " sum mos_cabs (fun a ->\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", " )\n", " \n", "let m_2122_2Hb_2Fb_ij2 =\n", " let s, s' = Spin.(Alfa, Beta) in\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun n i j k l ->\n", " sum mos_cabs (fun a ->\n", " -. h_two i n a l s s' *. f_two a j k n s s' +.\n", " (if n < j then\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", " 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", " )\n", " )\n", " )\n", " \n", "let m_2122_2Ha_2Fa_ij2 =\n", " let s, s' = Spin.(Alfa, Beta) in\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun n i j k l ->\n", " sum mos_cabs (fun a ->\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", " \n", "let m_2122_2Ha_2Fa_nv =\n", " let s = Spin.Alfa in\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun n i j k l ->\n", " sum mos_cabs (fun a -> h_two i j a n s s *. f_two n a k l s s ) ) \n", " \n", " \n", " \n", "let m_2122_2Hb_2Fb_nv =\n", " let s, s' = Spin.(Alfa, Beta) in\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun n i j k l ->\n", " sum mos_cabs (fun a -> -. h_two i j a n s s' *. f_two a n k l s s' ) ) \n", " \n", "let m_2122_2Hb_2Fb_nv2 =\n", " let s, s' = Spin.(Alfa, Beta) in\n", " array_5_init mo_num mo_num mo_num mo_num mo_num (fun n i j k l ->\n", " sum mos_cabs (fun a -> -. h_two i j n a s s' *. f_two n a k l s s' ) ) \n", " \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_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 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 mos_ij, mos_ij' =\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_novirt, mos_novirt' =\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.logor 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.logor 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", " if s = s' then\n", " m_2112_1H_2Fa.{i,j,k,l} +. \n", " sum mos_i (fun n -> m_2112_2Ha_2Fa.{n,i,j,k,l} ) +.\n", " sum mos_i' (fun n -> m_2112_2Hb_2Fa.{n,i,j,k,l} ) +.\n", " sum mos_j (fun n -> m_2121_2Ha_2Fa.{n,i,j,k,l} ) +.\n", " sum mos_j' (fun n -> m_2121_2Ha_2Fb.{n,i,j,k,l} ) +.\n", " sum mos_ij (fun n -> m_2122_2Ha_2Fa_ij.{n,i,j,k,l} ) +. \n", " sum mos_ij' (fun n -> m_2122_2Ha_2Fa_ij2.{n,i,j,k,l} ) +. \n", " sum mos_novirt (fun n -> m_2122_2Ha_2Fa_nv.{n,i,j,k,l} ) \n", " else\n", " m_2112_1H_2Fb.{i,j,k,l} +. \n", " sum mos_i (fun n -> m_2112_2Ha_2Fb.{n,i,j,k,l} ) +.\n", " sum mos_i' (fun n -> m_2112_2Ha_2Fb.{n,j,i,l,k} ) +.\n", " sum mos_j (fun n -> m_2121_2Hb_2Fa.{n,i,j,k,l} ) +.\n", " sum mos_j' (fun n -> m_2121_2Hb_2Fa.{n,j,i,l,k} ) +.\n", " sum mos_novirt'(fun n -> m_2122_2Hb_2Fb_nv.{n,i,j,k,l} ) +.\n", " sum mos_novirt (fun n -> m_2122_2Hb_2Fb_nv2.{n,i,j,k,l} )+.\n", " sum mos_ij (fun n -> m_2122_2Hb_2Fb_ij.{n,i,j,k,l} ) +. \n", " sum mos_ij' (fun n -> m_2122_2Hb_2Fb_ij2.{n,i,j,k,l} ) \n", " in\n", "\n", " match phase with\n", " | Phase.Pos -> result\n", " | Phase.Neg -> -. result\n", " \n", "let _ = check 100 integral_value 2 \n", "\n", "let ki = det_I.(7)\n", "let kj = det_I.(89)\n", "\n", "let _ = integral_value ki kj\n", "let _ = \n", " let alphas = generate_alphas ki kj 2 \n", " in compute_HaaF ki alphas kj\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true }, "source": [ "# 4. 3" ] }, { "cell_type": "code", "execution_count": 130, "metadata": { "hidden": true }, "outputs": [ { "data": { "text/plain": [ "val integral_value : Determinant.t -> Determinant.t -> float = \n" ] }, "execution_count": 130, "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: (13, 52) | 6.122906e-04 6.122906e-04 | 3.252607e-19 | cpu : 77.238524 0.119682\n" ] }, { "data": { "text/plain": [ "- : unit = ()\n" ] }, "execution_count": 130, "metadata": {}, "output_type": "execute_result" } ], "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 100 integral_value 3 " ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "---------------------------" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "hidden": true, "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" ] } ], "metadata": { "celltoolbar": "Initialization Cell", "kernelspec": { "display_name": "OCaml 4.10.0", "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.10.0" } }, "nbformat": 4, "nbformat_minor": 4 }