function[b,c,s]=giv(a1,a2) % This Matlab routine finds a 2*2 Givens rotation %[c,s\\-conj(s),c], where c is real and s is complex, % which transforms the vector [a1,a2]^T into the vector [b,0] if (abs(a1)==0) c=0.;s=1.;b=a2; else if(abs(a2)==0) c=1.; s=0.; b=a1; else %d=-(a2/a1)*abs(a1/a2); d=-(a2/abs(a2))*(abs(a1)/a1); if (abs(a2)>=abs(a1)) e=abs(a1/a2); s=1/sqrt(1+e^2); c=e*s; s=d*s; else e=abs(a2/a1); c=1/sqrt(1+e^2); s=e*c; s=d*s; end s=-conj(s); b=c* a1+ s* a2; end end