MPQC
2.3.1
Main Page
Related Pages
Classes
Files
File List
src
lib
chemistry
qc
intv3
cartitv3.h
1
//
2
// cartitv3.h
3
//
4
// Copyright (C) 1996 Limit Point Systems, Inc.
5
//
6
// Author: Curtis Janssen <cljanss@limitpt.com>
7
// Maintainer: LPS
8
//
9
// This file is part of the SC Toolkit.
10
//
11
// The SC Toolkit is free software; you can redistribute it and/or modify
12
// it under the terms of the GNU Library General Public License as published by
13
// the Free Software Foundation; either version 2, or (at your option)
14
// any later version.
15
//
16
// The SC Toolkit is distributed in the hope that it will be useful,
17
// but WITHOUT ANY WARRANTY; without even the implied warranty of
18
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
// GNU Library General Public License for more details.
20
//
21
// You should have received a copy of the GNU Library General Public License
22
// along with the SC Toolkit; see the file COPYING.LIB. If not, write to
23
// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
24
//
25
// The U.S. Government is granted a limited license as per AL 91-7.
26
//
27
28
#ifndef _chemistry_qc_intv3_cartitv3_h
29
#define _chemistry_qc_intv3_cartitv3_h
30
31
#include <chemistry/qc/basis/cartiter.h>
32
33
namespace
sc {
34
35
class
CartesianIterV3
:
public
CartesianIter
{
36
public
:
37
CartesianIterV3
(
int
l
) :
CartesianIter
(l) {}
38
39
void
start
() {
40
bfn_=a_=c_=0;
41
b_=l_;
42
}
43
44
void
next
() {
45
if
(c_<l_-a_)
46
c_++;
47
else
{
48
c_=0;
49
a_++;
50
}
51
bfn_++;
52
b_ = l_-a_-c_;
53
}
54
55
operator
int() {
56
return
(a_ <= l_);
57
}
58
};
59
60
class
RedundantCartesianIterV3
:
public
RedundantCartesianIter
{
61
public
:
62
RedundantCartesianIterV3
(
int
l
) :
RedundantCartesianIter
(l) {}
63
64
int
bfn
() {
65
int
i =
a
();
66
int
j =
b
();
67
int
am =
l
();
68
return
(((((((am)+1)<<1)-(i))*((i)+1))>>1)-(j)-1);
69
}
70
};
71
72
class
RedundantCartesianSubIterV3
:
public
RedundantCartesianSubIter
{
73
public
:
74
RedundantCartesianSubIterV3
(
int
l
) :
RedundantCartesianSubIter
(l) {}
75
76
int
bfn
() {
77
int
i =
a
();
78
int
j =
b
();
79
int
am =
l
();
80
return
(((((((am)+1)<<1)-(i))*((i)+1))>>1)-(j)-1);
81
}
82
};
83
84
}
85
86
#endif
87
88
// Local Variables:
89
// mode: c++
90
// c-file-style: "CLJ"
91
// End:
Generated at Mon Dec 23 2013 21:14:28 for
MPQC
2.3.1 using the documentation package
Doxygen
1.8.3.1.