I'm working on overloading operators (still working on making a bignum decimal class) and I ran in to a snag. I can do all the normal arithmetic, but dividing seems to escape me. I came up with the idea that a/b = c where c is the number I want, and instead I said a = b*c and lets loops through all the possible combinations of c*b until it equals a. Although this works, it's so inefficient I can't divide numbers with 5 or more decimal places since it's on the order of O(10^n) (10 numbers for each decimal place, n = number of decimal places). I would like some ideas on how to do this, if more than one decimal place can be accomplished at a time that would be awesome, but if not it wouldn't be any worse than my other operators. Here is my code for the dividing operator as it is now.

Code:
//the function bdouble.check(bdouble) checks if the passed argument is the same
//value as the one that is calling the function

        friend bdouble operator / (const bdouble a, const bdouble b)
        {
            bdouble<MAXSIZE> ret(0,0,0);
            bdouble<MAXSIZE> mult_b = b;
            
            //find 1/b to multiply by a
            do{
                ++ret;
                mult_b = b * ret;
                    
            }while(!mult_b.check(a));
            
            return ret;
        }