ruby-numtheory 0.0.9.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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