#ifndef PSTO_H #define PSTO_H #include #include #include "Ylm.h" using namespace std ; #define NMAX 10 //primitive STO at origin, Nnm*r^(n-1)exp(-alpha*r)Y_l^m ****************************************** class pSTO : public Ylm { public: int n ; // n=0,1,2,3,.... <= NMAX double alpha; // exponent double Nnm; // normalization (extra factor besides the factor c of the base class) #if 0 pSTO() : Ylm() ; #endif explicit pSTO(const int nn, const int ll, const int mm, const double expo, const complex coef=1.) ; pSTO & operator*= (const double & fact) ; pSTO & operator*= (const complex & fact) ; complex NpSTO() const ; static double normf(const double alpha, const int n) ; void shiftOrb(const int p) ; private: const static double Nntab[NMAX+1] ; } ; /* pSTO */ pSTO conj(const pSTO & arg) ; bool operator== (const pSTO & first, const pSTO & secnd) ; ostream & operator<<(ostream &os, const pSTO & someSTO) ; pSTO operator*(const complex & fact, const pSTO & in) ; vector operator*(const pSTO & left, const pSTO & right) ; double radiInt(const int n, const double alpha) ; complex OpSTO(const pSTO & left, const pSTO &right) ; complex TpSTO(const pSTO & left, const pSTO &right) ; complex NlinSTO(const vector & in) ; complex NpSTO(const pSTO & left, const pSTO & right) ; complex CpSTO(const pSTO &left, const pSTO &right) ; #endif /* PSTO_H */