Reputation: 1
I have defined a type just like
struct Mytype{
double a;
double b;
bool isfinite()
{
}
};
how could i can use allFinite in Eigen like
Eigen::Array<Mytype,4,1> Array;
array.allFinite();
i try to define like
struct Mytype{
bool isfinite()
{
return isfinite(a)&&isfinite(b);
}
};
but it doesnot work,what should i do?
Upvotes: -1
Views: 36
Reputation: 13438
Eigen is written to support argument-dependent lookup. So all you need to do is provide a free-standing (or friend) function called isfinite()
in the same namespace.
#include <Eigen/Core>
namespace my_ns {
struct Mytype {
double a;
double b;
bool isfinite() const
{
return true;
}
friend bool isfinite(const Mytype& x)
{ return x.isfinite(); }
};
} /* namespace my_ns */
int main()
{
using array_t = Eigen::Array<my_ns::Mytype, Eigen::Dynamic, 1>;
array_t x = array_t::Constant(10, {2., 3.});
return x.isFinite().all();
}
Upvotes: 2