load("fourie")$ conj_t(mat) := transpose(conjugate(mat))$ is_hermitian(mat) := equalp(mat, conj_t(mat))$ is_normal(mat) := equalp(mat.conj_t(mat), conj_t(mat).mat)$ is_unitary(mat) := equalp(ident(length(mat)), mat.conj_t(mat))$ mat1: matrix([3, 2+%i], [2-%i, 1])$ mat2: matrix([1, 1, 0], [0, 1, 1], [1, 0, 1])$ s: sqrt(2)/2$ mat3: matrix([s, s, 0], [-s*%i, s*%i, 0], [0, 0, %i])$ conj_tests(mat) := block( disp("Chosen matrix:", mat, "Conjugate transpose:", conj_t(mat)), test_funs: [is_hermitian, is_normal, is_unitary], queries: ["Hermitian? ", "Normal? ", "Unitary? "], for i from 1 thru 3 do(print(sconcat(queries[i], test_funs[i](mat)))) )$ map(conj_tests, [mat1, mat2, mat3]);