mirror of
https://github.com/aicodix/code.git
synced 2026-04-27 14:30:36 +00:00
moved crc and xorshift from DSP to CODE repository
This commit is contained in:
commit
ee79ff2b2d
8 changed files with 292 additions and 0 deletions
29
README.md
Normal file
29
README.md
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
This is a work in progress and a long overdue attempt to bring all our not-DSP-related code together and make it reusable for our future projects.
|
||||
|
||||
Before using any of this you should enter the tests directory and execute "make".
|
||||
This will check if your compiler is able to create binaries that are able to produce correct results when executed.
|
||||
|
||||
What we have included so far:
|
||||
|
||||
### [crc.hh](crc.hh)
|
||||
|
||||
A [Cyclic redundancy check](https://en.wikipedia.org/wiki/Cyclic_redundancy_check) helps ensuring data integrity.
|
||||
|
||||
For example, if we need to integrate CRC32 checking for a few bytes, like in the following:
|
||||
```
|
||||
# echo -n 'Hello World!' | rhash -C -
|
||||
(stdin) 1C291CA3
|
||||
```
|
||||
We can add it to our project as simple as that:
|
||||
```
|
||||
DSP::CRC<uint32_t> crc(0xEDB88320, 0xFFFFFFFF);
|
||||
for (uint8_t c: std::string("Hello World!")) crc(c);
|
||||
assert(~crc() == 0x1C291CA3);
|
||||
```
|
||||
|
||||
### [xorshift.hh](xorshift.hh)
|
||||
|
||||
Sometimes we need a sequence of ["random enough"](https://en.wikipedia.org/wiki/Diehard_tests) numbers but don't want to store them in an array to get a repeatable sequence.
|
||||
Here a [Pseudorandom number generator](https://en.wikipedia.org/wiki/Pseudorandom_number_generator) can help by prodiving a deterministic and thus repeatable sequence of numbers.
|
||||
[George Marsaglia](https://en.wikipedia.org/wiki/George_Marsaglia) discovered a class of simple and fast pseudorandom number generators, which he called [Xorshift](https://en.wikipedia.org/wiki/Xorshift).
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue