/// <summary> /// Householder Reflection: Evaluate symmetric? unitary Q such that Q*v = -sigma*||v||*e1 /// </summary> public static ComplexMatrix Reflection(ComplexVector v) { Complex sigma = v[0].Sign; ComplexVector u = v.Clone(); u[0] += sigma * v.Norm(); ComplexMatrix m = ComplexMatrix.Identity(v.Length, v.Length); m.MultiplyAccumulateInplace(u.TensorMultiply(u), -2d / u.ScalarMultiply(u)); return(m); }