BI Sqrtsf(BI n, int sf) { BI a; int i,j; memset(&a, 0, sizeof(a)); for (i=SIZE/2; i>=0; i--){ assert(i<SIZE); for (j=9; j>=0; j--) { a.n[i] = j; if (Comp(Mult(a, a), n) <= 0) break; } if (j<0) assert(j>=0); } if (sf == FLR || Comp(Mult(a, a), n) == 0) return a; else return PlusOne(a); }
std::size_t PostIncrement(std::size_t& Val) { std::size_t Ret = Val; Val = PlusOne(Val); return Ret; }
void Enqueue(T Elem) { if (PlusOne(Back) == Front) throw BadEnqueue(); A[PostIncrement(Back)] = Elem; }