test(N) = /* pentagonal numbers recurrence */
{ my(s,t,p);
  p = vector(N); p[1] = 1;
  for (n=1, N-1,
     s = 0; t = n+1;
     for (k=1, n,
       t -= 2*k-1; /* n+1 - k(3k-1)/2 */
       if (t<=0,break);
       s -= (-1)^k*p[t];
       t -= k;     /* n+1 - k(3k+1)/2 */
       if (t<=0,break);
       s -= (-1)^k*p[t]
    );
    p[n+1] = s;
    if (s != numbpart(n), error([n, s]))
  );
}
test(2*10^4);

numbpart(0)
numbpart(52602)
numbpart(147007)
numbpart(10^15+2)
partitions(1)
partitions(9)
partitions(9,3)
partitions(-1)
