mirror of
https://gitlab.com/scemama/QCaml.git
synced 2024-09-13 14:58:31 +02:00
77 lines
1.8 KiB
OCaml
77 lines
1.8 KiB
OCaml
type t =
|
|
{
|
|
alpha : Spindeterminant.t ;
|
|
beta : Spindeterminant.t ;
|
|
}
|
|
|
|
|
|
|
|
let alpha t = t.alpha
|
|
|
|
let beta t = t.beta
|
|
|
|
let phase t =
|
|
match Spindeterminant.(phase t.alpha, phase t.beta) with
|
|
| Phase.Pos, Phase.Pos
|
|
| Phase.Neg, Phase.Neg -> Phase.Pos
|
|
| _ -> Phase.Neg
|
|
|
|
|
|
let of_spindeterminants a b =
|
|
{
|
|
alpha = a ;
|
|
beta = b
|
|
}
|
|
|
|
let of_lists a b =
|
|
{
|
|
alpha = Spindeterminant.of_list a ;
|
|
beta = Spindeterminant.of_list b
|
|
}
|
|
|
|
|
|
let pp_det ppf t =
|
|
Format.fprintf ppf "@[<v> a: %a @; b: %a @]@."
|
|
Spindeterminant.pp_spindet t.alpha
|
|
Spindeterminant.pp_spindet t.beta
|
|
|
|
|
|
let test_case () =
|
|
|
|
let test_creation () =
|
|
let l_a = [ 1 ; 2 ; 3 ; 5 ; 64 ]
|
|
and l_b = [ 2 ; 3 ; 5 ; 65 ] in
|
|
let det = of_lists l_a l_b in
|
|
let z_a = alpha det
|
|
and z_b = beta det in
|
|
Alcotest.(check (list int )) "alpha" (Spindeterminant.to_list z_a) l_a;
|
|
Alcotest.(check (list int )) "beta" (Spindeterminant.to_list z_b) l_b;
|
|
Alcotest.(check bool) "phase" (phase det = Phase.Pos) true;
|
|
in
|
|
|
|
let test_phase () =
|
|
let l_a = [ 1 ; 2 ; 3 ; 64 ; 5 ]
|
|
and l_b = [ 2 ; 3 ; 5 ; 65 ] in
|
|
let det = of_lists l_a l_b in
|
|
Alcotest.(check bool) "phase" (phase det = Phase.Neg) true;
|
|
let l_a = [ 1 ; 2 ; 3 ; 64 ; 5 ]
|
|
and l_b = [ 3 ; 2 ; 5 ; 65 ] in
|
|
let det = of_lists l_a l_b in
|
|
Alcotest.(check bool) "phase" (phase det = Phase.Pos) true;
|
|
let l_a = [ 1 ; 3 ; 2 ; 64 ; 5 ]
|
|
and l_b = [ 3 ; 2 ; 5 ; 65 ] in
|
|
let det = of_lists l_a l_b in
|
|
Alcotest.(check bool) "phase" (phase det = Phase.Neg) true;
|
|
let l_a = [ 1 ; 3 ; 2 ; 64 ; 5 ]
|
|
and l_b = [ 3 ; 2 ; 65 ; 5 ] in
|
|
let det = of_lists l_a l_b in
|
|
Alcotest.(check bool) "phase" (phase det = Phase.Pos) true;
|
|
in
|
|
[
|
|
"Creation", `Quick, test_creation;
|
|
"Phase", `Quick, test_phase;
|
|
]
|
|
|
|
|
|
|