dec_number 0.0.0 → 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.
- data/dec_number-0.0.0.gem +0 -0
- data/dec_number.gemspec +1 -1
- data/ext/dec_number/decNumber/libdecNumber.a +0 -0
- data/ext/dec_number/dec_number.c +14 -7
- metadata +3 -2
Binary file
|
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.
|
3
|
+
s.version = '0.1.0'
|
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"
|
Binary file
|
data/ext/dec_number/dec_number.c
CHANGED
@@ -123,14 +123,15 @@ static VALUE dec_number_from_struct(decNumber source_dec_num) {
|
|
123
123
|
|
124
124
|
static VALUE dec_number_from_string(VALUE obj, VALUE from) {
|
125
125
|
decNumber *dec_num_ptr;
|
126
|
-
VALUE new, ret, err;
|
127
|
-
|
126
|
+
VALUE new, ret, err, r_str;
|
128
127
|
ret = Qnil;
|
129
128
|
new = rb_funcall( cDecNumber, rb_intern("new"), 1, from );
|
130
|
-
Data_Get_Struct(new, decNumber, dec_num_ptr);
|
131
129
|
|
130
|
+
Data_Get_Struct(new, decNumber, dec_num_ptr);
|
132
131
|
if ( decNumberIsNaN( dec_num_ptr ) ) {
|
133
|
-
|
132
|
+
// FIXME: Just use the sprintf from C, silly
|
133
|
+
r_str = rb_funcall( from, rb_intern( "to_s" ), 0 );
|
134
|
+
err = rb_funcall( rb_mKernel, rb_intern( "sprintf" ), 2, rb_str_new2("invalid value for DecNumber: %s"), r_str );
|
134
135
|
rb_raise(rb_eArgError, StringValuePtr( err ) );
|
135
136
|
} else {
|
136
137
|
ret = new;
|
@@ -407,12 +408,17 @@ static VALUE num_modulo(VALUE self, VALUE rval) {
|
|
407
408
|
return result;
|
408
409
|
}
|
409
410
|
|
410
|
-
static VALUE num_round(VALUE self) {
|
411
|
-
VALUE result;
|
411
|
+
static VALUE num_round(int argc, VALUE *argv, VALUE self) {
|
412
|
+
VALUE result, rval;
|
412
413
|
decContext *context_ptr;
|
413
414
|
decNumber *self_ptr, *result_ptr;
|
414
415
|
dec_num_setup( result, self, result_ptr, self_ptr, context_ptr );
|
415
416
|
|
417
|
+
rb_scan_args( argc, argv, "01", &rval );
|
418
|
+
if ( !NIL_P( rval ) ) {
|
419
|
+
context_ptr->digits = NUM2INT( rb_funcall( rval, rb_intern("to_i"), 0 ) );
|
420
|
+
}
|
421
|
+
|
416
422
|
decNumberToIntegralValue( result_ptr, self_ptr, context_ptr);
|
417
423
|
return result;
|
418
424
|
}
|
@@ -441,6 +447,7 @@ void Init_dec_number() {
|
|
441
447
|
rb_define_method(cDecNumber, "<=>", num_compare, 1);
|
442
448
|
rb_define_method(cDecNumber, "/", num_divide, 1);
|
443
449
|
rb_define_alias( cDecNumber, "quo", "/");
|
450
|
+
rb_define_alias( cDecNumber, "fdiv", "quo");
|
444
451
|
rb_define_method(cDecNumber, "coerce", num_coerce, 1);
|
445
452
|
rb_define_method(cDecNumber, "div", num_div, 1);
|
446
453
|
rb_define_method(cDecNumber, "*", num_multiply, 1);
|
@@ -455,7 +462,7 @@ void Init_dec_number() {
|
|
455
462
|
rb_define_alias( cDecNumber, "modulo", "%");
|
456
463
|
rb_define_method(cDecNumber, "zero?", num_zero, 0);
|
457
464
|
rb_define_method(cDecNumber, "nonzero?", num_nonzero, 0);
|
458
|
-
rb_define_method(cDecNumber, "round", num_round,
|
465
|
+
rb_define_method(cDecNumber, "round", num_round, -1);
|
459
466
|
rb_define_method(cDecNumber, "**", num_power, 1);
|
460
467
|
|
461
468
|
rb_define_method(rb_cObject, "DecNumber", dec_number_from_string, 1);
|
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.
|
4
|
+
version: 0.1.0
|
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-
|
12
|
+
date: 2011-10-17 00:00:00.000000000Z
|
13
13
|
dependencies: []
|
14
14
|
description: Wrapper for ICU-decNumber library
|
15
15
|
email:
|
@@ -82,6 +82,7 @@ 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
|
+
- dec_number-0.0.0.gem
|
85
86
|
- dec_number.gemspec
|
86
87
|
- README
|
87
88
|
homepage: http://github.com/rubypanther/dec_number
|