float determinant(float **input,int order)
{
int j,p,q,t,i;
float pr;
float d;
float *c;
//c=memory_alloc_2D1(row,column);
float **answer;
answer=memory_alloc_2D1(order,order);
float **b;
b=memory_alloc_2D1(order,order);
for(j=1;j<=order;j++)
{
int r=1,s=1;
for(p=1;p<=order;p++)
{
for(q=1;q<=order;q++)
{
if(p!=1&&q!=j)
{
answer\[r\]\[s\]=input\[p\]\[q\]; // error as segmentation fault
s++;
if(s>order-1)
{
r++;
s=1;
}
}
}
}
for(t=1,pr=1;t<=(1+j);t++)
pr=(-1)\*pr;
c\[j\]=pr\*determinant(b,order-1);
}
for(j=1,d=0.0;j<=order;j++)
{
d=d+(input\[1\]\[j\]\*c\[j\]);
}
return(d);
}
main.c
float determinantmatrix;
determinantmatrix=determinant(covariance1,waveframesize);
//covariance1 is the input matrix