1 #ifdef __GNUG__
2 #pragma interface
3 #endif
4 
5 #ifndef _chemistry_qc_oint3_build_h
6 #define _chemistry_qc_oint3_build_h
7 
8 #include <scconfig.h>
9 #include <chemistry/qc/intv3/array.h>
10 
11 namespace sc {
12 
13 #define MG 3
14 
15 #define DECLARE_BUILD(ii,j,k,l) \
16   int i ## ii ## j ## k ## l ();\
17   int i ## ii ## j ## k ## l ## eAB ()
18 
19 class BuildIntV3 {
20   public:
21     double int_v_ooze;
22     double int_v_zeta12;
23     double int_v_zeta34;
24     double int_v_oo2zeta12;
25     double int_v_oo2zeta34;
26     double int_v_W0;
27     double int_v_W1;
28     double int_v_W2;
29     double int_v_p120;
30     double int_v_p121;
31     double int_v_p122;
32     double int_v_p340;
33     double int_v_p341;
34     double int_v_p342;
35     double int_v_r10;
36     double int_v_r11;
37     double int_v_r12;
38     double int_v_r20;
39     double int_v_r21;
40     double int_v_r22;
41     double int_v_r30;
42     double int_v_r31;
43     double int_v_r32;
44     double int_v_r40;
45     double int_v_r41;
46     double int_v_r42;
47     double int_v_k12;
48     double int_v_k34;
49     IntV3Arraydoublep3 int_v_list;
50   public:
51     BuildIntV3();
52     ~BuildIntV3();
53 
54     int impossible_integral();
55 
56 #if (MG == 1) || (MG == 2) || (MG == 3) || (MG == 4)
57     DECLARE_BUILD(0,1,0,0);
58     DECLARE_BUILD(0,1,0,1);
59     DECLARE_BUILD(0,1,1,1);
60     DECLARE_BUILD(1,1,0,0);
61     DECLARE_BUILD(1,1,1,1);
62 #endif
63 
64 #if (MG == 2) || (MG == 3) || (MG == 4)
65     DECLARE_BUILD(0,2,0,0);
66     DECLARE_BUILD(0,2,0,1);
67     DECLARE_BUILD(0,2,0,2);
68     DECLARE_BUILD(0,2,1,1);
69     DECLARE_BUILD(0,2,1,2);
70     DECLARE_BUILD(0,2,2,2);
71     DECLARE_BUILD(1,2,0,0);
72     DECLARE_BUILD(1,2,0,1);
73     DECLARE_BUILD(1,2,1,1);
74     DECLARE_BUILD(1,2,1,2);
75     DECLARE_BUILD(1,2,2,2);
76     DECLARE_BUILD(2,2,0,0);
77     DECLARE_BUILD(2,2,0,1);
78     DECLARE_BUILD(2,2,1,1);
79     DECLARE_BUILD(2,2,2,2);
80 #endif
81 
82 #if (MG == 3) || (MG == 4)
83     DECLARE_BUILD(0,3,0,0);
84     DECLARE_BUILD(0,3,0,1);
85     DECLARE_BUILD(0,3,0,2);
86     DECLARE_BUILD(0,3,0,3);
87     DECLARE_BUILD(0,3,1,1);
88     DECLARE_BUILD(0,3,1,2);
89     DECLARE_BUILD(0,3,1,3);
90     DECLARE_BUILD(0,3,2,2);
91     DECLARE_BUILD(0,3,2,3);
92     DECLARE_BUILD(0,3,3,3);
93     DECLARE_BUILD(1,3,0,0);
94     DECLARE_BUILD(1,3,0,1);
95     DECLARE_BUILD(1,3,0,2);
96     DECLARE_BUILD(1,3,1,1);
97     DECLARE_BUILD(1,3,1,2);
98     DECLARE_BUILD(1,3,1,3);
99     DECLARE_BUILD(1,3,2,2);
100     DECLARE_BUILD(1,3,2,3);
101     DECLARE_BUILD(1,3,3,3);
102     DECLARE_BUILD(2,3,0,0);
103     DECLARE_BUILD(2,3,0,1);
104     DECLARE_BUILD(2,3,0,2);
105     DECLARE_BUILD(2,3,1,1);
106     DECLARE_BUILD(2,3,1,2);
107     DECLARE_BUILD(2,3,2,2);
108     DECLARE_BUILD(2,3,2,3);
109     DECLARE_BUILD(2,3,3,3);
110     DECLARE_BUILD(3,3,0,0);
111     DECLARE_BUILD(3,3,0,1);
112     DECLARE_BUILD(3,3,0,2);
113     DECLARE_BUILD(3,3,1,1);
114     DECLARE_BUILD(3,3,1,2);
115     DECLARE_BUILD(3,3,2,2);
116     DECLARE_BUILD(3,3,3,3);
117 #endif
118 };
119 
120 }
121 
122 #endif
123