/********************************************************** This software is part of J.-S. Caux's ABACUS library. Copyright (c) J.-S. Caux. ----------------------------------------------------------- File: ABACUS_Combi.h Purpose: Declares combinatorics-related classes and functions. ***********************************************************/ #ifndef ABACUS_COMBI_H #define ABACUS_COMBI_H #include "ABACUS.h" namespace ABACUS { //*********************************************************************** class Choose_Table { private: int Npower; int Npowerp1; int dim; unsigned long long int* table; void Fill_table (); public: Choose_Table (); Choose_Table (int Npower_ref); Choose_Table (const Choose_Table& Ref_Choose_Table); // constructs a new object from an existing one int power(); // returns Npower unsigned long long int choose (int N, int M); ~Choose_Table (); }; std::ostream& operator<< (std::ostream& s, Choose_Table& Ref_table); } // namespace ABACUS #endif