diff --git a/Basis/Contracted_shell.ml b/Basis/Contracted_shell.ml index 091a2bb..9f54e46 100644 --- a/Basis/Contracted_shell.ml +++ b/Basis/Contracted_shell.ml @@ -57,7 +57,6 @@ let compute_norm_coef s = result ) s.expo - let create ~indice ~expo ~coef ~center ~totAngMom = assert (Array.length expo = Array.length coef); assert (Array.length expo > 0); diff --git a/Basis/TwoElectronRR.ml b/Basis/TwoElectronRR.ml index 0de6114..a7f7231 100644 --- a/Basis/TwoElectronRR.ml +++ b/Basis/TwoElectronRR.ml @@ -206,7 +206,7 @@ let contracted_class ~zero_m shell_a shell_b shell_c shell_d : float Zmap.t = shell_p.(ab).Shell_pair.coef *. shell_q.(cd).Shell_pair.coef in (** Screening on thr product of coefficients *) - if (abs_float coef_prod) > cutoff then + if (abs_float coef_prod) > 1.e-4*.cutoff then begin let expo_pq_inv = diff --git a/Makefile b/Makefile index 21caa2a..5633705 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,8 @@ INCLUDE_DIRS=Nuclei,Utils,Basis LIBS= PKGS= OCAMLCFLAGS="-g -warn-error A" -OCAMLBUILD=ocamlbuild -j 0 -cflags $(OCAMLCFLAGS) -lflags $(OCAMLCFLAGS) -Is $(INCLUDE_DIRS) +OCAMLCFLAGS="-g" +OCAMLBUILD=ocamlbuild -j 0 -cflags $(OCAMLCFLAGS) -lflags $(OCAMLCFLAGS) -Is $(INCLUDE_DIRS) #-ocamlopt "opt -rounds 2" MLLFILES=$(wildcard */*.mll) $(wildcard *.mll) MLYFILES=$(wildcard */*.mly) $(wildcard *.mly) MLFILES= $(wildcard */*.ml) $(wildcard *.ml) @@ -32,7 +33,7 @@ doc: qpackage.odocl $(OCAMLBUILD) $*.byte -use-ocamlfind $(PKGS) ln -s $*.byte $* -%.native: $(MLFILES) $(MLIFILES) $(MLLFILES) $(MLYFILES) %.byte +%.native: $(MLFILES) $(MLIFILES) $(MLLFILES) $(MLYFILES) rm -f -- $* $(OCAMLBUILD) $*.native -use-ocamlfind $(PKGS) ln -s $*.native $* diff --git a/Utils/Zkey.ml b/Utils/Zkey.ml index 0fbd5dc..bd2b915 100644 --- a/Utils/Zkey.ml +++ b/Utils/Zkey.ml @@ -1,6 +1,5 @@ (** Key for hastables that contain tuples of integers encoded in a Zarith integer *) -include Z type kind_array = | Kind_3 @@ -89,46 +88,59 @@ let of_int_tuple a = in a <| b +let mask10 = Int64.of_int 0x3ff +and mask16 = Int64.of_int 0xffff (** Transform the Zkey into an int array *) let to_int_array ~kind a = + let open Int64 in match kind with - | Kind_3 -> [| Z.to_int @@ Z.extract a 20 10 ; - Z.to_int @@ Z.extract a 10 10 ; - Z.to_int @@ Z.extract a 0 10 |] - | Kind_6 -> [| Z.to_int @@ Z.extract a 50 10 ; - Z.to_int @@ Z.extract a 40 10 ; - Z.to_int @@ Z.extract a 30 10 ; - Z.to_int @@ Z.extract a 20 10 ; - Z.to_int @@ Z.extract a 10 10 ; - Z.to_int @@ Z.extract a 0 10 |] - | Kind_12 -> [| Z.to_int @@ Z.extract a 114 10 ; - Z.to_int @@ Z.extract a 104 10 ; - Z.to_int @@ Z.extract a 94 10 ; - Z.to_int @@ Z.extract a 84 10 ; - Z.to_int @@ Z.extract a 74 10 ; - Z.to_int @@ Z.extract a 64 10 ; - Z.to_int @@ Z.extract a 50 10 ; - Z.to_int @@ Z.extract a 40 10 ; - Z.to_int @@ Z.extract a 30 10 ; - Z.to_int @@ Z.extract a 20 10 ; - Z.to_int @@ Z.extract a 10 10 ; - Z.to_int @@ Z.extract a 0 10 |] - | Kind_9 -> [| Z.to_int @@ Z.extract a 84 10 ; - Z.to_int @@ Z.extract a 74 10 ; - Z.to_int @@ Z.extract a 64 10 ; - Z.to_int @@ Z.extract a 50 10 ; - Z.to_int @@ Z.extract a 40 10 ; - Z.to_int @@ Z.extract a 30 10 ; - Z.to_int @@ Z.extract a 20 10 ; - Z.to_int @@ Z.extract a 10 10 ; - Z.to_int @@ Z.extract a 0 10 |] - | Kind_4 -> [| Z.to_int @@ Z.extract a 48 16 ; - Z.to_int @@ Z.extract a 32 16 ; - Z.to_int @@ Z.extract a 16 16 ; - Z.to_int @@ Z.extract a 0 16 |] - | Kind_2 -> [| Z.to_int @@ Z.extract a 16 16 ; - Z.to_int @@ Z.extract a 0 16 |] - | Kind_1 -> [| Z.to_int a |] + | Kind_3 -> let x = Z.to_int64 a in + [| to_int ( logand mask10 (shift_right x 20)) ; + to_int ( logand mask10 (shift_right x 10)) ; + to_int ( logand mask10 x) |] + | Kind_6 -> let x = Z.to_int64 a in + [| to_int ( logand mask10 (shift_right x 50)) ; + to_int ( logand mask10 (shift_right x 40)) ; + to_int ( logand mask10 (shift_right x 30)) ; + to_int ( logand mask10 (shift_right x 20)) ; + to_int ( logand mask10 (shift_right x 10)) ; + to_int ( logand mask10 x) |] + | Kind_12 -> let x = Z.to_int64 @@ Z.extract a 0 60 + and y = Z.to_int64 @@ Z.extract a 64 60 + in + [| to_int ( logand mask10 (shift_right y 114)) ; + to_int ( logand mask10 (shift_right y 104)) ; + to_int ( logand mask10 (shift_right y 94)) ; + to_int ( logand mask10 (shift_right y 84)) ; + to_int ( logand mask10 (shift_right y 74)) ; + to_int ( logand mask10 (shift_right y 64)) ; + to_int ( logand mask10 (shift_right x 50)) ; + to_int ( logand mask10 (shift_right x 40)) ; + to_int ( logand mask10 (shift_right x 30)) ; + to_int ( logand mask10 (shift_right x 20)) ; + to_int ( logand mask10 (shift_right x 10)) ; + to_int ( logand mask10 x) |] + | Kind_9 -> let x = Z.to_int64 @@ Z.extract a 0 60 + and y = Z.to_int64 @@ Z.extract a 64 60 + in + [| to_int ( logand mask10 (shift_right y 84)) ; + to_int ( logand mask10 (shift_right y 74)) ; + to_int ( logand mask10 (shift_right y 64)) ; + to_int ( logand mask10 (shift_right x 50)) ; + to_int ( logand mask10 (shift_right x 40)) ; + to_int ( logand mask10 (shift_right x 30)) ; + to_int ( logand mask10 (shift_right x 20)) ; + to_int ( logand mask10 (shift_right x 10)) ; + to_int ( logand mask10 x) |] + | Kind_4 -> let x = Z.to_int64 a in + [| to_int ( logand mask16 (shift_right x 48)) ; + to_int ( logand mask16 (shift_right x 32)) ; + to_int ( logand mask16 (shift_right x 16)) ; + to_int ( logand mask16 x) |] + | Kind_2 -> let x = Z.to_int64 a in + [| to_int ( logand mask16 (shift_right x 16)) ; + to_int ( logand mask16 x) |] + | Kind_1 -> [| Z.to_int a |] let to_string ~kind a = @@ -187,6 +199,9 @@ let to_int_tuple ~kind a = | Kind_1 -> One ( Z.to_int a ) + +include Z + (* let debug () = let k2 = of_int_array Kind_2 [| 1 ; 2 |]