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); } }