* CONSTRAINTS
* This module does not handle data which is considered out of range by the
* application(i.e. fixed constants which represent error condition)
*
* Maximum weight value must be limited to 128 to prevent an overflow
* condition during the calculation.
*
* The internal data type must be large enough to handle the calculations.
* The maximum possible internal value
* = Max Input Value * (weight - 1) + Max Input Value
* If a maximum weight of 128 is used, the internal data type should be 2
* times the size of the input data type.