ruby-numtheory 0.0.9.1 → 0.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5664624f001011ac200885754788be11cf9d987e
4
- data.tar.gz: 677ca9f6744e113bbf8fee3e651adb55dabd37ff
3
+ metadata.gz: 8e863efa8ec92c5c6a67c5cc17df53c1355e0565
4
+ data.tar.gz: 0543e5d9d99b856c4442a95b91951999d9e0e134
5
5
  SHA512:
6
- metadata.gz: 039d5fb674c11e4b2f43f55801b1c0922ab542a4a4a3b8454488a7f536ec4f64264f0190a3cfb329ff19e171b17b5db84a460ae1134f714bb6c220f621c0bf83
7
- data.tar.gz: 52d719becb03e7531fe445206e47681a0dead1e26a8f084a9f317a9526658cdbb09c8a9fbfbe742190915d3e36aa461feee7be722f5391cf1e3aca238b787701
6
+ metadata.gz: 03b09382a59295c16333ccc73a368e8976072209a709773735752382478974d111beb12f1e225d2c370ee21f04ec2424db6d8508d8ebcc659f96a301d731cc72
7
+ data.tar.gz: 02295d8eda2029415b4de4f9c2b0ab2f50c34effc8bd0501a1cb40ec66aa3e8e1b04d4cfcf4ef1a54562427b9069c00a2e02a7b83544b009bbb04383878281b1
@@ -4,3 +4,4 @@ rvm:
4
4
  - 2.0.0
5
5
  - 2.1.0
6
6
  - 2.2.0
7
+ - 2.4.0
data/Gemfile CHANGED
@@ -1,8 +1,8 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  group :development do
4
- gem "rake", ">= 0.9"
5
- gem "rspec", "~> 2.10.0"
4
+ gem "rake", ">= 12.0"
5
+ gem "rspec", "~> 3.5.0"
6
6
  gem "bundler", ">= 1.0.0"
7
7
  gem "rake-compiler"
8
8
  end
@@ -99,7 +99,7 @@ Init_numtheory()
99
99
  numtheory_nextprime, 0);
100
100
  rb_define_method(rb_cInteger, "prime_division",
101
101
  numtheory_prime_division, 0);
102
- rb_define_method(rb_cFixnum, "factorial",
102
+ rb_define_method(rb_cInteger, "factorial",
103
103
  numtheory_factorial_primeswing, 0);
104
104
  rb_define_method(rb_cInteger, "primes_upto",
105
105
  numtheory_primes_upto, 1);
@@ -12,7 +12,7 @@
12
12
  "adcl $0, %2 \n\t" : \
13
13
  "=m"(c0), "=m"(c1), "=m"(c2) : \
14
14
  "m"(c0), "m"(c1), "m"(c2), "m"(i), "m"(j) : \
15
- "%eax","%edx", "%cc");
15
+ "%eax","%edx", "cc");
16
16
 
17
17
  #define BITSPERDIG (SIZEOF_BDIGITS * CHAR_BIT)
18
18
  #define BIGRAD ((BDIGIT_DBL)1 << BITSPERDIG)
@@ -3,7 +3,7 @@ Gem::Specification.new do |gem|
3
3
  gem.homepage = "http://github.com/lomereiter/ruby-numtheory"
4
4
  gem.license = "MIT"
5
5
  gem.summary = "Ruby number theory library"
6
- gem.version = "0.0.9.1"
6
+ gem.version = "0.1.0"
7
7
  gem.platform = Gem::Platform::RUBY
8
8
 
9
9
  gem.description = <<-EOF
@@ -5,27 +5,27 @@ describe "arithmetic function" do
5
5
 
6
6
  describe "primepi" do
7
7
  it "should raise ArgumentError if there're not enough precomputed primes" do
8
- expect { primepi(100_000_000_000) }.should raise_error
8
+ expect { primepi(100_000_000_000) }.to raise_error(ArgumentError)
9
9
  end
10
10
 
11
11
  it "should return the number of primes less or equal than a given number" do
12
- primepi(1).should == 0
13
- primepi(2).should == 1
14
- primepi(123512).should == 11607
15
- primepi(498765).should == 41438
16
- primepi(312361).should == 26983
17
- primepi(-123513).should == 0
12
+ expect(primepi(1)).to eq(0)
13
+ expect(primepi(2)).to eq(1)
14
+ expect(primepi(123512)).to eq(11607)
15
+ expect(primepi(498765)).to eq(41438)
16
+ expect(primepi(312361)).to eq(26983)
17
+ expect(primepi(-123513)).to eq(0)
18
18
  end
19
19
  end
20
20
 
21
21
  describe "eulerphi" do
22
22
  it "should raise ArgumentError if the number is zero" do
23
- expect { eulerphi(0) }.should raise_error
23
+ expect { eulerphi(0) }.to raise_error(ArgumentError)
24
24
  end
25
25
 
26
26
  it "should return the number of positive integers less than 'n' and coprime with 'n'" do
27
- eulerphi(12312361361).should == 11664342324
28
- eulerphi(12361212371236123).should == 11713214239144000
27
+ expect(eulerphi(12312361361)).to eq(11664342324)
28
+ expect(eulerphi(12361212371236123)).to eq(11713214239144000)
29
29
  end
