int main() { int natm = 60; int nbas = natm*20; // ATM_SLOTS = 6; BAS_SLOTS = 8; int *atm = malloc(sizeof(int) * natm * ATM_SLOTS); int *bas = malloc(sizeof(int) * nbas * BAS_SLOTS); double *env = malloc(sizeof(double) * 10000); int i, n, off; off = PTR_ENV_START; // = 20 atm(CHARGE_OF, 0)=6; atm(PTR_COORD, 0)=off; env[off+0]=-0.779; env[off+1]= 0.757; env[off+2]= 0.000; off+=3; atm(CHARGE_OF, 1)=6; atm(PTR_COORD, 1)=off; env[off+0]= 0.684; env[off+1]= 0.757; env[off+2]= 0.000; off+=3; atm(CHARGE_OF, 2)=6; atm(PTR_COORD, 2)=off; env[off+0]= 1.376; env[off+1]= 1.956; env[off+2]= 0.000; off+=3; atm(CHARGE_OF, 3)=6; atm(PTR_COORD, 3)=off; env[off+0]= 0.644; env[off+1]= 3.224; env[off+2]=-0.000; off+=3; atm(CHARGE_OF, 4)=6; atm(PTR_COORD, 4)=off; env[off+0]=-0.739; env[off+1]= 3.224; env[off+2]= 0.000; off+=3; atm(CHARGE_OF, 5)=6; atm(PTR_COORD, 5)=off; env[off+0]=-1.471; env[off+1]= 1.956; env[off+2]= 0.000; off+=3; atm(CHARGE_OF, 6)=6; atm(PTR_COORD, 6)=off; env[off+0]=-1.231; env[off+1]=-0.348; env[off+2]=-0.845; off+=3; atm(CHARGE_OF, 7)=6; atm(PTR_COORD, 7)=off; env[off+0]=-0.047; env[off+1]=-1.032; env[off+2]=-1.367; off+=3; atm(CHARGE_OF, 8)=6; atm(PTR_COORD, 8)=off; env[off+0]= 1.137; env[off+1]=-0.348; env[off+2]=-0.845; off+=3; atm(CHARGE_OF, 9)=6; atm(PTR_COORD, 9)=off; env[off+0]= 2.257; env[off+1]=-0.196; env[off+2]=-1.644; off+=3; atm(CHARGE_OF,10)=6; atm(PTR_COORD,10)=off; env[off+0]= 2.561; env[off+1]= 2.118; env[off+2]=-0.845; off+=3; atm(CHARGE_OF,11)=6; atm(PTR_COORD,11)=off; env[off+0]= 1.376; env[off+1]= 4.169; env[off+2]=-0.845; off+=3; atm(CHARGE_OF,12)=6; atm(PTR_COORD,12)=off; env[off+0]= 0.684; env[off+1]= 5.063; env[off+2]=-1.644; off+=3; atm(CHARGE_OF,13)=6; atm(PTR_COORD,13)=off; env[off+0]=-0.779; env[off+1]= 5.063; env[off+2]=-1.644; off+=3; atm(CHARGE_OF,14)=6; atm(PTR_COORD,14)=off; env[off+0]=-1.471; env[off+1]= 4.169; env[off+2]=-0.845; off+=3; atm(CHARGE_OF,15)=6; atm(PTR_COORD,15)=off; env[off+0]=-2.656; env[off+1]= 3.485; env[off+2]=-1.367; off+=3; atm(CHARGE_OF,16)=6; atm(PTR_COORD,16)=off; env[off+0]=-2.655; env[off+1]= 2.118; env[off+2]=-0.845; off+=3; atm(CHARGE_OF,17)=6; atm(PTR_COORD,17)=off; env[off+0]=-3.083; env[off+1]= 1.071; env[off+2]=-1.644; off+=3; atm(CHARGE_OF,18)=6; atm(PTR_COORD,18)=off; env[off+0]=-2.351; env[off+1]=-0.196; env[off+2]=-1.644; off+=3; atm(CHARGE_OF,19)=6; atm(PTR_COORD,19)=off; env[off+0]=-0.047; env[off+1]=-1.526; env[off+2]=-2.661; off+=3; atm(CHARGE_OF,20)=6; atm(PTR_COORD,20)=off; env[off+0]=-1.231; env[off+1]=-1.365; env[off+2]=-3.506; off+=3; atm(CHARGE_OF,21)=6; atm(PTR_COORD,21)=off; env[off+0]=-2.351; env[off+1]=-0.718; env[off+2]=-3.012; off+=3; atm(CHARGE_OF,22)=6; atm(PTR_COORD,22)=off; env[off+0]=-3.083; env[off+1]= 0.226; env[off+2]=-3.857; off+=3; atm(CHARGE_OF,23)=6; atm(PTR_COORD,23)=off; env[off+0]=-3.536; env[off+1]= 1.332; env[off+2]=-3.012; off+=3; atm(CHARGE_OF,24)=6; atm(PTR_COORD,24)=off; env[off+0]=-3.536; env[off+1]= 2.626; env[off+2]=-3.506; off+=3; atm(CHARGE_OF,25)=6; atm(PTR_COORD,25)=off; env[off+0]=-3.083; env[off+1]= 3.732; env[off+2]=-2.660; off+=3; atm(CHARGE_OF,26)=6; atm(PTR_COORD,26)=off; env[off+0]=-2.352; env[off+1]= 4.677; env[off+2]=-3.506; off+=3; atm(CHARGE_OF,27)=6; atm(PTR_COORD,27)=off; env[off+0]=-1.231; env[off+1]= 5.324; env[off+2]=-3.012; off+=3; atm(CHARGE_OF,28)=6; atm(PTR_COORD,28)=off; env[off+0]= 2.561; env[off+1]= 3.485; env[off+2]=-1.367; off+=3; atm(CHARGE_OF,29)=6; atm(PTR_COORD,29)=off; env[off+0]= 1.136; env[off+1]= 4.307; env[off+2]=-5.673; off+=3; atm(CHARGE_OF,30)=6; atm(PTR_COORD,30)=off; env[off+0]= 2.256; env[off+1]= 4.155; env[off+2]=-4.873; off+=3; atm(CHARGE_OF,31)=6; atm(PTR_COORD,31)=off; env[off+0]= 2.988; env[off+1]= 2.887; env[off+2]=-4.873; off+=3; atm(CHARGE_OF,32)=6; atm(PTR_COORD,32)=off; env[off+0]= 2.561; env[off+1]= 1.841; env[off+2]=-5.673; off+=3; atm(CHARGE_OF,33)=6; atm(PTR_COORD,33)=off; env[off+0]= 1.376; env[off+1]= 2.002; env[off+2]=-6.518; off+=3; atm(CHARGE_OF,34)=6; atm(PTR_COORD,34)=off; env[off+0]=-0.779; env[off+1]= 3.201; env[off+2]=-6.518; off+=3; atm(CHARGE_OF,35)=6; atm(PTR_COORD,35)=off; env[off+0]=-1.231; env[off+1]= 4.307; env[off+2]=-5.673; off+=3; atm(CHARGE_OF,36)=6; atm(PTR_COORD,36)=off; env[off+0]=-0.047; env[off+1]= 4.991; env[off+2]=-5.150; off+=3; atm(CHARGE_OF,37)=6; atm(PTR_COORD,37)=off; env[off+0]=-0.047; env[off+1]= 5.485; env[off+2]=-3.857; off+=3; atm(CHARGE_OF,38)=6; atm(PTR_COORD,38)=off; env[off+0]= 1.136; env[off+1]= 5.324; env[off+2]=-3.012; off+=3; atm(CHARGE_OF,39)=6; atm(PTR_COORD,39)=off; env[off+0]= 2.257; env[off+1]= 4.677; env[off+2]=-3.506; off+=3; atm(CHARGE_OF,40)=6; atm(PTR_COORD,40)=off; env[off+0]= 3.441; env[off+1]= 2.626; env[off+2]=-3.506; off+=3; atm(CHARGE_OF,41)=6; atm(PTR_COORD,41)=off; env[off+0]= 3.441; env[off+1]= 1.332; env[off+2]=-3.012; off+=3; atm(CHARGE_OF,42)=6; atm(PTR_COORD,42)=off; env[off+0]= 2.989; env[off+1]= 0.226; env[off+2]=-3.857; off+=3; atm(CHARGE_OF,43)=6; atm(PTR_COORD,43)=off; env[off+0]= 2.561; env[off+1]= 0.473; env[off+2]=-5.150; off+=3; atm(CHARGE_OF,44)=6; atm(PTR_COORD,44)=off; env[off+0]= 1.376; env[off+1]=-0.210; env[off+2]=-5.673; off+=3; atm(CHARGE_OF,45)=6; atm(PTR_COORD,45)=off; env[off+0]= 0.644; env[off+1]= 0.734; env[off+2]=-6.518; off+=3; atm(CHARGE_OF,46)=6; atm(PTR_COORD,46)=off; env[off+0]=-0.739; env[off+1]= 0.734; env[off+2]=-6.518; off+=3; atm(CHARGE_OF,47)=6; atm(PTR_COORD,47)=off; env[off+0]=-1.471; env[off+1]= 2.002; env[off+2]=-6.518; off+=3; atm(CHARGE_OF,48)=6; atm(PTR_COORD,48)=off; env[off+0]=-2.352; env[off+1]= 4.155; env[off+2]=-4.873; off+=3; atm(CHARGE_OF,49)=6; atm(PTR_COORD,49)=off; env[off+0]=-3.084; env[off+1]= 2.887; env[off+2]=-4.873; off+=3; atm(CHARGE_OF,50)=6; atm(PTR_COORD,50)=off; env[off+0]=-2.656; env[off+1]= 1.840; env[off+2]=-5.673; off+=3; atm(CHARGE_OF,51)=6; atm(PTR_COORD,51)=off; env[off+0]=-2.656; env[off+1]= 0.473; env[off+2]=-5.150; off+=3; atm(CHARGE_OF,52)=6; atm(PTR_COORD,52)=off; env[off+0]=-1.471; env[off+1]=-0.210; env[off+2]=-5.673; off+=3; atm(CHARGE_OF,53)=6; atm(PTR_COORD,53)=off; env[off+0]=-0.779; env[off+1]=-1.104; env[off+2]=-4.873; off+=3; atm(CHARGE_OF,54)=6; atm(PTR_COORD,54)=off; env[off+0]= 0.684; env[off+1]=-1.104; env[off+2]=-4.873; off+=3; atm(CHARGE_OF,55)=6; atm(PTR_COORD,55)=off; env[off+0]= 1.136; env[off+1]=-1.365; env[off+2]=-3.506; off+=3; atm(CHARGE_OF,56)=6; atm(PTR_COORD,56)=off; env[off+0]= 2.257; env[off+1]=-0.718; env[off+2]=-3.012; off+=3; atm(CHARGE_OF,57)=6; atm(PTR_COORD,57)=off; env[off+0]= 2.988; env[off+1]= 3.732; env[off+2]=-2.661; off+=3; atm(CHARGE_OF,58)=6; atm(PTR_COORD,58)=off; env[off+0]= 2.989; env[off+1]= 1.071; env[off+2]=-1.644; off+=3; atm(CHARGE_OF,59)=6; atm(PTR_COORD,59)=off; env[off+0]= 0.684; env[off+1]= 3.201; env[off+2]=-6.518; off+=3; // cc-pVDZ env[off+ 0] = 6665.0; // s env[off+ 1] = 1000.0; env[off+ 2] = 228.00; env[off+ 3] = 64.710; env[off+ 4] = 21.060; env[off+ 5] = 7.4950; env[off+ 6] = 2.7970; env[off+ 7] = 0.5215; env[off+ 8] = 0.000692*CINTgto_norm(0,env[off+0]); env[off+16] =-0.000146*CINTgto_norm(0,env[off+0]); env[off+ 9] = 0.005329*CINTgto_norm(0,env[off+1]); env[off+17] =-0.001154*CINTgto_norm(0,env[off+1]); env[off+10] = 0.027077*CINTgto_norm(0,env[off+2]); env[off+18] =-0.005725*CINTgto_norm(0,env[off+2]); env[off+11] = 0.101718*CINTgto_norm(0,env[off+3]); env[off+19] =-0.023312*CINTgto_norm(0,env[off+3]); env[off+12] = 0.274740*CINTgto_norm(0,env[off+4]); env[off+20] =-0.063955*CINTgto_norm(0,env[off+4]); env[off+13] = 0.448564*CINTgto_norm(0,env[off+5]); env[off+21] =-0.149981*CINTgto_norm(0,env[off+5]); env[off+14] = 0.285074*CINTgto_norm(0,env[off+6]); env[off+22] =-0.127262*CINTgto_norm(0,env[off+6]); env[off+15] = 0.015204*CINTgto_norm(0,env[off+7]); env[off+23] = 0.544529*CINTgto_norm(0,env[off+7]); env[off+24] = 0.1596; // s env[off+25] = 1*CINTgto_norm(0,env[off+24]); env[off+26] = 9.4390; // p env[off+27] = 2.0020; env[off+28] = 0.5456; env[off+29] = 0.038109*CINTgto_norm(1,env[off+26]); env[off+30] = 0.209480*CINTgto_norm(1,env[off+27]); env[off+31] = 0.508557*CINTgto_norm(1,env[off+28]); env[off+32] = 0.1517; // p env[off+33] = 1*CINTgto_norm(1,env[off+32]); env[off+34] = 0.55; // d env[off+35] = 1*CINTgto_norm(2,env[off+34]); for (i = 0, n = 0; i < natm; i++) { bas[ATOM_OF +BAS_SLOTS*n] = i; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 8; bas[NCTR_OF +BAS_SLOTS*n] = 2; bas[PTR_EXP +BAS_SLOTS*n] = off+0; bas[PTR_COEFF+BAS_SLOTS*n] = off+8; n++; bas[ATOM_OF +BAS_SLOTS*n] = i; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+24; bas[PTR_COEFF+BAS_SLOTS*n] = off+25; n++; bas[ATOM_OF +BAS_SLOTS*n] = i; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 3; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+26; bas[PTR_COEFF+BAS_SLOTS*n] = off+29; n++; bas[ATOM_OF +BAS_SLOTS*n] = i; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+32; bas[PTR_COEFF+BAS_SLOTS*n] = off+33; n++; bas[ATOM_OF +BAS_SLOTS*n] = i; bas[ANG_OF +BAS_SLOTS*n] = 2; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+34; bas[PTR_COEFF+BAS_SLOTS*n] = off+35; n++; } nbas = n; run_all(atm, natm, bas, nbas, env); // 6478s on one core of 3.1G I5 CPU free(atm); free(bas); free(env); }
double CINTgto_norm_(FINT *n, double *a) { return CINTgto_norm(*n, *a); }
int main() { int natm = 8; int nbas = natm*20; // ATM_SLOTS = 6; BAS_SLOTS = 8; int *atm = malloc(sizeof(int) * natm * ATM_SLOTS); int *bas = malloc(sizeof(int) * nbas * BAS_SLOTS); double *env = malloc(sizeof(double) * 10000); int i, j, ia, n, off; off = PTR_ENV_START; // = 20 atm(CHARGE_OF,0)=6; atm(PTR_COORD,0)=off; env[off+0]= 0.000; env[off+1]= 0.000; env[off+2]= 0.769; off+=3; atm(CHARGE_OF,1)=1; atm(PTR_COORD,1)=off; env[off+0]= 0.000; env[off+1]= 1.014; env[off+2]= 1.174; off+=3; atm(CHARGE_OF,2)=1; atm(PTR_COORD,2)=off; env[off+0]=-0.878; env[off+1]=-0.507; env[off+2]= 1.174; off+=3; atm(CHARGE_OF,3)=1; atm(PTR_COORD,3)=off; env[off+0]= 0.878; env[off+1]=-0.507; env[off+2]= 1.174; off+=3; atm(CHARGE_OF,4)=6; atm(PTR_COORD,4)=off; env[off+0]= 0.000; env[off+1]= 0.000; env[off+2]=-0.769; off+=3; atm(CHARGE_OF,5)=1; atm(PTR_COORD,5)=off; env[off+0]= 0.000; env[off+1]= 1.014; env[off+2]=-1.174; off+=3; atm(CHARGE_OF,6)=1; atm(PTR_COORD,6)=off; env[off+0]=-0.878; env[off+1]=-0.507; env[off+2]=-1.174; off+=3; atm(CHARGE_OF,7)=1; atm(PTR_COORD,7)=off; env[off+0]= 0.878; env[off+1]=-0.507; env[off+2]=-1.174; off+=3; // 6-31G env[off+0 ] = 3047.5249; env[off+6 ] = 0.0018347*CINTgto_norm(0,env[off+0 ]); env[off+1 ] = 457.36951; env[off+7 ] = 0.0140373*CINTgto_norm(0,env[off+1 ]); env[off+2 ] = 103.94869; env[off+8 ] = 0.0688426*CINTgto_norm(0,env[off+2 ]); env[off+3 ] = 29.210155; env[off+9 ] = 0.2321844*CINTgto_norm(0,env[off+3 ]); env[off+4 ] = 9.2866630; env[off+10] = 0.4679413*CINTgto_norm(0,env[off+4 ]); env[off+5 ] = 3.1639270; env[off+11] = 0.3623120*CINTgto_norm(0,env[off+5 ]); env[off+12] = 7.8682724; env[off+15] =-0.1193324*CINTgto_norm(0,env[off+12]); env[off+13] = 1.8812885; env[off+16] =-0.1608542*CINTgto_norm(0,env[off+13]); env[off+14] = 0.5442493; env[off+17] = 1.1434564*CINTgto_norm(0,env[off+14]); env[off+18] = 0.1687144; env[off+19] = 1.0000000*CINTgto_norm(0,env[off+18]); env[off+20] = 7.8682724; env[off+23] = 0.0689991*CINTgto_norm(1,env[off+20]); env[off+21] = 1.8812885; env[off+24] = 0.3164240*CINTgto_norm(1,env[off+21]); env[off+22] = 0.5442493; env[off+25] = 0.7443083*CINTgto_norm(1,env[off+22]); env[off+26] = 0.1687144; env[off+27] = 1.0000000*CINTgto_norm(1,env[off+26]); env[off+28] = 18.731137; env[off+31] = 0.0334946*CINTgto_norm(0,env[off+28]); env[off+29] = 2.8253937; env[off+32] = 0.2347269*CINTgto_norm(0,env[off+29]); env[off+30] = 0.6401217; env[off+33] = 0.8137573*CINTgto_norm(0,env[off+30]); env[off+34] = 0.1612778; env[off+35] = 1.0000000*CINTgto_norm(0,env[off+34]); for (i = 0, ia = 0, n = 0; i < 2; i++) { bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 6; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+0; bas[PTR_COEFF+BAS_SLOTS*n] = off+6; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 3; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+12; bas[PTR_COEFF+BAS_SLOTS*n] = off+15; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+18; bas[PTR_COEFF+BAS_SLOTS*n] = off+19; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 3; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+20; bas[PTR_COEFF+BAS_SLOTS*n] = off+23; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+26; bas[PTR_COEFF+BAS_SLOTS*n] = off+27; n++; ia++; for (j = 0; j < 3; j++) { bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 3; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+28; bas[PTR_COEFF+BAS_SLOTS*n] = off+31; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+34; bas[PTR_COEFF+BAS_SLOTS*n] = off+35; n++; ia++; } } nbas = n; printf("6-31G basis\n"); run_all(atm, natm, bas, nbas, env); // 6-311G** env[off+ 0] = 4563.240; env[off+17] = 0.0019666*CINTgto_norm(0,env[off+ 0]); env[off+ 1] = 682.0240; env[off+18] = 0.0152306*CINTgto_norm(0,env[off+ 1]); env[off+ 2] = 154.9730; env[off+19] = 0.0761269*CINTgto_norm(0,env[off+ 2]); env[off+ 3] = 44.45530; env[off+20] = 0.2608010*CINTgto_norm(0,env[off+ 3]); env[off+ 4] = 13.02900; env[off+21] = 0.6164620*CINTgto_norm(0,env[off+ 4]); env[off+ 5] = 1.827730; env[off+22] = 0.2210060*CINTgto_norm(0,env[off+ 5]); env[off+ 6] = 20.96420; env[off+23] = 0.1146600*CINTgto_norm(0,env[off+ 6]); env[off+ 7] = 4.803310; env[off+24] = 0.9199990*CINTgto_norm(0,env[off+ 7]); env[off+ 8] = 1.459330; env[off+25] = -0.003030*CINTgto_norm(0,env[off+ 8]); env[off+ 9] = 0.483456; env[off+26] = 1.0000000*CINTgto_norm(0,env[off+ 9]); env[off+10] = 0.145585; env[off+27] = 1.0000000*CINTgto_norm(0,env[off+10]); env[off+11] = 20.96420; env[off+28] = 0.0402487*CINTgto_norm(1,env[off+11]); env[off+12] = 4.803310; env[off+29] = 0.2375940*CINTgto_norm(1,env[off+12]); env[off+13] = 1.459330; env[off+30] = 0.8158540*CINTgto_norm(1,env[off+13]); env[off+14] = 0.483456; env[off+31] = 1.0000000*CINTgto_norm(1,env[off+14]); env[off+15] = 0.145585; env[off+32] = 1.0000000*CINTgto_norm(1,env[off+15]); env[off+16] = 0.626000; env[off+33] = 1.0000000*CINTgto_norm(2,env[off+16]); env[off+34] = 33.86500; env[off+40] = 0.0254938*CINTgto_norm(0,env[off+34]); env[off+35] = 5.094790; env[off+41] = 0.1903730*CINTgto_norm(0,env[off+35]); env[off+36] = 1.158790; env[off+42] = 0.8521610*CINTgto_norm(0,env[off+36]); env[off+37] = 0.325840; env[off+43] = 1.0000000*CINTgto_norm(0,env[off+37]); env[off+38] = 0.102741; env[off+44] = 1.0000000*CINTgto_norm(0,env[off+38]); env[off+39] = 0.750000; env[off+45] = 1.0000000*CINTgto_norm(0,env[off+39]); for (i = 0, ia = 0, n = 0; i < 2; i++) { bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 6; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+ 0; bas[PTR_COEFF+BAS_SLOTS*n] = off+17; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 3; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+ 6; bas[PTR_COEFF+BAS_SLOTS*n] = off+23; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+ 9; bas[PTR_COEFF+BAS_SLOTS*n] = off+26; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+10; bas[PTR_COEFF+BAS_SLOTS*n] = off+27; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 3; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+11; bas[PTR_COEFF+BAS_SLOTS*n] = off+28; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+14; bas[PTR_COEFF+BAS_SLOTS*n] = off+31; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+15; bas[PTR_COEFF+BAS_SLOTS*n] = off+32; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 2; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+16; bas[PTR_COEFF+BAS_SLOTS*n] = off+33; n++; ia++; for (j = 0; j < 3; j++) { bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 3; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+34; bas[PTR_COEFF+BAS_SLOTS*n] = off+40; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+37; bas[PTR_COEFF+BAS_SLOTS*n] = off+43; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+38; bas[PTR_COEFF+BAS_SLOTS*n] = off+44; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+39; bas[PTR_COEFF+BAS_SLOTS*n] = off+45; n++; ia++; } } nbas = n; printf("6-311G(dp) basis\n"); run_all(atm, natm, bas, nbas, env); // cc-pVDZ, C env[off+ 0] = 6665.0; env[off+ 8]=0.000692*CINTgto_norm(0,env[off+ 0]); env[off+16]=-0.000146*CINTgto_norm(0,env[off+0]); env[off+ 1] = 1000.0; env[off+ 9]=0.005329*CINTgto_norm(0,env[off+ 1]); env[off+17]=-0.001154*CINTgto_norm(0,env[off+1]); env[off+ 2] = 228.00; env[off+10]=0.027077*CINTgto_norm(0,env[off+ 2]); env[off+18]=-0.005725*CINTgto_norm(0,env[off+2]); env[off+ 3] = 64.710; env[off+11]=0.101718*CINTgto_norm(0,env[off+ 3]); env[off+19]=-0.023312*CINTgto_norm(0,env[off+3]); env[off+ 4] = 21.060; env[off+12]=0.274740*CINTgto_norm(0,env[off+ 4]); env[off+20]=-0.063955*CINTgto_norm(0,env[off+4]); env[off+ 5] = 7.4950; env[off+13]=0.448564*CINTgto_norm(0,env[off+ 5]); env[off+21]=-0.149981*CINTgto_norm(0,env[off+5]); env[off+ 6] = 2.7970; env[off+14]=0.285074*CINTgto_norm(0,env[off+ 6]); env[off+22]=-0.127262*CINTgto_norm(0,env[off+6]); env[off+ 7] = 0.5215; env[off+15]=0.015204*CINTgto_norm(0,env[off+ 7]); env[off+23]= 0.544529*CINTgto_norm(0,env[off+7]); env[off+24] = 0.1596; env[off+25]=1.000000*CINTgto_norm(0,env[off+24]); env[off+26] = 9.4390; env[off+29]=0.038109*CINTgto_norm(1,env[off+26]); env[off+27] = 2.0020; env[off+30]=0.209480*CINTgto_norm(1,env[off+27]); env[off+28] = 0.5456; env[off+31]=0.508557*CINTgto_norm(1,env[off+28]); env[off+32] = 0.1517; env[off+33]=1.000000*CINTgto_norm(1,env[off+32]); env[off+34] = 0.55 ; env[off+35]=1.000000*CINTgto_norm(2,env[off+34]); // H env[off+36] = 13.010; env[off+39]=0.019685*CINTgto_norm(0,env[off+36]); env[off+37] = 1.9620; env[off+40]=0.137977*CINTgto_norm(0,env[off+37]); env[off+38] = 0.4446; env[off+41]=0.478148*CINTgto_norm(0,env[off+38]); env[off+42] = 0.1220; env[off+43]=1 *CINTgto_norm(0,env[off+42]); env[off+44] = 0.7270; env[off+45]=1 *CINTgto_norm(0,env[off+44]); for (i = 0, ia = 0, n = 0; i < 2; i++) { bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 8; bas[NCTR_OF +BAS_SLOTS*n] = 2; bas[PTR_EXP +BAS_SLOTS*n] = off+0; bas[PTR_COEFF+BAS_SLOTS*n] = off+8; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+24; bas[PTR_COEFF+BAS_SLOTS*n] = off+25; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 3; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+26; bas[PTR_COEFF+BAS_SLOTS*n] = off+29; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+32; bas[PTR_COEFF+BAS_SLOTS*n] = off+33; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 2; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+34; bas[PTR_COEFF+BAS_SLOTS*n] = off+35; n++; ia++; for (j = 0; j < 3; j++) { bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 3; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+36; bas[PTR_COEFF+BAS_SLOTS*n] = off+39; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+42; bas[PTR_COEFF+BAS_SLOTS*n] = off+43; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+44; bas[PTR_COEFF+BAS_SLOTS*n] = off+45; n++; ia++; } } nbas = n; printf("cc-pVDZ basis\n"); run_all(atm, natm, bas, nbas, env); // cc-pVTZ env[off+ 0] = 8236.0; env[off+18]= 0.000531*CINTgto_norm(0,env[off+ 0]); env[off+26]=-0.000113*CINTgto_norm(0,env[off+ 0]); env[off+ 1] = 1235.0; env[off+19]= 0.004108*CINTgto_norm(0,env[off+ 1]); env[off+27]=-0.000878*CINTgto_norm(0,env[off+ 1]); env[off+ 2] = 280.80; env[off+20]= 0.021087*CINTgto_norm(0,env[off+ 2]); env[off+28]=-0.004540*CINTgto_norm(0,env[off+ 2]); env[off+ 3] = 79.270; env[off+21]= 0.081853*CINTgto_norm(0,env[off+ 3]); env[off+29]=-0.018133*CINTgto_norm(0,env[off+ 3]); env[off+ 4] = 25.590; env[off+22]= 0.234817*CINTgto_norm(0,env[off+ 4]); env[off+30]=-0.055760*CINTgto_norm(0,env[off+ 4]); env[off+ 5] = 8.9970; env[off+23]= 0.434401*CINTgto_norm(0,env[off+ 5]); env[off+31]=-0.126895*CINTgto_norm(0,env[off+ 5]); env[off+ 6] = 3.3190; env[off+24]= 0.346129*CINTgto_norm(0,env[off+ 6]); env[off+32]=-0.170352*CINTgto_norm(0,env[off+ 6]); env[off+ 7] = 0.3643; env[off+25]=-0.008983*CINTgto_norm(0,env[off+ 7]); env[off+33]= 0.598684*CINTgto_norm(0,env[off+ 7]); env[off+ 8] = 0.9059; env[off+34]= 1.000000*CINTgto_norm(0,env[off+ 8]); env[off+ 9] = 0.1285; env[off+35]= 1.000000*CINTgto_norm(0,env[off+ 9]); env[off+10] = 18.710; env[off+36]= 0.014031*CINTgto_norm(1,env[off+10]); env[off+11] = 4.1330; env[off+37]= 0.086866*CINTgto_norm(1,env[off+11]); env[off+12] = 1.2000; env[off+38]= 0.290216*CINTgto_norm(1,env[off+12]); env[off+13] = 0.3827; env[off+39]= 1.000000*CINTgto_norm(1,env[off+13]); env[off+14] = 0.1209; env[off+40]= 1.000000*CINTgto_norm(1,env[off+14]); env[off+15] = 1.0970; env[off+41]= 1.000000*CINTgto_norm(2,env[off+15]); env[off+16] = 0.3180; env[off+42]= 1.000000*CINTgto_norm(2,env[off+16]); env[off+17] = 0.7610; env[off+43]= 1.000000*CINTgto_norm(3,env[off+17]); env[off+44] = 33.870; env[off+52]= 0.006068*CINTgto_norm(0,env[off+44]); env[off+45] = 5.0950; env[off+53]= 0.045308*CINTgto_norm(0,env[off+45]); env[off+46] = 1.1590; env[off+54]= 0.202822*CINTgto_norm(0,env[off+46]); env[off+47] = 0.3258; env[off+55]= 1.000000*CINTgto_norm(0,env[off+47]); env[off+48] = 0.1027; env[off+56]= 1.000000*CINTgto_norm(0,env[off+48]); env[off+49] = 1.4070; env[off+57]= 1.000000*CINTgto_norm(1,env[off+49]); env[off+50] = 0.3880; env[off+58]= 1.000000*CINTgto_norm(1,env[off+50]); env[off+51] = 1.0570; env[off+59]= 1.000000*CINTgto_norm(2,env[off+51]); for (i = 0, ia = 0, n = 0; i < 2; i++) { bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 8; bas[NCTR_OF +BAS_SLOTS*n] = 2; bas[PTR_EXP +BAS_SLOTS*n] = off+ 0; bas[PTR_COEFF+BAS_SLOTS*n] = off+18; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+ 8; bas[PTR_COEFF+BAS_SLOTS*n] = off+34; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+ 9; bas[PTR_COEFF+BAS_SLOTS*n] = off+35; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 3; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+10; bas[PTR_COEFF+BAS_SLOTS*n] = off+38; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+13; bas[PTR_COEFF+BAS_SLOTS*n] = off+39; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+14; bas[PTR_COEFF+BAS_SLOTS*n] = off+40; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 2; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+15; bas[PTR_COEFF+BAS_SLOTS*n] = off+41; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 2; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+16; bas[PTR_COEFF+BAS_SLOTS*n] = off+42; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 3; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+17; bas[PTR_COEFF+BAS_SLOTS*n] = off+43; n++; ia++; for (j = 0; j < 3; j++) { bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 3; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+44; bas[PTR_COEFF+BAS_SLOTS*n] = off+52; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+47; bas[PTR_COEFF+BAS_SLOTS*n] = off+55; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+48; bas[PTR_COEFF+BAS_SLOTS*n] = off+56; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+49; bas[PTR_COEFF+BAS_SLOTS*n] = off+57; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+50; bas[PTR_COEFF+BAS_SLOTS*n] = off+58; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 2; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+51; bas[PTR_COEFF+BAS_SLOTS*n] = off+59; n++; ia++; } } nbas = n; printf("cc-pVTZ basis\n"); run_all(atm, natm, bas, nbas, env); env[off+ 0] = 33980.; env[off+24]= 0.000091*CINTgto_norm(0,env[off+ 0]); env[off+33]= -0.000019*CINTgto_norm(0,env[off+0]); env[off+ 1] = 5089.0; env[off+25]= 0.000704*CINTgto_norm(0,env[off+ 1]); env[off+34]= -0.000151*CINTgto_norm(0,env[off+1]); env[off+ 2] = 1157.0; env[off+26]= 0.003693*CINTgto_norm(0,env[off+ 2]); env[off+35]= -0.000785*CINTgto_norm(0,env[off+2]); env[off+ 3] = 326.60; env[off+27]= 0.015360*CINTgto_norm(0,env[off+ 3]); env[off+36]= -0.003324*CINTgto_norm(0,env[off+3]); env[off+ 4] = 106.10; env[off+28]= 0.052929*CINTgto_norm(0,env[off+ 4]); env[off+37]= -0.011512*CINTgto_norm(0,env[off+4]); env[off+ 5] = 38.110; env[off+29]= 0.147043*CINTgto_norm(0,env[off+ 5]); env[off+38]= -0.034160*CINTgto_norm(0,env[off+5]); env[off+ 6] = 14.750; env[off+30]= 0.305631*CINTgto_norm(0,env[off+ 6]); env[off+39]= -0.077173*CINTgto_norm(0,env[off+6]); env[off+ 7] = 6.0350; env[off+31]= 0.399345*CINTgto_norm(0,env[off+ 7]); env[off+40]= -0.141493*CINTgto_norm(0,env[off+7]); env[off+ 8] = 2.5300; env[off+32]= 0.217051*CINTgto_norm(0,env[off+ 8]); env[off+41]= -0.118019*CINTgto_norm(0,env[off+8]); env[off+ 9] = 0.7355; env[off+42]= 1.000000*CINTgto_norm(0,env[off+ 9]); env[off+10] = 0.2905; env[off+43]= 1.000000*CINTgto_norm(0,env[off+10]); env[off+11] = 0.1111; env[off+44]= 1.000000*CINTgto_norm(0,env[off+11]); env[off+12] = 34.510; env[off+45]= 0.005378*CINTgto_norm(1,env[off+12]); env[off+13] = 7.9150; env[off+46]= 0.036132*CINTgto_norm(1,env[off+13]); env[off+14] = 2.3680; env[off+47]= 0.142493*CINTgto_norm(1,env[off+14]); env[off+15] = 0.8132; env[off+48]= 1.000000*CINTgto_norm(1,env[off+15]); env[off+16] = 0.2890; env[off+49]= 1.000000*CINTgto_norm(1,env[off+16]); env[off+17] = 0.1007; env[off+50]= 1.000000*CINTgto_norm(1,env[off+17]); env[off+18] = 1.8480; env[off+51]= 1.000000*CINTgto_norm(2,env[off+18]); env[off+19] = 0.6490; env[off+52]= 1.000000*CINTgto_norm(2,env[off+19]); env[off+20] = 0.2280; env[off+53]= 1.000000*CINTgto_norm(2,env[off+20]); env[off+21] = 1.4190; env[off+54]= 1.000000*CINTgto_norm(3,env[off+21]); env[off+22] = 0.4850; env[off+55]= 1.000000*CINTgto_norm(3,env[off+22]); env[off+23] = 1.0110; env[off+56]= 1.000000*CINTgto_norm(4,env[off+23]); env[off+57] = 82.64; env[off+69] = 0.002006*CINTgto_norm(0,env[off+57]); env[off+58] = 12.41; env[off+70] = 0.015343*CINTgto_norm(0,env[off+58]); env[off+59] = 2.824; env[off+71] = 0.075579*CINTgto_norm(0,env[off+59]); env[off+60] = 0.797; env[off+72] = 1.000000*CINTgto_norm(0,env[off+60]); env[off+61] = 0.258; env[off+73] = 1.000000*CINTgto_norm(0,env[off+61]); env[off+62] = 0.089; env[off+74] = 1.000000*CINTgto_norm(0,env[off+62]); env[off+63] = 2.292; env[off+75] = 1.000000*CINTgto_norm(1,env[off+63]); env[off+64] = 0.838; env[off+76] = 1.000000*CINTgto_norm(1,env[off+64]); env[off+65] = 0.292; env[off+77] = 1.000000*CINTgto_norm(1,env[off+65]); env[off+66] = 2.062; env[off+78] = 1.000000*CINTgto_norm(2,env[off+66]); env[off+67] = 0.662; env[off+79] = 1.000000*CINTgto_norm(2,env[off+67]); env[off+68] = 1.397; env[off+80] = 1.000000*CINTgto_norm(3,env[off+68]); for (i = 0, ia = 0, n = 0; i < 2; i++) { bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 8; bas[NCTR_OF +BAS_SLOTS*n] = 2; bas[PTR_EXP +BAS_SLOTS*n] = off+ 0; bas[PTR_COEFF+BAS_SLOTS*n] = off+24; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+ 9; bas[PTR_COEFF+BAS_SLOTS*n] = off+42; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+10; bas[PTR_COEFF+BAS_SLOTS*n] = off+43; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+11; bas[PTR_COEFF+BAS_SLOTS*n] = off+44; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 3; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+12; bas[PTR_COEFF+BAS_SLOTS*n] = off+45; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+15; bas[PTR_COEFF+BAS_SLOTS*n] = off+48; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+16; bas[PTR_COEFF+BAS_SLOTS*n] = off+49; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+17; bas[PTR_COEFF+BAS_SLOTS*n] = off+50; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 2; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+18; bas[PTR_COEFF+BAS_SLOTS*n] = off+51; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 2; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+19; bas[PTR_COEFF+BAS_SLOTS*n] = off+52; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 2; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+20; bas[PTR_COEFF+BAS_SLOTS*n] = off+53; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 3; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+21; bas[PTR_COEFF+BAS_SLOTS*n] = off+54; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 3; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+22; bas[PTR_COEFF+BAS_SLOTS*n] = off+55; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 4; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+23; bas[PTR_COEFF+BAS_SLOTS*n] = off+56; n++; ia++; for (j = 0; j < 3; j++) { bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 3; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+57; bas[PTR_COEFF+BAS_SLOTS*n] = off+69; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+60; bas[PTR_COEFF+BAS_SLOTS*n] = off+72; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+61; bas[PTR_COEFF+BAS_SLOTS*n] = off+73; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 0; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+62; bas[PTR_COEFF+BAS_SLOTS*n] = off+74; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+63; bas[PTR_COEFF+BAS_SLOTS*n] = off+75; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+64; bas[PTR_COEFF+BAS_SLOTS*n] = off+76; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 1; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+65; bas[PTR_COEFF+BAS_SLOTS*n] = off+77; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 2; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+66; bas[PTR_COEFF+BAS_SLOTS*n] = off+78; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 2; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+67; bas[PTR_COEFF+BAS_SLOTS*n] = off+79; n++; bas[ATOM_OF +BAS_SLOTS*n] = ia; bas[ANG_OF +BAS_SLOTS*n] = 3; bas[NPRIM_OF +BAS_SLOTS*n] = 1; bas[NCTR_OF +BAS_SLOTS*n] = 1; bas[PTR_EXP +BAS_SLOTS*n] = off+68; bas[PTR_COEFF+BAS_SLOTS*n] = off+80; n++; ia++; } } nbas = n; printf("cc-pVQZ basis\n"); run_all(atm, natm, bas, nbas, env); free(atm); free(bas); free(env); }
void CINTOpt_setij(CINTOpt *opt, FINT *ng, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) { FINT i, j, ip, jp, io, jo, off; if (opt->prim_offset == NULL) { opt->prim_offset = (FINT *)malloc(sizeof(FINT) * nbas); opt->tot_prim = 0; for (i = 0; i < nbas; i++) { opt->prim_offset[i] = opt->tot_prim; opt->tot_prim += bas(NPRIM_OF, i); } } FINT ijkl_inc; if ((ng[IINC]+ng[JINC]) > (ng[KINC]+ng[LINC])) { ijkl_inc = ng[IINC] + ng[JINC]; } else { ijkl_inc = ng[KINC] + ng[LINC]; } FINT iprim, ictr, jprim, jctr, il, jl; double eij, aij, rr, maxci, maxcj, rirj_g4d; double *ai, *aj, *ri, *rj, *ci, *cj; double *expij, *rij; FINT *cceij; opt->expij = (double **)malloc(sizeof(double *) * opt->tot_prim); opt->rij = (double **)malloc(sizeof(double *) * opt->tot_prim); opt->cceij = (FINT **)malloc(sizeof(FINT *) * opt->tot_prim); for (i = 0; i < nbas; i++) { ri = env + atm(PTR_COORD,bas(ATOM_OF,i)); ai = env + bas(PTR_EXP,i); io = opt->prim_offset[i]; iprim = bas(NPRIM_OF,i); ictr = bas(NCTR_OF,i); ci = env + bas(PTR_COEFF,i); // For derivative/dipole operator, the l-value in g2e is virtually increased il = bas(ANG_OF,i); for (ip = 0; ip < bas(NPRIM_OF,i); ip++) { maxci = max_pgto_coeff(ci, iprim, ictr, ip); maxci = maxci / CINTgto_norm(bas(ANG_OF,i), ai[ip]); expij = (double *)malloc(sizeof(double)*opt->tot_prim); rij = (double *)malloc(sizeof(double)*opt->tot_prim*3); cceij = (FINT *)malloc(sizeof(FINT) * opt->tot_prim); opt->expij[io+ip] = expij; opt->rij[io+ip] = rij; opt->cceij[io+ip] = cceij; for (j = 0; j < nbas; j++) { rj = env + atm(PTR_COORD,bas(ATOM_OF,j)); aj = env + bas(PTR_EXP,j); jo = opt->prim_offset[j]; jprim = bas(NPRIM_OF,j); jctr = bas(NCTR_OF,j); cj = env + bas(PTR_COEFF,j); jl = bas(ANG_OF,j); rr = (ri[0]-rj[0])*(ri[0]-rj[0]) + (ri[1]-rj[1])*(ri[1]-rj[1]) + (ri[2]-rj[2])*(ri[2]-rj[2]); for (jp = 0; jp < bas(NPRIM_OF,j); jp++) { maxcj = max_pgto_coeff(cj, jprim, jctr, jp); maxcj = maxcj / CINTgto_norm(bas(ANG_OF,j), aj[jp]); aij = ai[ip] + aj[jp]; off = jo + jp; eij = rr * ai[ip] * aj[jp] / aij; expij[off] = exp(-eij); rij[off*3+0] = (ai[ip]*ri[0] + aj[jp]*rj[0]) / aij; rij[off*3+1] = (ai[ip]*ri[1] + aj[jp]*rj[1]) / aij; rij[off*3+2] = (ai[ip]*ri[2] + aj[jp]*rj[2]) / aij; if (maxci*maxcj == 0) { cceij[off] = 750; } else if (rr > 1e-12) { /* value estimation based on g0_2e_2d and g0_xx2d_4d, * value/exp(-eij) ~< (il+jl+2)!*(aij/2)^(il+jl)*(ri_or_rj-rij)^(ij+jl)*rirj^max(il,jl) * ~< (il+jl+2)!*(aij/2)^(il+jl)*|rirj|^((il+jl)+max(il,jl)) * But in practice, |rirj|^((il+jl)/2) is large enough to cover all other factors */ rirj_g4d = pow(rr+0.5, (il+jl+ijkl_inc+1)/2); cceij[off] = eij - log(maxci*maxcj*rirj_g4d); } else { /* If basis on the same center, include the (ss|ss)^{1/2} contribution * (ss|ss) = 2\sqrt{aij/pi} */ cceij[off] = -log(maxci*maxcj) - log(aij)/4; } } } } } }
void CINTOpt_setij(CINTOpt *opt, FINT *ng, const FINT *atm, const FINT natm, const FINT *bas, const FINT nbas, const double *env) { FINT i, j, ip, jp, io, jo, off; if (!opt->prim_offset) { opt->prim_offset = (FINT *)malloc(sizeof(FINT) * nbas); opt->tot_prim = 0; for (i = 0; i < nbas; i++) { opt->prim_offset[i] = opt->tot_prim; opt->tot_prim += bas(NPRIM_OF, i); } } FINT ik_inc, jl_inc; if ((ng[IINC]+ng[JINC]) > (ng[KINC]+ng[LINC])) { ik_inc = ng[IINC]; jl_inc = ng[JINC]; } else { ik_inc = ng[KINC]; jl_inc = ng[LINC]; } FINT iprim, ictr, jprim, jctr, il, jl; double eij, aij, rr, maxci, maxcj, rirj_g4d; const double *ai, *aj, *ri, *rj, *ci, *cj; double *expij, *rij; FINT *cceij; opt->expij = (double **)malloc(sizeof(double *) * opt->tot_prim); opt->rij = (double **)malloc(sizeof(double *) * opt->tot_prim); opt->cceij = (FINT **)malloc(sizeof(FINT *) * opt->tot_prim); for (i = 0; i < nbas; i++) { ri = env + atm(PTR_COORD,bas(ATOM_OF,i)); ai = env + bas(PTR_EXP,i); io = opt->prim_offset[i]; iprim = bas(NPRIM_OF,i); ictr = bas(NCTR_OF,i); ci = env + bas(PTR_COEFF,i); // For derivative/dipole operator, the l-value in g2e is virtually increased il = bas(ANG_OF,i) + ik_inc; for (ip = 0; ip < bas(NPRIM_OF,i); ip++) { maxci = max_pgto_coeff(ci, iprim, ictr, ip); maxci = maxci / CINTgto_norm(il, ai[ip]); expij = (double *)malloc(sizeof(double)*opt->tot_prim); rij = (double *)malloc(sizeof(double)*opt->tot_prim*3); cceij = (FINT *)malloc(sizeof(FINT) * opt->tot_prim); opt->expij[io+ip] = expij; opt->rij[io+ip] = rij; opt->cceij[io+ip] = cceij; for (j = 0; j < nbas; j++) { rj = env + atm(PTR_COORD,bas(ATOM_OF,j)); aj = env + bas(PTR_EXP,j); jo = opt->prim_offset[j]; jprim = bas(NPRIM_OF,j); jctr = bas(NCTR_OF,j); cj = env + bas(PTR_COEFF,j); jl = bas(ANG_OF,j) + jl_inc; rr = (ri[0]-rj[0])*(ri[0]-rj[0]) + (ri[1]-rj[1])*(ri[1]-rj[1]) + (ri[2]-rj[2])*(ri[2]-rj[2]); for (jp = 0; jp < bas(NPRIM_OF,j); jp++) { maxcj = max_pgto_coeff(cj, jprim, jctr, jp); maxcj = maxcj/CINTgto_norm(jl, aj[jp]); aij = ai[ip] + aj[jp]; off = jo + jp; eij = rr * ai[ip] * aj[jp] / aij; expij[off] = exp(-eij); rij[off*3+0] = (ai[ip]*ri[0] + aj[jp]*rj[0]) / aij; rij[off*3+1] = (ai[ip]*ri[1] + aj[jp]*rj[1]) / aij; rij[off*3+2] = (ai[ip]*ri[2] + aj[jp]*rj[2]) / aij; /* estimation of the value, based on g0_2e_2d and g0_xx2d_4d, * value ~< exp(-eij)*(il+jl+2)!*(aij/2)^(il+jl)*(ri_or_rj-rij)^(ij+jl)*rirj^max(il,jl) * ~< * exp(-eij)*(il+jl+2)!*(aij/2)^(il+jl)*rirj^((il+jl)+max(il,jl)) * But in practice, rirj^((il+jl)/2) is usually large enough to cover all other factors */ /* rr+1 to prevent log() diverge when i,j on same center */ rirj_g4d = pow((rr+1), (il+jl+1)/2); /*cceij[off] =-log(expij[off]*maxci*maxcj*rirj_g4d); when eij is big, expij == 0, singular value in cceij */ cceij[off] = eij - log(maxci*maxcj*rirj_g4d); } } } } }
int main() { int natm = 2; int nbas = 4; // ATM_SLOTS = 6; BAS_SLOTS = 8; int *atm = malloc(sizeof(int) * natm * ATM_SLOTS); int *bas = malloc(sizeof(int) * nbas * BAS_SLOTS); double *env = malloc(sizeof(double) * 10000); int i, n, off; off = PTR_ENV_START; // = 20 i = 0; atm[CHARGE_OF + ATM_SLOTS * i] = 1; atm[PTR_COORD + ATM_SLOTS * i] = off; env[off + 0] = 0; // x (Bohr) env[off + 1] = 0; // y (Bohr) env[off + 2] =-.8; // z (Bohr) i++; off += 3; atm[CHARGE_OF + ATM_SLOTS * i] = 1; atm[PTR_COORD + ATM_SLOTS * i] = off; env[off + 0] = 0; env[off + 1] = 0; env[off + 2] =.8; // (Bohr) i++; off += 3; n = 0; /* basis #0 with kappa > 0 => p_1/2 */ bas[ATOM_OF + BAS_SLOTS * n] = 0; bas[ANG_OF + BAS_SLOTS * n] = 0; bas[NPRIM_OF + BAS_SLOTS * n] = 3; bas[NCTR_OF + BAS_SLOTS * n] = 2; bas[KAPPA_OF + BAS_SLOTS * n] = 1; bas[PTR_EXP + BAS_SLOTS * n] = off; env[off + 0] = 6.; env[off + 1] = 2.; env[off + 2] = .8; off += 3; bas[PTR_COEFF+ BAS_SLOTS * n] = off; env[off + 0] = .7 * CINTgto_norm(bas[ANG_OF+BAS_SLOTS*n], env[bas[PTR_EXP+BAS_SLOTS*n]+0]); env[off + 1] = .6 * CINTgto_norm(bas[ANG_OF+BAS_SLOTS*n], env[bas[PTR_EXP+BAS_SLOTS*n]+1]); env[off + 2] = .5 * CINTgto_norm(bas[ANG_OF+BAS_SLOTS*n], env[bas[PTR_EXP+BAS_SLOTS*n]+2]); env[off + 3] = .4 * CINTgto_norm(bas[ANG_OF+BAS_SLOTS*n], env[bas[PTR_EXP+BAS_SLOTS*n]+0]); env[off + 4] = .3 * CINTgto_norm(bas[ANG_OF+BAS_SLOTS*n], env[bas[PTR_EXP+BAS_SLOTS*n]+1]); env[off + 5] = .2 * CINTgto_norm(bas[ANG_OF+BAS_SLOTS*n], env[bas[PTR_EXP+BAS_SLOTS*n]+2]); off += 6; n++; /* basis #1 with kappa = 0 => p_1/2, p_3/2 */ bas[ATOM_OF + BAS_SLOTS * n] = 0; bas[ANG_OF + BAS_SLOTS * n] = 1; bas[NPRIM_OF + BAS_SLOTS * n] = 1; bas[NCTR_OF + BAS_SLOTS * n] = 1; bas[KAPPA_OF + BAS_SLOTS * n] = 0; bas[PTR_EXP + BAS_SLOTS * n] = off; env[off + 0] = .9; off += 1; bas[PTR_COEFF+ BAS_SLOTS * n] = off; env[off + 0] = 1. * CINTgto_norm(bas[ANG_OF+BAS_SLOTS*n], env[bas[PTR_EXP+BAS_SLOTS*n]]); off += 1; n++; /* basis #2 == basis #0 */ bas[ATOM_OF + BAS_SLOTS * n] = 1; bas[ANG_OF + BAS_SLOTS * n] = bas[ANG_OF + BAS_SLOTS * 0]; bas[NPRIM_OF + BAS_SLOTS * n] = bas[NPRIM_OF + BAS_SLOTS * 0]; bas[NCTR_OF + BAS_SLOTS * n] = bas[NCTR_OF + BAS_SLOTS * 0]; bas[KAPPA_OF + BAS_SLOTS * n] = bas[KAPPA_OF + BAS_SLOTS * 0]; bas[PTR_EXP + BAS_SLOTS * n] = bas[PTR_EXP + BAS_SLOTS * 0]; bas[PTR_COEFF+ BAS_SLOTS * n] = bas[PTR_COEFF+ BAS_SLOTS * 0]; n++; /* basis #3 == basis #1 */ bas[ATOM_OF + BAS_SLOTS * n] = 1; bas[ANG_OF + BAS_SLOTS * n] = bas[ANG_OF + BAS_SLOTS * 1]; bas[NPRIM_OF + BAS_SLOTS * n] = bas[NPRIM_OF + BAS_SLOTS * 1]; bas[NCTR_OF + BAS_SLOTS * n] = bas[NCTR_OF + BAS_SLOTS * 1]; bas[KAPPA_OF + BAS_SLOTS * n] = bas[KAPPA_OF + BAS_SLOTS * 1]; bas[PTR_EXP + BAS_SLOTS * n] = bas[PTR_EXP + BAS_SLOTS * 1]; bas[PTR_COEFF+ BAS_SLOTS * n] = bas[PTR_COEFF+ BAS_SLOTS * 1]; n++; /* * call one-electron spinor integrals */ int j, k, l; int di, dj, dk, dl; int shls[4]; double complex *buf; i = 0; shls[0] = i; di = CINTcgto_spinor(i, bas); j = 1; shls[1] = j; dj = CINTcgto_spinor(j, bas); buf = malloc(sizeof(double complex) * di * dj); if (0 != cint1e_spnucsp(buf, shls, atm, natm, bas, nbas, env)) { printf("This integral is not 0.\n"); } else { printf("This integral is 0.\n"); } free(buf); /* * call two-electron spinor integrals */ i = 0; shls[0] = i; di = CINTcgto_spinor(i, bas); j = 1; shls[1] = j; dj = CINTcgto_spinor(j, bas); k = 2; shls[2] = k; dk = CINTcgto_spinor(k, bas); l = 2; shls[3] = l; dl = CINTcgto_spinor(l, bas); buf = malloc(sizeof(double complex) * di * dj * dk * dl); if (0 != cint2e_spsp1(buf, shls, atm, natm, bas, nbas, env, NULL)) { printf("This integral is not 0.\n"); } else { printf("This integral is 0.\n"); } free(buf); CINTOpt *opt = NULL; cint2e_spsp1_optimizer(&opt, atm, natm, bas, nbas, env); i = 0; shls[0] = i; di = CINTcgto_spinor(i, bas); j = 1; shls[1] = j; dj = CINTcgto_spinor(j, bas); k = 2; shls[2] = k; dk = CINTcgto_spinor(k, bas); l = 2; shls[3] = l; dl = CINTcgto_spinor(l, bas); buf = malloc(sizeof(double complex) * di * dj * dk * dl); if (0 != cint2e_spsp1(buf, shls, atm, natm, bas, nbas, env, opt)) { printf("This integral is not 0.\n"); } else { printf("This integral is 0.\n"); } free(buf); CINTdel_optimizer(&opt); free(atm); free(bas); free(env); }