Simbody
3.6

These functions are overloaded to act on SimTK scalar types and C++ builtin types, including integral types when appropriate. More...
Modules  
Elliptic integrals  
Elliptic integrals arise occasionally in contexts relevant to us, particularly in geometric calculations involving ellipses or ellipsoids.  
Smoothed step functions  
Functions stepUp(), stepDown() and stepAny() provide smooth, Sshaped step functions that are useful for "softening" abrupt transitions between two values.  
clamp(), clampInPlace()  
Limit a numerical value so that it does not go outside a given range.  
cube()  
y=cube(x) returns the cube of the argument for any numeric type, integral or floating point.  
isFinite()  
isFinite(x) provides a reliable way to determine if x is a "normal" floating point number, meaning not a NaN or +/ Infinity.  
isInf()  
isInf(x) provides a reliable way to determine if x is one of the two infinities (either negative or positive).  
isNaN()  
isNaN(x) provides a reliable way to determine if x is one of the "not a
number" floating point forms.  
isNumericallyEqual()  
isNumericallyEqual(x,y) compares two scalar types using a tolerance (default or explicitly specified) and returns true if they are close enough.  
sign()  
s=sign(n) returns int 1,0,1 according to n<0, n==0, n>0 for any integer or real numeric type, unsigned 0 or 1 for any unsigned argument.  
square()  
y=square(x) returns the square of the argument for any numeric type.  
These functions are overloaded to act on SimTK scalar types and C++ builtin types, including integral types when appropriate.