mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
Add 'round-ash', a rounding arithmetic shift operator
* libguile/numbers.c (left_shift_exact_integer, floor_right_shift_exact_integer, round_right_shift_exact_integer): New static functions. (scm_round_ash): New procedure. (scm_ash): Reimplement in terms of 'left_shift_exact_integer' and 'floor_right_shift_exact_integer'. * libguile/numbers.h: Add prototype for scm_round_ash. Rename the second argument of 'scm_ash' from 'cnt' to 'count'. * test-suite/tests/numbers.test (round-ash, ash): Add new unified testing framework for 'ash' and 'round-ash'. Previously, the tests for 'ash' were not very comprehensive; for example, they did not include a single test where the number to be shifted was a bignum. * doc/ref/api-data.texi (Bitwise Operations): Add documentation for 'round-ash'. Improve documentation for `ash'.
This commit is contained in:
parent
a285b18ca8
commit
e08a12b535
4 changed files with 234 additions and 153 deletions
|
@ -206,7 +206,8 @@ SCM_API SCM scm_logbit_p (SCM n1, SCM n2);
|
|||
SCM_API SCM scm_lognot (SCM n);
|
||||
SCM_API SCM scm_modulo_expt (SCM n, SCM k, SCM m);
|
||||
SCM_API SCM scm_integer_expt (SCM z1, SCM z2);
|
||||
SCM_API SCM scm_ash (SCM n, SCM cnt);
|
||||
SCM_API SCM scm_ash (SCM n, SCM count);
|
||||
SCM_API SCM scm_round_ash (SCM n, SCM count);
|
||||
SCM_API SCM scm_bit_extract (SCM n, SCM start, SCM end);
|
||||
SCM_API SCM scm_logcount (SCM n);
|
||||
SCM_API SCM scm_integer_length (SCM n);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue