/// <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);
        }