int32_T div_s32_floor(int32_T numerator, int32_T denominator) { int32_T quotient; uint32_T absNumerator; uint32_T absDenominator; int32_T quotientNeedsNegation; uint32_T tempAbsQuotient; if (denominator == 0) { if (numerator >= 0) { quotient = MAX_int32_T; } else { quotient = MIN_int32_T; } emlrtDivisionByZeroErrorR2012b(0, emlrtRootTLSGlobal); } else { if (numerator >= 0) { absNumerator = (uint32_T)numerator; } else { absNumerator = (uint32_T)-numerator; } if (denominator >= 0) { absDenominator = (uint32_T)denominator; } else { absDenominator = (uint32_T)-denominator; } quotientNeedsNegation = ((numerator < 0) != (denominator < 0)); tempAbsQuotient = absNumerator / absDenominator; if ((uint32_T)quotientNeedsNegation) { absNumerator %= absDenominator; if (absNumerator > (uint32_T)0) { tempAbsQuotient++; } } if ((uint32_T)quotientNeedsNegation) { quotient = -(int32_T)tempAbsQuotient; } else { quotient = (int32_T)tempAbsQuotient; } } return quotient; }
/* Function Definitions */ static int32_T div_s32(const emlrtStack *sp, int32_T numerator, int32_T denominator) { int32_T quotient; uint32_T absNumerator; uint32_T absDenominator; boolean_T quotientNeedsNegation; if (denominator == 0) { if (numerator >= 0) { quotient = MAX_int32_T; } else { quotient = MIN_int32_T; } emlrtDivisionByZeroErrorR2012b(NULL, sp); } else { if (numerator >= 0) { absNumerator = (uint32_T)numerator; } else { absNumerator = (uint32_T)-numerator; } if (denominator >= 0) { absDenominator = (uint32_T)denominator; } else { absDenominator = (uint32_T)-denominator; } quotientNeedsNegation = ((numerator < 0) != (denominator < 0)); absNumerator /= absDenominator; if (quotientNeedsNegation) { quotient = -(int32_T)absNumerator; } else { quotient = (int32_T)absNumerator; } } return quotient; }