dec_number 0.1.1 → 0.1.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.
File without changes
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require 'rake/testtask'
2
+ Rake::TestTask.new do |t|
3
+ t.libs << 'test'
4
+ end
5
+
6
+ desc "Run tests"
7
+ task :default => :test
data/dec_number.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s| # -*-ruby-*-
2
2
  s.name = "dec_number"
3
- s.version = '0.1.1'
3
+ s.version = '0.1.2'
4
4
  s.authors = ["Paris Sinclair"]
5
5
  s.email = ["paris@rubypanther.com"]
6
6
  s.summary = "ICU-decNumber wrapper for arbitrary precision math with context objects"
@@ -9,5 +9,5 @@ Gem::Specification.new do |s| # -*-ruby-*-
9
9
  s.extensions << 'ext/dec_number/extconf.rb'
10
10
  s.rubyforge_project = "dec-number"
11
11
  s.files = Dir['**/**']
12
+ s.test_files = Dir.glob("test/**/*.rb")
12
13
  end
13
-
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env ruby
2
+ require 'decimal'
3
+ require 'bigdecimal'
4
+ require 'dec_number'
5
+ require 'benchmark'
6
+ include Benchmark
7
+ n = 123.58132134
8
+ m = Math::PI
9
+ bm(6) do |x|
10
+ x.report("dec_number") do
11
+ a = n.to_dec_number
12
+ b = m.to_dec_number
13
+ 100_000.times do
14
+ ((a * b + DecNumber.new(rand().to_s) - b / a) ** b).to_s
15
+ end
16
+ end
17
+ x.report("decimal") do
18
+ a = Decimal.new n.to_s
19
+ b = Decimal.new m.to_s
20
+ 100_000.times do
21
+ ((a * b + Decimal.new(rand().to_s) - b / a) ** b).to_s
22
+ end
23
+ end
24
+ x.report("bigdecimal") do
25
+ a = BigDecimal.new n.to_s
26
+ b = BigDecimal.new m.to_s
27
+ 100_000.times do
28
+ (a * b + BigDecimal.new(rand().to_s) - b / a).to_s
29
+ end
30
+ end
31
+ x.report("float") do
32
+ a = n
33
+ b = m
34
+ 100_000.times do
35
+ ((a * b + rand() - b / a) ** b).to_s
36
+ end
37
+ end
38
+ end
@@ -1,4 +1,5 @@
1
1
  #include "ruby.h"
2
+ #define DECNUMDIGITS 34
2
3
  #include "decNumber.h"
3
4
  #include <stdio.h>
4
5
 
@@ -69,7 +70,7 @@ static VALUE con_initialize(int argc, VALUE *argv, VALUE self) {
69
70
  Data_Get_Struct(self, decContext, self_ptr);
70
71
  decContextDefault(self_ptr, DEC_INIT_BASE);
71
72
  self_ptr->traps = 0; // no traps TODO: error handling
72
- // self_ptr->digits = 34; // WTF
73
+ self_ptr->digits = DECNUMDIGITS;
73
74
 
74
75
  // TODO: Handle arguments
75
76
 
@@ -235,7 +236,7 @@ static VALUE num_negate(VALUE self) {
235
236
  new = rb_funcall( cDecNumber, rb_intern("new"), 0 );
236
237
  Data_Get_Struct(self, decNumber, dec_num_ptr);
237
238
  if ( decNumberIsNaN( dec_num_ptr ) ) {
238
- rb_raise(rb_eTypeError, "can't negate that" );
239
+ rb_raise(rb_eTypeError, "can't negate a NaN" );
239
240
  return Qnil;
240
241
  }
241
242
 
@@ -0,0 +1,20 @@
1
+ require 'test/unit'
2
+ $: << File.join(File.dirname(__FILE__), '..', 'ext', 'dec_number')
3
+ require 'dec_number'
4
+ require 'bigdecimal'
5
+
6
+ class TestDecNumber < Test::Unit::TestCase
7
+ [ [ "addition", :+ ],
8
+ [ "subtraction", :- ],
9
+ [ "equality", :== ]
10
+ ].each do |name,op|
11
+ define_method "test_#{name}" do
12
+ data = [ 0, 1, Math::PI, BigDecimal.new("123.5813") ]
13
+ data.each do |n|
14
+ d = n.to_dec_number
15
+ assert_equal d.send(op,d), n.send(op,n)
16
+ end
17
+ end
18
+ end
19
+
20
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dec_number
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-17 00:00:00.000000000Z
12
+ date: 2011-10-28 00:00:00.000000000Z
13
13
  dependencies: []
14
14
  description: Wrapper for ICU-decNumber library
15
15
  email:
@@ -24,8 +24,8 @@ files:
24
24
  - ext/dec_number/extconf2.rb
25
25
  - ext/dec_number/test_numeric.rb
26
26
  - ext/dec_number/NOTES
27
- - ext/dec_number/Gemfile
28
27
  - ext/dec_number/extconf.rb
28
+ - ext/dec_number/bench.rb
29
29
  - ext/dec_number/test_dec_number.rb
30
30
  - ext/dec_number/decNumber/decimal64.c
31
31
  - ext/dec_number/decNumber/config.h.in
@@ -82,7 +82,10 @@ files:
82
82
  - ext/dec_number/decNumber/decSingle.h
83
83
  - ext/dec_number/decNumber/decCommon.c
84
84
  - ext/dec_number/decNumber/decimal128.c
85
+ - test/test_dec_number.rb
86
+ - Rakefile
85
87
  - dec_number.gemspec
88
+ - Gemfile
86
89
  - README
87
90
  homepage: http://github.com/rubypanther/dec_number
88
91
  licenses: []
@@ -108,4 +111,5 @@ rubygems_version: 1.8.10
108
111
  signing_key:
109
112
  specification_version: 3
110
113
  summary: ICU-decNumber wrapper for arbitrary precision math with context objects
111
- test_files: []
114
+ test_files:
115
+ - test/test_dec_number.rb