Граф коммитов

191 Коммитов

Автор SHA1 Сообщение Дата
akr 4cf437519f * regerror.c, string.c, io.c, lib/getoptlong.rb, lib/net/imap.rb,
compile.c, sprintf.c, parse.y, ext/win32ole/win32ole.c,
  ext/tk/sample/demos-en/entry3.rb, ext/tk/lib/tcltk.rb,
  ext/openssl/ossl_bn.c, numeric.c, vm.c,
  benchmark/bm_so_meteor_contest.rb, bignum.c, ruby.c: don't "illegal"
  for non law violation context.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14377 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-21 02:31:11 +00:00
ko1 01dacec2b4 * include/ruby/ruby.h: rename RFloat#double_value -> float_value.
* numeric.c, parse.y: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13986 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-20 11:35:12 +00:00
nobu fd3ef45a42 * numeric.c (round): fallback definition.
* numeric.c (flo_divmod, flo_round): use round() always.
  [ruby-dev:32269]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13914 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-13 16:34:45 +00:00
ko1 25c0cb981a * include/ruby/ruby.h: introduce 2 macros:
RFLOAT_VALUE(v), DOUBLE2NUM(dbl).
  Rename RFloat#value -> RFloat#double_value.
  Do not touch RFloat#double_value directly.
* bignum.c, insns.def, marshal.c, math.c, numeric.c, object.c,
  pack.c, parse.y, process.c, random.c, sprintf.c, string.c,
  time.c: apply above changes.
* ext/dl/mkcallback.rb, ext/json/ext/generator/generator.c:
  ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13913 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-13 16:00:53 +00:00
nobu b7d363ead6 * numeric.c (flodivmod): work around for inifinity.
* numeric.c (flo_divmod): work around for platforms have no round().
  [ruby-dev:32247]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13907 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-13 07:33:09 +00:00
