Base class for all 1D and 2D array, and related expressions. More...
Public Member Functions | |
const CwiseUnaryOp < internal::scalar_abs_op < Scalar >, const Derived > | abs () const |
const CwiseUnaryOp < internal::scalar_abs2_op < Scalar >, const Derived > | abs2 () const |
const CwiseUnaryOp < internal::scalar_acos_op < Scalar >, const Derived > | acos () const |
const CwiseUnaryOp < internal::scalar_asin_op < Scalar >, const Derived > | asin () const |
template<typename CustomBinaryOp , typename OtherDerived > | |
const CwiseBinaryOp < CustomBinaryOp, const Derived, const OtherDerived > | binaryExpr (const Eigen::ArrayBase< OtherDerived > &other, const CustomBinaryOp &func=CustomBinaryOp()) const |
template<typename NewType > | |
internal::cast_return_type < Derived, const CwiseUnaryOp < internal::scalar_cast_op < typename internal::traits < Derived >::Scalar, NewType > , const Derived > >::type | cast () const |
ConjugateReturnType | conjugate () const |
const CwiseUnaryOp < internal::scalar_cos_op < Scalar >, const Derived > | cos () const |
const CwiseUnaryOp < internal::scalar_cube_op < Scalar >, const Derived > | cube () const |
const CwiseUnaryOp < internal::scalar_abs_op < Scalar >, const Derived > | cwiseAbs () const |
const CwiseUnaryOp < internal::scalar_abs2_op < Scalar >, const Derived > | cwiseAbs2 () const |
template<typename OtherDerived > | |
const | CwiseBinaryOp (min)(const Eigen |
template<typename OtherDerived > | |
const | CwiseBinaryOp (operator-)(const Eigen |
template<typename OtherDerived > | |
const | CwiseBinaryOp (max)(const Eigen |
template<typename OtherDerived > | |
const | CwiseBinaryOp (operator+)(const Eigen |
template<typename OtherDerived > | |
const | CwiseBinaryOp (operator<)(const Eigen |
template<typename OtherDerived > | |
const | CwiseBinaryOp (operator<=)(const Eigen |
template<typename OtherDerived > | |
const | CwiseBinaryOp (operator>)(const Eigen |
template<typename OtherDerived > | |
const | CwiseBinaryOp (operator>=)(const Eigen |
template<typename OtherDerived > | |
const | CwiseBinaryOp (operator==)(const Eigen |
template<typename OtherDerived > | |
const | CwiseBinaryOp (operator!=)(const Eigen |
template<typename OtherDerived > | |
const CwiseBinaryOp < std::equal_to< Scalar > , const Derived, const OtherDerived > | cwiseEqual (const Eigen::ArrayBase< OtherDerived > &other) const |
const CwiseUnaryOp < std::binder1st < std::equal_to< Scalar > >, const Derived > | cwiseEqual (const Scalar &s) const |
const CwiseUnaryOp < internal::scalar_inverse_op < Scalar >, const Derived > | cwiseInverse () const |
template<typename OtherDerived > | |
const CwiseBinaryOp < internal::scalar_max_op < Scalar >, const Derived, const OtherDerived > | cwiseMax (const Eigen::ArrayBase< OtherDerived > &other) const |
template<typename OtherDerived > | |
const CwiseBinaryOp < internal::scalar_min_op < Scalar >, const Derived, const OtherDerived > | cwiseMin (const Eigen::ArrayBase< OtherDerived > &other) const |
template<typename OtherDerived > | |
const CwiseBinaryOp < std::not_equal_to< Scalar > , const Derived, const OtherDerived > | cwiseNotEqual (const Eigen::ArrayBase< OtherDerived > &other) const |
template<typename OtherDerived > | |
const CwiseBinaryOp < internal::scalar_product_op < typename internal::traits < Derived >::Scalar, typename internal::traits< OtherDerived > ::Scalar >, const Derived, const OtherDerived > | cwiseProduct (const Eigen::ArrayBase< OtherDerived > &other) const |
template<typename OtherDerived > | |
const CwiseBinaryOp < internal::scalar_quotient_op < Scalar >, const Derived, const OtherDerived > | cwiseQuotient (const Eigen::ArrayBase< OtherDerived > &other) const |
const CwiseUnaryOp < internal::scalar_sqrt_op < Scalar >, const Derived > | cwiseSqrt () const |
const CwiseUnaryOp < internal::scalar_exp_op < Scalar >, const Derived > | exp () const |
const ImagReturnType | imag () const |
NonConstImagReturnType | imag () |
const CwiseUnaryOp < internal::scalar_inverse_op < Scalar >, const Derived > | inverse () const |
const CwiseUnaryOp < internal::scalar_log_op < Scalar >, const Derived > | log () const |
MatrixWrapper< Derived > | matrix () |
template<typename OtherDerived > | |
const CwiseBinaryOp < internal::scalar_product_op < typename internal::traits < Derived >::Scalar, typename internal::traits< OtherDerived > ::Scalar >, const Derived, const OtherDerived > | operator* (const Eigen::ArrayBase< OtherDerived > &other) const |
const ScalarMultipleReturnType | operator* (const Scalar &scalar) const |
const CwiseUnaryOp < internal::scalar_multiple2_op < Scalar, std::complex< Scalar > >, const Derived > | operator* (const std::complex< Scalar > &scalar) const |
template<typename OtherDerived > | |
Derived & | operator*= (const ArrayBase< OtherDerived > &other) |
const CwiseUnaryOp < internal::scalar_add_op < Scalar >, const Derived > | operator+ (const Scalar &scalar) const |
template<typename OtherDerived > | |
Derived & | operator+= (const ArrayBase< OtherDerived > &other) |
const CwiseUnaryOp < internal::scalar_opposite_op < typename internal::traits < Derived >::Scalar >, const Derived > | operator- () const |
const CwiseUnaryOp < internal::scalar_add_op < Scalar >, const Derived > | operator- (const Scalar &scalar) const |
template<typename OtherDerived > | |
Derived & | operator-= (const ArrayBase< OtherDerived > &other) |
template<typename OtherDerived > | |
const CwiseBinaryOp < internal::scalar_quotient_op < Scalar >, const Derived, const OtherDerived > | operator/ (const Eigen::ArrayBase< OtherDerived > &other) const |
const CwiseUnaryOp < internal::scalar_quotient1_op < typename internal::traits < Derived >::Scalar >, const Derived > | operator/ (const Scalar &scalar) const |
template<typename OtherDerived > | |
Derived & | operator/= (const ArrayBase< OtherDerived > &other) |
Derived & | operator= (const ArrayBase &other) |
const CwiseUnaryOp < internal::scalar_pow_op < Scalar >, const Derived > | pow (const Scalar &exponent) const |
RealReturnType | real () const |
NonConstRealReturnType | real () |
const CwiseUnaryOp < internal::scalar_sin_op < Scalar >, const Derived > | sin () const |
const CwiseUnaryOp < internal::scalar_sqrt_op < Scalar >, const Derived > | sqrt () const |
const CwiseUnaryOp < internal::scalar_square_op < Scalar >, const Derived > | square () const |
const CwiseUnaryOp < internal::scalar_tan_op < Scalar >, Derived > | tan () const |
template<typename CustomUnaryOp > | |
const CwiseUnaryOp < CustomUnaryOp, const Derived > | unaryExpr (const CustomUnaryOp &func=CustomUnaryOp()) const |
Apply a unary operator coefficient-wise. | |
template<typename CustomViewOp > | |
const CwiseUnaryView < CustomViewOp, const Derived > | unaryViewExpr (const CustomViewOp &func=CustomViewOp()) const |
![]() | |
bool | all (void) const |
bool | any (void) const |
Block< Derived > | block (Index startRow, Index startCol, Index blockRows, Index blockCols) |
const Block< const Derived > | block (Index startRow, Index startCol, Index blockRows, Index blockCols) const |
template<int BlockRows, int BlockCols> | |
Block< Derived, BlockRows, BlockCols > | block (Index startRow, Index startCol) |
template<int BlockRows, int BlockCols> | |
const Block< const Derived, BlockRows, BlockCols > | block (Index startRow, Index startCol) const |
Block< Derived > | bottomLeftCorner (Index cRows, Index cCols) |
const Block< const Derived > | bottomLeftCorner (Index cRows, Index cCols) const |
template<int CRows, int CCols> | |
Block< Derived, CRows, CCols > | bottomLeftCorner () |
template<int CRows, int CCols> | |
const Block< const Derived, CRows, CCols > | bottomLeftCorner () const |
Block< Derived > | bottomRightCorner (Index cRows, Index cCols) |
const Block< const Derived > | bottomRightCorner (Index cRows, Index cCols) const |
template<int CRows, int CCols> | |
Block< Derived, CRows, CCols > | bottomRightCorner () |
template<int CRows, int CCols> | |
const Block< const Derived, CRows, CCols > | bottomRightCorner () const |
RowsBlockXpr | bottomRows (Index n) |
ConstRowsBlockXpr | bottomRows (Index n) const |
template<int N> | |
NRowsBlockXpr< N >::Type | bottomRows () |
template<int N> | |
ConstNRowsBlockXpr< N >::Type | bottomRows () const |
ColXpr | col (Index i) |
ConstColXpr | col (Index i) const |
ConstColwiseReturnType | colwise () const |
ColwiseReturnType | colwise () |
Index | count () const |
const internal::eval< Derived > ::type | eval () const |
void | fill (const Scalar &value) |
template<unsigned int Added, unsigned int Removed> | |
const Flagged< Derived, Added, Removed > | flagged () const |
const WithFormat< Derived > | format (const IOFormat &fmt) const |
SegmentReturnType | head (Index size) |
DenseBase::ConstSegmentReturnType | head (Index size) const |
template<int Size> | |
FixedSegmentReturnType< Size > ::Type | head () |
template<int Size> | |
ConstFixedSegmentReturnType < Size >::Type | head () const |
Index | innerSize () const |
template<typename OtherDerived > | |
bool | isApprox (const DenseBase< OtherDerived > &other, RealScalar prec=NumTraits< Scalar >::dummy_precision()) const |
bool | isApproxToConstant (const Scalar &value, RealScalar prec=NumTraits< Scalar >::dummy_precision()) const |
bool | isConstant (const Scalar &value, RealScalar prec=NumTraits< Scalar >::dummy_precision()) const |
template<typename Derived > | |
bool | isMuchSmallerThan (const typename NumTraits< Scalar >::Real &other, RealScalar prec) const |
template<typename OtherDerived > | |
bool | isMuchSmallerThan (const DenseBase< OtherDerived > &other, RealScalar prec=NumTraits< Scalar >::dummy_precision()) const |
bool | isOnes (RealScalar prec=NumTraits< Scalar >::dummy_precision()) const |
bool | isZero (RealScalar prec=NumTraits< Scalar >::dummy_precision()) const |
ColsBlockXpr | leftCols (Index n) |
ConstColsBlockXpr | leftCols (Index n) const |
template<int N> | |
NColsBlockXpr< N >::Type | leftCols () |
template<int N> | |
ConstNColsBlockXpr< N >::Type | leftCols () const |
internal::traits< Derived >::Scalar | maxCoeff () const |
template<typename IndexType > | |
internal::traits< Derived >::Scalar | maxCoeff (IndexType *row, IndexType *col) const |
template<typename IndexType > | |
internal::traits< Derived >::Scalar | maxCoeff (IndexType *index) const |
Scalar | mean () const |
ColsBlockXpr | middleCols (Index startCol, Index numCols) |
ConstColsBlockXpr | middleCols (Index startCol, Index numCols) const |
template<int N> | |
NColsBlockXpr< N >::Type | middleCols (Index startCol) |
template<int N> | |
ConstNColsBlockXpr< N >::Type | middleCols (Index startCol) const |
RowsBlockXpr | middleRows (Index startRow, Index numRows) |
ConstRowsBlockXpr | middleRows (Index startRow, Index numRows) const |
template<int N> | |
NRowsBlockXpr< N >::Type | middleRows (Index startRow) |
template<int N> | |
ConstNRowsBlockXpr< N >::Type | middleRows (Index startRow) const |
internal::traits< Derived >::Scalar | minCoeff () const |
template<typename IndexType > | |
internal::traits< Derived >::Scalar | minCoeff (IndexType *row, IndexType *col) const |
template<typename IndexType > | |
internal::traits< Derived >::Scalar | minCoeff (IndexType *index) const |
const NestByValue< Derived > | nestByValue () const |
Index | nonZeros () const |
CommaInitializer< Derived > | operator<< (const Scalar &s) |
template<typename OtherDerived > | |
CommaInitializer< Derived > | operator<< (const DenseBase< OtherDerived > &other) |
template<typename OtherDerived > | |
Derived & | operator= (const DenseBase< OtherDerived > &other) |
Derived & | operator= (const DenseBase &other) |
template<typename OtherDerived > | |
Derived & | operator= (const EigenBase< OtherDerived > &other) |
Copies the generic expression other into *this. | |
Index | outerSize () const |
Scalar | prod () const |
template<typename Func > | |
internal::result_of< Func(typename internal::traits< Derived > ::Scalar)>::type | redux (const Func &func) const |
template<int RowFactor, int ColFactor> | |
const Replicate< Derived, RowFactor, ColFactor > | replicate () const |
const Replicate< Derived, Dynamic, Dynamic > | replicate (Index rowFacor, Index colFactor) const |
void | resize (Index size) |
void | resize (Index rows, Index cols) |
ReverseReturnType | reverse () |
ConstReverseReturnType | reverse () const |
void | reverseInPlace () |
ColsBlockXpr | rightCols (Index n) |
ConstColsBlockXpr | rightCols (Index n) const |
template<int N> | |
NColsBlockXpr< N >::Type | rightCols () |
template<int N> | |
ConstNColsBlockXpr< N >::Type | rightCols () const |
RowXpr | row (Index i) |
ConstRowXpr | row (Index i) const |
ConstRowwiseReturnType | rowwise () const |
RowwiseReturnType | rowwise () |
SegmentReturnType | segment (Index start, Index size) |
DenseBase::ConstSegmentReturnType | segment (Index start, Index size) const |
template<int Size> | |
FixedSegmentReturnType< Size > ::Type | segment (Index start) |
template<int Size> | |
ConstFixedSegmentReturnType < Size >::Type | segment (Index start) const |
template<typename ThenDerived , typename ElseDerived > | |
const Select< Derived, ThenDerived, ElseDerived > | select (const DenseBase< ThenDerived > &thenMatrix, const DenseBase< ElseDerived > &elseMatrix) const |
template<typename ThenDerived > | |
const Select< Derived, ThenDerived, typename ThenDerived::ConstantReturnType > | select (const DenseBase< ThenDerived > &thenMatrix, typename ThenDerived::Scalar elseScalar) const |
template<typename ElseDerived > | |
const Select< Derived, typename ElseDerived::ConstantReturnType, ElseDerived > | select (typename ElseDerived::Scalar thenScalar, const DenseBase< ElseDerived > &elseMatrix) const |
Derived & | setConstant (const Scalar &value) |
Derived & | setLinSpaced (Index size, const Scalar &low, const Scalar &high) |
Sets a linearly space vector. | |
Derived & | setOnes () |
Derived & | setRandom () |
Derived & | setZero () |
Scalar | sum () const |
template<typename OtherDerived > | |
void | swap (const DenseBase< OtherDerived > &other, int=OtherDerived::ThisConstantIsPrivateInPlainObjectBase) |
template<typename OtherDerived > | |
void | swap (PlainObjectBase< OtherDerived > &other) |
SegmentReturnType | tail (Index size) |
DenseBase::ConstSegmentReturnType | tail (Index size) const |
template<int Size> | |
FixedSegmentReturnType< Size > ::Type | tail () |
template<int Size> | |
ConstFixedSegmentReturnType < Size >::Type | tail () const |
Block< Derived > | topLeftCorner (Index cRows, Index cCols) |
const Block< const Derived > | topLeftCorner (Index cRows, Index cCols) const |
template<int CRows, int CCols> | |
Block< Derived, CRows, CCols > | topLeftCorner () |
template<int CRows, int CCols> | |
const Block< const Derived, CRows, CCols > | topLeftCorner () const |
Block< Derived > | topRightCorner (Index cRows, Index cCols) |
const Block< const Derived > | topRightCorner (Index cRows, Index cCols) const |
template<int CRows, int CCols> | |
Block< Derived, CRows, CCols > | topRightCorner () |
template<int CRows, int CCols> | |
const Block< const Derived, CRows, CCols > | topRightCorner () const |
RowsBlockXpr | topRows (Index n) |
ConstRowsBlockXpr | topRows (Index n) const |
template<int N> | |
NRowsBlockXpr< N >::Type | topRows () |
template<int N> | |
ConstNRowsBlockXpr< N >::Type | topRows () const |
Eigen::Transpose< Derived > | transpose () |
ConstTransposeReturnType | transpose () const |
void | transposeInPlace () |
CoeffReturnType | value () const |
template<typename Visitor > | |
void | visit (Visitor &func) const |
Additional Inherited Members | |
![]() | |
enum | { RowsAtCompileTime, ColsAtCompileTime, SizeAtCompileTime, MaxRowsAtCompileTime, MaxColsAtCompileTime, MaxSizeAtCompileTime, IsVectorAtCompileTime, Flags, IsRowMajor , CoeffReadCost } |
typedef internal::traits < Derived >::Index | Index |
The type of indices. | |
![]() | |
static const ConstantReturnType | Constant (Index rows, Index cols, const Scalar &value) |
static const ConstantReturnType | Constant (Index size, const Scalar &value) |
static const ConstantReturnType | Constant (const Scalar &value) |
static const SequentialLinSpacedReturnType | LinSpaced (Sequential_t, Index size, const Scalar &low, const Scalar &high) |
Sets a linearly space vector. | |
static const RandomAccessLinSpacedReturnType | LinSpaced (Index size, const Scalar &low, const Scalar &high) |
Sets a linearly space vector. | |
static const SequentialLinSpacedReturnType | LinSpaced (Sequential_t, const Scalar &low, const Scalar &high) |
Sets a linearly space vector. | |
static const RandomAccessLinSpacedReturnType | LinSpaced (const Scalar &low, const Scalar &high) |
Sets a linearly space vector. | |
template<typename CustomNullaryOp > | |
static const CwiseNullaryOp < CustomNullaryOp, Derived > | NullaryExpr (Index rows, Index cols, const CustomNullaryOp &func) |
template<typename CustomNullaryOp > | |
static const CwiseNullaryOp < CustomNullaryOp, Derived > | NullaryExpr (Index size, const CustomNullaryOp &func) |
template<typename CustomNullaryOp > | |
static const CwiseNullaryOp < CustomNullaryOp, Derived > | NullaryExpr (const CustomNullaryOp &func) |
static const ConstantReturnType | Ones (Index rows, Index cols) |
static const ConstantReturnType | Ones (Index size) |
static const ConstantReturnType | Ones () |
static const CwiseNullaryOp < internal::scalar_random_op < Scalar >, Derived > | Random (Index rows, Index cols) |
static const CwiseNullaryOp < internal::scalar_random_op < Scalar >, Derived > | Random (Index size) |
static const CwiseNullaryOp < internal::scalar_random_op < Scalar >, Derived > | Random () |
static const ConstantReturnType | Zero (Index rows, Index cols) |
static const ConstantReturnType | Zero (Index size) |
static const ConstantReturnType | Zero () |
![]() | |
DenseBase () | |
![]() | |
template<typename Derived > | |
std::ostream & | operator<< (std::ostream &s, const DenseBase< Derived > &m) |
Base class for all 1D and 2D array, and related expressions.
An array is similar to a dense vector or matrix. While matrices are mathematical objects with well defined linear algebra operators, an array is just a collection of scalar values arranged in a one or two dimensionnal fashion. As the main consequence, all operations applied to an array are performed coefficient wise. Furthermore, arrays support scalar math functions of the c++ standard library (e.g., std::sin(x)), and convenient constructors allowing to easily write generic code working for both scalar values and arrays.
This class is the base that is inherited by all array expression types.
Derived | is the derived type, e.g., an array or an expression type. |
This class can be extended with the help of the plugin mechanism described on the page Customizing/Extending Eigen by defining the preprocessor symbol EIGEN_ARRAYBASE_PLUGIN
.
|
inline |
*this
Example:
Output:
1 2 3
|
inline |
|
inline |
|
inline |
|
inline |
The template parameter CustomBinaryOp is the type of the functor of the custom operator (see class CwiseBinaryOp for an example)
Here is an example illustrating the use of custom functors:
Output:
(0.68,0.271) (0.823,-0.967) (-0.444,-0.687) (-0.27,0.998) (-0.211,0.435) (-0.605,-0.514) (0.108,-0.198) (0.0268,-0.563) (0.566,-0.717) (-0.33,-0.726) (-0.0452,-0.74) (0.904,0.0259) (0.597,0.214) (0.536,0.608) (0.258,-0.782) (0.832,0.678)
|
inline |
The template parameter NewScalar is the type we are casting the scalars to.
|
inline |
*this
.
|
inline |
|
inline |
|
inline |
*this
Example:
Output:
2 4 6 5 1 0
|
inline |
*this
Example:
Output:
4 16 36 25 1 0
|
inline |
*this
and other Example:
Output:
2 2 3
|
inline |
*this
and other
|
inline |
*this
and other Example:
Output:
4 3 4
|
inline |
*this
and other
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Example:
Output:
0 1 0
|
inline |
Example:
Output:
1 0 1
|
inline |
Example:
Output:
Comparing m with identity matrix: 1 1 0 1 Number of coefficients that are equal: 3
|
inline |
*this
and a scalar s
|
inline |
Example:
Output:
0.5 2 1 0.333 4 1
|
inline |
Example:
Output:
4 3 4
|
inline |
Example:
Output:
2 2 3
|
inline |
Example:
Output:
Comparing m with identity matrix: 0 0 1 0 Number of coefficients that are not equal: 1
|
inline |
Example:
Output:
a: 7 6 -3 -2 9 6 6 -6 -5 b: 1 -3 9 0 0 3 3 9 5 c: 7 -18 -27 0 0 18 18 -54 -25
|
inline |
Example:
Output:
0.5 1.5 1.33
|
inline |
Example:
Output:
1 1.41 2
|
inline |
|
inline |
*this
.
|
inline |
*this
.
|
inline |
Example:
Output:
0.5 0.333 0.25
|
inline |
Example:
Output:
0 0.693 1.1
|
inline |
|
inline |
*this
and other
|
inline |
*this
scaled by the scalar factor scalar
|
inline |
Overloaded for efficient real matrix times complex scalar value
|
inline |
replaces *this
by *this
* other coefficient wise.
*this
|
inline |
*this
with each coeff incremented by the constant scalar Example:
Output:
6 7 8
|
inline |
replaces *this
by *this
+ other.
*this
|
inline |
*this
|
inline |
*this
with each coeff decremented by the constant scalar Example:
Output:
-4 -3 -2
|
inline |
replaces *this
by *this
- other.
*this
|
inline |
*this
and other
|
inline |
*this
divided by the scalar value scalar
|
inline |
replaces *this
by *this
/ other coefficient wise.
*this
|
inline |
Special case of the template operator=, in order to prevent the compiler from generating a default operator= (issue hit with g++ 4.1)
|
inline |
|
inline |
*this
.
|
inline |
*this
.
|
inline |
|
inline |
|
inline |
Example:
Output:
4 9 16
|
inline |
|
inline |
Apply a unary operator coefficient-wise.
[in] | func | Functor implementing the unary operator |
CustomUnaryOp | Type of func |
The function ptr_fun()
from the C++ standard library can be used to make functors out of normal functions.
Example:
Output:
0.68 0.823 -0.444 -0.27 -0.211 -0.605 0.108 0.0268 0.566 -0.33 -0.0452 0.904 0.597 0.536 0.258 0.832 becomes: 0.68 0.823 0 0 0 0 0.108 0.0268 0.566 0 0 0.904 0.597 0.536 0.258 0.832
Genuine functors allow for more possibilities, for instance it may contain a state.
Example:
Output:
0.68 0.823 -0.444 -0.27 -0.211 -0.605 0.108 0.0268 0.566 -0.33 -0.0452 0.904 0.597 0.536 0.258 0.832 becomes: 0.5 0.5 -0.444 -0.27 -0.211 -0.5 0.108 0.0268 0.5 -0.33 -0.0452 0.5 0.5 0.5 0.258 0.5
|
inline |
The template parameter CustomUnaryOp is the type of the functor of the custom unary operator.
Example:
Output:
0.68 0.823 -0.444 -0.27 -0.211 -0.605 0.108 0.0268 0.566 -0.33 -0.0452 0.904 0.597 0.536 0.258 0.832 becomes: 0.5 0.5 -0.444 -0.27 -0.211 -0.5 0.108 0.0268 0.5 -0.33 -0.0452 0.5 0.5 0.5 0.258 0.5