summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-rational/src
AgeCommit message (Collapse)Author
2021-03-28numeric.c: function renaming.Yukihiro "Matz" Matsumoto
- `mrb_num_div_int(mrb,x,y)` -> `mrb_div_int(mrb,x,y)` - `mrb_num_div_flo(mrb,x,y)` -> `mrb_div_flo(x,y)` They are internal function not supposed to be used outside of the core.
2021-03-27Move default `Integer#/` from `rational.c` to `complex.c`.Yukihiro "Matz" Matsumoto
2021-03-25rational.c: fix wrong `funcall` method in `rational_mul`.Yukihiro "Matz" Matsumoto
2021-03-25rational.c: inline `mrb_rational_eq()`.Yukihiro "Matz" Matsumoto
It removes non-static function, so that strictly saying, it's an incompatible change. But the function was added recently and I am sure no one uses it yet.
2021-03-24rational.c: implement `Rational#<=>` in C.Yukihiro "Matz" Matsumoto
2021-03-24rational.c: implement `Rational#/` and `#quo` in C.Yukihiro "Matz" Matsumoto
2021-03-24rational.c: implement `Rational#*` in C.Yukihiro "Matz" Matsumoto
2021-03-24rational.c: implement `Rational#-` in C.Yukihiro "Matz" Matsumoto
2021-03-24fixup! rational.c: prepare utility function `rat_to_flo()`.Yukihiro "Matz" Matsumoto
2021-03-24rational.c: prepare utility function `rat_to_flo()`.Yukihiro "Matz" Matsumoto
This function takes `struct mrb_rational*` and returns converted `mrb_float` value.
2021-03-24rational.c: implement `Rational#+` in C.Yukihiro "Matz" Matsumoto
2021-03-24rational.c: check integer overflow in `rational_minus`.Yukihiro "Matz" Matsumoto
2021-03-24Use `mrb_num_div_flo` for float division.Yukihiro "Matz" Matsumoto
This function handles zero division properly. Also fixed bugs that multiply numbers instead of division.
2021-03-24Fix infinite recursive call bugs in integer division.Yukihiro "Matz" Matsumoto
2021-03-22Use global defines for `Rational` and `Complex`.Yukihiro "Matz" Matsumoto
2021-03-20rational.c: fix `MRB_TT_RATIONAL` and `MRB_TT_COMPLEX` confusion.Yukihiro "Matz" Matsumoto
2021-03-19rational.c: overhaul rational operators.Yukihiro "Matz" Matsumoto
- define `MRB_TT_RATIONAL` - change object structure (`struct RRational`) - add memory management for `MRB_TT_RATIONAL` - avoid operator overloading as much as possible - implement division overloading in C - as a result, performance improved a lot
2021-02-08`i_gcd()` does not work for `MRB_INT_MIN`.Yukihiro "Matz" Matsumoto
2021-01-28Remove unnecessary bit shift in `rational_new_f`.Yukihiro "Matz" Matsumoto
2021-01-26Revert "Minimize the changes in #5277"Yukihiro "Matz" Matsumoto
This reverts commit dc51d89ac22acc60b9bfeed87115863565b74085.
2021-01-25Silence 'loss of data' warnings.Yukihiro "Matz" Matsumoto
2021-01-25Fix a bug for the case `frexp()` return `Infinity`.Yukihiro "Matz" Matsumoto
2021-01-25Should use a limit for 32 bit platform; ref 05a8cc44Yukihiro "Matz" Matsumoto
2021-01-24Define `RAT_INT_LIMIT` for 32 bit platforms.Yukihiro "Matz" Matsumoto
2021-01-24Detect integer overflow in `rational_new_f()`.Yukihiro "Matz" Matsumoto
2021-01-22Minimize the changes in #5277Yukihiro "Matz" Matsumoto
Instead of including `mruby/presym.h` everywhere, we provided the fallback `mruby/presym.inc` under `include/mruby` directory, and specify `-I<build-dir>/include` before `-I<top-dir>/include` in `presym.rake`. So even when someone drops `-I<build-dir>/include` in compiler options, it just compiles without failure.
2021-01-21Merge branch 'avoid-including-presym.inc-in-existing-header-files' of ↵Yukihiro "Matz" Matsumoto
https://github.com/shuujii/mruby into shuujii-avoid-including-presym.inc-in-existing-header-files
2021-01-13Rational denominator should not be zero.Yukihiro "Matz" Matsumoto
2021-01-12Silence Windows warnings (cast and `setmode`).Yukihiro "Matz" Matsumoto
2021-01-11Avoid including `presym.inc` in existing header filesKOBAYASHI Shuji
Addressed an issue where existing programs linking `libmruby.a` could only be built by adding `<build-dir>/include` to compiler's include path.
2021-01-10Fix CI failure on Windows environment.Yukihiro "Matz" Matsumoto
`1L` on Windows means `32 bit int`.
2021-01-09Fix wrong float to rational conversion in 32 bit mode.Yukihiro "Matz" Matsumoto
2021-01-09Convert float number to rational by decoding mantissa.Yukihiro "Matz" Matsumoto
2021-01-02Avoid `int64_t` on 32 bit platforms.Yukihiro "Matz" Matsumoto
2021-01-02Check `NaN` and `Infinity` before converting `Float` to `Rational`.Yukihiro "Matz" Matsumoto
2020-12-24Avoid division by zero in `rational_to_f()`.Yukihiro "Matz" Matsumoto
2020-12-15refactor: remove trailing whitespace from C, Header, Ruby and YAML filesJohn Bampton
Lint
2020-11-26Avoid integer overflow in `rational_new`.Yukihiro "Matz" Matsumoto
2020-11-17Check division overflow (`MRB_INT_MIN` and `-1`).Yukihiro "Matz" Matsumoto
2020-11-04Add cast to silence int conversion warnings.Yukihiro "Matz" Matsumoto
2020-10-12Fix warning from VC regarding implicit int conversion.Yukihiro "Matz" Matsumoto
2020-10-12Made `Rational` overhaul.Yukihiro "Matz" Matsumoto
- Implement `Rational()` in `C`. - Use `float` to `rational` conversion function taken from: https://rosettacode.org/wiki/Convert_decimal_number_to_rational#C
2020-10-12Handle integer overflow in `rational_s_new`.Yukihiro "Matz" Matsumoto
2020-10-12Use `mrb_int_value()` instead of `mrb_fixnum_value()`.Yukihiro "Matz" Matsumoto
Where fixnum overflow can happen.
2020-10-12Reorganize `Integer` system.Yukihiro "Matz" Matsumoto
- Integrate `Fixnum` and `Integer` - Remove `Integral` - `int / int -> int` - Replace `mrb_fixnum()` to `mrb_int()` - Replace `mrb_fixnum_value()` to `mrb_int_value()`. - Use `mrb_integer_p()` instead of `mrb_fixnum_p()`
2020-10-12Integrate `Fixnum` class into `Integer` classdearblue
* The `Fixnum` constant is now an alias for the `Integer` class. * Remove `struct mrb_state::fixnum_class` member. If necessary, use `struct mrb_state::integer_class` instead.
2020-10-12Rename float configuration option names.Yukihiro "Matz" Matsumoto
- `MRB_WITHOUT_FLOAT` => `MRB_NO_FLOAT` - `MRB_USE_FLOAT` => `MRB_USE_FLOAT32` The former is to use `USE_XXX` naming convention. The latter is to make sure `float` is 32bit float and not floating point number in general.
2020-10-12Add explicit cast to `DROP_PRECISION` macro in `rational.c`.Yukihiro "Matz" Matsumoto
2020-10-12Use `mrb->eStandardError` instead of `mrb_exc_get()`.Yukihiro "Matz" Matsumoto
2020-06-04Add explicit cast to `DROP_PRECISION` macro in `rtional.c`.Yukihiro "Matz" Matsumoto