shyouhei 8d464a9948 * numeric.c (flo_divmod): round to the nearest integer. [ ruby-Bugs-14540 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13902 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-12 18:41:31 +00:00
nobu 62354319cd * numeric.c (int_chr): take an optional encoding parameter.
[ruby-core:12816]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13787 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-10-26 08:38:14 +00:00
nobu 69c7312cb3 * numeric.c (fix_pow): returns 1.0 for 0**0.0.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13786 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-10-26 08:14:14 +00:00
nobu 31667e5ffc * numeric.c (fix_pow): returns infinity for 0**-1. [ruby-dev:32084]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13785 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-10-26 08:01:41 +00:00
nobu 118625a3b3 * numeric.c (flo_round): should be number but not rounding factor.
[ruby-dev:32060]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13705 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-10-15 04:24:10 +00:00
akr d1c7f6c9cd * numeric.c: use #ifdef for test LONG_LONG_VALUE.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13575 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-09-30 02:33:18 +00:00
akr 2c8e7a50c1 * include/ruby/ruby.h (struct RBignum): embed digits in RBignum for
small bignums.

* bignum.c: RBignum embeded digits implemented.

* include/ruby/intern.h: declare rb_big_resize.

* gc.c: don't free embedded digits.

* numeric.c: replace direct bignum field accessor by abstract field
  accessor such as RBIGNUM(val)->sign to RBIGNUM_SIGN(val).

* sprintf.c: ditto.

* compar.c: ditto.

* marshal.c: ditto.

* random.c: ditto.

* .gdbinit: support embedded small bignums.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13330 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-09-01 12:02:36 +00:00
usa 6cca1f4c6a * numeric.c (SQRT_LONG_MAX): use SIZEOF_LONG instead of SIZEOF_VALUE
because SIZEOF_VALUE > SIZEOF_LONG on some platforms.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13323 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-30 22:15:07 +00:00
matz a25fbe3b3e * encoding.c: provide basic features for M17N.
* parse.y: encoding aware parsing.

* parse.y (pragma_encoding): encoding specification pragma.

* parse.y (rb_intern3): encoding specified symbols.

* string.c (rb_str_length): length based on characters.  
  for older behavior, bytesize method added.

* string.c (rb_str_index_m): index based on characters.  rindex as
  well.

* string.c (succ_char): encoding aware succeeding string.

* string.c (rb_str_reverse): reverse based on characters.

* string.c (rb_str_inspect): encoding aware string description.

* string.c (rb_str_upcase_bang): encoding aware case conversion.
  downcase, capitalize, swapcase as well.

* string.c (rb_str_tr_bang): tr based on characters.  delete,
  squeeze, tr_s, count as well.

* string.c (rb_str_split_m): split based on characters.

* string.c (rb_str_each_line): encoding aware each_line.

* string.c (rb_str_each_char): added.  iteration based on
  characters.

* string.c (rb_str_strip_bang): encoding aware whitespace
  stripping.  lstrip, rstrip as well.

* string.c (rb_str_justify): encoding aware justifying (ljust,
  rjust, center).

* string.c (str_encoding): get encoding attribute from a string. 

* re.c (rb_reg_initialize): encoding aware regular expression

* sprintf.c (rb_str_format): formatting (i.e. length count) based
  on characters.

* io.c (rb_io_getc): getc to return one-character string.
  for older behavior, getbyte method added.

* ext/stringio/stringio.c (strio_getc): ditto.

* io.c (rb_io_ungetc): allow pushing arbitrary string at the
  current reading point.

* ext/stringio/stringio.c (strio_ungetc): ditto.

* ext/strscan/strscan.c: encoding support.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13261 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-25 03:29:39 +00:00
nobu 09ce106ab3 * bignum.c (rb_big_lshift, rb_big_rshift): separated functions
to get rid of infinite recursion.  fixed calculation in edge
  cases.  [ruby-dev:31244]

* numeric.c (rb_fix_lshift, rb_fix_rshift): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12814 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-19 05:38:48 +00:00
matz 7f0bb427e0 * numeric.c (fix_pow): integer power calculation: 0**n => 0,
1**n => 1, -1**n => 1 (n: even) / -1 (n: odd).

* test/ruby/test_fixnum.rb (TestFixnum::test_pow): update test
  suite.  pow(-3, 2^64) gives NaN when pow(3, 2^64) gives Inf.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12789 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-14 14:31:21 +00:00
matz b13b3e624b * numeric.c (int_pow): overflow detection using FIT_SQRT_LONG().
[ruby-dev:31215]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12778 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-13 17:29:24 +00:00
matz 3e6f0e6a20 * numeric.c (int_round): should not return false, but self.
[ruby-dev:31212]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12772 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-13 15:38:48 +00:00
ko1 6b6bf4dd48 * blockinlining.c: remove "yarv" prefix.
* array.c, numeric.c: ditto.
* insnhelper.ci, insns.def, vm_evalbody.ci: ditto.
* yarvcore.c: removed.
* yarvcore.h: renamed to core.h.
* cont.c, debug.c, error.c, process.c, signal.c : ditto.
* ext/probeprofiler/probeprofiler.c: ditto.
* id.c, id.h: added.
* inits.c: ditto.
* compile.c: rename internal functions.
* compile.h: fix debug flag.
* eval.c, object.c, vm.c: remove ruby_top_self.
  use rb_vm_top_self() instead.
* eval_intern.h, eval_load: ditto.
* gc.c: rename yarv_machine_stack_mark() to
  rb_gc_mark_machine_stack().
* insnhelper.h: remove unused macros.
* iseq.c: add iseq_compile() to create iseq object
  from source string.
* proc.c: rename a internal function.
* template/insns.inc.tmpl: remove YARV prefix.
* thread.c:
* vm.c (rb_iseq_eval): added.
* vm.c: move some functions from yarvcore.c.
* vm_dump.c: fix to remove compiler warning.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12741 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-12 04:25:46 +00:00
usa a0d50fa3c4 * numeric.c (int_pow): fix previous nubu's commit.
* test/ruby/test_fixnum.rb: new test.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12698 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-05 07:38:41 +00:00
nobu b553a34c63 * numeric.c (int_pow): even number multiplication never be negative.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12697 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-05 06:56:10 +00:00
nobu 3b5eac1a08 * numeric.c (fix_pow): get rid of division by zero. reported by
Yusuke ENDOH <mame AT tsg.ne.jp> [ruby-dev:31040]

* numeric.c (int_round): do nothing when rounding by zeroth digit.
  check underflow.  [ruby-dev:31043]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12661 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-29 06:44:01 +00:00
nobu f359740661 * numeric.c: fix indent.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12660 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-29 06:43:24 +00:00
nobu 2b592580bf * include/ruby: moved public headers.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12501 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-10 03:06:15 +00:00
matz 931614a341 * numeric.c (int_round): should not just truncate.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12437 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-05 05:31:05 +00:00
nobu 99d65b14b4 * compile.c, dir.c, eval.c, eval_jump.h, eval_method.h, numeric.c,
pack.c, parse.y, re.c, thread.c, vm.c, vm_dump.c, call_cfunc.ci,
  thread_pthread.ci, thread_win32.ci: fixed indentation.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12431 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-05 04:25:10 +00:00
matz 2c4aff3fe0 * numeric.c (int_round): small optimization to handle bignums.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12423 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-01 16:27:05 +00:00
nobu b8cb3679bb * numeric.c (num_round): should convert self to Float.
[ruby-dev:30860]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-01 02:32:17 +00:00
matz 609ebfe51f * numeric.c (flo_round): now takes optional argument to specify
number of digits, like round() in Python/PHP.

* numeric.c (num_round): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12420 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-05-31 17:01:15 +00:00
nobu ea758d28c3 * numeric.c: purged trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12265 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-05-09 04:11:41 +00:00
nobu 7de7d5ddeb * bignum.c (Init_Bignum), numeric.c (Init_Numeric): added fdiv as
aliases of quo.  [ruby-dev:30771]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12263 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-05-09 03:28:08 +00:00
nobu ea2cb282ae * numeric.c (int_pow): bugfix of overflow detection.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12228 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-04-27 08:05:21 +00:00
nobu 5d2069cd56 * numeric.c (int_pow): rb_big_pow() may return other than Bignum.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12227 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-04-27 03:53:43 +00:00
nobu 93bdc98f33 * bignum.c (rb_big_pow): reduce multiplying for even number.
* numeric.c (int_pow): calculate power in Fixnum as possible.
  [ruby-dev:30726]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12223 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-04-26 08:30:10 +00:00
knu 4563573a6b * numeric.c (fix_equal): A bit more optimization.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11808 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-02-21 13:30:17 +00:00
matz f67795869d * numeric.c (fix_equal): remove FIX2LONG() to optimize. suggested
in http://t-a-w.blogspot.com/2007/02/making-ruby-faster.html.
  [ruby-talk:240223]

* numeric.c (fix_cmp): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11807 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-02-21 08:53:15 +00:00
nobu 205f310c29 * call_cfunc.ci, compile.c, compile.h, debug.h, eval.c,
eval_error.h, eval_jump.h, eval_load.c, eval_thread.c, gc.c,
  insnhelper.h, insns.def, iseq.c, main.c, numeric.c, parse.y,
  range.c, regenc.h, ruby.h, signal.c, thread.c, thread_win32.ci,
  vm.c, vm.h, vm_dump.c, vm_evalbody.ci, yarvcore.c, yarvcore.h:
  fixed indents and non-C90 comments.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11620 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-02-02 16:26:04 +00:00
matz 8418ea8bb8 * numeric.c (int_pred): add Integer#pred corresponding
Integer#succ.  [RCR#5]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11596 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-01-30 04:27:04 +00:00
ko1 a3e1b1ce7e * Merge YARV
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11439 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-12-31 15:02:22 +00:00
matz 51281b961b * bignum.c (rb_big_hash): use rb_memhash().
* numeric.c (flo_hash): simplified.  klass need not to affect
  resulting hash value.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10992 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-21 22:52:38 +00:00
nobu ae7ea70a3a * numeric.c (Init_Numeric): fix_odd_p and fix_even_p are for Fixnum.
patch from Ondrej Bilka <neleai at seznam.cz>.  [ruby-core:08904]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10986 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-21 15:36:17 +00:00
matz 255702be8c * numeric.c (int_odd_p): a new method to check even or odd.
[RCR#337]

* numeric.c (int_even_p): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10982 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-21 06:09:26 +00:00
nobu 4e259f9094 * numeric.c (fix_mul): typo again. patch from Tadashi Saito
<shiba at mail2.accsnet.ne.jp>.  fixed: [ruby-core:08893]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10972 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-20 13:41:55 +00:00
nobu 3851ac03b5 * numeric.c (fix_mul): get rid of shift overflow.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-18 03:17:06 +00:00
nobu cd5cfab0e7 * numeric.c (fix_mul): fixed typo. fixed: [ruby-core:08885]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10954 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-17 01:42:28 +00:00
matz 49f0e92f28 * numeric.c (fix_mul): avoid bignum multiplication as far as
possible.  a patch from Ondrej Bilka <neleai at seznam.cz>.
  [ruby-core:08825]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10934 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-14 08:23:28 +00:00
matz 5f61a22950 * numeric.c (fix_plus): addition in Fixnum will never overflow
long.  a patch from Ondrej Bilka <neleai at seznam.cz>.
  [ruby-core:08794]

* numeric.c (fix_minus): ditto.

* bignum.c (rb_big_pow): eagerly truncate resulting bignum.
  [ruby-core:08794]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-04 20:10:45 +00:00
matz 2156870525 * ruby.h (struct RArray): embed small arrays.
(RARRAY_LEN): defined for accessing array members.
  (RARRAY_PTR): ditto.

* array.c: use RARRAY_LEN and RARRAY_PTR.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10833 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-02 14:42:08 +00:00
matz 54af80844f * ruby.h (struct RString): embed small strings.
(RSTRING_LEN): defined for accessing string members.
  (RSTRING_PTR): ditto.

* string.c: use RSTRING_LEN and RSTRING_PTR.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10810 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-08-31 10:47:44 +00:00
nobu 59b1cef2f1 * numeric.c (flo_hash): improve collision.
* string.c (rb_memhash): new generic function to calculate hash value
  for memory chunk.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10798 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-08-30 03:02:35 +00:00