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