prime_miller_rabin 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/prime_miller_rabin.rb +45 -3
- data/lib/prime_miller_rabin/version.rb +2 -1
- data/prime_miller_rabin.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e71f504ac581df53a4de144d38753737de8ee32
|
4
|
+
data.tar.gz: 8a0341da7bfc0d88b5c37f51cb5bac7d2db7989b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e819edba359c4e40db5e8277430a5ee4ebc1f68b59690bdd98ad89f55813f7ddfaeef2a3c12d5fdcf7608b65ac15d1186ade0df8823dca76bbce3b7a8e1aea14
|
7
|
+
data.tar.gz: 01754969f833ebf1dac2cc3935551f7536b26997141ae028c0021fe318baaecf79161474d91dbcbcea220ae55d79482ee129abe9c678895a7e337490badeeb5e
|
data/lib/prime_miller_rabin.rb
CHANGED
@@ -1,15 +1,57 @@
|
|
1
|
+
require 'backports' if RUBY_VERSION < '1.9'
|
1
2
|
require 'prime'
|
2
3
|
require "prime_miller_rabin/version"
|
3
4
|
|
4
5
|
class Prime::MillerRabin < Prime::PseudoPrimeGenerator
|
5
6
|
|
6
7
|
def self.speed_intercept
|
7
|
-
|
8
|
+
if RUBY_VERSION >= "2.0"
|
9
|
+
Prime.send(:prepend, Prime::MillerRabin::PrimeIntercept)
|
10
|
+
else
|
11
|
+
Prime.class_eval <<-INTERCEPT_EVAL, __FILE__, __LINE__ + 1
|
12
|
+
def prime_with_intercept?(value, *args)
|
13
|
+
args.first.instance_of?(Prime::MillerRabin) ? args.first.prime?(value) : prime_without_intercept?(value, *args)
|
14
|
+
end
|
15
|
+
|
16
|
+
alias_method "prime_without_intercept?", "prime?"
|
17
|
+
alias_method "prime?", "prime_with_intercept?"
|
18
|
+
INTERCEPT_EVAL
|
19
|
+
end
|
8
20
|
end
|
9
21
|
|
10
22
|
def self.make_default
|
11
|
-
|
12
|
-
|
23
|
+
if RUBY_VERSION >= "2.0"
|
24
|
+
Prime.send(:prepend, Prime::MillerRabin::Default::Prime, Prime::MillerRabin::PrimeIntercept)
|
25
|
+
Integer.send(:prepend, Prime::MillerRabin::Default::Integer)
|
26
|
+
else
|
27
|
+
Prime.class_eval <<-PRIME_DEFAULT_EVAL, __FILE__, __LINE__ + 1
|
28
|
+
# Change the default generator used to be MillerRabin
|
29
|
+
def prime_with_mr_default?(value, generator = ::Prime::MillerRabin.new)
|
30
|
+
generator.instance_of?(Prime::MillerRabin) ? generator.prime?(value) : prime_without_mr_default?(value, generator)
|
31
|
+
end
|
32
|
+
|
33
|
+
def prime_division_with_mr_default?(value, generator = ::Prime::MillerRabin.new)
|
34
|
+
prime_division_without_mr_default?(value, generator)
|
35
|
+
end
|
36
|
+
|
37
|
+
alias_method "prime_without_mr_default?", "prime?"
|
38
|
+
alias_method "prime?", "prime_with_mr_default?"
|
39
|
+
|
40
|
+
alias_method "prime_division_without_mr_default?", "prime_division"
|
41
|
+
alias_method "prime_division", "prime_division_with_mr_default?"
|
42
|
+
PRIME_DEFAULT_EVAL
|
43
|
+
|
44
|
+
Integer.class_eval <<-INTEGER_DEFAULT_EVAL, __FILE__, __LINE__ + 1
|
45
|
+
|
46
|
+
def prime_division_with_mr_default(generator = ::Prime::MillerRabin.new)
|
47
|
+
prime_division_without_mr_default(generator)
|
48
|
+
end
|
49
|
+
|
50
|
+
alias_method "prime_division_with_mr_default?", "prime_division"
|
51
|
+
alias_method "prime_division", "prime_division_with_mr_default?"
|
52
|
+
INTEGER_DEFAULT_EVAL
|
53
|
+
|
54
|
+
end
|
13
55
|
end
|
14
56
|
|
15
57
|
def succ()
|
data/prime_miller_rabin.gemspec
CHANGED
@@ -18,6 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
+
spec.add_runtime_dependency "backports" # Wish this could be conditional. It is only used for ruby 1.8 for as long as I support it.
|
21
22
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
23
|
spec.add_development_dependency "rake"
|
23
24
|
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prime_miller_rabin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Frank Hall
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-06-
|
11
|
+
date: 2013-06-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: backports
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|