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