--- /dev/null
+#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;
+}