#ifndef SU2CLEBSCH_HPP
#define SU2CLEBSCH_HPP

using namespace std;

namespace su2clebsch {

  struct prestore {
  private:
    unsigned int max2j;
    double *cgcdata;
  public:
    prestore(unsigned int _max2j);
    ~prestore();

    friend double cgc (int factor1_2j, int factor1_2m, int factor2_2j, int factor2_2m,
		       int irrep_2j, int irrep_2m, const prestore& Prestore);
  };
  
  double cgc (int factor1_2j, int factor1_2m, int factor2_2j, int factor2_2m,
	      int irrep_2j, int irrep_2m);

  double cgc (int factor1_2j, int factor1_2m, int factor2_2j, int factor2_2m,
	      int irrep_2j, int irrep_2m, const prestore& Prestore);
};

#endif
