static void CheckLogPlaces(int places)
        {
            BigNumber tmp6, tmp7, tmp8, tmp9;
            int       dplaces;

            dplaces = places + 4;

            if (dplaces > MM_lc_log_digits)
            {
                MM_lc_log_digits = dplaces + 4;

                tmp6 = new BigNumber();
                tmp7 = new BigNumber();
                tmp8 = new BigNumber();
                tmp9 = new BigNumber();

                dplaces += 6 + (int)Math.Log10((double)places);

                BigNumber.Copy(BigNumber.One, tmp7);
                tmp7.exponent = -places;

                BigNumber.LogAGMRFunc(BigNumber.One, tmp7, tmp8, dplaces);

                BigNumber.Mul(tmp7, BigNumber.BN_OneHalf, tmp6);

                BigNumber.LogAGMRFunc(BigNumber.One, tmp6, tmp9, dplaces);

                BigNumber.Sub(tmp9, tmp8, BN_lc_log2);

                tmp7.exponent -= 1;

                BigNumber.LogAGMRFunc(BigNumber.One, tmp7, tmp9, dplaces);

                BigNumber.Sub(tmp9, tmp8, BN_lc_log10);
                BigNumber.Reziprocal(BN_lc_log10R, BN_lc_log10, dplaces);
            }
        }