givens(p, q)

Calculates the Givens rotation matrix.

pThe value which can rotate to any number.
qThe value which rotates to zero.
return valueRotation matrix zeroing out q.

An entry in the offdiagonal of a matrix M can be eliminted by a rotation G: G*M will have a prescribed zero offdiagonal element. The parameter p is the corresponding diagonal element in the same column, and q is the offdiagonal in question.

M = [1,2,3;4,5,6;7,8,9] col = 2 row = 1 G = eye(numRows(M)); G[col,row;col,row] = givens(M[col;col], M[row;col]); G*M
M = [1,2,3;4,5,6;7,8,9] col = 1 row = 2 G = eye(numCols(M)); G[row,col;row,col] = givens(M[row;row]', M[row;col]'); M*G'