]> git.treefish.org Git - phys/su2clebsch.git/blobdiff - su2clebschgordan.cpp
Performing valid state test. Added prestore.
[phys/su2clebsch.git] / su2clebschgordan.cpp
diff --git a/su2clebschgordan.cpp b/su2clebschgordan.cpp
new file mode 100644 (file)
index 0000000..968c9de
--- /dev/null
@@ -0,0 +1,44 @@
+#include <iostream>
+
+#include "su2clebsch.hpp"
+
+using namespace std;
+
+int main ()
+{
+  int max2j=10;
+
+  cout << "Prestoring..." << flush;
+  su2clebsch::prestore su2cstore(max2j);
+  cout << "DONE" << endl;
+
+  cout << "Checking..." << flush;
+  for (int factor1_2j=0; factor1_2j<=max2j; factor1_2j++)
+    for (int factor1_mp=0; factor1_mp<=max2j; factor1_mp++)
+      for (int factor2_2j=0; factor2_2j<=max2j; factor2_2j++)
+       for (int factor2_mp=0; factor2_mp<=max2j; factor2_mp++)
+         for (int irrep_2j=0; irrep_2j<=max2j; irrep_2j++)
+           for (int irrep_mp=0; irrep_mp<=max2j; irrep_mp++)
+             if ( su2clebsch::cgc( factor1_2j, 2*factor1_mp-max2j, factor2_2j, 2*factor2_mp-max2j,
+                                   irrep_2j, 2*irrep_mp-max2j, su2cstore )
+                  -
+                  su2clebsch::cgc( factor1_2j, 2*factor1_mp-max2j, factor2_2j, 2*factor2_mp-max2j,
+                                   irrep_2j, 2*irrep_mp-max2j )
+                  != 0 ) {
+               cout << "CGC check failed!" << endl;
+               exit(1);
+             }
+  cout << "OK" << endl;
+
+  cout << "Speedtest..." << flush;
+  for (int factor1_2j=0; factor1_2j<=max2j; factor1_2j++)
+    for (int factor1_mp=0; factor1_mp<=max2j; factor1_mp++)
+      for (int factor2_2j=0; factor2_2j<=max2j; factor2_2j++)
+       for (int factor2_mp=0; factor2_mp<=max2j; factor2_mp++)
+         for (int irrep_2j=0; irrep_2j<=max2j; irrep_2j++)
+           for (int irrep_mp=0; irrep_mp<=max2j; irrep_mp++)
+             double test = su2clebsch::cgc( factor1_2j, 2*factor1_mp-max2j, factor2_2j, 2*factor2_mp-max2j,
+                                            irrep_2j, 2*irrep_mp-max2j, su2cstore );
+               
+  cout << "DONE" << endl;
+}