Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.ruby > #7120

Re: [ANN] primes-utils rubygem

Newsgroups comp.lang.ruby
Date 2015-06-19 14:05 -0700
References <141cbf02-c25c-4cc6-a380-4d34c896fe54@googlegroups.com>
Message-ID <694b4546-cd59-4524-a4da-150347031a41@googlegroups.com> (permalink)
Subject Re: [ANN] primes-utils rubygem
From jzakiya@gmail.com

Show all headers | View raw


On Thursday, April 2, 2015 at 7:48:54 PM UTC-4, jza...@gmail.com wrote:
> "primes-utils" is a Rubygem which provides a suite of extremely fast
> (relative to Ruby's standard library) utility methods for testing and
> generating primes.
> 
> Install it the usual way:
> 
>     $ gem install primes-utils
> 
> Then require inside ruby as:
> 
>     > require 'primes/utils'
> 
> The suite consists of the following methods:
> 
> 1)prime?
> Determine if the absolute value of an integer is prime.  Return 'true'
> or 'false'.
> This replaces the `prime?` method  in the `prime.rb` standard library.
> 
> 2)primemr?(k=20)
> Determine if the absolute value of an integer is prime using
> Miller-Rabin test.  Return 'true' or 'false'.
> Miller-Rabin here is super fast, but probabilistic (not deterministic),
> primality test.
> https://en.wikipedia.org/wiki/Miller-Rabin_primality_test
> The method's reliability can be increased by increasing the default
> input parameter of k=20.
> 
> 3)factors(p=13) or prime_division(p=13)
> Determine the prime factorization of the absolute value of an integer.
> This replaces the `prime division` method in the `prime.rb` standard
> library.
> Returns an array of arrays of factors and exponents: [[2,4],[3,2],[5,1]]
> => (2^4)(3^2)(5^1) = (16)(9)(5) = 720
> Default Strictly Prime (SP) Prime Generator (PG) used here is P13.
> Can change SP PG used on input. Acceptable primes range (3 - 19).
> 
> 4)primes(start_num=0)
> Create an array of primes from the absolute value range (|start_num| -
> |end_num|).
> The order of the range doesn't matter if both given:  start.primes end
> <=> end.prime start
> If only one parameter used, then all the primes upto that number will be
> returned.
> 
> 5)primenth(p=11) or nthprime(p=11)
> Return the value of the nth (absolute value) prime.
> Default Strictly Prime (SP) Prime Generator (PG) used here is P11.
> Can change SP PG used on input. Acceptable primes range (3 - 19).
> 
> Coding Implementations
> The methods `primemr`, `nthprime/primenth`, and `primes` are coded in
> pure ruby. The methods `prime?` and `prime_division/factors` have two
> implementations. Each has a pure ruby implementation, and also a hybrid
> implementation which uses the Unix cli command `factor` if its available
> on the host OS. `factor` [5] is an extremely fast C coded factoring
> algorithm, part of the GNU Core Utilities package [4].
> 
> Upon loading, the gem tests if the desired `factor` command exists on
> the host OS. If so, it wraps a system call to it and uses it for
> `prime?` and `prime_division/factors`. If not, it uses a fast pure ruby
> implementation for each method based on the Sieve of Zakiya
> (SoZ)[1][2][3].
> 
> References
> [1]https://www.scribd.com/doc/150217723/Improved-Prim...
> [2]https://www.scribd.com/doc/228155369/The-Segmented...
> [3]https://www.scribd.com/doc/73385696/The-Sieve-of-Zakiya
> [4]https://en.wikipedia.org/wiki/GNU_Core_Utilities
> [5]https://en.wikipedia.org/wiki/Factor_(Unix)
> 
> Author
> Jabari Zakiya

Friday, June 19, 2015
Now available, primes-utils 2.2.0, the Juneteenth release:
(https://en.wikipedia.org/wiki/Juneteenth).

New in 2.2.0
Refactored methods `primes`, `primescnt`, `primenth|nthprime`.

Changed default PGs on some methods to significantly increase speed.

Implemented mem error handling for `primes`, `primescnt`, `primenth` to
gracefully fail with informative error messages.
 
Upon failure methods return `nil` value.

Increased to 1.6 billion, indexed nth primes used in `primenth` to create ranges to find nth prime within, extending max possible nth prime.

Removed max nth prime ceiling. Only limitations now are available memory and time.

Upon loading with Ruby 1.8 `require 'rubygems'` is invoked to enable installing gems.

Back to comp.lang.ruby | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

[ANN]  primes-utils rubygem jzakiya@gmail.com - 2015-04-02 16:48 -0700
  Re: [ANN]  primes-utils rubygem jzakiya@gmail.com - 2015-05-25 07:56 -0700
  Re: [ANN]  primes-utils rubygem jzakiya@gmail.com - 2015-06-19 14:05 -0700
  Re: [ANN]  primes-utils rubygem jzakiya@gmail.com - 2015-07-01 08:40 -0700
  Re: [ANN]  primes-utils rubygem jzakiya@gmail.com - 2015-12-14 12:23 -0800
  Re: [ANN]  primes-utils rubygem jzakiya@gmail.com - 2015-12-28 07:36 -0800

csiph-web