private static unsafe int Grisu2(double value, char *buffer, out int K) { DiyFp diyFp = new DiyFp(value); DiyFp minus; DiyFp plus; diyFp.NormalizedBoundaries(out minus, out plus); DiyFp cachedPower = GetCachedPower(plus.e, out K); DiyFp w = diyFp.Normalize() * cachedPower; DiyFp mp = plus * cachedPower; DiyFp diyFp2 = minus * cachedPower; diyFp2.f++; mp.f--; return(DigitGen(w, mp, mp.f - diyFp2.f, buffer, ref K)); }