private double[][] householder(double[] a)
        {
            double[] v = a.Divide((a[0] + Special.Sign(Norm.Euclidean(a), a[0])));
            v[0] = 1;
            var H  = Jagged.Identity(a.Length);
            var vr = Jagged.RowVector(v);
            var vc = Jagged.ColumnVector(v);
            var t  = vc.Dot(vr);

            H.Subtract((2 / v.Dot(v)).Multiply(t), result: H);
            return(H);
        }