* ext/bigdecimal/bigdecimal.c: fixed rdoc. [ruby-core:26457]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25615 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
f6f49eb0b8
commit
74d16cd0a4
@ -1,3 +1,7 @@
|
|||||||
|
Sun Nov 1 20:16:03 2009 NARUSE, Yui <naruse@ruby-lang.org>
|
||||||
|
|
||||||
|
* ext/bigdecimal/bigdecimal.c: fixed rdoc. [ruby-core:26457]
|
||||||
|
|
||||||
Sun Nov 1 16:24:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Sun Nov 1 16:24:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* configure.in (rb_cv_stack_grow_dir): fix for universal binary.
|
* configure.in (rb_cv_stack_grow_dir): fix for universal binary.
|
||||||
|
@ -62,118 +62,6 @@ static U_LONG BASE1 = 1000L; /* =BASE/10 */
|
|||||||
*/
|
*/
|
||||||
#define DoSomeOne(x,y,f) rb_num_coerce_bin(x,y,f)
|
#define DoSomeOne(x,y,f) rb_num_coerce_bin(x,y,f)
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* BigDecimal provides arbitrary-precision floating point decimal arithmetic.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2002 by Shigeo Kobayashi <shigeo@tinyforest.gr.jp>.
|
|
||||||
* You may distribute under the terms of either the GNU General Public
|
|
||||||
* License or the Artistic License, as specified in the README file
|
|
||||||
* of the BigDecimal distribution.
|
|
||||||
*
|
|
||||||
* Documented by mathew <meta@pobox.com>.
|
|
||||||
*
|
|
||||||
* = Introduction
|
|
||||||
*
|
|
||||||
* Ruby provides built-in support for arbitrary precision integer arithmetic.
|
|
||||||
* For example:
|
|
||||||
*
|
|
||||||
* 42**13 -> 1265437718438866624512
|
|
||||||
*
|
|
||||||
* BigDecimal provides similar support for very large or very accurate floating
|
|
||||||
* point numbers.
|
|
||||||
*
|
|
||||||
* Decimal arithmetic is also useful for general calculation, because it
|
|
||||||
* provides the correct answers people expect--whereas normal binary floating
|
|
||||||
* point arithmetic often introduces subtle errors because of the conversion
|
|
||||||
* between base 10 and base 2. For example, try:
|
|
||||||
*
|
|
||||||
* sum = 0
|
|
||||||
* for i in (1..10000)
|
|
||||||
* sum = sum + 0.0001
|
|
||||||
* end
|
|
||||||
* print sum
|
|
||||||
*
|
|
||||||
* and contrast with the output from:
|
|
||||||
*
|
|
||||||
* require 'bigdecimal'
|
|
||||||
*
|
|
||||||
* sum = BigDecimal.new("0")
|
|
||||||
* for i in (1..10000)
|
|
||||||
* sum = sum + BigDecimal.new("0.0001")
|
|
||||||
* end
|
|
||||||
* print sum
|
|
||||||
*
|
|
||||||
* Similarly:
|
|
||||||
*
|
|
||||||
* (BigDecimal.new("1.2") - BigDecimal("1.0")) == BigDecimal("0.2") -> true
|
|
||||||
*
|
|
||||||
* (1.2 - 1.0) == 0.2 -> false
|
|
||||||
*
|
|
||||||
* = Special features of accurate decimal arithmetic
|
|
||||||
*
|
|
||||||
* Because BigDecimal is more accurate than normal binary floating point
|
|
||||||
* arithmetic, it requires some special values.
|
|
||||||
*
|
|
||||||
* == Infinity
|
|
||||||
*
|
|
||||||
* BigDecimal sometimes needs to return infinity, for example if you divide
|
|
||||||
* a value by zero.
|
|
||||||
*
|
|
||||||
* BigDecimal.new("1.0") / BigDecimal.new("0.0") -> infinity
|
|
||||||
*
|
|
||||||
* BigDecimal.new("-1.0") / BigDecimal.new("0.0") -> -infinity
|
|
||||||
*
|
|
||||||
* You can represent infinite numbers to BigDecimal using the strings
|
|
||||||
* 'Infinity', '+Infinity' and '-Infinity' (case-sensitive)
|
|
||||||
*
|
|
||||||
* == Not a Number
|
|
||||||
*
|
|
||||||
* When a computation results in an undefined value, the special value NaN
|
|
||||||
* (for 'not a number') is returned.
|
|
||||||
*
|
|
||||||
* Example:
|
|
||||||
*
|
|
||||||
* BigDecimal.new("0.0") / BigDecimal.new("0.0") -> NaN
|
|
||||||
*
|
|
||||||
* You can also create undefined values. NaN is never considered to be the
|
|
||||||
* same as any other value, even NaN itself:
|
|
||||||
*
|
|
||||||
* n = BigDecimal.new('NaN')
|
|
||||||
*
|
|
||||||
* n == 0.0 -> nil
|
|
||||||
*
|
|
||||||
* n == n -> nil
|
|
||||||
*
|
|
||||||
* == Positive and negative zero
|
|
||||||
*
|
|
||||||
* If a computation results in a value which is too small to be represented as
|
|
||||||
* a BigDecimal within the currently specified limits of precision, zero must
|
|
||||||
* be returned.
|
|
||||||
*
|
|
||||||
* If the value which is too small to be represented is negative, a BigDecimal
|
|
||||||
* value of negative zero is returned. If the value is positive, a value of
|
|
||||||
* positive zero is returned.
|
|
||||||
*
|
|
||||||
* BigDecimal.new("1.0") / BigDecimal.new("-Infinity") -> -0.0
|
|
||||||
*
|
|
||||||
* BigDecimal.new("1.0") / BigDecimal.new("Infinity") -> 0.0
|
|
||||||
*
|
|
||||||
* (See BigDecimal.mode for how to specify limits of precision.)
|
|
||||||
*
|
|
||||||
* Note that -0.0 and 0.0 are considered to be the same for the purposes of
|
|
||||||
* comparison.
|
|
||||||
*
|
|
||||||
* Note also that in mathematics, there is no particular concept of negative
|
|
||||||
* or positive zero; true mathematical zero has no sign.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
Init_BigDecimal()
|
|
||||||
{
|
|
||||||
/* This is a #if-ed out function to fool Rdoc into documenting the class. */
|
|
||||||
/* The real init function is Init_bigdecimal() further down. */
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns the BigDecimal version number.
|
* Returns the BigDecimal version number.
|
||||||
*
|
*
|
||||||
@ -1905,6 +1793,110 @@ BigDecimal_sign(VALUE self)
|
|||||||
return INT2FIX(s);
|
return INT2FIX(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Document-class: BigDecimal
|
||||||
|
* BigDecimal provides arbitrary-precision floating point decimal arithmetic.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2002 by Shigeo Kobayashi <shigeo@tinyforest.gr.jp>.
|
||||||
|
* You may distribute under the terms of either the GNU General Public
|
||||||
|
* License or the Artistic License, as specified in the README file
|
||||||
|
* of the BigDecimal distribution.
|
||||||
|
*
|
||||||
|
* Documented by mathew <meta@pobox.com>.
|
||||||
|
*
|
||||||
|
* = Introduction
|
||||||
|
*
|
||||||
|
* Ruby provides built-in support for arbitrary precision integer arithmetic.
|
||||||
|
* For example:
|
||||||
|
*
|
||||||
|
* 42**13 -> 1265437718438866624512
|
||||||
|
*
|
||||||
|
* BigDecimal provides similar support for very large or very accurate floating
|
||||||
|
* point numbers.
|
||||||
|
*
|
||||||
|
* Decimal arithmetic is also useful for general calculation, because it
|
||||||
|
* provides the correct answers people expect--whereas normal binary floating
|
||||||
|
* point arithmetic often introduces subtle errors because of the conversion
|
||||||
|
* between base 10 and base 2. For example, try:
|
||||||
|
*
|
||||||
|
* sum = 0
|
||||||
|
* for i in (1..10000)
|
||||||
|
* sum = sum + 0.0001
|
||||||
|
* end
|
||||||
|
* print sum
|
||||||
|
*
|
||||||
|
* and contrast with the output from:
|
||||||
|
*
|
||||||
|
* require 'bigdecimal'
|
||||||
|
*
|
||||||
|
* sum = BigDecimal.new("0")
|
||||||
|
* for i in (1..10000)
|
||||||
|
* sum = sum + BigDecimal.new("0.0001")
|
||||||
|
* end
|
||||||
|
* print sum
|
||||||
|
*
|
||||||
|
* Similarly:
|
||||||
|
*
|
||||||
|
* (BigDecimal.new("1.2") - BigDecimal("1.0")) == BigDecimal("0.2") -> true
|
||||||
|
*
|
||||||
|
* (1.2 - 1.0) == 0.2 -> false
|
||||||
|
*
|
||||||
|
* = Special features of accurate decimal arithmetic
|
||||||
|
*
|
||||||
|
* Because BigDecimal is more accurate than normal binary floating point
|
||||||
|
* arithmetic, it requires some special values.
|
||||||
|
*
|
||||||
|
* == Infinity
|
||||||
|
*
|
||||||
|
* BigDecimal sometimes needs to return infinity, for example if you divide
|
||||||
|
* a value by zero.
|
||||||
|
*
|
||||||
|
* BigDecimal.new("1.0") / BigDecimal.new("0.0") -> infinity
|
||||||
|
*
|
||||||
|
* BigDecimal.new("-1.0") / BigDecimal.new("0.0") -> -infinity
|
||||||
|
*
|
||||||
|
* You can represent infinite numbers to BigDecimal using the strings
|
||||||
|
* 'Infinity', '+Infinity' and '-Infinity' (case-sensitive)
|
||||||
|
*
|
||||||
|
* == Not a Number
|
||||||
|
*
|
||||||
|
* When a computation results in an undefined value, the special value NaN
|
||||||
|
* (for 'not a number') is returned.
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
*
|
||||||
|
* BigDecimal.new("0.0") / BigDecimal.new("0.0") -> NaN
|
||||||
|
*
|
||||||
|
* You can also create undefined values. NaN is never considered to be the
|
||||||
|
* same as any other value, even NaN itself:
|
||||||
|
*
|
||||||
|
* n = BigDecimal.new('NaN')
|
||||||
|
*
|
||||||
|
* n == 0.0 -> nil
|
||||||
|
*
|
||||||
|
* n == n -> nil
|
||||||
|
*
|
||||||
|
* == Positive and negative zero
|
||||||
|
*
|
||||||
|
* If a computation results in a value which is too small to be represented as
|
||||||
|
* a BigDecimal within the currently specified limits of precision, zero must
|
||||||
|
* be returned.
|
||||||
|
*
|
||||||
|
* If the value which is too small to be represented is negative, a BigDecimal
|
||||||
|
* value of negative zero is returned. If the value is positive, a value of
|
||||||
|
* positive zero is returned.
|
||||||
|
*
|
||||||
|
* BigDecimal.new("1.0") / BigDecimal.new("-Infinity") -> -0.0
|
||||||
|
*
|
||||||
|
* BigDecimal.new("1.0") / BigDecimal.new("Infinity") -> 0.0
|
||||||
|
*
|
||||||
|
* (See BigDecimal.mode for how to specify limits of precision.)
|
||||||
|
*
|
||||||
|
* Note that -0.0 and 0.0 are considered to be the same for the purposes of
|
||||||
|
* comparison.
|
||||||
|
*
|
||||||
|
* Note also that in mathematics, there is no particular concept of negative
|
||||||
|
* or positive zero; true mathematical zero has no sign.
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
Init_bigdecimal(void)
|
Init_bigdecimal(void)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user