Allow vtkm::Matrix to support T values which are vtkm::Vec.
This commit is contained in:
parent
9caabf97ce
commit
b4378c8546
58
vtkm/Math.h
58
vtkm/Math.h
@ -1550,6 +1550,35 @@ struct FloatLimits<vtkm::Float32>
|
||||
}
|
||||
};
|
||||
|
||||
template<int N>
|
||||
struct FloatLimits< vtkm::Vec<vtkm::Float32,N> >
|
||||
{
|
||||
typedef vtkm::detail::IEEE754Bits32 BitsType;
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
static vtkm::Vec<vtkm::Float32,N> Nan() {
|
||||
BitsType nan = {VTKM_NAN_BITS_32};
|
||||
return vtkm::Vec<vtkm::Float32,N>(nan.scalar);
|
||||
}
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
static vtkm::Vec<vtkm::Float32,N> Infinity() {
|
||||
BitsType inf = {VTKM_INF_BITS_32};
|
||||
return vtkm::Vec<vtkm::Float32,N>(inf.scalar);
|
||||
}
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
static vtkm::Vec<vtkm::Float32,N> NegativeInfinity() {
|
||||
BitsType neginf = {VTKM_NEG_INF_BITS_32};
|
||||
return vtkm::Vec<vtkm::Float32,N>(neginf.scalar);
|
||||
}
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
static vtkm::Vec<vtkm::Float32,N> Epsilon() {
|
||||
return vtkm::Vec<vtkm::Float32,N>(VTKM_EPSILON_32);
|
||||
}
|
||||
};
|
||||
|
||||
template<>
|
||||
struct FloatLimits<vtkm::Float64>
|
||||
{
|
||||
@ -1579,6 +1608,35 @@ struct FloatLimits<vtkm::Float64>
|
||||
}
|
||||
};
|
||||
|
||||
template<int N>
|
||||
struct FloatLimits< vtkm::Vec<vtkm::Float64,N> >
|
||||
{
|
||||
typedef vtkm::detail::IEEE754Bits64 BitsType;
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
static vtkm::Vec<vtkm::Float64,N> Nan() {
|
||||
BitsType nan = {VTKM_NAN_BITS_64};
|
||||
return vtkm::Vec<vtkm::Float64,N>(nan.scalar);
|
||||
}
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
static vtkm::Vec<vtkm::Float64,N> Infinity() {
|
||||
BitsType inf = {VTKM_INF_BITS_64};
|
||||
return vtkm::Vec<vtkm::Float64,N>(inf.scalar);
|
||||
}
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
static vtkm::Vec<vtkm::Float64,N> NegativeInfinity() {
|
||||
BitsType neginf = {VTKM_NEG_INF_BITS_64};
|
||||
return vtkm::Vec<vtkm::Float64,N>(neginf.scalar);
|
||||
}
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
static vtkm::Vec<vtkm::Float64,N> Epsilon() {
|
||||
return vtkm::Vec<vtkm::Float64,N>(VTKM_EPSILON_64);
|
||||
}
|
||||
};
|
||||
|
||||
#undef VTKM_NAN_BITS_32
|
||||
#undef VTKM_INF_BITS_32
|
||||
#undef VTKM_NEG_INF_BITS_32
|
||||
|
@ -566,6 +566,35 @@ struct FloatLimits<vtkm::Float32>
|
||||
}
|
||||
};
|
||||
|
||||
template<int N>
|
||||
struct FloatLimits< vtkm::Vec<vtkm::Float32,N> >
|
||||
{
|
||||
typedef vtkm::detail::IEEE754Bits32 BitsType;
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
static vtkm::Vec<vtkm::Float32,N> Nan() {
|
||||
BitsType nan = {VTKM_NAN_BITS_32};
|
||||
return vtkm::Vec<vtkm::Float32,N>(nan.scalar);
|
||||
}
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
static vtkm::Vec<vtkm::Float32,N> Infinity() {
|
||||
BitsType inf = {VTKM_INF_BITS_32};
|
||||
return vtkm::Vec<vtkm::Float32,N>(inf.scalar);
|
||||
}
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
static vtkm::Vec<vtkm::Float32,N> NegativeInfinity() {
|
||||
BitsType neginf = {VTKM_NEG_INF_BITS_32};
|
||||
return vtkm::Vec<vtkm::Float32,N>(neginf.scalar);
|
||||
}
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
static vtkm::Vec<vtkm::Float32,N> Epsilon() {
|
||||
return vtkm::Vec<vtkm::Float32,N>(VTKM_EPSILON_32);
|
||||
}
|
||||
};
|
||||
|
||||
template<>
|
||||
struct FloatLimits<vtkm::Float64>
|
||||
{
|
||||
@ -595,6 +624,35 @@ struct FloatLimits<vtkm::Float64>
|
||||
}
|
||||
};
|
||||
|
||||
template<int N>
|
||||
struct FloatLimits< vtkm::Vec<vtkm::Float64,N> >
|
||||
{
|
||||
typedef vtkm::detail::IEEE754Bits64 BitsType;
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
static vtkm::Vec<vtkm::Float64,N> Nan() {
|
||||
BitsType nan = {VTKM_NAN_BITS_64};
|
||||
return vtkm::Vec<vtkm::Float64,N>(nan.scalar);
|
||||
}
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
static vtkm::Vec<vtkm::Float64,N> Infinity() {
|
||||
BitsType inf = {VTKM_INF_BITS_64};
|
||||
return vtkm::Vec<vtkm::Float64,N>(inf.scalar);
|
||||
}
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
static vtkm::Vec<vtkm::Float64,N> NegativeInfinity() {
|
||||
BitsType neginf = {VTKM_NEG_INF_BITS_64};
|
||||
return vtkm::Vec<vtkm::Float64,N>(neginf.scalar);
|
||||
}
|
||||
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
static vtkm::Vec<vtkm::Float64,N> Epsilon() {
|
||||
return vtkm::Vec<vtkm::Float64,N>(VTKM_EPSILON_64);
|
||||
}
|
||||
};
|
||||
|
||||
#undef VTKM_NAN_BITS_32
|
||||
#undef VTKM_INF_BITS_32
|
||||
#undef VTKM_NEG_INF_BITS_32
|
||||
|
@ -387,7 +387,7 @@ void MatrixLUPFactor(vtkm::Matrix<T,Size,Size> &A,
|
||||
{
|
||||
permutation[index] = index;
|
||||
}
|
||||
inversionParity = 1;
|
||||
inversionParity = T(1);
|
||||
valid = true;
|
||||
|
||||
for (vtkm::IdComponent rowIndex = 0; rowIndex < Size; rowIndex++)
|
||||
|
Loading…
Reference in New Issue
Block a user