% test diag_ckt_invar2() global_defs; example = 1; switch example case (1) a0= get_unit_vec(randn(3,1)); b0= get_unit_vec(randn(3,1)); a1= get_unit_vec(randn(3,1)); b1= get_unit_vec(randn(3,1)); otherwise error("example number is out of range"); end ckt = dr11(b1,b0)*dr11(a1,a0); ckt_invar = ckt*dr11(-a1,-a0)*dr11(-b1,-b0); vecs_out = diag_ckt_invar2(ckt_invar); b0f=vecs_out(1:3,1); a0f=vecs_out(1:3,2); b1f=vecs_out(4:6,1); a1f=vecs_out(4:6,2); fin_ckt = dr11(b1f,b0f)*dr11(a1f,a0f); %fin_ckt'*ckt is even number of DC-NOTs so %it always has det=1 [U1,U0]= factor_SU2pow2_matrix(fin_ckt'*ckt); error1 = norm(ckt - fin_ckt*kron(U1,U0))