Posted to tcl by kbk at Wed Mar 12 13:47:27 GMT 2014view raw
- inline signed int mulSI(signed int a, signed int b) {
- signed int result;
- if (si_a > 0) { /* si_a is positive */
- if (si_b > 0) { /* si_a and si_b are positive */
- if (si_a > (INT_MAX / si_b)) {
- /* Handle error */
- }
- } else { /* si_a positive, si_b nonpositive */
- if (si_b < (INT_MIN / si_a)) {
- /* Handle error */
- }
- } /* si_a positive, si_b nonpositive */
- } else { /* si_a is nonpositive */
- if (si_b > 0) { /* si_a is nonpositive, si_b is positive */
- if (si_a < (INT_MIN / si_b)) {
- /* Handle error */
- }
- } else { /* si_a and si_b are nonpositive */
- if ( (si_a != 0) && (si_b < (INT_MAX / si_a))) {
- /* Handle error */
- }
- } /* End if si_a and si_b are nonpositive */
- } /* End if si_a is nonpositive */
- result = si_a * si_b;
- return result;
- }