0001
0002
0003
0004
0005 function [A,B,Q,Z] = qzdiv(stake,A,B,Q,Z)
0006
0007
0008
0009
0010
0011
0012
0013 [n jnk] = size(A);
0014 root = abs([diag(A) diag(B)]);
0015 root(:,1) = root(:,1)-(root(:,1)<1.e-13).*(root(:,1)+root(:,2));
0016 root(:,2) = root(:,2)./root(:,1);
0017 for i = n:-1:1
0018 m=0;
0019 for j=i:-1:1
0020 if (root(j,2) > stake | root(j,2) < -.1)
0021 m=j;
0022 break
0023 end
0024 end
0025 if (m==0)
0026 return
0027 end
0028 for k=m:1:i-1
0029 [A B Q Z] = qzswitch(k,A,B,Q,Z);
0030 tmp = root(k,2);
0031 root(k,2) = root(k+1,2);
0032 root(k+1,2) = tmp;
0033 end
0034 end