プログラムを実行するとハングします。ダブルポインターの設定に何か問題がありますか? これをコメントアウトすると、プログラムはハングしません。
double **transverse;
transverse = malloc(rows*sizeof(double*)); //allocate memory to double pointer
for (i = 0; i < rows; i++)
{
transverse[i] = malloc(rows*sizeof(double*));
for (j = 0; j < rows; j++)
transverse[i][j] = 0;
}