norm2[x_ /; VectorQ[x]] := N[Sqrt[Sum[x[[i]]^2, {i, 1, Length[x]}]]] href[a_ /; VectorQ[a], k_Integer] := Block[{alpha, beta, n, u}, n = Length[a]; alpha = If[a[[k]] != 0, Sign[a[[k]]], 1]* norm2[a[[Range[k, n]]]]; u = a; If[k > 1, u[[Range[1, k - 1]]] = 0]; u[[k]] += alpha; beta = alpha*u[[k]]; IdentityMatrix[n] - 1/beta*Outer[Times, u, u]]