summaryrefslogtreecommitdiff
path: root/ext/bigdecimal
diff options
context:
space:
mode:
Diffstat (limited to 'ext/bigdecimal')
-rw-r--r--ext/bigdecimal/bigdecimal.c46
-rw-r--r--ext/bigdecimal/bigdecimal.gemspec2
-rw-r--r--ext/bigdecimal/lib/bigdecimal/math.rb14
-rw-r--r--ext/bigdecimal/lib/bigdecimal/util.rb8
4 files changed, 40 insertions, 30 deletions
diff --git a/ext/bigdecimal/bigdecimal.c b/ext/bigdecimal/bigdecimal.c
index 34817304e8..0d9d0518a8 100644
--- a/ext/bigdecimal/bigdecimal.c
+++ b/ext/bigdecimal/bigdecimal.c
@@ -335,15 +335,18 @@ BigDecimal_double_fig(VALUE self)
return INT2FIX(VpDblFig());
}
-/* call-seq:
- * precs
+/* call-seq:
+ * big_decimal.precs -> array
+ *
+ * Returns an Array of two Integer values.
*
- * Returns an Array of two Integer values.
+ * The first value is the current number of significant digits in the
+ * BigDecimal. The second value is the maximum number of significant digits
+ * for the BigDecimal.
*
- * The first value is the current number of significant digits in the
- * BigDecimal. The second value is the maximum number of significant digits
- * for the BigDecimal.
+ * BigDecimal('5').precs #=> [9, 18]
*/
+
static VALUE
BigDecimal_prec(VALUE self)
{
@@ -456,7 +459,7 @@ check_rounding_mode_option(VALUE const opts)
goto noopt;
mode = rb_hash_lookup2(opts, ID2SYM(id_half), Qundef);
- if (mode == Qundef)
+ if (mode == Qundef || NIL_P(mode))
goto noopt;
if (SYMBOL_P(mode))
@@ -478,6 +481,7 @@ check_rounding_mode_option(VALUE const opts)
return VP_ROUND_HALF_EVEN;
else if (strncasecmp(s, "down", 4) == 0)
return VP_ROUND_HALF_DOWN;
+ break;
default:
break;
}
@@ -901,13 +905,14 @@ BigDecimal_coerce(VALUE self, VALUE other)
}
/*
- * call-seq: +@
+ * call-seq:
+ * +big_decimal -> big_decimal
*
* Return self.
*
- * e.g.
- * b = +a # b == a
+ * +BigDecimal('5') #=> 0.5e1
*/
+
static VALUE
BigDecimal_uplus(VALUE self)
{
@@ -1218,14 +1223,14 @@ BigDecimal_ge(VALUE self, VALUE r)
}
/*
- * call-seq: -@
+ * call-seq:
+ * -big_decimal -> big_decimal
*
- * Return the negation of self.
+ * Return the negation of self.
*
- * e.g.
- * b = -a
- * b == a * -1
+ * -BigDecimal('5') #=> -0.5e1
*/
+
static VALUE
BigDecimal_neg(VALUE self)
{
@@ -1672,11 +1677,16 @@ BigDecimal_mult2(VALUE self, VALUE b, VALUE n)
}
}
-/* Returns the absolute value, as a BigDecimal.
+/*
+ * call-seq:
+ * big_decimal.abs -> big_decimal
*
- * BigDecimal('5').abs #=> 5
- * BigDecimal('-3').abs #=> 3
+ * Returns the absolute value, as a BigDecimal.
+ *
+ * BigDecimal('5').abs #=> 0.5e1
+ * BigDecimal('-3').abs #=> 0.3e1
*/
+
static VALUE
BigDecimal_abs(VALUE self)
{
diff --git a/ext/bigdecimal/bigdecimal.gemspec b/ext/bigdecimal/bigdecimal.gemspec
index e01649f2fe..3767e9b65d 100644
--- a/ext/bigdecimal/bigdecimal.gemspec
+++ b/ext/bigdecimal/bigdecimal.gemspec
@@ -1,5 +1,5 @@
# coding: utf-8
-_VERSION = '1.3.0.pre.2'
+_VERSION = '1.3.0'
Gem::Specification.new do |s|
s.name = "bigdecimal"
diff --git a/ext/bigdecimal/lib/bigdecimal/math.rb b/ext/bigdecimal/lib/bigdecimal/math.rb
index 3ddde6a9a0..ef1a02b38f 100644
--- a/ext/bigdecimal/lib/bigdecimal/math.rb
+++ b/ext/bigdecimal/lib/bigdecimal/math.rb
@@ -26,7 +26,7 @@ require 'bigdecimal'
# include BigMath
#
# a = BigDecimal((PI(100)/2).to_s)
-# puts sin(a,100) # => 0.10000000000000000000......E1
+# puts sin(a,100) # => 0.99999999999999999999......e0
#
module BigMath
module_function
@@ -38,7 +38,7 @@ module BigMath
# precision, +numeric+.
#
# BigMath.sqrt(BigDecimal.new('2'), 16).to_s
- # #=> "0.1414213562373095048801688724E1"
+ # #=> "0.1414213562373095048801688724e1"
#
def sqrt(x, prec)
x.sqrt(prec)
@@ -53,7 +53,7 @@ module BigMath
# If +decimal+ is Infinity or NaN, returns NaN.
#
# BigMath.sin(BigMath.PI(5)/4, 5).to_s
- # #=> "0.70710678118654752440082036563292800375E0"
+ # #=> "0.70710678118654752440082036563292800375e0"
#
def sin(x, prec)
raise ArgumentError, "Zero or negative precision for sin" if prec <= 0
@@ -97,7 +97,7 @@ module BigMath
# If +decimal+ is Infinity or NaN, returns NaN.
#
# BigMath.cos(BigMath.PI(4), 16).to_s
- # #=> "-0.999999999999999999999999999999856613163740061349E0"
+ # #=> "-0.999999999999999999999999999999856613163740061349e0"
#
def cos(x, prec)
raise ArgumentError, "Zero or negative precision for cos" if prec <= 0
@@ -141,7 +141,7 @@ module BigMath
# If +decimal+ is NaN, returns NaN.
#
# BigMath.atan(BigDecimal.new('-1'), 16).to_s
- # #=> "-0.785398163397448309615660845819878471907514682065E0"
+ # #=> "-0.785398163397448309615660845819878471907514682065e0"
#
def atan(x, prec)
raise ArgumentError, "Zero or negative precision for atan" if prec <= 0
@@ -178,7 +178,7 @@ module BigMath
# +numeric+.
#
# BigMath.PI(10).to_s
- # #=> "0.3141592653589793238462643388813853786957412E1"
+ # #=> "0.3141592653589793238462643388813853786957412e1"
#
def PI(prec)
raise ArgumentError, "Zero or negative precision for PI" if prec <= 0
@@ -223,7 +223,7 @@ module BigMath
# digits of precision, +numeric+.
#
# BigMath.E(10).to_s
- # #=> "0.271828182845904523536028752390026306410273E1"
+ # #=> "0.271828182845904523536028752390026306410273e1"
#
def E(prec)
raise ArgumentError, "Zero or negative precision for E" if prec <= 0
diff --git a/ext/bigdecimal/lib/bigdecimal/util.rb b/ext/bigdecimal/lib/bigdecimal/util.rb
index 79e0ebde8b..670a625563 100644
--- a/ext/bigdecimal/lib/bigdecimal/util.rb
+++ b/ext/bigdecimal/lib/bigdecimal/util.rb
@@ -13,7 +13,7 @@ class Integer < Numeric
# require 'bigdecimal/util'
#
# 42.to_d
- # # => #<BigDecimal:1008ef070,'0.42E2',9(36)>
+ # # => 0.42e2
#
def to_d
BigDecimal(self)
@@ -34,7 +34,7 @@ class Float < Numeric
# require 'bigdecimal/util'
#
# 0.5.to_d
- # # => #<BigDecimal:1dc69e0,'0.5E0',9(18)>
+ # # => 0.5e0
#
def to_d(precision=nil)
BigDecimal(self, precision || Float::DIG)
@@ -55,7 +55,7 @@ class String
# require 'bigdecimal/util'
#
# "0.5".to_d
- # # => #<BigDecimal:1dc69e0,'0.5E0',9(18)>
+ # # => 0.5e0
#
def to_d
BigDecimal(self)
@@ -117,7 +117,7 @@ class Rational < Numeric
# r = (22/7.0).to_r
# # => (7077085128725065/2251799813685248)
# r.to_d(3)
- # # => #<BigDecimal:1a44d08,'0.314E1',18(36)>
+ # # => 0.314e1
def to_d(precision)
if precision <= 0
raise ArgumentError, "negative precision"