fixmul − Multiplies two fixed point values together. Allegro game programming library.
fixed fixmul(fixed x, fixed y);
A fixed point value can be multiplied or divided by an integer with the normal ‘*’ and ‘/’ operators. To multiply two fixed point values, though, you must use this function.
If an overflow occurs, ‘errno’ will be set and the maximum possible value will be returned, but ‘errno’ is not cleared if the operation is successful. This means that if you are going to test for overflow you should set ‘errno=0’ before calling fixmul(). Example:
/* This will put 30000 into ‘result’. */
result = fixmul(itofix(10), itofix(3000));
/* But this overflows, and sets ‘errno’. */
result = fixmul(itofix(100), itofix(3000));
Returns the clamped result of multiplying ‘x’ by ‘y’, setting ‘errno’ to ERANGE if there was an overflow.