Gray code implementation.
More...
Go to the source code of this file.
Gray code implementation.
The Gray code is a binary numeral system where two successive values differ in only one digit.
- Author
- Gregory Bard bard@.nosp@m.ford.nosp@m.ham.e.nosp@m.du
-
Martin Albrecht M.R.A.nosp@m.lbre.nosp@m.cht@r.nosp@m.hul..nosp@m.ac.uk
◆ __M4RI_MAXKAY
Maximum allowed value for k.
◆ log2_floor()
static int log2_floor |
( |
int | v | ) |
|
|
inlinestatic |
◆ m4ri_build_all_codes()
void m4ri_build_all_codes |
( |
void | | ) |
|
Generates global code book.
This function is called automatically when the shared library is loaded.
- Warning
- Not thread safe!
◆ m4ri_build_code()
void m4ri_build_code |
( |
int * | ord, |
|
|
int * | inc, |
|
|
int | l ) |
Fills var ord and var inc with Gray code data for a Gray code of length \(2^l\).
- Parameters
-
ord | Will hold gray code data, must be preallocated with correct size |
inc | Will hold some increment data, must be preallocated with correct size |
l | Logarithm of length of Gray code. |
- Note
- Robert Miller had the idea for a non-recursive implementation.
◆ m4ri_destroy_all_codes()
void m4ri_destroy_all_codes |
( |
void | | ) |
|
Frees memory from the global code book.
This function is called automatically when the shared library is unloaded.
- Warning
- Not thread safe!
◆ m4ri_gray_code()
int m4ri_gray_code |
( |
int | i, |
|
|
int | l ) |
Returns the i-th gray code entry for a gray code of length \(2^l\).
- Parameters
-
i | The index in the Gray code table. |
l | Length of the Gray code. |
- Returns
- i-th Gray code entry.
◆ m4ri_opt_k()
int m4ri_opt_k |
( |
int | a, |
|
|
int | b, |
|
|
int | c ) |
Return the optimal var k for the given parameters.
If var c != 0 then var k for multiplication is returned, else var k for inversion. The optimal var k here means \(0.75 log_2(n)\) where \(n\) is \(min(a,b)\) for inversion and \(b\) for multiplication.
- Parameters
-
a | Number of rows of (first) matrix |
b | Number of columns of (first) matrix |
c | Number of columns of second matrix (may be 0) |
- Returns
- k
◆ m4ri_codebook
M4RI_DLL_EXPORT code** m4ri_codebook |
|
extern |
Global m4ri_codebook.
- Warning
- Not thread safe!