inline CouNumber exprLBDiv::operator () () { register CouNumber n = (*(arglist_ [0])) (); register CouNumber N = (*(arglist_ [1])) (); register CouNumber d = (*(arglist_ [2])) (); register CouNumber D = (*(arglist_ [3])) (); // (n,N,d,D) lb if (d > 0) // (?,?,+,+) if (n > 0) return safeDiv (n,D,-1); // (+,+,+,+) --> n/D else return safeDiv (n,d,-1); // (-,?,+,+) --> n/d else { // d <= 0 if (D > 0) return - COUENNE_INFINITY; // (?,?,-,+) --> unbounded else if (N > 0) return safeDiv (N,D,-1); // (?,+,-,-) --> N/D else return safeDiv (N,d,-1); // (-,-,-,-) --> N/d } }
Vector &Vector::normalize() { float t = this->mod(); return *this = safeDiv(*this, t, NULL_VECTOR); }
float Vector::raySectPlane(Vector &p, Vector &v, Vector &n) { float t = n | *this; return safeDiv(n | (v - p), t, BIG_NUMBER); }