x2 - code for transforming indices

int i, j;
double mat[4][4] = {
	{0, 1, 2, 3},
	{4, 5, 6, 7},
	{8, 9, 10, 11},
	{12, 13, 14, 15}
};
for(i=0; i<4; i++){
	printf("\n");
	for(j=0; j<4; j++){
		printf("%g ", mat[i][j]);
	}
}
double * arr = malloc(16 * sizeof(double));
for(i=0; i<4; i++){
	for (j=0; j<4; j++){
		k = 4 * i + j;
		arr[k] = mat[i][j];
	}
}
/* printing using original indices */
for(i=0; i<4; i++){
	printf("\n");
	for(j=0; j<4; j++){
		k = 4 * i + j;
		printf("%g ", arr[k]);
	}
}

/* printing using new index*/
for(k=0; k<16; k++){
	if((k>0) && (k%4==0)) printf("\n");
	printf("%g ", arr[k]);
}