The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
use strict;
use warnings;

use Test::More;
use Math::Prime::Util qw/twin_prime_count nth_twin_prime/;

# 2^n using primesieve (fast), double checked with Pari 2.7.0 (slow):
#   a(n)=my(s, p=2); forprime(q=3, 2^n, if(q-p==2, s++); p=q); s
#   for (i=1,35,print(2^i," ", a(i)))
# 10^n from tables
my %nthvals = (
         0 =>           0,
         1 =>           3,
         2 =>           5,
         3 =>          11,
         5 =>          29,
         7 =>          59,
         8 =>          71,
        10 =>         107,
        17 =>         239,
        24 =>         461,
        35 =>         881,
        36 =>        1019,
        62 =>        2027,
       107 =>        4091,
       177 =>        8087,
       205 =>        9929,
       290 =>       16361,
       505 =>       32717,
       860 =>       65519,
      1224 =>       99989,
      1526 =>      131009,
      2679 =>      262109,
      4750 =>      524219,
      8169 =>      999959,
      8535 =>     1048571,
     15500 =>     2097131,
     27995 =>     4193801,
     50638 =>     8388449,
     58980 =>     9999971,
     92246 =>    16777139,
    168617 =>    33554009,
    309561 =>    67108667,
    440312 =>    99999587,
    571313 =>   134217437,
   1056281 =>   268435007,
   1961080 =>   536870837,
   3424506 =>   999999191,
   3650557 =>  1073741717,
   6810670 =>  2147482949,
  12739574 =>  4294965839,
  23878645 =>  8589934289,
  27412679 =>  9999999701,
  44849427 => 17179868807,
  84384508 => 34359737297,
  159082253 => 68719476389,
  224376048 => 99999999761,
 1870585220 => 999999999959,
);

plan tests => scalar(keys %nthvals);

foreach my $n (sort {$a <=> $b} keys %nthvals) {
  my $ntp = $nthvals{$n};
  is( nth_twin_prime($n), $ntp, "nth_twin_prime($n) = $ntp" );
}