Now when I repasted it, the smaller code is not working either. Let me post everything...
Sorry for the complex variables...
main program:
Code:
#include<stdio.h>
#include<math.h>
#include"vect_pinv2.c"
#define Pi 3.14159265
int main()
{
int M=3, cluster_number=2;
double AS_deg[1][2]={20, 35};
double phi_deg[1][2]={25,20};
double delta_phi_deg[1][2]={90, 90};
double amplitude_cluster[1][2]={20, 30};
double sigma_deg[1][2]={20, 31};
/*int PAS_type=2;*/
/*double d_norm[1][3]={0, 0.5, 1};*/
/*double Q[1][2]={0.096, 0.1891};*/
int m;
int i,j,k;
double C;
double result_xx[100][M];
double result_xy[100][M];
double tmp_xx_gaussian[100][M];
double tmp_xy_gaussian[100][M];
double phi_rad[1][cluster_number], sigma_rad[1][cluster_number];
double delta_phi_rad[1][cluster_number];
double Ar[100][cluster_number];
double Ai[100][cluster_number];
double pinv[1][cluster_number], n, x, y;
double erfr1, erfi1, erfr2, erfi2;
char z[15];
/*-----------------------Rxx and Rxy uniform-----------------*/
/*Conversion degree -> radian*/
for(j=0;j<cluster_number;j++)
{
phi_rad[0][j]=phi_deg[0][j]*(Pi/180);
sigma_rad[0][j]=sigma_deg[0][j]*(Pi/180)*sqrt(2);
delta_phi_rad[0][j]=delta_phi_deg[0][j]*(Pi/180);
}
vect_pinv(cluster_number, sigma_rad, pinv);
for(j=0; j<cluster_number; j++)
{
C+=(delta_phi_rad[0][j]*pinv[0][j]);
printf("%.4lf\t", pinv[0][j]);
}printf("%.4lf\t", C);
return 0;
}
vect_inv.c (function code)
Code:
#include<stdio.h>
double vect_pinv(int cluster_number, double sigma_rad[1][cluster_number], double pinv[1][cluster_number])
{
int i;
double mag;
for(i=0;i<cluster_number;i++)
mag+= (sigma_rad[0][i]*sigma_rad[0][i]);
for(i=0;i<cluster_number;i++)
{
pinv[0][i]= sigma_rad[0][i]/mag;
}
return 3;
}
Something's wrong with my variable C, I think...but what?