28 return std::pair<LongIntType,LongIntType>(0,1);
33 LongIntType a, h[3] = { 0, 1, 0 }, k[3] = { 1, 0, 0 };
39 return std::pair<LongIntType,LongIntType>(f,1);
59 for (i = 0; i < 64; i++)
72 if (k[1] * a + k[0] >= md)
74 x = (md - k[0]) / k[1];
75 if (x * 2 >= a || k[1] >= md)
81 h[2] = x * h[1] + h[0]; h[0] = h[1]; h[1] = h[2];
82 k[2] = x * k[1] + k[0]; k[0] = k[1]; k[1] = k[2];
84 return std::pair<LongIntType,LongIntType>(neg ? -h[1] : h[1],k[1]);