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

Prev Next