function [Q, R] = Givens2(A);
[m, n] = size(A);
Q = eye(m);
for k = 1 : min (m - 1, n)
    for l = k + 1 : n
        r = sqrt(A(k, k) * A(k, k) + A(l, k) * A(l, k));
        c = A(k, k) / r;
        s = A(l, k) / r;
        Ri=eye(n);
        Ri(k,k)=c;
        Ri(l,k)=s;
        Ri(k,l)=-s;
        Ri(l,l)=c;
        %Ri*Ri'
        Ri*A
        if k==1 & l==2 G=Ri;
        else G=G*Ri;
            
        end
        if k==min(m-1,n) & l==n
            Ri*A
        end
        G
        %A([k, l], :) = [c, s; -s, c] * A([k, l], :);
        %Q([k, l], :) = [c, s; -s, c] * Q([k, l], :);
        
    end
end
R=A;
