Lines 282-298
struct functor_traits<scalar_opposite_op
Link Here
|
282 |
/** \internal |
282 |
/** \internal |
283 |
* \brief Template functor to compute the absolute value of a scalar |
283 |
* \brief Template functor to compute the absolute value of a scalar |
284 |
* |
284 |
* |
285 |
* \sa class CwiseUnaryOp, Cwise::abs |
285 |
* \sa class CwiseUnaryOp, Cwise::abs |
286 |
*/ |
286 |
*/ |
287 |
template<typename Scalar> struct scalar_abs_op { |
287 |
template<typename Scalar> struct scalar_abs_op { |
288 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_abs_op) |
288 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_abs_op) |
289 |
typedef typename NumTraits<Scalar>::Real result_type; |
289 |
typedef typename NumTraits<Scalar>::Real result_type; |
290 |
EIGEN_STRONG_INLINE const result_type operator() (const Scalar& a) const { return internal::abs(a); } |
290 |
EIGEN_STRONG_INLINE const result_type operator() (const Scalar& a) const { using std::abs; return abs(a); } |
291 |
template<typename Packet> |
291 |
template<typename Packet> |
292 |
EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a) const |
292 |
EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a) const |
293 |
{ return internal::pabs(a); } |
293 |
{ return internal::pabs(a); } |
294 |
}; |
294 |
}; |
295 |
template<typename Scalar> |
295 |
template<typename Scalar> |
296 |
struct functor_traits<scalar_abs_op<Scalar> > |
296 |
struct functor_traits<scalar_abs_op<Scalar> > |
297 |
{ |
297 |
{ |
298 |
enum { |
298 |
enum { |
Lines 416-448
struct functor_traits<scalar_imag_ref_op
Link Here
|
416 |
/** \internal |
416 |
/** \internal |
417 |
* |
417 |
* |
418 |
* \brief Template functor to compute the exponential of a scalar |
418 |
* \brief Template functor to compute the exponential of a scalar |
419 |
* |
419 |
* |
420 |
* \sa class CwiseUnaryOp, Cwise::exp() |
420 |
* \sa class CwiseUnaryOp, Cwise::exp() |
421 |
*/ |
421 |
*/ |
422 |
template<typename Scalar> struct scalar_exp_op { |
422 |
template<typename Scalar> struct scalar_exp_op { |
423 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_exp_op) |
423 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_exp_op) |
424 |
inline const Scalar operator() (const Scalar& a) const { return internal::exp(a); } |
424 |
inline const Scalar operator() (const Scalar& a) const { using std::exp; return exp(a); } |
425 |
typedef typename packet_traits<Scalar>::type Packet; |
425 |
typedef typename packet_traits<Scalar>::type Packet; |
426 |
inline Packet packetOp(const Packet& a) const { return internal::pexp(a); } |
426 |
inline Packet packetOp(const Packet& a) const { return internal::pexp(a); } |
427 |
}; |
427 |
}; |
428 |
template<typename Scalar> |
428 |
template<typename Scalar> |
429 |
struct functor_traits<scalar_exp_op<Scalar> > |
429 |
struct functor_traits<scalar_exp_op<Scalar> > |
430 |
{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = packet_traits<Scalar>::HasExp }; }; |
430 |
{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = packet_traits<Scalar>::HasExp }; }; |
431 |
|
431 |
|
432 |
/** \internal |
432 |
/** \internal |
433 |
* |
433 |
* |
434 |
* \brief Template functor to compute the logarithm of a scalar |
434 |
* \brief Template functor to compute the logarithm of a scalar |
435 |
* |
435 |
* |
436 |
* \sa class CwiseUnaryOp, Cwise::log() |
436 |
* \sa class CwiseUnaryOp, Cwise::log() |
437 |
*/ |
437 |
*/ |
438 |
template<typename Scalar> struct scalar_log_op { |
438 |
template<typename Scalar> struct scalar_log_op { |
439 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_log_op) |
439 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_log_op) |
440 |
inline const Scalar operator() (const Scalar& a) const { return internal::log(a); } |
440 |
inline const Scalar operator() (const Scalar& a) const { using std::log; return log(a); } |
441 |
typedef typename packet_traits<Scalar>::type Packet; |
441 |
typedef typename packet_traits<Scalar>::type Packet; |
442 |
inline Packet packetOp(const Packet& a) const { return internal::plog(a); } |
442 |
inline Packet packetOp(const Packet& a) const { return internal::plog(a); } |
443 |
}; |
443 |
}; |
444 |
template<typename Scalar> |
444 |
template<typename Scalar> |
445 |
struct functor_traits<scalar_log_op<Scalar> > |
445 |
struct functor_traits<scalar_log_op<Scalar> > |
446 |
{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = packet_traits<Scalar>::HasLog }; }; |
446 |
{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = packet_traits<Scalar>::HasLog }; }; |
447 |
|
447 |
|
448 |
/** \internal |
448 |
/** \internal |
Lines 669-685
struct functor_traits<scalar_add_op<Scal
Link Here
|
669 |
{ enum { Cost = NumTraits<Scalar>::AddCost, PacketAccess = packet_traits<Scalar>::HasAdd }; }; |
669 |
{ enum { Cost = NumTraits<Scalar>::AddCost, PacketAccess = packet_traits<Scalar>::HasAdd }; }; |
670 |
|
670 |
|
671 |
/** \internal |
671 |
/** \internal |
672 |
* \brief Template functor to compute the square root of a scalar |
672 |
* \brief Template functor to compute the square root of a scalar |
673 |
* \sa class CwiseUnaryOp, Cwise::sqrt() |
673 |
* \sa class CwiseUnaryOp, Cwise::sqrt() |
674 |
*/ |
674 |
*/ |
675 |
template<typename Scalar> struct scalar_sqrt_op { |
675 |
template<typename Scalar> struct scalar_sqrt_op { |
676 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_sqrt_op) |
676 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_sqrt_op) |
677 |
inline const Scalar operator() (const Scalar& a) const { return internal::sqrt(a); } |
677 |
inline const Scalar operator() (const Scalar& a) const { using std::sqrt; return sqrt(a); } |
678 |
typedef typename packet_traits<Scalar>::type Packet; |
678 |
typedef typename packet_traits<Scalar>::type Packet; |
679 |
inline Packet packetOp(const Packet& a) const { return internal::psqrt(a); } |
679 |
inline Packet packetOp(const Packet& a) const { return internal::psqrt(a); } |
680 |
}; |
680 |
}; |
681 |
template<typename Scalar> |
681 |
template<typename Scalar> |
682 |
struct functor_traits<scalar_sqrt_op<Scalar> > |
682 |
struct functor_traits<scalar_sqrt_op<Scalar> > |
683 |
{ enum { |
683 |
{ enum { |
684 |
Cost = 5 * NumTraits<Scalar>::MulCost, |
684 |
Cost = 5 * NumTraits<Scalar>::MulCost, |
685 |
PacketAccess = packet_traits<Scalar>::HasSqrt |
685 |
PacketAccess = packet_traits<Scalar>::HasSqrt |
Lines 687-703
struct functor_traits<scalar_sqrt_op<Sca
Link Here
|
687 |
}; |
687 |
}; |
688 |
|
688 |
|
689 |
/** \internal |
689 |
/** \internal |
690 |
* \brief Template functor to compute the cosine of a scalar |
690 |
* \brief Template functor to compute the cosine of a scalar |
691 |
* \sa class CwiseUnaryOp, ArrayBase::cos() |
691 |
* \sa class CwiseUnaryOp, ArrayBase::cos() |
692 |
*/ |
692 |
*/ |
693 |
template<typename Scalar> struct scalar_cos_op { |
693 |
template<typename Scalar> struct scalar_cos_op { |
694 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_cos_op) |
694 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_cos_op) |
695 |
inline Scalar operator() (const Scalar& a) const { return internal::cos(a); } |
695 |
inline Scalar operator() (const Scalar& a) const { using std::cos; return cos(a); } |
696 |
typedef typename packet_traits<Scalar>::type Packet; |
696 |
typedef typename packet_traits<Scalar>::type Packet; |
697 |
inline Packet packetOp(const Packet& a) const { return internal::pcos(a); } |
697 |
inline Packet packetOp(const Packet& a) const { return internal::pcos(a); } |
698 |
}; |
698 |
}; |
699 |
template<typename Scalar> |
699 |
template<typename Scalar> |
700 |
struct functor_traits<scalar_cos_op<Scalar> > |
700 |
struct functor_traits<scalar_cos_op<Scalar> > |
701 |
{ |
701 |
{ |
702 |
enum { |
702 |
enum { |
703 |
Cost = 5 * NumTraits<Scalar>::MulCost, |
703 |
Cost = 5 * NumTraits<Scalar>::MulCost, |
Lines 706-722
struct functor_traits<scalar_cos_op<Scal
Link Here
|
706 |
}; |
706 |
}; |
707 |
|
707 |
|
708 |
/** \internal |
708 |
/** \internal |
709 |
* \brief Template functor to compute the sine of a scalar |
709 |
* \brief Template functor to compute the sine of a scalar |
710 |
* \sa class CwiseUnaryOp, ArrayBase::sin() |
710 |
* \sa class CwiseUnaryOp, ArrayBase::sin() |
711 |
*/ |
711 |
*/ |
712 |
template<typename Scalar> struct scalar_sin_op { |
712 |
template<typename Scalar> struct scalar_sin_op { |
713 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_sin_op) |
713 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_sin_op) |
714 |
inline const Scalar operator() (const Scalar& a) const { return internal::sin(a); } |
714 |
inline const Scalar operator() (const Scalar& a) const { using std::sin; return sin(a); } |
715 |
typedef typename packet_traits<Scalar>::type Packet; |
715 |
typedef typename packet_traits<Scalar>::type Packet; |
716 |
inline Packet packetOp(const Packet& a) const { return internal::psin(a); } |
716 |
inline Packet packetOp(const Packet& a) const { return internal::psin(a); } |
717 |
}; |
717 |
}; |
718 |
template<typename Scalar> |
718 |
template<typename Scalar> |
719 |
struct functor_traits<scalar_sin_op<Scalar> > |
719 |
struct functor_traits<scalar_sin_op<Scalar> > |
720 |
{ |
720 |
{ |
721 |
enum { |
721 |
enum { |
722 |
Cost = 5 * NumTraits<Scalar>::MulCost, |
722 |
Cost = 5 * NumTraits<Scalar>::MulCost, |
Lines 726-742
struct functor_traits<scalar_sin_op<Scal
Link Here
|
726 |
|
726 |
|
727 |
|
727 |
|
728 |
/** \internal |
728 |
/** \internal |
729 |
* \brief Template functor to compute the tan of a scalar |
729 |
* \brief Template functor to compute the tan of a scalar |
730 |
* \sa class CwiseUnaryOp, ArrayBase::tan() |
730 |
* \sa class CwiseUnaryOp, ArrayBase::tan() |
731 |
*/ |
731 |
*/ |
732 |
template<typename Scalar> struct scalar_tan_op { |
732 |
template<typename Scalar> struct scalar_tan_op { |
733 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_tan_op) |
733 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_tan_op) |
734 |
inline const Scalar operator() (const Scalar& a) const { return internal::tan(a); } |
734 |
inline const Scalar operator() (const Scalar& a) const { using std::tan; return tan(a); } |
735 |
typedef typename packet_traits<Scalar>::type Packet; |
735 |
typedef typename packet_traits<Scalar>::type Packet; |
736 |
inline Packet packetOp(const Packet& a) const { return internal::ptan(a); } |
736 |
inline Packet packetOp(const Packet& a) const { return internal::ptan(a); } |
737 |
}; |
737 |
}; |
738 |
template<typename Scalar> |
738 |
template<typename Scalar> |
739 |
struct functor_traits<scalar_tan_op<Scalar> > |
739 |
struct functor_traits<scalar_tan_op<Scalar> > |
740 |
{ |
740 |
{ |
741 |
enum { |
741 |
enum { |
742 |
Cost = 5 * NumTraits<Scalar>::MulCost, |
742 |
Cost = 5 * NumTraits<Scalar>::MulCost, |
Lines 745-761
struct functor_traits<scalar_tan_op<Scal
Link Here
|
745 |
}; |
745 |
}; |
746 |
|
746 |
|
747 |
/** \internal |
747 |
/** \internal |
748 |
* \brief Template functor to compute the arc cosine of a scalar |
748 |
* \brief Template functor to compute the arc cosine of a scalar |
749 |
* \sa class CwiseUnaryOp, ArrayBase::acos() |
749 |
* \sa class CwiseUnaryOp, ArrayBase::acos() |
750 |
*/ |
750 |
*/ |
751 |
template<typename Scalar> struct scalar_acos_op { |
751 |
template<typename Scalar> struct scalar_acos_op { |
752 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_acos_op) |
752 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_acos_op) |
753 |
inline const Scalar operator() (const Scalar& a) const { return internal::acos(a); } |
753 |
inline const Scalar operator() (const Scalar& a) const { using std::acos; return acos(a); } |
754 |
typedef typename packet_traits<Scalar>::type Packet; |
754 |
typedef typename packet_traits<Scalar>::type Packet; |
755 |
inline Packet packetOp(const Packet& a) const { return internal::pacos(a); } |
755 |
inline Packet packetOp(const Packet& a) const { return internal::pacos(a); } |
756 |
}; |
756 |
}; |
757 |
template<typename Scalar> |
757 |
template<typename Scalar> |
758 |
struct functor_traits<scalar_acos_op<Scalar> > |
758 |
struct functor_traits<scalar_acos_op<Scalar> > |
759 |
{ |
759 |
{ |
760 |
enum { |
760 |
enum { |
761 |
Cost = 5 * NumTraits<Scalar>::MulCost, |
761 |
Cost = 5 * NumTraits<Scalar>::MulCost, |
Lines 764-780
struct functor_traits<scalar_acos_op<Sca
Link Here
|
764 |
}; |
764 |
}; |
765 |
|
765 |
|
766 |
/** \internal |
766 |
/** \internal |
767 |
* \brief Template functor to compute the arc sine of a scalar |
767 |
* \brief Template functor to compute the arc sine of a scalar |
768 |
* \sa class CwiseUnaryOp, ArrayBase::asin() |
768 |
* \sa class CwiseUnaryOp, ArrayBase::asin() |
769 |
*/ |
769 |
*/ |
770 |
template<typename Scalar> struct scalar_asin_op { |
770 |
template<typename Scalar> struct scalar_asin_op { |
771 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_asin_op) |
771 |
EIGEN_EMPTY_STRUCT_CTOR(scalar_asin_op) |
772 |
inline const Scalar operator() (const Scalar& a) const { return internal::asin(a); } |
772 |
inline const Scalar operator() (const Scalar& a) const { using std::asin; return asin(a); } |
773 |
typedef typename packet_traits<Scalar>::type Packet; |
773 |
typedef typename packet_traits<Scalar>::type Packet; |
774 |
inline Packet packetOp(const Packet& a) const { return internal::pasin(a); } |
774 |
inline Packet packetOp(const Packet& a) const { return internal::pasin(a); } |
775 |
}; |
775 |
}; |
776 |
template<typename Scalar> |
776 |
template<typename Scalar> |
777 |
struct functor_traits<scalar_asin_op<Scalar> > |
777 |
struct functor_traits<scalar_asin_op<Scalar> > |
778 |
{ |
778 |
{ |
779 |
enum { |
779 |
enum { |
780 |
Cost = 5 * NumTraits<Scalar>::MulCost, |
780 |
Cost = 5 * NumTraits<Scalar>::MulCost, |