Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef EIGEN_RANDOM_H
00026 #define EIGEN_RANDOM_H
00027
00028 namespace Eigen {
00029
00030 namespace internal {
00031
00032 template<typename Scalar> struct scalar_random_op {
00033 EIGEN_EMPTY_STRUCT_CTOR(scalar_random_op)
00034 template<typename Index>
00035 inline const Scalar operator() (Index, Index = 0) const { return random<Scalar>(); }
00036 };
00037
00038 template<typename Scalar>
00039 struct functor_traits<scalar_random_op<Scalar> >
00040 { enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false, IsRepeatable = false }; };
00041
00042 }
00043
00062 template<typename Derived>
00063 inline const CwiseNullaryOp<internal::scalar_random_op<typename internal::traits<Derived>::Scalar>, Derived>
00064 DenseBase<Derived>::Random(Index rows, Index cols)
00065 {
00066 return NullaryExpr(rows, cols, internal::scalar_random_op<Scalar>());
00067 }
00068
00089 template<typename Derived>
00090 inline const CwiseNullaryOp<internal::scalar_random_op<typename internal::traits<Derived>::Scalar>, Derived>
00091 DenseBase<Derived>::Random(Index size)
00092 {
00093 return NullaryExpr(size, internal::scalar_random_op<Scalar>());
00094 }
00095
00110 template<typename Derived>
00111 inline const CwiseNullaryOp<internal::scalar_random_op<typename internal::traits<Derived>::Scalar>, Derived>
00112 DenseBase<Derived>::Random()
00113 {
00114 return NullaryExpr(RowsAtCompileTime, ColsAtCompileTime, internal::scalar_random_op<Scalar>());
00115 }
00116
00124 template<typename Derived>
00125 inline Derived& DenseBase<Derived>::setRandom()
00126 {
00127 return *this = Random(rows(), cols());
00128 }
00129
00139 template<typename Derived>
00140 EIGEN_STRONG_INLINE Derived&
00141 PlainObjectBase<Derived>::setRandom(Index size)
00142 {
00143 resize(size);
00144 return setRandom();
00145 }
00146
00157 template<typename Derived>
00158 EIGEN_STRONG_INLINE Derived&
00159 PlainObjectBase<Derived>::setRandom(Index rows, Index cols)
00160 {
00161 resize(rows, cols);
00162 return setRandom();
00163 }
00164
00165 }
00166
00167 #endif // EIGEN_RANDOM_H