xuyiqing / interflex

Multiplicative Interaction Models Diagnostics and Visualization, Producing Flexible Marginal Effect Estimates
Other
33 stars 13 forks source link

bug: checking against NaN is always false #5

Open conradsnicta opened 5 years ago

conradsnicta commented 5 years ago

The following statement in fastplm.cpp always evaluates to false: https://github.com/xuyiqing/interflex/blob/560d31782db3585058d20e85132fbfe961de9e1a/src/fastplm.cpp#L178

According to the documentation for std::numeric_limits::quiet_NaN()

A NaN never compares equal to itself.

Armadillo uses std::numeric_limits<T>::quiet_NaN() for datum::nan, so the same caveat applies.

To fix this, use std::isnan() instead: if (std::isnan(coef(i))) {