clang emit a run time overflow on signed integer product in the cas of unsigned short.
this is a workaround and some added test to see if multiplies properly wraps for unsigned types