ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libecb/ecb.pod
(Generate patch)

Comparing libecb/ecb.pod (file contents):
Revision 1.34 by root, Fri Jun 17 21:16:12 2011 UTC vs.
Revision 1.38 by sf-exg, Thu Aug 25 16:06:08 2011 UTC

396After processing the node, (part of) the next node might already be in 396After processing the node, (part of) the next node might already be in
397cache. 397cache.
398 398
399=back 399=back
400 400
401=head2 BIT FIDDLING / BITSTUFFS 401=head2 BIT FIDDLING / BIT WIZARDRY
402 402
403=over 4 403=over 4
404 404
405=item bool ecb_big_endian () 405=item bool ecb_big_endian ()
406 406
412 412
413On systems that are neither, their return values are unspecified. 413On systems that are neither, their return values are unspecified.
414 414
415=item int ecb_ctz32 (uint32_t x) 415=item int ecb_ctz32 (uint32_t x)
416 416
417=item int ecb_ctz64 (uint64_t x)
418
417Returns the index of the least significant bit set in C<x> (or 419Returns the index of the least significant bit set in C<x> (or
418equivalently the number of bits set to 0 before the least significant bit 420equivalently the number of bits set to 0 before the least significant bit
419set), starting from 0. If C<x> is 0 the result is undefined. For example: 421set), starting from 0. If C<x> is 0 the result is undefined.
422
423For smaller types than C<uint32_t> you can safely use C<ecb_ctz32>.
424
425For example:
420 426
421 ecb_ctz32 (3) = 0 427 ecb_ctz32 (3) = 0
422 ecb_ctz32 (6) = 1 428 ecb_ctz32 (6) = 1
423 429
430=item int ecb_ld32 (uint32_t x)
431
432=item int ecb_ld64 (uint64_t x)
433
434Returns the index of the most significant bit set in C<x>, or the number
435of digits the number requires in binary (so that C<< 2**ld <= x <
4362**(ld+1) >>). If C<x> is 0 the result is undefined. A common use case is
437to compute the integer binary logarithm, i.e. C<floor (log2 (n))>, for
438example to see how many bits a certain number requires to be encoded.
439
440This function is similar to the "count leading zero bits" function, except
441that that one returns how many zero bits are "in front" of the number (in
442the given data type), while C<ecb_ld> returns how many bits the number
443itself requires.
444
445For smaller types than C<uint32_t> you can safely use C<ecb_ld32>.
446
424=item int ecb_popcount32 (uint32_t x) 447=item int ecb_popcount32 (uint32_t x)
425 448
449=item int ecb_popcount64 (uint64_t x)
450
426Returns the number of bits set to 1 in C<x>. For example: 451Returns the number of bits set to 1 in C<x>.
452
453For smaller types than C<uint32_t> you can safely use C<ecb_popcount32>.
454
455For example:
427 456
428 ecb_popcount32 (7) = 3 457 ecb_popcount32 (7) = 3
429 ecb_popcount32 (255) = 8 458 ecb_popcount32 (255) = 8
430 459
431=item uint32_t ecb_bswap16 (uint32_t x) 460=item uint32_t ecb_bswap16 (uint32_t x)
492change direction for negative values: 521change direction for negative values:
493 522
494 for (m = -100; m <= 100; ++m) 523 for (m = -100; m <= 100; ++m)
495 int elem = myarray [ecb_mod (m, ecb_array_length (myarray))]; 524 int elem = myarray [ecb_mod (m, ecb_array_length (myarray))];
496 525
526=item x = ecb_div_rd (val, div)
527
528=item x = ecb_div_ru (val, div)
529
530Returns C<val> divided by C<div> rounded down or up, respectively.
531C<val> and C<div> must have integer types and C<div> must be strictly
532positive. Note that these functions are implemented with macros in C
533and with function templates in C++.
534
497=back 535=back
498 536
499=head2 UTILITY 537=head2 UTILITY
500 538
501=over 4 539=over 4

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines