Math 420 Homework 5
Q1: Cleaning up memory usage:
i. Create a “destructor” function for your Homework 4 dmatrix that frees
allocated array memory and sets the data pointer in the dmatrix to NULL.
ii. Review your Homework 4 dmatrix code and driver routines. Find and
eliminate all instances of memory leakage [ i.e. make sure your destructor is
called before a dmatrix goes out of scope ]. Document all instances where you
had to add or change code . It is sufficient to include your new codes in your
report and annotate the changes by hand .
Q2: Using BLAS and LAPACK:
a) Replace your self-written matrix operations in Homework 4 with functions that call
BLAS and LAPACK to perform the following tasks.
i. matrix A times matrix B
ii. matrix A plus matrix B
iii. scalar c times matrix A
iv. matrix A left divides matrix B
1. Your matrix_multiply routine must call dgemm.
2. You are also likely to use daxpy and dgesv
3. You will need to pay attention to the calling convention when invoking a
Fortran subroutine from C.
4. Q2 part iv is not optional.
5. Modify your dmatrix struct and set/get functions to use a contiguous column
major storage format.
b) Use matrices A and B from Homework 4 Q6 and compute the following using your
new BLAS/LAPACK based operators :
i. Compute C =AB
ii. Compute D=A+C
iii. Compute E=1.2*D
iv. Compute F=A\D