Commit graph

39 commits

Author SHA1 Message Date
Bruno BELANYI c675b15248 abacus: bignum: optimize div_mod 2021-08-23 19:12:35 +02:00
Bruno BELANYI 1521d2b232 abacus: bignum: fix do_halve 2021-08-23 19:10:48 +02:00
Bruno BELANYI a99f60dcd4 abacus: bignum: move do_halve & is_odd up 2021-08-23 18:59:43 +02:00
Bruno BELANYI 31dcb91a26 abacus: bignum: add log10 2021-08-23 16:38:25 +02:00
Bruno BELANYI c730705a13 abacus: bignum: add log2 2021-08-23 16:33:05 +02:00
Bruno BELANYI 4b85d22923 abacus: bignum: add operator bool 2021-08-23 16:30:10 +02:00
Bruno BELANYI c9811fce44 abacus: bignum: rename do_trim_leading_zeros
It works in-place, unlike the rest of the `do_*` functions.
2021-08-23 16:14:22 +02:00
Bruno BELANYI 2046d1ec4b abacus: bignum: fix style of assignment
Using `auto <var> = <type>` is more consistent with the rest.
2021-08-23 16:12:53 +02:00
Bruno BELANYI 1dbed201e6 abacus: parse: parser: store result of parse 2021-08-23 00:24:25 +02:00
Bruno BELANYI 46a0655e72 abacus: parse: scanner: define yyterminate 2021-08-23 00:24:05 +02:00
Bruno BELANYI 2d437a2583 abacus: parse: activate debug using ENV 2021-08-22 23:57:54 +02:00
Bruno BELANYI b50750009b abacus: parse standard output and output result 2021-08-22 14:37:49 +02:00
Bruno BELANYI 26055c5a3f abacus: parse: fix name of namespace 2021-08-22 14:37:32 +02:00
Bruno BELANYI e4aa81d1a4 fixup! abacus: parse: use BigNum instead of int 2021-08-22 14:37:09 +02:00
Bruno BELANYI d3c189bd1f abacus: parse: declare proper dependency
Due to creating a dependency, we should use `custom_target` rather a
`generator` expression.
2021-08-22 14:36:26 +02:00
Bruno BELANYI 60a0fbf5b0 abacus: parse: use BigNum instead of int 2021-08-22 14:14:27 +02:00
Bruno BELANYI f4f620436c abacus: bignum: add sqrt 2021-08-22 13:58:43 +02:00
Bruno BELANYI d03058e410 abacus: bignum: add note about div_mod performance 2021-08-22 13:57:29 +02:00
Bruno BELANYI cfa19a60ba abacus: bignum: trim zeros after a subtraction
This way we keep a canonicalized version of the result.
2021-08-22 13:55:12 +02:00
Bruno BELANYI 3397bf4310 abacus: bignum: fix order comparisons
This is a pretty big oversight...
2021-08-22 13:55:12 +02:00
Bruno BELANYI 5bc3963317 abacus: bignum: add exponentiation 2021-08-22 13:55:12 +02:00
Bruno BELANYI 0436d2e513 abacus: bignum: factorize trim of leading zeros 2021-08-22 13:55:12 +02:00
Bruno BELANYI 4e3d53ecd4 abacus: bignum: add division & modulo
Like the C language, the `%` operator is rather the remainder, such that
`(a/b)*b + (a%b) = a`.

I still call it modulo though...
2021-08-22 13:55:12 +02:00
Bruno BELANYI 7cd0664e60 abacus: bignum: fix carry bug in addition 2021-08-21 01:32:18 +02:00
Bruno BELANYI 44bb20e390 abacus: bignum: remove magic number regarding base 2021-08-21 01:32:12 +02:00
Bruno BELANYI 2489ce19b2 abacus: bignum: put sign checks in helper methods
Make them public because they can be useful in consumers of the library.
2021-08-21 01:31:49 +02:00
Bruno BELANYI 4a4b9f361c abacus: bignum: add multiplication 2021-08-21 01:31:48 +02:00
Bruno BELANYI d40c109fb7 abacus: bignum: add input operator 2021-08-21 01:31:48 +02:00
Bruno BELANYI fe01661613 abacus: bignum: add addition & substraction 2021-08-21 01:31:39 +02:00
Bruno BELANYI d083ede78c abacus: bignum: factorize lexicographical compare
I want to make use of it for substraction.
2021-08-20 22:20:45 +02:00
Bruno BELANYI 6f7e1102db abacus: bignum: add default constructor 2021-08-20 22:20:45 +02:00
Bruno BELANYI ad5092ea8d abacus: bignum: add output operator 2021-08-20 22:20:45 +02:00
Bruno BELANYI 0a5fb471e4 abacus: bignum: add unary operators 2021-08-20 22:20:45 +02:00
Bruno BELANYI 2600eb2ba7 abacus: bignum: add order comparisons 2021-08-20 22:20:45 +02:00
Bruno BELANYI 17bd51d197 abacus: bignum: add equality comparisons 2021-08-20 22:20:45 +02:00
Bruno BELANYI 2cff603a48 abacus: bignum: add is_canonicalized predicate
Useful when debugging.
2021-08-20 22:20:45 +02:00
Bruno BELANYI 12c8b6b114 abacus: add initial bignum library 2021-08-20 22:20:45 +02:00
Bruno BELANYI ff35faa705 abacus: add parse library
Would need some improvements, such as by using the C++ Flex scanner
interface.

It will also need to start using the BigNum once it has been
implemented.
2021-08-20 22:20:45 +02:00
Bruno BELANYI 5b57981af7 abacus: bootstrap build system 2021-08-20 22:20:45 +02:00