-
Notifications
You must be signed in to change notification settings - Fork 723
Open
Labels
Description
Environment
Debian Trixie
Describe the bug
PCA is casting double values that cannot be represented as an integer.
When running the unit tests with FPE enabled:
[----------] 1 test from TestPCA
[ RUN ] TestPCA.testPCA
Thread 1 "vdb_test" received signal SIGFPE, Arithmetic exception.
openvdb::v12_1::math::Vec3<int>::Vec3<double> (this=0x7fffffff7354, val=3.4028234156792682e+39)
at /home/bram/src/openvdb/openvdb/openvdb/../openvdb/math/Vec3.h:72
72 this->mm[0] = this->mm[1] = this->mm[2] = static_cast<T>(val);
(gdb) where
#0 openvdb::v12_1::math::Vec3<int>::Vec3<double> (this=0x7fffffff7354, val=3.4028234156792682e+39)
at /home/bram/src/openvdb/openvdb/openvdb/../openvdb/math/Vec3.h:72
#1 0x00005555581758d3 in openvdb::v12_1::points::pca_internal::PcaTransfer<openvdb::v12_1::tree::Tree<openvdb::v12_1::tree::RootNode<openvdb::v12_1::tree::InternalNode<openvdb::v12_1::tree::InternalNode<openvdb::v12_1::points::PointDataLeafNode<openvdb::v12_1::PointIndex<unsigned int, 1u>, 3u>, 4u>, 5u> > > >::range (this=0x7fffedf093c0)
at /home/bram/src/openvdb/openvdb/openvdb/../openvdb/points/impl/PrincipalComponentAnalysisImpl.h:156
#2 0x0000555558173fad in openvdb::v12_1::points::pca_internal::PcaTransfer<openvdb::v12_1::tree::Tree<openvdb::v12_1::tree::RootNode<openvdb::v12_1::tree::InternalNode<openvdb::v12_1::tree::InternalNode<openvdb::v12_1::points::PointDataLeafNode<openvdb::v12_1::PointIndex<unsigned int, 1u>, 3u>, 4u>, 5u> > > >::range (this=0x7fffedf093c0)
at /home/bram/src/openvdb/openvdb/openvdb/../openvdb/points/impl/PrincipalComponentAnalysisImpl.h:155
#3 0x00005555581737e3 in openvdb::v12_1::points::transfer_internal::RasterizePoints<openvdb::v12_1::points::pca_internal::WeightPosSumsTransfer<openvdb::v12_1::tree::Tree<openvdb::v12_1::tree::RootNode<openvdb::v12_1::tree::InternalNode<openvdb::v12_1::tree::InternalNode<openvdb::v12_1::points::PointDataLeafNode<openvdb::v12_1::PointIndex<unsigned int, 1u>, 3u>, 4u>, 5u> > > >, openvdb::v12_1::tree::Tree<openvdb::v12_1::tree::RootNode<openvdb::v12_1::tree::InternalNode<openvdb::v12_1::tree::InternalNode<openvdb::v12_1::points::PointDataLeafNode<openvdb::v12_1::PointIndex<unsigned int, 1u>, 3u>, 4u>, 5u> > >, openvdb::v12_1::points::NullFilter, openvdb::v12_1::util::NullInterrupter>::operator() (
this=0x7fffedf09360, leaf=..., idx=0)
at /home/bram/src/openvdb/openvdb/openvdb/../openvdb/points/PointTransfer.h:545
#4 0x00005555581727ce in openvdb::v12_1::tree::LeafManager<openvdb::v12_1::tree::Tree<openvdb::v12_1::tree::RootNode<openvdb::v12_1::tree::InternalNode<openvdb::v12_1::tree::InternalNode<openvdb::v12_1::points::PointDataLeafNode<openvdb::v12_1::PointIndex<unsigned int, 1u>, 3u>, 4u>, 5u> > > >::LeafTransformer<openvdb::v12_1::points::transfer_internal::RasterizePoints<openvdb::v12_1::points::pca_internal::WeightPosSumsTransfer<openvdb::v12_1::tree::Tree<openvdb::v12_1::tree::RootNode<openvdb::v12_1::tree::InternalNode<openvdb::v12_1::tree::InternalNode<openvdb::v12_1::points::PointDataLeafNode<openvdb::v12_1::--Type <RET> for more, q to quit, c to continue without paging--q
Quit
To Reproduce
Run TestPCA with FPE enabled
Expected behavior
No FP exception.