30
30
  end
31
31
  end
@@ -3,30 +3,30 @@ require 'numtheory'
3
3
  describe "bit functions" do
4
4
  describe "popcount" do
5
5
  it "should return the number of bits set in a non-negative number" do
6
- 12351231231235091328209183029825132908123295012351.popcount.should == 84
7
- 82362346211236.popcount.should == 23
6
+ expect(12351231231235091328209183029825132908123295012351.popcount).to eq (84)
7
+ expect(82362346211236.popcount).to eq(23)
8
8
  end
9
9
 
10
10
  it "should raise ArgumentError for negative numbers" do
11
- expect { (-5).popcount }.should raise_error
12
- expect { (-112351235123512351235).popcount }.should raise_error
11
+ expect { (-5).popcount }.to raise_error(ArgumentError)
12
+ expect { (-112351235123512351235).popcount }.to raise_error(ArgumentError)
13
13
  end
14
14
  end
15
15
 
16
16
  describe "bitlength" do
17
17
  it "should return the length of a positive number in bits" do
18
- 123512351235125312.bitlength.should == 57
19
- 12355312.bitlength.should == 24
20
- 9123616312361235523462346311236136123123136212361.bitlength.should == 163
18
+ expect(123512351235125312.bitlength).to eq(57)
19
+ expect(12355312.bitlength).to eq(24)
20
+ expect(9123616312361235523462346311236136123123136212361.bitlength).to eq(163)
21
21
  end
22
22
 
23
23
  it "should return 1 when argument is 0" do
24
- 0.bitlength.should == 1
24
+ expect(0.bitlength).to eq(1)
25
25
  end
26
26
 
27
27
  it "should raise ArgumentError for negative numbers" do
28
- expect { (-12351).bitlength }.should raise_error
29
- expect { (-2039462306492384059132).bitlength }.should raise_error
28
+ expect { (-12351).bitlength }.to raise_error(ArgumentError)
29
+ expect { (-2039462306492384059132).bitlength }.to raise_error(ArgumentError)
30
30
  end
31
31
  end
32
32
  end
@@ -4,61 +4,61 @@ describe "Z/pZ" do
4
4
 
5
5
  describe "modular inverse" do
6
6
  it "should raise ArgumentError if the inverse doesn't exist" do
7
- expect { 3.inverse(1236123) }.should raise_error
8
- expect { 636356661312236113261221231.inverse(71324141236123712312361347131) }.should raise_error
7
+ expect { 3.inverse(1236123) }.to raise_error(ArgumentError)
8
+ expect { 636356661312236113261221231.inverse(71324141236123712312361347131) }.to raise_error(ArgumentError)
9
9
  end
10
10
 
11
11
  it "should return the inverse modulo 'p' if it exists" do
12
- 170149610396103139612301.inverse(91023960139513512035130519351035).should == 47319168690720853552108144675271
13
- 10239613261.inverse(1713461351236).should == 1314959799745
14
- 61235.inverse(13271).should == 10552
12
+ expect(170149610396103139612301.inverse(91023960139513512035130519351035)).to eq(47319168690720853552108144675271)
13
+ expect(10239613261.inverse(1713461351236)).to eq(1314959799745)
14
+ expect(61235.inverse(13271)).to eq(10552)
15
15
  end
16
16
  end
17
17
 
18
18
  describe "jacobi symbol (a|n)" do
19
19
  it "should raise ArgumentError for negative 'n'" do
20
- expect { 23.jacobi(-15) }.should raise_error
20
+ expect { 23.jacobi(-15) }.to raise_error(ArgumentError)
21
21
  end
22
22
 
23
23
  it "should raise ArgumentError for even 'n'" do
24
- expect { 17.jacobi(24) }.should raise_error
24
+ expect { 17.jacobi(24) }.to raise_error(ArgumentError)
25
25
  end
26
26
 
27
27
  it "should return 0 when 'a' and 'n' have common divisors" do
28
- 25.jacobi(35).should be_zero
29
- -24.jacobi(9).should be_zero
30
- 33.jacobi(3).should be_zero
31
- 128367169183989283691832619381.jacobi(1829631238193612396183612312361231123).should be_zero
28
+ expect(25.jacobi(35)).to be_zero
29
+ expect(-24.jacobi(9)).to be_zero
30
+ expect(33.jacobi(3)).to be_zero
31
+ expect(128367169183989283691832619381.jacobi(1829631238193612396183612312361231123)).to be_zero
32
32
  end
33
33
 
34
34
  it "should return 1 when 'a' is a square residue modulo 'n'" do
35
- 26.jacobi(25).should == 1
36
- 261235125312351.jacobi(251235123123512351).should == 1
37
- 123412354123123512351235123512455123.jacobi(12351231236123112351235123523513411).should == 1
35
+ expect(26.jacobi(25)).to eq(1)
36
+ expect(261235125312351.jacobi(251235123123512351)).to eq(1)
37
+ expect(123412354123123512351235123512455123.jacobi(12351231236123112351235123523513411)).to eq(1)
38
38
  end
