* make use of the EvalBeforeNestingBit and EvalBeforeAssigningBit

in ei_xpr_copy and operator=, respectively.
 * added Matrix::lazyAssign() when EvalBeforeAssigningBit must be skipped
   (mainly internal use only)
 * all expressions are now stored by const reference
 * added Temporary xpr: .temporary() must be called on any temporary expression
   not directly returned by a function (mainly internal use only)
 * moved all functors in the Functors.h header
 * added some preliminaries stuff for the explicit vectorization
This commit is contained in:
Gael Guennebaud
2008-04-05 11:10:54 +00:00
parent 048910caae
commit b4a156671f
16 changed files with 597 additions and 360 deletions

View File

@@ -56,7 +56,8 @@ template<> struct NumTraits<int>
HasFloatingPoint = 0,
ReadCost = 1,
AddCost = 1,
MulCost = 3
MulCost = 1,
PacketSize = 4
};
};
@@ -68,8 +69,9 @@ template<> struct NumTraits<float>
IsComplex = 0,
HasFloatingPoint = 1,
ReadCost = 1,
AddCost = 2,
MulCost = 6
AddCost = 1,
MulCost = 1,
PacketSize = 4
};
};
@@ -81,8 +83,9 @@ template<> struct NumTraits<double>
IsComplex = 0,
HasFloatingPoint = 1,
ReadCost = 1,
AddCost = 2,
MulCost = 6
AddCost = 1,
MulCost = 1,
PacketSize = 2
};
};
@@ -95,7 +98,8 @@ template<typename _Real> struct NumTraits<std::complex<_Real> >
HasFloatingPoint = NumTraits<Real>::HasFloatingPoint,
ReadCost = 2,
AddCost = 2 * NumTraits<Real>::AddCost,
MulCost = 4 * NumTraits<Real>::MulCost + 2 * NumTraits<Real>::AddCost
MulCost = 4 * NumTraits<Real>::MulCost + 2 * NumTraits<Real>::AddCost,
PacketSize = 0
};
};
@@ -107,8 +111,9 @@ template<> struct NumTraits<long long int>
IsComplex = 0,
HasFloatingPoint = 0,
ReadCost = 1,
AddCost = 2,
MulCost = 6
AddCost = 1,
MulCost = 1,
PacketSize = 0
};
};
@@ -121,7 +126,8 @@ template<> struct NumTraits<long double>
HasFloatingPoint = 1,
ReadCost = 1,
AddCost = 2,
MulCost = 6
MulCost = 2,
PacketSize = 0
};
};
@@ -134,7 +140,8 @@ template<> struct NumTraits<bool>
HasFloatingPoint = 0,
ReadCost = 1,
AddCost = 1,
MulCost = 1
MulCost = 1,
PacketSize = 0
};
};