diff options
Diffstat (limited to 'bloch_messiah.m')
-rw-r--r-- | bloch_messiah.m | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/bloch_messiah.m b/bloch_messiah.m index 6724a26..4050102 100644 --- a/bloch_messiah.m +++ b/bloch_messiah.m @@ -1,10 +1,9 @@ -function [ut1, st1, v1] = bloch_messiah(S, tol, rounding) +function [ut1, st1, v1] = bloch_messiah(S, tol) % Bloch-Messiah decomposition of a symplectic matrix. % % Args: % S (matrix): symplectic matrix % tol (double): tolerance for symplectic check (default: 1e-10) - % rounding (int): decimal places for rounding singular values (default: 9) % % Returns: % ut1, st1, v1 (matrices): Decomposition matrices such that S = ut1 * st1 * v1 @@ -12,9 +11,6 @@ function [ut1, st1, v1] = bloch_messiah(S, tol, rounding) if nargin < 2 tol = 1e-10; end - if nargin < 3 - rounding = 9; - end [n, m] = size(S); @@ -35,7 +31,7 @@ function [ut1, st1, v1] = bloch_messiah(S, tol, rounding) if norm(S' * S - eye(2*n)) >= tol [u, sigma] = polardecomp(S, 'left'); - [ss, uss] = takagi(sigma, tol, rounding); + [ss, uss] = takagi(sigma, tol); % Apply permutation matrix perm = [1:n, 2*n:-1:n+1]; @@ -49,7 +45,7 @@ function [ut1, st1, v1] = bloch_messiah(S, tol, rounding) st = pmat * diag(ss) * pmat; % Identify degenerate subspaces - st_diag = round(diag(st), rounding); + st_diag = diag(st); [~, ~, ic] = unique(st_diag(1:n)); stop_is = cumsum(accumarray(ic, 1)); start_is = [0; stop_is(1:end-1)] + 1; |