どこが間違っているのか、どなたかご教授いただけますか?
Cに関しては勉強してまだ2ヶ月足らずで、分からないことも多々あります。
どうかよろしくお願いします。
実行例
基底関数の各パラメーターを入力してください。
d1:1
d2:2
d3:3
da1:1
da2:2
da3:3
ex11=nan
ex12=nan
ex13=nan
ex21=nan
ex22=nan
ex23=nan
ex31=nan
ex32=nan
ex33=nan
// 電子間反発積分に関して
#include <stdio.h>
#include <math.h>
/*交換積分(電子間反発積分)のexint1関数(rs|tu)の定義*/
double exint1(double x, double y, double z, int n1, int n2)
{
int i, j;
double r, u;
double p1 = x + y;
double s1 = x*y/(x+y);
double p2 = x + z;
double s2 = x*z/(x+z);
double s3 = y + z;
double p3 = y*z/(y+z);
double q = r + u;
double t = r*u/(r+u);
double PI = 3.1416;
double Rab = 1.4144;
double sum;
int k, l;
if(k = 1)
r = x;
else if(k = 2)
r = y;
else
r = z;
if(l = 1)
u = x;
else if(l = 2)
u = y;
else
u = z;
if(i == j) // ex11, ex22, ex33
for(k = 1; k < 4; k++)
{
for(l = 1; l < 4; l++)
{
sum += sqrt(PI*PI*PI*PI*PI)/(x*q*sqrt(2*x+q))*exp(-(x/2+t)*Rab*Rab);
return sum;
}
}
else if(i == 1 && j == 2) // ex12
for(k = 1; k < 4; k++)
{
for(l = 1; l < 4; l++)
{
sum += 2*sqrt(PI*PI*PI*PI*PI)/(p1*q*sqrt(p1+q))*exp(-(s1+t)*Rab*Rab);
return sum;
}
}
else if(i == 2 && j == 1) // ex21
for(k = 1; k < 4; k++)
{
for(l = 1; l < 4; l++)
{
sum += 2*sqrt(PI*PI*PI*PI*PI)/(p1*q*sqrt(p1+q))*exp(-(s1+t)*Rab*Rab);
return sum;
}
}
else if(i == 1 && j == 3) // ex13
for(k = 1; k < 4; k++)
{
for(l = 1; l < 4; l++)
{
sum += 2*sqrt(PI*PI*PI*PI*PI)/(p2*q*sqrt(p2+q))*exp(-(s2+t)*Rab*Rab);
return sum;
}
}
else if(i == 3 && j == 1) // ex31
for(k = 1; k < 4; k++)
{
for(l = 1; l < 4; l++)
{
sum += 2*sqrt(PI*PI*PI*PI*PI)/(p2*q*sqrt(p2+q))*exp(-(s2+t)*Rab*Rab);
return sum;
}
}
else // ex23, ex32
for(k = 1; k < 4; k++)
{
for(l = 1; l < 4; l++)
{
sum += 2*sqrt(PI*PI*PI*PI*PI)/(p3*q*sqrt(p3+q))*exp(-(s3+t)*Rab*Rab);
return sum;
}
}
return (0);
}
int main()
{
double d1, d2, d3; /*STO-3Gの短縮係数di*/
double da1, da2, da3; /*STO-3Gの短縮指数αi*/
/*値の入力*/
printf("基底関数の各パラメーターを入力してください。\n");
printf("d1:"); scanf("%lf", &d1);
printf("d2:"); scanf("%lf", &d2);
printf("d3:"); scanf("%lf", &d3);
printf("da1:"); scanf("%lf", &da1);
printf("da2:"); scanf("%lf", &da2);
printf("da3:"); scanf("%lf", &da3);
/*計算結果*/
printf("ex11=%.4f\n", exint1(da1, da2, da3, 1, 1));
printf("ex12=%.4f\n", exint1(da1, da2, da3, 1, 2));
printf("ex13=%.4f\n", exint1(da1, da2, da3, 1, 3));
printf("ex21=%.4f\n", exint1(da1, da2, da3, 2, 1));
printf("ex22=%.4f\n", exint1(da1, da2, da3, 2, 2));
printf("ex23=%.4f\n", exint1(da1, da2, da3, 2, 3));
printf("ex31=%.4f\n", exint1(da1, da2, da3, 3, 1));
printf("ex32=%.4f\n", exint1(da1, da2, da3, 3, 2));
printf("ex33=%.4f\n", exint1(da1, da2, da3, 3, 3));
return (0);
}