Yukihiro "Matz" Matsumoto
56a82009aa
Revert "The lex_state after literals should be EXPR_ENDARG."; fix #6298
...
This reverts commit e98823f189 .
2024-08-10 19:17:49 +09:00
Yukihiro "Matz" Matsumoto
6da2e60edc
mruby-bigint (mpz_get_str): avoid malloc when base is a power of 2
2024-08-05 10:43:47 +09:00
Yukihiro "Matz" Matsumoto
aa06432776
mruby-array-ext: index should be within mrb_int range
...
Type check is done by `__to_int` method.
2024-08-01 07:34:20 +09:00
Yukihiro "Matz" Matsumoto
3c5baac5c5
mruby-sprintf: fix a bug with negative octals
...
Leading octal digit may be 1, 3, 7 unlike binary or hexadecimal.
2024-07-30 11:33:18 +09:00
Yukihiro "Matz" Matsumoto
ab95e042ca
mruby-bigint (mrb_bint_xor): add fast path with fixnums
2024-07-29 16:44:54 +09:00
Yukihiro "Matz" Matsumoto
b706c89c41
mruby-bigint (mrb_bint_2comp): fix assertion
2024-07-29 16:44:54 +09:00
Yukihiro "Matz" Matsumoto
bf7f14341d
mruby-bigint (mrb_bint_or): add fast path with fixnums
2024-07-29 15:47:19 +09:00
Yukihiro "Matz" Matsumoto
dcf7adeeb7
mruby-bigint: use zero_p()
2024-07-29 15:43:22 +09:00
Yukihiro "Matz" Matsumoto
196c2bd0b9
mruby-bigint (mrb_bint_add): add type cast to stop warnings in C++
2024-07-28 23:29:54 +09:00
Yukihiro "Matz" Matsumoto
081cd0627f
mruby-bigint (mrb_bint_hash): need to get hash from all digits
2024-07-27 18:54:50 +09:00
Yukihiro "Matz" Matsumoto
203a89a3f2
mruby-bigint (zero_p): define a new predicate to check if mpz_t is 0
2024-07-27 18:54:50 +09:00
Yukihiro "Matz" Matsumoto
234a2b10fb
mruby-bigint (mpz_neg): no need to check x != y
2024-07-27 18:54:50 +09:00
Yukihiro "Matz" Matsumoto
811637e99f
mruby-bigint (mrb_bint_2comp): inline mpz_2comp
2024-07-27 18:54:49 +09:00
Yukihiro "Matz" Matsumoto
c218894af9
mruby-bigint: use mp_limb instead of uint32_t
...
Because mp_limb may be uint16_t on some platforms.
2024-07-27 18:54:48 +09:00
Yukihiro "Matz" Matsumoto
2247e4f355
mruby-bigint (mpz_xor): simplify the code
2024-07-27 18:53:36 +09:00
Yukihiro "Matz" Matsumoto
b573a8430f
mruby-bigint (mpz_or): simplify the code
2024-07-27 18:50:09 +09:00
Yukihiro "Matz" Matsumoto
dea1cc18a6
mruby-bigint (mpz_and): simplify the code
2024-07-27 18:48:01 +09:00
Yukihiro "Matz" Matsumoto
bf081c3d3d
mruby-bigint (mrb_bint_and): further optimization for bint & int
2024-07-25 17:46:36 +09:00
Yukihiro "Matz" Matsumoto
99c078bb6b
mruby-bigint (mrb_bint_2comp): simplify using mpz_2comp()
2024-07-25 16:18:49 +09:00
Yukihiro "Matz" Matsumoto
3d69412ea5
mruby-bigint: Distinguish uzero_p(x) and x->sn == 0
...
The latter is a check for integers that have been set up (and disclosed to the
outer world), while the former is a check for integers that are being worked on.
2024-07-25 16:18:48 +09:00
Yukihiro "Matz" Matsumoto
93653dfd4c
mruby-bigint (uzero_p): add fast path
2024-07-25 16:18:48 +09:00
Yukihiro "Matz" Matsumoto
4ee7c8e021
mruby-bigint: rename uzero to uzero_p
...
Since uzero() is a predicate, and zero() is a function to assign zero to
mpz_t, it's confusion. Rename predicate uzero() to uzero_p() to follow
mruby naming convention.
2024-07-25 16:18:48 +09:00
Yukihiro "Matz" Matsumoto
88536ebe30
mruby-bigint (mpz_xor): support bit-wise xor with negative numbers; #6314
2024-07-25 16:18:48 +09:00
Yukihiro "Matz" Matsumoto
ee2eb6c87e
mruby-bigint (mpz_or): support bit-wise or with negative numbers; #6314
2024-07-25 16:18:48 +09:00
Yukihiro "Matz" Matsumoto
69a80c94b9
mruby-bigint (mpz_and): support bit-wise and with negative numbers
...
Negative integers are virtually considered as 2's compliment of the
absolute value of the corresponding number. It means `-1` is considered
as infinite sequence of `1` toward msb side. ref #6314
2024-07-25 16:18:48 +09:00
Yukihiro "Matz" Matsumoto
e3a459d5b9
mruby-bigint (mrb_bint_and): optimize bint & fixnum operation; ref #6314
2024-07-25 16:18:48 +09:00
Yukihiro "Matz" Matsumoto
c16aba9280
mruby-bigint: remove special handling of Float in bitwise operations
...
CRuby raises TypeError with float numbers as operands; ref #6314
2024-07-25 16:18:47 +09:00
Hoshiumi Arata
612941dcbc
Add test code for even?/odd?
2024-07-23 21:09:17 +09:00
Hoshiumi Arata
80502b30fb
Optimize even?/odd? for big integers
2024-07-23 21:05:10 +09:00
Yukihiro "Matz" Matsumoto
d2878138d9
mruby-numeric-ext: implement Integer#even? and Integer#odd?
2024-07-23 07:23:13 +09:00
Yukihiro "Matz" Matsumoto
f3b570f33a
mruby-enumerator: add test for Enumerable#chunk_while
2024-07-22 13:52:12 +09:00
Yukihiro "Matz" Matsumoto
dcbe2e3eb3
mruby-enumerator: add Enumerable#chunk_while
2024-07-21 20:29:27 +09:00
Yukihiro "Matz" Matsumoto
7d8fc3b35f
Merge pull request #6305 from dearblue/method_missing
...
Protect keyword arguments in `prepare_missing()`
2024-07-20 22:04:50 +09:00
Yukihiro "Matz" Matsumoto
9326c514c5
mruby-enum-ext: add Enumerable#each_entry test
2024-07-20 14:20:15 +09:00
Pete Kinnecom
509590c18d
Method missing kwargs test failure:
...
Fail: Method#call with undefined method -- only kwargs (mrbgems: mruby-method)
- Assertion[6]
NoMethodError exception expected, not
Class: <TypeError>
Message: <Array cannot be converted to Hash>
- Assertion[9]
Expected: {:kwarg1=>:val1, :kwarg2=>:val2}
Actual: [:foo]
2024-07-19 20:37:40 +00:00
Yukihiro "Matz" Matsumoto
c539256b43
mruby-enum-ext: add Enumerable#each_entry
2024-07-19 23:29:45 +09:00
Yukihiro "Matz" Matsumoto
45078d9a49
mruby-string-ext: fixed typo (casecmp! -> casecmp?)
2024-07-17 02:25:49 +09:00
Yukihiro "Matz" Matsumoto
ca28e639c6
mruby-numeric-ext: move allbits?, anybits?, nobits? to Integer class
2024-07-15 21:35:42 +09:00
Yukihiro "Matz" Matsumoto
3f5138a6ac
mruby-numeric-ext: implement Numeric#integer? method
2024-07-15 21:35:42 +09:00
Yukihiro "Matz" Matsumoto
1a8df40392
mruby-enum-ext: add Array#sort_by! method
2024-07-15 21:35:42 +09:00
Yukihiro "Matz" Matsumoto
fcab7ef377
numeric.c (int_div): fixed a bug regarding bigint / non-integer
...
Non-integer means Complex or Rational.
2024-07-15 21:35:42 +09:00
John Bampton
de8a6fe787
Fix spelling
2024-07-13 00:21:53 +10:00
Yukihiro "Matz" Matsumoto
c75f7587bc
mruby-numeric-ext: add call-seq reference for Integer#size
2024-07-10 14:56:13 +09:00
Yukihiro "Matz" Matsumoto
ee296f024b
mruby-numeric-ext: add Integer#size method
...
Although CRuby uses clz() for the biggest word, mruby bigint only counts
number of digit words.
2024-07-10 14:50:54 +09:00
Yukihiro "Matz" Matsumoto
a77bc25a5f
mruby-sprintf: support dots expression of negative integer format
...
For specifiers assume unsigned integers, negative numbers show dots (..)
to indicate virtual infinite 1s at the MSB side of 2's compliment.
2024-07-09 11:13:55 +09:00
Yukihiro "Matz" Matsumoto
80fec16cb6
mruby-sprintf: inline sign_bits() function
2024-07-09 10:48:07 +09:00
Yukihiro "Matz" Matsumoto
d249c2e939
mruby-sprintf: separate filling high bits and converting negatives
2024-07-09 10:40:46 +09:00
Yukihiro "Matz" Matsumoto
2488375a35
mruby-bigint (mpz_mod): move mpz_init() to avoid memory leak
2024-07-09 08:00:23 +09:00
Yukihiro "Matz" Matsumoto
0ea1549faa
mruby-sprintf: reorder functions
...
In addition, internal function `mrb_str_format()` is made `static`.
2024-07-06 08:45:19 +09:00
Yukihiro "Matz" Matsumoto
bd502f6d7b
mruby-sprintf: support Big integers for %d etc.
2024-07-04 22:51:14 +09:00