Lines Matching full:scalar
34 template<typename Scalar> class JacobiRotation
37 typedef typename NumTraits<Scalar>::Real RealScalar;
43 JacobiRotation(const Scalar& c, const Scalar& s) : m_c(c), m_s(s) {}
45 Scalar& c() { return m_c; }
46 Scalar c() const { return m_c; }
47 Scalar& s() { return m_s; }
48 Scalar s() const { return m_s; }
66 bool makeJacobi(const RealScalar& x, const Scalar& y, const RealScalar& z);
68 void makeGivens(const Scalar& p, const Scalar& q, Scalar* z=0);
71 void makeGivens(const Scalar& p, const Scalar& q, Scalar* z, internal::true_type);
72 void makeGivens(const Scalar& p, const Scalar& q, Scalar* z, internal::false_type);
74 Scalar m_c, m_s;
82 template<typename Scalar>
83 bool JacobiRotation<Scalar>::makeJacobi(const RealScalar& x, const Scalar& y, const RealScalar& z)
87 typedef typename NumTraits<Scalar>::Real RealScalar;
88 if(y == Scalar(0))
90 m_c = Scalar(1);
91 m_s = Scalar(0);
122 * \sa JacobiRotation::makeJacobi(RealScalar, Scalar, RealScalar), MatrixBase::applyOnTheLeft(), MatrixBase::applyOnTheRight()
124 template<typename Scalar>
126 inline bool JacobiRotation<Scalar>::makeJacobi(const MatrixBase<Derived>& m, typename Derived::Index p, typename Derived::Index q)
147 template<typename Scalar>
148 void JacobiRotation<Scalar>::makeGivens(const Scalar& p, const Scalar& q, Scalar* z)
150 makeGivens(p, q, z, typename internal::conditional<NumTraits<Scalar>::IsComplex, internal::true_type, internal::false_type>::type());
155 template<typename Scalar>
156 void JacobiRotation<Scalar>::makeGivens(const Scalar& p, const Scalar& q, Scalar* r, internal::true_type)
162 if(q==Scalar(0))
164 m_c = numext::real(p)<0 ? Scalar(-1) : Scalar(1);
168 else if(p==Scalar(0))
180 Scalar ps = p / p1;
182 Scalar qs = q / p1;
189 m_c = Scalar(1)/u;
195 Scalar ps = p / q1;
197 Scalar qs = q / q1;
214 template<typename Scalar>
215 void JacobiRotation<Scalar>::makeGivens(const Scalar& p, const Scalar& q, Scalar* r, internal::false_type)
219 if(q==Scalar(0))
221 m_c = p<Scalar(0) ? Scalar(-1) : Scalar(1);
222 m_s = Scalar(0);
225 else if(p==Scalar(0))
227 m_c = Scalar(0);
228 m_s = q<Scalar(0) ? Scalar(1) : Scalar(-1);
233 Scalar t = q/p;
234 Scalar u = sqrt(Scalar(1) + numext::abs2(t));
235 if(p<Scalar(0))
237 m_c = Scalar(1)/u;
243 Scalar t = p/q;
244 Scalar u = sqrt(Scalar(1) + numext::abs2(t));
245 if(q<Scalar(0))
247 m_s = -Scalar(1)/u;
304 typedef typename VectorX::Scalar Scalar;
305 enum { PacketSize = packet_traits<Scalar>::size };
306 typedef typename packet_traits<Scalar>::type Packet;
312 Scalar* EIGEN_RESTRICT x = &_x.coeffRef(0);
313 Scalar* EIGEN_RESTRICT y = &_y.coeffRef(0);
334 conj_helper<Packet,Packet,NumTraits<Scalar>::IsComplex,false> pcj;
338 Scalar xi = x[i];
339 Scalar yi = y[i];
344 Scalar* EIGEN_RESTRICT px = x + alignedStart;
345 Scalar* EIGEN_RESTRICT py = y + alignedStart;
386 Scalar xi = x[i];
387 Scalar yi = y[i];
400 conj_helper<Packet,Packet,NumTraits<Scalar>::IsComplex,false> pcj;
401 Scalar* EIGEN_RESTRICT px = x;
402 Scalar* EIGEN_RESTRICT py = y;
419 Scalar xi = *x;
420 Scalar yi = *y;