Matrix.Rotate($M$,$U$) makes the matrix transformation $U^* . M . U^T$.
M = Matrix.New({{ 1, I, 2, I}, {-I, 1, I, 2}, { 2,-I, 4, I}, {-I, 2,-I, 4}}) val, fun = Matrix.Eigensystem(M) Mdiag = Chop(Rotate(M,fun)) print(Mdiag)
{ { -1.1401 , 0 , 0 , 0 } , { 0 , 0.6972 , 0 , 0 } , { 0 , 0 , 4.3028 , 0 } , { 0 , 0 , 0 , 6.1401 } }