Hi I have been pulling my hair out trying to figure this out. Please help!!! Here is my project description: By using a pointer to pointers **A and **B and the function calloc() allocate the memory for the 4x4 matrices A[][] and B[][]. By using the pointers *a and *b and the function malloc() allocate the memory for the 4-dimensional vectors a[] and b[]. Read the components of a and A from the given input file matrix.dat (which is in the public/final directory; you need to copy it into your directory). The first line of the input file contains the components of a. The rows of matrix A are the last four lines of the input file. Print the components of a[] and A[][]. By calling the function pmatrix(A,B,a,b,n), n=4, which you will construct, determine the components of the matrix B=1.5*A*A, and the vector b=(A*a)+0.5*a. Print the components of the matrix B and the vector b in the main. Free dinamically allocated memory. .................................................. .............................. Output should look like: Vector a is: a[] = -1.200 1.200 -2.000 -0.500 Matrix A is: 2.700 1.500 3.200 2.400 -3.200 0.700 -2.600 4.300 1.400 0.600 2.100 -1.800 1.500 1.700 -2.600 -0.700 Matrix B is: ..... ...... ...... ...... ..... ...... ...... ...... ..... ...... ...... ...... ..... ...... ...... ...... Vector b is: b[] = ..... ..... ..... ..... My codes and I am stuck. Code: //void prob3(double ***A, double ***B, double **a, double **b) void prob3(void) { FILE *matrix; int k; double ***A, ***B, **a, **b; matrix=fopen("matrix.dat", "r"); *A= (double**)malloc(sizeof(double*)*4); *B= (double**)malloc(sizeof(double*)*4); *a= (double*)malloc(sizeof(double)*4); *b= (double*)malloc(sizeof(double)*4); for(k=0; k<4; k++) { fscanf(matrix, "%lf %lf %lf %lf", &(*A)[k][0], &(*A)[k][1], &(*A)[k][2], &(*A)[k][3]); } for(k=0; k<4; k++) { fscanf(matrix, "%lf", &(*a)[k]); } matrix1(*A, *B, *a, *b, 4); } void problem3() { double **A, **B, *a, *b; int row, col; printf("\nMatrix B is:\n\n"); for(row=0; row<4; row++) { for(col=0; col<4; col++) { printf("%.3f ", B[row][col]); } } printf("\nVector b is: \n\n"); printf("a[] = "); for(col=0; col<4; col++) { printf("%.3f ", b[col]); } for(row=0; row<4; row++) { free(A[row]); free(B[row]); } free(A); free(B); free(a); free(b); }