static void video_crtc_realize_h(const adv_crtc* crtc, unsigned *de, unsigned* bs, unsigned* rs, unsigned* re, unsigned* be, unsigned* tt, unsigned x_div) { /* output horizontal */ *tt = div_low(crtc->ht, x_div); *de = div_high(crtc->hde, x_div); *rs = div_high(crtc->hrs, x_div); *re = div_low(crtc->hre, x_div); *bs = *de + 1; if (*bs > *rs) *bs = *rs; *be = *re + 1; /* Not aggressive version *bs = *rs; *be = *re + 1; */ }
void div(int *N, int *M) { if (M[0] == 1 && M[1] == 0) { cout << "Wrong divisor!" << endl; return; } int L[10]; trans(L, "100000000"); if (compare(M, L) <= 0) { int M_num = 0; for (int i = M[0]; i >= 1; i--) { M_num = M_num * 10 + M[i]; } div_low(N, M_num); } else { div_high(N, M); } }