39
39
 
40
40
  it "should return -1 in all the other cases" do
41
- 123412354123123512351235123512455123.jacobi(1235123123612311235123512352351341).should == -1
42
- 1386136123613661.jacobi(19381923138198391).should == -1
43
- 2.jacobi(5).should == -1
44
- 17.jacobi(23).should == -1
41
+ expect(123412354123123512351235123512455123.jacobi(1235123123612311235123512352351341)).to eq(-1)
42
+ expect(1386136123613661.jacobi(19381923138198391)).to eq(-1)
43
+ expect(2.jacobi(5)).to eq(-1)
44
+ expect(17.jacobi(23)).to eq(-1)
45
45
  end
46
46
  end
47
47
 
48
48
  describe "square root" do
49
49
 
50
50
  it "should raise ArgumentError if 'p' is not a prime number" do
51
- expect { 7.sqrt_mod(9)}.should raise_error
51
+ expect { 7.sqrt_mod(9)}.to raise_error(ArgumentError)
52
52
  end
53
53
 
54
54
  it "should return nil if there is no square root" do
55
- 33.sqrt_mod(3).should be_nil
56
- 1231356123521351251.sqrt_mod(123061236013903516123121612316123612379).should be_nil
55
+ expect(33.sqrt_mod(3)).to be_nil
56
+ expect(1231356123521351251.sqrt_mod(123061236013903516123121612316123612379)).to be_nil
57
57
  end
58
58
 
59
59
  it "should otherwise return the square root from range [0 .. p/2]" do
60
- 1235112351311.sqrt_mod(123061936032513553).should == 20377270042474840
61
- 910836013912301293612035135.sqrt_mod(45734753461235122313131523613612412341612361691).should == 17194653522779996910096883279884862754880186510
60
+ expect(1235112351311.sqrt_mod(123061936032513553)).to eq(20377270042474840)
61
+ expect(910836013912301293612035135.sqrt_mod(45734753461235122313131523613612412341612361691)).to eq(17194653522779996910096883279884862754880186510)
62
62
  end
63
63
  end
64
64
  end
@@ -1,31 +1,25 @@
1
1
  require 'numtheory'
2
2
 
3
- RSpec.configure do |config|
4
- config.expect_with :rspec do |c|
5
- c.syntax = [:should]
6
- end
7
- end
8
-
9
3
  describe "primality tests" do
10
4
 
11
5
  describe "prime? method" do
12
6
  it "should return exact result for precomputed values" do
13
- 0.should_not be_prime
14
- 1.should_not be_prime
15
- 2.should be_prime
16
- 3.should be_prime
17
- 9.should_not be_prime
18
- -1.should_not be_prime
19
- -2.should be_prime
20
- -13.should be_prime
21
- -16.should_not be_prime
7
+ expect(0).not_to be_prime
8
+ expect(1).not_to be_prime
9
+ expect(2).to be_prime
10
+ expect(3).to be_prime
11
+ expect(9).not_to be_prime
12
+ expect(-1).not_to be_prime
13
+ expect(-2).to be_prime
14
+ expect(-13).to be_prime
15
+ expect(-16).not_to be_prime
22
16
  end
23
17
 
24
18
  it "should apply BPSW test for larger values" do
25
- 12351236123627.should_not be_prime
26
- 12351236123659.should be_prime
27
- 12351236123627123612361235012532906135124234123512356123512342219.should_not be_prime
28
- 12351236123627123612361235012532906135124234123512356123512342221.should be_prime
19
+ expect(12351236123627).not_to be_prime
20
+ expect(12351236123659).to be_prime
21
+ expect(12351236123627123612361235012532906135124234123512356123512342219).not_to be_prime
22
+ expect(12351236123627123612361235012532906135124234123512356123512342221).to be_prime
29
23
  end
30
24
 
31
25
  it "should return true for BPSW pseudoprimes" do
@@ -38,13 +32,13 @@ describe "primality tests" do
38
32
  NumTheory.module_eval { remove_const :PrimalityTests }
39
33
  NumTheory::PrimalityTests = 1
40
34
  srand(100) # MR test uses random base to start
41
- 671.should be_MR_pseudoprime
42
- 671.should_not be_BPSW_pseudoprime
35
+ expect(671).to be_MR_pseudoprime
36
+ expect(671).not_to be_BPSW_pseudoprime
43
37
 
44
38
  NumTheory.module_eval { remove_const :PrimalityTests }
45
39
  NumTheory::PrimalityTests = 10
46
40
  srand(42)
47
- 671.should_not be_MR_pseudoprime
41
+ expect(671).not_to be_MR_pseudoprime
48
42
  end
49
43
  end
50
44
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-numtheory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artem Tarasov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-26 00:00:00.000000000 Z
11
+ date: 2017-03-07 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |2
14
14
  The library is written as C extension and aims to provide
@@ -64,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
64
  version: '0'
65
65
  requirements: []
66
66
  rubyforge_project:
67
- rubygems_version: 2.4.5
67
+ rubygems_version: 2.5.1
68
68
  signing_key:
69
69
  specification_version: 4
70
70
  summary: Ruby number theory library