nicoo
0d39732300
factor::Decomposition: Inline a small number (4) of factors
...
This avoids allocating on the heap when factoring most numbers,
without using much space on the stack.
This is ~3.5% faster than the previous commit, and ~8.3% faster than “master”.
2020-10-26 15:06:28 -05:00
nicoo
78ae0cca31
factor: Slightly refactor main loop, fix bug
2020-10-26 15:06:28 -05:00
nicoo
b7b0c76b8e
factor::Decomposition: Optimise as a factor is never added twice
...
The invariant is checked by a debug_assert!, and follows from the previous
commit, as `dec` and `factors` only ever contains coprime numbers:
- true at the start: factor = ∅ and dec = { n¹ } ;
- on every loop iteration, we pull out an element `f` from `dec` and either:
- discover it is prime, and add it to `factors` ;
- split it into a number of coprime factors, that get reinserted into `dec`;
the invariant is maintained, as all divisors of `f` are coprime with all
numbers in `dec` and `factors` (as `f` itself is coprime with them.
As we only add elements to `Decomposition` objects that are coprime with the
existing ones, they are distinct.
2020-10-26 15:06:28 -05:00
nicoo
ce218e01b6
factor: Ensure we only need to find every single factor once [WiP]
...
~17% faster, many optimisation opportunities still missed >:)
2020-10-26 15:06:28 -05:00
nicoo
3743a3e1e7
factor: Derecursify and refactor
...
~7% slowdown, paves the way for upcoming improvements
2020-10-26 15:06:28 -05:00
nicoo
8643489096
factor::Factors: Use a RefCell rather than copy data when printing
...
~2.9% faster than the previous commit, ~11% faster than “master” overall.
2020-10-26 15:06:28 -05:00
nicoo
30f9cf32f2
factor::Decomposition: Use a flat vector representation
...
~18% faster than BTreeMap, and ~5% faster than 'master'
2020-10-26 15:06:27 -05:00
nicoo
b8ef58c002
factor::Factors: Split off a Decomposition type
...
The new type can be used to represent in-progress factorisations,
which contain non-prime factors.
2020-10-26 15:06:27 -05:00
nicoo
6158cd5714
factor: Introduce a type alias for exponents
...
This way, we can easily replace u8 with a larger type when moving to support
larger integers.
2020-10-26 15:06:27 -05:00
Roy Ivy III
5837bc4fc9
Merge pull request #1610 from sylvestre/sort-clap
...
refactor(sort): move to use of 'clap'
2020-10-25 18:56:58 -05:00
Roy Ivy III
a9fb64abb4
Merge pull request #1612 from sylvestre/clap-seq
...
Move seq to use of 'clap'
2020-10-25 18:56:24 -05:00
Roy Ivy III
dbc4266d3b
Merge pull request #1611 from sylvestre/readline
...
refactor(readlink): move to clap
2020-10-25 18:54:26 -05:00
Sylvestre Ledru
dc4eb79329
refactor/sort ~ changes based on PR feedback
...
- change `const`=>`static` and remove unneeded help/version (supplied by default by `clap`)
- update of the ABOUT description
- move to alphabetical order (where reasonable)
- rename OPT_FILES => ARG_FILES
- change the order of the declarations
2020-10-25 11:14:15 -05:00
Sylvestre Ledru
58b0aeabee
refactor(sort): move to clap
2020-10-25 11:01:30 -05:00
Sylvestre Ledru
75e1c517a0
refactor/seq ~ changes based on PR feedback
...
- fix the ABOUT description
- rename OPT_NUMBERS => ARG_NUMBERS
- improve the get_usage of seq
- rename seq => incremetal
- `cargo fmt`
2020-10-25 10:58:14 -05:00
Sylvestre Ledru
e06aaace59
refactor/readline ~ changes based on PR feedback
...
- add a trailing "." to ABOUT for consistency
- rename OPT_FILES => ARG_FILES
- move to alphabetical order for OPTIONs (where reasonable)
Co-authored-by: Roy Ivy III <rivy.dev@gmail.com>
2020-10-25 10:54:24 -05:00
Sylvestre Ledru
733fe925ad
refactor(readlink): move to clap
2020-10-25 10:53:09 -05:00
Sylvestre Ledru
dfb922f66e
refactor(seq): use clap instead of doing arg mgmt by hand
2020-10-25 10:46:38 -05:00
Sylvestre Ledru
b4969c6cc2
test(seq): add a test to check that we don't accept more than 3 args
2020-10-25 10:44:50 -05:00
Roy Ivy III
58d7d89e07
Merge pull request #1617 from sylvestre/clippy-fix
...
Fix some clippy warnings
2020-10-25 10:35:35 -05:00
Roy Ivy III
07e94064b0
Merge pull request #1614 from sylvestre/truncate
...
refactor(truncate): move to clap + add new tests
2020-10-25 10:18:54 -05:00
Sylvestre Ledru
a12509f32e
Fix some clippy warnings
2020-10-25 15:50:51 +01:00
Sylvestre Ledru
7c3dccb981
remove the useless format
2020-10-25 12:28:27 +01:00
Sylvestre Ledru
0d4e36d5cd
reorder the args
2020-10-25 12:27:04 +01:00
Sylvestre Ledru
b72972e0b2
Rename OPT_FILES => ARG_FILES
...
Co-authored-by: Roy Ivy III <rivy.dev@gmail.com>
2020-10-25 12:22:07 +01:00
Sylvestre Ledru
3a367a4179
Merge pull request #1615 from rivy/fix.cargolock-version
...
maint/CICD ~ add 'Cargo.lock' format testing and protection
2020-10-25 09:51:28 +01:00
Roy Ivy III
daa5868da4
maint/CICD ~ add 'Cargo.lock' format testing and protection
2020-10-24 20:56:41 -05:00
Sylvestre Ledru
8ad2fd3534
refactor(truncate): Move to clap
2020-10-23 00:40:46 +02:00
Sylvestre Ledru
f888616c0b
tests(truncate): Add more tests
2020-10-23 00:36:09 +02:00
Sylvestre Ledru
ce66f3fbdb
Merge pull request #1609 from kevinburkemeter/sort-panic
...
sort: fix panic on write to closed pipe
2020-10-22 07:51:59 +02:00
Kevin Burke
7fc1b16115
sort: fix panic on write to closed pipe
...
If the output of sort is piped to another program that closes the file
descriptor, sort currently panics. The GNU coreutils is able to handle
this case.
Replacing panic with crash_if_err reports the closed pipe and exits
with a return code, which seems like the correct behavior. Tested on
my Mac and the panic disappears.
Add a test which pipes data to sort - it won't protect against this
specific regression, but it increases the test coverage, at least.
Fixes #1608 .
2020-10-21 16:55:10 -07:00
Sylvestre Ledru
f5dce475c5
Merge pull request #1605 from rivy/chg.disable-macos-tests
...
tests/cp ~ disable intermittent failures on MacOS (includes FixME comments)
2020-10-17 09:53:44 +02:00
Sylvestre Ledru
143c2198d8
Merge pull request #1606 from rivy/fix.warning
...
refactor/polish ~ (factor) fix `cargo clippy` complaint (unused_imports)
2020-10-17 09:53:13 +02:00
Roy Ivy III
92075c7d14
refactor/polish ~ (factor) fix cargo clippy
complaint (unused_imports)
2020-10-16 20:25:49 -05:00
Roy Ivy III
96092b01fc
tests/cp ~ disable intermittent failures on MacOS (includes FixME comments)
...
- track repair progress at GH:uutils/coreutils/issues/1590
2020-10-16 20:24:57 -05:00
Sylvestre Ledru
aa1285e305
Merge pull request #1607 from rivy/rf.update-deps
...
update dependencies ~ Cargo.lock
2020-10-15 09:34:25 +02:00
Roy Ivy III
3a4f12c2fb
maint/CICD ~ improve robustness of MinRustV package dependency calculation
2020-10-14 21:42:09 -05:00
Roy Ivy III
79b054b016
update deps ~ Cargo.lock
2020-10-14 14:44:07 -05:00
Sylvestre Ledru
fba62f39c6
Merge pull request #1603 from rivy/fix.warnings
...
Fix `cargo clippy` warnings
2020-10-12 09:23:15 +02:00
Sylvestre Ledru
dd583030b9
Merge pull request #1604 from rivy/fix.versioning
...
Fix versioning
2020-10-12 09:22:31 +02:00
Roy Ivy III
df57df8c93
docs ~ use version calculated from *Cargo.toml*
2020-10-11 17:39:50 -05:00
Roy Ivy III
77a04546f0
fix/printf ~ use calculated VERSION
2020-10-11 17:39:50 -05:00
Roy Ivy III
46f30f3836
refactor/polish ~ fix cargo clippy
complaint (stable_sort_primitive)
2020-10-10 20:35:35 -05:00
Roy Ivy III
10b6926ccc
refactor/polish ~ fix cargo clippy
complaint (allow match_like_matches_macro)
2020-10-10 20:35:35 -05:00
Roy Ivy III
6fa16343f1
refactor/polish ~ fix cargo clippy
complaint (same_item_push)
2020-10-10 20:35:35 -05:00
Roy Ivy III
7b4d81efd4
refactor/polish ~ fix cargo clippy
complaint (needless_collect)
2020-10-10 20:35:35 -05:00
Roy Ivy III
4a041f95e3
Merge pull request #1598 from sylvestre/nproc
...
cleanup(nproc): remove some artifacts from the clap migration
2020-10-10 16:28:22 -05:00
Roy Ivy III
02e4226c26
refactor/polish ~ cargo make format
2020-10-02 16:03:21 -05:00
Roy Ivy III
0fa249a944
Fix tr
argument handling for missing arguments ( #1601 )
...
* tests/tr ~ confirm failure for missing argument(s)
* fix/tr ~ mimic GNU error reponse for missing argument(s)
2020-10-02 22:43:57 +02:00
Sylvestre Ledru
c660684a8c
nproc: use the variable name
2020-09-26 23:09:08 +02:00