SymbolicVal Max( const SymbolicVal &v1, const SymbolicVal &v2, MapObject<SymbolicVal, SymbolicBound>* f) { if (v1.IsNIL()) return v2; if (v2.IsNIL()) return v1; switch (CompareVal(v1,v2,f)) { case REL_NONE: case REL_UNKNOWN: case REL_NE: { SelectApplicator maxOp(1); return ApplyBinOP(maxOp,v1,v2); } case REL_EQ: case REL_LT: case REL_LE: return v2; case REL_GT: case REL_GE: return v1; default: assert(0); } }
__device__ __forceinline__ void reduceVal(typename TypeTraits<src_type>::parameter_type srcVal) { minimum<work_type> minOp; maximum<work_type> maxOp; mymin = minOp(mymin, srcVal); mymax = maxOp(mymax, srcVal); }