Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Math::Prime::Util::PP(User Contributed Perl DocumentatMath::Prime::Util::PP(3)

NAME
       Math::Prime::Util::PP - Pure Perl version of Math::Prime::Util

VERSION
       Version 0.73

SYNOPSIS
       The functionality is basically identical	to Math::Prime::Util, as this
       module is just the Pure Perl implementation.  This documentation	will
       only note differences.

	 # Normally you	would just import the functions	you are	using.
	 # Nothing is exported by default.
	 use Math::Prime::Util ':all';

DESCRIPTION
       Pure Perl implementations of prime number utilities that	are normally
       handled with XS or GMP.	Having the Perl	implementations	(1) provides
       examples, (2) allows the	functions to run even if XS isn't available,
       and (3) gives big number	support	if Math::Prime::Util::GMP isn't
       available.  This	is a subset of Math::Prime::Util's functionality.

       All routines should work	with native integers or	multi-precision
       numbers.	 To enable big numbers,	use bigint or bignum:

	   use bigint;
	   say prime_count_approx(1000000000000000000000000)'
	   # says 18435599767347543283712

       This is still experimental, and some functions will be very slow.  The
       Math::Prime::Util::GMP module has much faster versions of many of these
       functions.  Alternately,	Math::Pari has a lot of	these types of
       functions.

FUNCTIONS
   euler_phi
       Takes a single integer input and	returns	the Euler totient.

   euler_phi_range
       Takes two values	defining a range "low" to "high" and returns an	array
       with the	totient	of each	value in the range, inclusive.

   moebius
       Takes a single integer input and	returns	the Moebius function.

   moebius_range
       Takes two values	defining a range "low" to "high" and returns an	array
       with the	Moebius	function of each value in the range, inclusive.

LIMITATIONS
       The SQUFOF and Fermat factoring algorithms are not implemented yet.

       Some of the prime methods use more memory than they should, as the
       segmented sieve is not properly used in "primes"	and "prime_count".

PERFORMANCE
       Performance compared to the XS/C	code is	quite poor for many
       operations.  Some operations that are relatively	close for small	and
       medium-size values:

	 next_prime / prev_prime
	 is_prime / is_prob_prime
	 is_strong_pseudoprime
	 ExponentialIntegral / LogarithmicIntegral / RiemannR
	 primearray

       Operations that are slower include:

	 primes
	 random_prime /	random_ndigit_prime
	 factor	/ factor_exp / divisors
	 nth_prime
	 prime_count
	 is_aks_prime

       Performance improvement in this code is still possible.	The prime
       sieve is	over 2x	faster than anything I was able	to find	online,	but it
       is still	has room for improvement.

       Math::Prime::Util::GMP offers "C+XS+GMP"	support	for most of the
       important functions, and	will be	vastly faster for most operations.  If
       you install that	module,	Math::Prime::Util will load it automatically,
       meaning you should not have to think about what code is actually	being
       used (C,	GMP, or	Perl).

       Memory use will generally be higher for the PP code, and	in some	cases
       much higher.  Some of this may be addressed in a	later release.

       For small values	(e.g. primes and prime counts under 10M) most of this
       will not	matter.

SEE ALSO
       Math::Prime::Util

       Math::Prime::Util::GMP

AUTHORS
       Dana Jacobsen <dana@acm.org>

COPYRIGHT
       Copyright 2012-2016 by Dana Jacobsen <dana@acm.org>

       This program is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

perl v5.32.1			  2018-11-15	      Math::Prime::Util::PP(3)

NAME | VERSION | SYNOPSIS | DESCRIPTION | FUNCTIONS | LIMITATIONS | PERFORMANCE | SEE ALSO | AUTHORS | COPYRIGHT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Math::Prime::Util::PP&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help