Lines Matching defs:ps
50 gmp_nextprime (gmp_primesieve_t *ps)
62 d = ps->d;
63 sp = ps->s + d;
66 if (sp != ps->s + SIEVESIZE)
68 d = sp - ps->s;
69 ps->d = d + 1;
70 return ps->s0 + 2 * d;
74 if (ps->s0 < 3)
76 ps->s0 = 3 - 2 * SIEVESIZE; /* Tricky */
83 for (sp = ps->s; sp < ps->s + SIEVESIZE; sp++)
86 memset (ps->s, 0, SIEVESIZE);
89 ps->s0 += 2 * SIEVESIZE;
92 while ((ps->sqrt_s0 + 1) * (ps->sqrt_s0 + 1) <= ps->s0 + 2 * SIEVESIZE - 1)
93 ps->sqrt_s0++;
95 pi = ((ps->s0 + 3) / 2) % 3;
98 if (ps->s0 + 2 * pi <= 3)
100 sp = ps->s + pi;
101 while (sp < ps->s + SIEVESIZE)
106 pi = ((ps->s0 + 5) / 2) % 5;
109 if (ps->s0 + 2 * pi <= 5)
111 sp = ps->s + pi;
112 while (sp < ps->s + SIEVESIZE)
117 pi = ((ps->s0 + 7) / 2) % 7;
120 if (ps->s0 + 2 * pi <= 7)
122 sp = ps->s + pi;
123 while (sp < ps->s + SIEVESIZE)
130 while (p <= ps->sqrt_s0)
132 pi = ((ps->s0 + p) / 2) % p;
135 if (ps->s0 + 2 * pi <= p)
137 sp = ps->s + pi;
138 while (sp < ps->s + SIEVESIZE)
145 ps->d = 0;
146 return gmp_nextprime (ps);
150 gmp_init_primesieve (gmp_primesieve_t *ps)
152 ps->s0 = 0;
153 ps->sqrt_s0 = 0;
154 ps->d = SIEVESIZE;
155 ps->s[SIEVESIZE] = 0; /* sentinel */