/**********************************************************

This software is part of J.-S. Caux's ABACUS library.

Copyright (c) J.-S. Caux.

-----------------------------------------------------------

File:  ABACUS.h

Purpose:  Core header file, includes all descendents.

***********************************************************/

#ifndef ABACUS_H
#define ABACUS_H

// This core header file includes all the others

const char ABACUS_VERSION[20] = "ABACUS_0a";

// Standard includes
#include <cmath>
#include <complex>  // for complex number algebra
#include <string>

#include <iostream>
#include <fstream>
#include <iomanip>

#include <cstdlib>  // for exit(), ...
#include <ctime>    // for clock(), ...
#include <limits>   // for numeric limits
#include <climits>   // for numeric limits

// For file sizes, etc
#include "sys/types.h"
#include "sys/stat.h"
#include "unistd.h"

// Signal handling
#include <stdio.h>     /* standard I/O functions                         */
#include <unistd.h>    /* standard unix functions, like getpid()         */
#include <sys/types.h> /* various type definitions, like pid_t           */
#include <signal.h>    /* signal name macros, and the signal() prototype */

// My own math functions and shortcuts
#include "ABACUS_Utils.h"

// Vectors and matrices
#include "ABACUS_Vect.h"   // My vector class definitions
#include "ABACUS_Matrix.h"  // My matrix class definitions

// Choose_Table
#include "ABACUS_Combi.h"

// Fitting, interpolating
#include "ABACUS_Fitting.h"

// Young tableaux
#include "ABACUS_Young.h"

// Integration
#include "ABACUS_Integ.h"

// Special functions:
#include "ABACUS_Spec_Fns.h"

//***  Integrable models:

// Heisenberg spin-1/2 antiferromagnet
#include "ABACUS_Heis.h"

// Lieb-Liniger
#include "ABACUS_LiebLin.h"

// One-d spinless fermions:
#include "ABACUS_ODSLF.h"

// General:
//#include "ABACUS_Bethe.h"  // IN DEVELOPMENT

// Thermodynamic Bethe Ansatz utilities
#include "ABACUS_TBA.h"

// State ensembles
#include "ABACUS_State_Ensemble.h"

// XXX in zero field:  Vertex Operator Approach
#include "ABACUS_XXX_VOA.h"

// XXZ in zero field:  Vertex Operator Approach
#include "ABACUS_XXZ_VOA.h"


// *** Correlation functions:

// New scanning protocols for ABACUS++
#include "ABACUS_Scan.h"

// Numerical RG:
#include "ABACUS_NRG.h"

// Typedefs:
typedef double DP;


#endif // ABACUS_H