1function Y = solveSylvPowersRealSchur_FW(A, B, C)
2% X = solveSylvPowersRealSchur_FW() solves the equation
3% sum_{j=1}^N B_j Y A^{j-1} = C
5% B = [B_1 B_2 ... B_N], B_j: n x n
12[U,T] = schur(A,
'real');
20 Tvec(:,i*m+1:(i+1)*m) = Tvec(:,(i-1)*m+1:i*m)*T;
23%Z: matrix coeff of X_k
27B = reshape(B, n^2, N);
28Tvec = reshape(Tvec, m^2, N)
';
31 if abs(T(k+1,k)) < epsilon
33 W = reshape(B*Tvec(:,(k-1)*m+1:(k-1)*m+k-1), n,n*(k-1))*X(1:n*(k-1));
37 Z = reshape(B*Tvec(:,(k-1)*m+k), n, n);
39 X(n*(k-1)+1:n*k) = Z\(E(:,k) - W);
43 W = [ reshape(B*Tvec(:,(k-1)*m+1:(k-1)*m+k-1), n, n*(k-1))*X(1:n*(k-1));
44 reshape(B*Tvec(:,k*m+1:k*m+k-1), n, n*(k-1))*X(1:n*(k-1))];
48 Z = [ reshape(B*Tvec(:,(k-1)*m+k), n, n) reshape(B*Tvec(:,(k-1)*m+k+1), n, n);
49 reshape(B*Tvec(:,k*m+k), n, n) reshape(B*Tvec(:,k*m+k+1), n, n)];
51 X(n*(k-1)+1:n*(k+1)) = Z\([E(:,k);E(:,k+1)] - W);
57 W = reshape(B*Tvec(:,(k-1)*m+1:(k-1)*m+k-1), n, n*(k-1))*X(1:n*(k-1));
58 Z = reshape(B*Tvec(:,(k-1)*m+k), n, n);
59 X(n*(k-1)+1:n*k) = Z\(E(:,k) - W);