ruby-mpfr 0.0.12 → 0.0.13

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.
@@ -5,4 +5,5 @@ rescue
5
5
  raise
6
6
  end
7
7
 
8
+ require 'mpfr'
8
9
  require 'mpfr/mpfr_gmp'
@@ -1,3 +1,4 @@
1
+ require 'mpfr'
1
2
  require 'mpfr/matrix.so'
2
3
 
3
4
  class MPFR
@@ -1 +1,3 @@
1
- RUBY_MPFR_VERSION = '0.0.12'
1
+ module MPFR
2
+ VERSION = '0.0.13'
3
+ end
@@ -1,41 +1,26 @@
1
1
  # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "mpfr/version"
2
4
 
3
5
  Gem::Specification.new do |s|
4
- s.name = %q{ruby-mpfr}
5
- s.version = "0.0.6"
6
+ s.name = "ruby-mpfr"
7
+ s.version = MPFR::VERSION
8
+ s.authors = ["Takayuki YAMAGUCHI"]
9
+ s.email = ["d@ytak.info"]
10
+ s.homepage = ""
11
+ s.summary = "Ruby bindings of MPFR"
12
+ s.description = "Ruby bindings of MPFR that is a C library for multiple-precision floating-point computations"
6
13
 
7
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Takayuki YAMAGUCHI"]
9
- s.date = %q{2009-12-26}
10
- s.description = %q{ruby-mpfr is a library to use MPFR[http://www.mpfr.org/] which is a C library for
11
- multiple-precision floating-point computations.
12
- ruby-mpfr also includes Matrix class of MPFR; MPFR::Matrix, MPFR::SquareMatrix,
13
- MPFR::ColumnVector, and MPFR::RowVector.
14
+ s.rubyforge_project = "ruby-mpfr"
14
15
 
15
- * History[link:History_txt.html]
16
- * {Examples of Usage}[link:Example_rdoc.html]}
17
- s.email = ["d@ytak.info"]
18
- s.extensions = ["ext/mpfr/extconf.rb", "ext/mpfr_matrix/mpfr/extconf.rb"]
19
- s.extra_rdoc_files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "Example.rdoc"]
20
- s.files = ["Example.rdoc", "History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "Rakefile", "ext/mpfr/extconf.rb", "ext/mpfr/ruby_mpfr.c", "ext/mpfr/ruby_mpfr.h", "ext/mpfr_matrix/mpfr/extconf.rb", "ext/mpfr_matrix/mpfr/func_mpfr_matrix.c", "ext/mpfr_matrix/mpfr/func_mpfr_matrix.h", "ext/mpfr_matrix/mpfr/ruby_mpfr.h", "ext/mpfr_matrix/mpfr/ruby_mpfr_matrix.c", "ext/mpfr_matrix/mpfr/ruby_mpfr_matrix.h", "lib/mpfr/matrix.rb", "lib/mpfr/version.rb", "ruby-mpfr.gemspec", "script/console", "script/destroy", "script/generate", "spec/mpfr/allocate_spec.rb", "spec/mpfr/arithmetic_spec.rb", "spec/mpfr/comparison_spec.rb", "spec/mpfr/constant_spec.rb", "spec/mpfr/conversion_spec.rb", "spec/mpfr/exception_spec.rb", "spec/mpfr/functions_spec.rb", "spec/mpfr/generate_number_modulue.rb", "spec/mpfr/precision_roundmode_spec.rb", "spec/mpfr/rounding_spec.rb", "spec/mpfr/set_value_spec.rb", "spec/mpfr/spec_helper.rb", "spec/mpfr/string_spec.rb", "spec/mpfr_matrix/generate_matrix_arguments.rb", "spec/mpfr_matrix/mpfr_matrix_alloc_spec.rb", "spec/mpfr_matrix/mpfr_matrix_arithmetic_spec.rb", "spec/mpfr_matrix/mpfr_matrix_set_element_spec.rb", "spec/mpfr_matrix/mpfr_matrix_string_spec.rb", "spec/mpfr_matrix/mpfr_square_matrix_spec.rb", "spec/mpfr_matrix/spec_helper.rb", "spec/spec.opts", "tasks/extconf.rake"]
21
- s.homepage = %q{http://rubyforge.org/projects/ruby-mpfr/}
22
- s.post_install_message = %q{PostInstall.txt}
23
- s.rdoc_options = ["--main", "README.rdoc"]
24
- s.require_paths = ["lib", "ext"]
25
- s.rubyforge_project = %q{ruby-mpfr}
26
- s.rubygems_version = %q{1.3.5}
27
- s.summary = %q{ruby-mpfr is a library to use MPFR[http://www.mpfr.org/] which is a C library for multiple-precision floating-point computations}
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib", "ext", "ext/gmp", "ext/mpfr_matrix"]
20
+ s.extensions = Dir.glob('ext/**/extconf.rb')
28
21
 
29
- if s.respond_to? :specification_version then
30
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
31
- s.specification_version = 3
32
-
33
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
34
- s.add_development_dependency(%q<hoe>, [">= 2.4.0"])
35
- else
36
- s.add_dependency(%q<hoe>, [">= 2.4.0"])
37
- end
38
- else
39
- s.add_dependency(%q<hoe>, [">= 2.4.0"])
40
- end
22
+ # specify any dependencies here; for example:
23
+ s.add_development_dependency "rspec"
24
+ s.add_development_dependency "yard"
25
+ # s.add_runtime_dependency "rest-client"
41
26
  end
@@ -19,3 +19,62 @@ describe MPFR, "when comparing two numbers" do
19
19
  end
20
20
  end
21
21
 
22
+ describe MPFR do
23
+ context "checking whether number is nan" do
24
+ it "should return true" do
25
+ MPFR('nan').nan?.should be_true
26
+ end
27
+
28
+ it "should return false" do
29
+ MPFR('1.23').nan?.should be_false
30
+ MPFR('inf').nan?.should be_false
31
+ end
32
+ end
33
+
34
+ context "checking whether number is finite" do
35
+ it "should return true" do
36
+ MPFR('-0.28').finite?.should be_true
37
+ end
38
+
39
+ it "should return false" do
40
+ MPFR('nan').finite?.should be_false
41
+ MPFR('inf').finite?.should be_false
42
+ end
43
+ end
44
+
45
+ context "checking whether number is zero" do
46
+ it "should return true" do
47
+ MPFR(0).zero?.should be_true
48
+ end
49
+
50
+ it "should return false" do
51
+ MPFR(1).zero?.should be_false
52
+ MPFR('nan').zero?.should be_false
53
+ MPFR('inf').zero?.should be_false
54
+ end
55
+ end
56
+
57
+ context "checking whether number is nonzero" do
58
+ it "should return true" do
59
+ MPFR(1).nonzero?.should be_true
60
+ MPFR('nan').nonzero?.should be_true
61
+ MPFR('inf').nonzero?.should be_true
62
+ end
63
+
64
+ it "should return false" do
65
+ MPFR(0).nonzero?.should be_false
66
+ end
67
+ end
68
+
69
+ context "checking whether number is regular" do
70
+ it "should return true" do
71
+ MPFR(-1).regular?.should be_true
72
+ end
73
+
74
+ it "should return false" do
75
+ MPFR(0).regular?.should be_false
76
+ MPFR('nan').regular?.should be_false
77
+ MPFR('inf').regular?.should be_false
78
+ end
79
+ end
80
+ end
@@ -1,14 +1,180 @@
1
1
  require File.expand_path(File.dirname(__FILE__)) + '/spec_helper.rb'
2
2
 
3
- MPFR.set_default_prec(90)
3
+ MPFR.set_default_prec(256)
4
4
 
5
- describe MPFR, 'when converting instance of other class' do
6
- it "should be transformed to float" do
7
- num = GenerateNumber.float(1000, 100) + [0.0]
8
- num.each do |a|
9
- b = MPFR.new(a).get_d(MPFR::RNDZ)
10
- a.should == b
5
+ describe MPFR do
6
+ context "when converting to float" do
7
+ it "should be transformed to float" do
8
+ num = GenerateNumber.float(1000, 100) + [0.0]
9
+ num.each do |a|
10
+ b = MPFR.new(a).get_d(MPFR::RNDZ)
11
+ a.should == b
12
+ end
11
13
  end
12
14
  end
13
- end
14
15
 
16
+ context "when rounding" do
17
+ it "should round a positive number." do
18
+ a = MPFR('1.3')
19
+ a.round.should == 1
20
+ end
21
+
22
+ it "should round a positive number to a bigger number." do
23
+ a = MPFR('1.5')
24
+ a.round.should == 2
25
+ end
26
+
27
+ it "should round a negative number." do
28
+ a = MPFR('-1.3')
29
+ a.round.should == -1
30
+ end
31
+
32
+ it "should round a negative number to a smaller number." do
33
+ a = MPFR('-1.5')
34
+ a.round.should == -2
35
+ end
36
+
37
+ it "should round a big number." do
38
+ a = MPFR('1.3e+50')
39
+ a.round.should == 1.3e+50
40
+ end
41
+
42
+ it "should raise MPFRDomainError." do
43
+ lambda do
44
+ MPFR.nan.round
45
+ end.should raise_error MPFRDomainError
46
+ end
47
+ end
48
+
49
+ context "when flooring" do
50
+ it "should floor a positive number." do
51
+ a = MPFR('1.3')
52
+ a.floor.should == 1
53
+ end
54
+
55
+ it "should floor a positive number to a bigger number." do
56
+ a = MPFR('1.5')
57
+ a.floor.should == 1
58
+ end
59
+
60
+ it "should floor a negative number." do
61
+ a = MPFR('-1.3')
62
+ a.floor.should == -2
63
+ end
64
+
65
+ it "should floor a negative number to a smaller number." do
66
+ a = MPFR('-1.5')
67
+ a.floor.should == -2
68
+ end
69
+
70
+ it "should floor a big number." do
71
+ a = MPFR('1.3e+50')
72
+ a.floor.should == 1.3e+50
73
+ end
74
+
75
+ it "should raise MPFRDomainError." do
76
+ lambda do
77
+ MPFR.nan.floor
78
+ end.should raise_error MPFRDomainError
79
+ end
80
+ end
81
+
82
+ context "when ceiling" do
83
+ it "should ceil a positive number." do
84
+ a = MPFR('1.3')
85
+ a.ceil.should == 2
86
+ end
87
+
88
+ it "should ceil a positive number to a bigger number." do
89
+ a = MPFR('1.5')
90
+ a.ceil.should == 2
91
+ end
92
+
93
+ it "should ceil a negative number." do
94
+ a = MPFR('-1.3')
95
+ a.ceil.should == -1
96
+ end
97
+
98
+ it "should ceil a negative number to a smaller number." do
99
+ a = MPFR('-1.5')
100
+ a.ceil.should == -1
101
+ end
102
+
103
+ it "should ceil a big number." do
104
+ a = MPFR('1.3e+50')
105
+ a.ceil.should == 1.3e+50
106
+ end
107
+
108
+ it "should raise MPFRDomainError." do
109
+ lambda do
110
+ MPFR.nan.ceil
111
+ end.should raise_error MPFRDomainError
112
+ end
113
+ end
114
+
115
+ context "when truncating" do
116
+ it "should truncate a positive number." do
117
+ a = MPFR('1.3')
118
+ a.truncate.should == 1
119
+ end
120
+
121
+ it "should truncate a positive number to a bigger number." do
122
+ a = MPFR('1.5')
123
+ a.truncate.should == 1
124
+ end
125
+
126
+ it "should truncate a negative number." do
127
+ a = MPFR('-1.3')
128
+ a.truncate.should == -1
129
+ end
130
+
131
+ it "should truncate a negative number to a smaller number." do
132
+ a = MPFR('-1.5')
133
+ a.truncate.should == -1
134
+ end
135
+
136
+ it "should truncate." do
137
+ a = MPFR('1.3e+50')
138
+ a.truncate.should == 1.3e+50
139
+ end
140
+
141
+ it "should raise MPFRDomainError." do
142
+ lambda do
143
+ MPFR.nan.truncate
144
+ end.should raise_error MPFRDomainError
145
+ end
146
+ end
147
+
148
+ context "when converting by to_i" do
149
+ it "should to_i a positive number." do
150
+ a = MPFR('1.3')
151
+ a.to_i.should == 1
152
+ end
153
+
154
+ it "should to_i a positive number to a bigger number." do
155
+ a = MPFR('1.5')
156
+ a.to_i.should == 1
157
+ end
158
+
159
+ it "should to_i a negative number." do
160
+ a = MPFR('-1.3')
161
+ a.to_i.should == -1
162
+ end
163
+
164
+ it "should to_i a negative number to a smaller number." do
165
+ a = MPFR('-1.5')
166
+ a.to_i.should == -1
167
+ end
168
+
169
+ it "should to_i." do
170
+ a = MPFR('1.3e+50')
171
+ a.to_i.should == 1.3e+50
172
+ end
173
+
174
+ it "should raise MPFRDomainError." do
175
+ lambda do
176
+ MPFR.nan.to_i
177
+ end.should raise_error MPFRDomainError
178
+ end
179
+ end
180
+ end
metadata CHANGED
@@ -1,56 +1,53 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ruby-mpfr
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.13
4
5
  prerelease:
5
- version: 0.0.12
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Takayuki YAMAGUCHI
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-02-27 00:00:00 +09:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: hoe
12
+ date: 2011-08-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: &5605200 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
18
23
  prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
24
+ version_requirements: *5605200
25
+ - !ruby/object:Gem::Dependency
26
+ name: yard
27
+ requirement: &5604680 !ruby/object:Gem::Requirement
20
28
  none: false
21
- requirements:
22
- - - ">="
23
- - !ruby/object:Gem::Version
24
- version: 2.9.1
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
25
33
  type: :development
26
- version_requirements: *id001
27
- description: |-
28
- ruby-mpfr is a library to use MPFR[http://www.mpfr.org/] which is a C library for
29
- multiple-precision floating-point computations.
30
- ruby-mpfr also includes Matrix class of MPFR; MPFR::Matrix, MPFR::SquareMatrix,
31
- MPFR::ColumnVector, and MPFR::RowVector.
32
-
33
- * History[link:History_txt.html]
34
- * {Examples of Usage}[link:Example_rdoc.html]
35
- email:
34
+ prerelease: false
35
+ version_requirements: *5604680
36
+ description: Ruby bindings of MPFR that is a C library for multiple-precision floating-point
37
+ computations
38
+ email:
36
39
  - d@ytak.info
37
40
  executables: []
38
-
39
- extensions:
41
+ extensions:
40
42
  - ext/mpfr/extconf.rb
41
- - ext/mpfr_matrix/mpfr/extconf.rb
42
43
  - ext/gmp/mpfr/extconf.rb
43
- extra_rdoc_files:
44
- - History.txt
45
- - Manifest.txt
46
- - PostInstall.txt
47
- - README.rdoc
48
- - Example.rdoc
49
- files:
44
+ - ext/mpfr_matrix/mpfr/extconf.rb
45
+ extra_rdoc_files: []
46
+ files:
47
+ - .gitignore
50
48
  - Example.rdoc
49
+ - Gemfile
51
50
  - History.txt
52
- - Manifest.txt
53
- - PostInstall.txt
54
51
  - README.rdoc
55
52
  - Rakefile
56
53
  - ext/gmp/mpfr/extconf.rb
@@ -76,9 +73,6 @@ files:
76
73
  - lib/mpfr/rspec.rb
77
74
  - lib/mpfr/version.rb
78
75
  - ruby-mpfr.gemspec
79
- - script/console
80
- - script/destroy
81
- - script/generate
82
76
  - spec/gmp/convert_spec.rb
83
77
  - spec/gmp/rand_spec.rb
84
78
  - spec/gmp/spec_helper.rb
@@ -104,36 +98,31 @@ files:
104
98
  - spec/mpfr_matrix/mpfr_matrix_string_spec.rb
105
99
  - spec/mpfr_matrix/mpfr_square_matrix_spec.rb
106
100
  - spec/mpfr_matrix/spec_helper.rb
107
- - tasks/extconf.rake
108
- - .gemtest
109
- has_rdoc: true
110
- homepage: http://rubyforge.org/projects/ruby-mpfr/
101
+ homepage: ''
111
102
  licenses: []
112
-
113
- post_install_message: PostInstall.txt
114
- rdoc_options:
115
- - --main
116
- - README.rdoc
117
- require_paths:
103
+ post_install_message:
104
+ rdoc_options: []
105
+ require_paths:
118
106
  - lib
119
- required_ruby_version: !ruby/object:Gem::Requirement
107
+ - ext
108
+ - ext/gmp
109
+ - ext/mpfr_matrix
110
+ required_ruby_version: !ruby/object:Gem::Requirement
120
111
  none: false
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: "0"
125
- required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ! '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
117
  none: false
127
- requirements:
128
- - - ">="
129
- - !ruby/object:Gem::Version
130
- version: "0"
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
131
122
  requirements: []
132
-
133
123
  rubyforge_project: ruby-mpfr
134
- rubygems_version: 1.5.2
124
+ rubygems_version: 1.8.5
135
125
  signing_key:
136
126
  specification_version: 3
137
- summary: ruby-mpfr is a library to use MPFR[http://www.mpfr.org/] which is a C library for multiple-precision floating-point computations
127
+ summary: Ruby bindings of MPFR
138
128
  test_files: []
139
-