template<class Real>
setup_givens_rotation_result<Real> setup_givens_rotation(Real a, Real b)noexcept;
template<class Real>
setup_givens_rotation_result<complex<Real>>
setup_givens_rotation(complex<Real> a, complex<Real> b)noexcept;
These functions compute the Givens plane rotation
represented by the two values c and s
such that the 2 x 2 system of equations
[cs−¯¯¯sc]⋅[ab]=[r0]
holds, where c is always a real scalar, and c2+|s|2=1.
That is, c and s represent a 2 x 2 matrix,
that when multiplied by the right by the input vector
whose components are a and b,
produces a result vector
whose first component r is the Euclidean norm of the input vector, and
whose second component is zero.
Returns: c, s, r,
where c and s form the Givens plane rotation
corresponding to the input a and b,
and r is the Euclidean norm of the two-component vector
formed by a and b.