00001 #ifdef __GNUG__
00002 #pragma interface
00003 #endif
00004
00005 #ifndef _chemistry_qc_oint3_build_h
00006 #define _chemistry_qc_oint3_build_h
00007
00008 #include <chemistry/qc/intv3/array.h>
00009
00010 #define MG 3
00011
00012 #define DECLARE_BUILD(ii,j,k,l) \
00013 int i ## ii ## j ## k ## l ();\
00014 int i ## ii ## j ## k ## l ## eAB ()
00015
00016 class BuildIntV3 {
00017 public:
00018 double int_v_ooze;
00019 double int_v_zeta12;
00020 double int_v_zeta34;
00021 double int_v_oo2zeta12;
00022 double int_v_oo2zeta34;
00023 double int_v_W0;
00024 double int_v_W1;
00025 double int_v_W2;
00026 double int_v_p120;
00027 double int_v_p121;
00028 double int_v_p122;
00029 double int_v_p340;
00030 double int_v_p341;
00031 double int_v_p342;
00032 double int_v_r10;
00033 double int_v_r11;
00034 double int_v_r12;
00035 double int_v_r20;
00036 double int_v_r21;
00037 double int_v_r22;
00038 double int_v_r30;
00039 double int_v_r31;
00040 double int_v_r32;
00041 double int_v_r40;
00042 double int_v_r41;
00043 double int_v_r42;
00044 double int_v_k12;
00045 double int_v_k34;
00046 IntV3Arraydoublep3 int_v_list;
00047 public:
00048 BuildIntV3();
00049 ~BuildIntV3();
00050
00051 int impossible_integral();
00052
00053 #if (MG == 1) || (MG == 2) || (MG == 3) || (MG == 4)
00054 DECLARE_BUILD(0,1,0,0);
00055 DECLARE_BUILD(0,1,0,1);
00056 DECLARE_BUILD(0,1,1,1);
00057 DECLARE_BUILD(1,1,0,0);
00058 DECLARE_BUILD(1,1,1,1);
00059 #endif
00060
00061 #if (MG == 2) || (MG == 3) || (MG == 4)
00062 DECLARE_BUILD(0,2,0,0);
00063 DECLARE_BUILD(0,2,0,1);
00064 DECLARE_BUILD(0,2,0,2);
00065 DECLARE_BUILD(0,2,1,1);
00066 DECLARE_BUILD(0,2,1,2);
00067 DECLARE_BUILD(0,2,2,2);
00068 DECLARE_BUILD(1,2,0,0);
00069 DECLARE_BUILD(1,2,0,1);
00070 DECLARE_BUILD(1,2,1,1);
00071 DECLARE_BUILD(1,2,1,2);
00072 DECLARE_BUILD(1,2,2,2);
00073 DECLARE_BUILD(2,2,0,0);
00074 DECLARE_BUILD(2,2,0,1);
00075 DECLARE_BUILD(2,2,1,1);
00076 DECLARE_BUILD(2,2,2,2);
00077 #endif
00078
00079 #if (MG == 3) || (MG == 4)
00080 DECLARE_BUILD(0,3,0,0);
00081 DECLARE_BUILD(0,3,0,1);
00082 DECLARE_BUILD(0,3,0,2);
00083 DECLARE_BUILD(0,3,0,3);
00084 DECLARE_BUILD(0,3,1,1);
00085 DECLARE_BUILD(0,3,1,2);
00086 DECLARE_BUILD(0,3,1,3);
00087 DECLARE_BUILD(0,3,2,2);
00088 DECLARE_BUILD(0,3,2,3);
00089 DECLARE_BUILD(0,3,3,3);
00090 DECLARE_BUILD(1,3,0,0);
00091 DECLARE_BUILD(1,3,0,1);
00092 DECLARE_BUILD(1,3,0,2);
00093 DECLARE_BUILD(1,3,1,1);
00094 DECLARE_BUILD(1,3,1,2);
00095 DECLARE_BUILD(1,3,1,3);
00096 DECLARE_BUILD(1,3,2,2);
00097 DECLARE_BUILD(1,3,2,3);
00098 DECLARE_BUILD(1,3,3,3);
00099 DECLARE_BUILD(2,3,0,0);
00100 DECLARE_BUILD(2,3,0,1);
00101 DECLARE_BUILD(2,3,0,2);
00102 DECLARE_BUILD(2,3,1,1);
00103 DECLARE_BUILD(2,3,1,2);
00104 DECLARE_BUILD(2,3,2,2);
00105 DECLARE_BUILD(2,3,2,3);
00106 DECLARE_BUILD(2,3,3,3);
00107 DECLARE_BUILD(3,3,0,0);
00108 DECLARE_BUILD(3,3,0,1);
00109 DECLARE_BUILD(3,3,0,2);
00110 DECLARE_BUILD(3,3,1,1);
00111 DECLARE_BUILD(3,3,1,2);
00112 DECLARE_BUILD(3,3,2,2);
00113 DECLARE_BUILD(3,3,3,3);
00114 #endif
00115 };
00116
00117 #endif