//============================================================================== void interval_orientation3d(const double* x0, const double* x1, const double* x2, const double* x3, double* lower, double* upper) { fesetround(FE_DOWNWARD); *lower=simple_orientation3d(x0, x1, x2, x3); fesetround(FE_UPWARD); *upper=simple_orientation3d(x0, x1, x2, x3); #ifdef _MSC_VER assert( !_isnan(*lower) ); assert( !_isnan(*upper) ); assert( _finite(*lower) ); assert( _finite(*upper) ); #else assert( !std::isnan(*lower) ); assert( !std::isnan(*upper) ); assert( !std::isinf(*lower) ); assert( !std::isinf(*upper) ); #endif assert(*lower<=*upper); }
//============================================================================== static void interval_orientation3d(const double* x0, const double* x1, const double* x2, const double* x3, double* lower, double* upper) { fesetround(FE_DOWNWARD); *lower=simple_orientation3d(x0, x1, x2, x3); fesetround(FE_UPWARD); *upper=simple_orientation3d(x0, x1, x2, x3); assert(*lower<=*upper); }