Fibonacci factors. More...
#include <stddef.h>
#include <ctype.h>
Go to the source code of this file.
Macros | |
#define | ELLIPSIS_FIBFAC(N) _Generic((char(*)[N]){}, typeof(char(*)[3]): ellipsis‿fibfac‿key3,typeof(char(*)[4]): ellipsis‿fibfac‿key4,typeof(char(*)[5]): ellipsis‿fibfac‿key5,typeof(char(*)[6]): ellipsis‿fibfac‿key6,typeof(char(*)[7]): ellipsis‿fibfac‿key7,typeof(char(*)[8]): ellipsis‿fibfac‿key8,typeof(char(*)[9]): ellipsis‿fibfac‿key9,typeof(char(*)[10]): ellipsis‿fibfac‿key10,typeof(char(*)[11]): ellipsis‿fibfac‿key11,typeof(char(*)[12]): ellipsis‿fibfac‿key12,typeof(char(*)[13]): ellipsis‿fibfac‿key13,typeof(char(*)[14]): ellipsis‿fibfac‿key14,typeof(char(*)[15]): ellipsis‿fibfac‿key15,typeof(char(*)[16]): ellipsis‿fibfac‿key16,typeof(char(*)[17]): ellipsis‿fibfac‿key17,typeof(char(*)[18]): ellipsis‿fibfac‿key18,typeof(char(*)[19]): ellipsis‿fibfac‿key19,typeof(char(*)[20]): ellipsis‿fibfac‿key20,typeof(char(*)[21]): ellipsis‿fibfac‿key21,typeof(char(*)[22]): ellipsis‿fibfac‿key22,typeof(char(*)[23]): ellipsis‿fibfac‿key23,typeof(char(*)[24]): ellipsis‿fibfac‿key24,typeof(char(*)[25]): ellipsis‿fibfac‿key25,typeof(char(*)[26]): ellipsis‿fibfac‿key26,typeof(char(*)[27]): ellipsis‿fibfac‿key27,typeof(char(*)[28]): ellipsis‿fibfac‿key28,typeof(char(*)[29]): ellipsis‿fibfac‿key29,typeof(char(*)[30]): ellipsis‿fibfac‿key30,typeof(char(*)[31]): ellipsis‿fibfac‿key31,typeof(char(*)[32]): ellipsis‿fibfac‿key32,typeof(char(*)[33]): ellipsis‿fibfac‿key33,typeof(char(*)[34]): ellipsis‿fibfac‿key34,typeof(char(*)[35]): ellipsis‿fibfac‿key35,typeof(char(*)[36]): ellipsis‿fibfac‿key36,typeof(char(*)[37]): ellipsis‿fibfac‿key37,typeof(char(*)[38]): ellipsis‿fibfac‿key38,typeof(char(*)[39]): ellipsis‿fibfac‿key39,typeof(char(*)[40]): ellipsis‿fibfac‿key40,typeof(char(*)[41]): ellipsis‿fibfac‿key41,typeof(char(*)[42]): ellipsis‿fibfac‿key42,typeof(char(*)[43]): ellipsis‿fibfac‿key43,typeof(char(*)[44]): ellipsis‿fibfac‿key44,typeof(char(*)[45]): ellipsis‿fibfac‿key45,typeof(char(*)[46]): ellipsis‿fibfac‿key46,typeof(char(*)[47]): ellipsis‿fibfac‿key47,typeof(char(*)[48]): ellipsis‿fibfac‿key48,typeof(char(*)[49]): ellipsis‿fibfac‿key49,typeof(char(*)[50]): ellipsis‿fibfac‿key50,typeof(char(*)[51]): ellipsis‿fibfac‿key51,typeof(char(*)[52]): ellipsis‿fibfac‿key52,typeof(char(*)[53]): ellipsis‿fibfac‿key53,typeof(char(*)[54]): ellipsis‿fibfac‿key54,typeof(char(*)[55]): ellipsis‿fibfac‿key55,typeof(char(*)[56]): ellipsis‿fibfac‿key56,typeof(char(*)[57]): ellipsis‿fibfac‿key57,typeof(char(*)[58]): ellipsis‿fibfac‿key58,typeof(char(*)[59]): ellipsis‿fibfac‿key59,typeof(char(*)[60]): ellipsis‿fibfac‿key60,typeof(char(*)[61]): ellipsis‿fibfac‿key61,typeof(char(*)[62]): ellipsis‿fibfac‿key62,typeof(char(*)[63]): ellipsis‿fibfac‿key63,typeof(char(*)[64]): ellipsis‿fibfac‿key64) |
The Fibonacci factor for N bits as an integer constant expression. | |
Typedefs | |
typedef size_t | ellipsis‿fibfac‿base |
typedef enum ellipsis‿fibfac | ellipsis‿fibfac |
Enumerations | |
enum | : size_t { ellipsis‿fibfac‿max_intern = 62 } |
enum | ellipsis‿fibfac : ellipsis‿fibfac‿base { ellipsis‿fibfac‿key3 = 0b101ull , ellipsis‿fibfac‿key4 = 0b1001ull , ellipsis‿fibfac‿key5 = 0b10011ull , ellipsis‿fibfac‿key6 = 0b100111ull , ellipsis‿fibfac‿key7 = 0b1001111ull , ellipsis‿fibfac‿key8 = 0b10011111ull , ellipsis‿fibfac‿key9 = 0b100111101ull , ellipsis‿fibfac‿key10 = 0b1001111001ull , ellipsis‿fibfac‿key11 = 0b10011110001ull , ellipsis‿fibfac‿key12 = 0b100111100011ull , ellipsis‿fibfac‿key13 = 0b1001111000111ull , ellipsis‿fibfac‿key14 = 0b10011110001101ull , ellipsis‿fibfac‿key15 = 0b100111100011011ull , ellipsis‿fibfac‿key16 = 0b1001111000110111ull , ellipsis‿fibfac‿key17 = 0b10011110001101111ull , ellipsis‿fibfac‿key18 = 0b100111100011011101ull , ellipsis‿fibfac‿key19 = 0b1001111000110111011ull , ellipsis‿fibfac‿key20 = 0b10011110001101110111ull , ellipsis‿fibfac‿key21 = 0b100111100011011101111ull , ellipsis‿fibfac‿key22 = 0b1001111000110111011111ull , ellipsis‿fibfac‿key23 = 0b10011110001101110111101ull , ellipsis‿fibfac‿key24 = 0b100111100011011101111001ull , ellipsis‿fibfac‿key25 = 0b1001111000110111011110011ull , ellipsis‿fibfac‿key26 = 0b10011110001101110111100111ull , ellipsis‿fibfac‿key27 = 0b100111100011011101111001101ull , ellipsis‿fibfac‿key28 = 0b1001111000110111011110011011ull , ellipsis‿fibfac‿key29 = 0b10011110001101110111100110111ull , ellipsis‿fibfac‿key30 = 0b100111100011011101111001101111ull , ellipsis‿fibfac‿key31 = 0b1001111000110111011110011011101ull , ellipsis‿fibfac‿key32 = 0b10011110001101110111100110111001ull , ellipsis‿fibfac‿key33 = 0b100111100011011101111001101110011ull , ellipsis‿fibfac‿key34 = 0b1001111000110111011110011011100101ull , ellipsis‿fibfac‿key35 = 0b10011110001101110111100110111001011ull , ellipsis‿fibfac‿key36 = 0b100111100011011101111001101110010111ull , ellipsis‿fibfac‿key37 = 0b1001111000110111011110011011100101111ull , ellipsis‿fibfac‿key38 = 0b10011110001101110111100110111001011111ull , ellipsis‿fibfac‿key39 = 0b100111100011011101111001101110010111111ull , ellipsis‿fibfac‿key40 = 0b1001111000110111011110011011100101111111ull , ellipsis‿fibfac‿key41 = 0b10011110001101110111100110111001011111111ull , ellipsis‿fibfac‿key42 = 0b100111100011011101111001101110010111111101ull , ellipsis‿fibfac‿key43 = 0b1001111000110111011110011011100101111111011ull , ellipsis‿fibfac‿key44 = 0b10011110001101110111100110111001011111110101ull , ellipsis‿fibfac‿key45 = 0b100111100011011101111001101110010111111101001ull , ellipsis‿fibfac‿key46 = 0b1001111000110111011110011011100101111111010011ull , ellipsis‿fibfac‿key47 = 0b10011110001101110111100110111001011111110100101ull , ellipsis‿fibfac‿key48 = 0b100111100011011101111001101110010111111101001011ull , ellipsis‿fibfac‿key49 = 0b1001111000110111011110011011100101111111010010101ull , ellipsis‿fibfac‿key50 = 0b10011110001101110111100110111001011111110100101001ull , ellipsis‿fibfac‿key51 = 0b100111100011011101111001101110010111111101001010011ull , ellipsis‿fibfac‿key52 = 0b1001111000110111011110011011100101111111010010100111ull , ellipsis‿fibfac‿key53 = 0b10011110001101110111100110111001011111110100101001111ull , ellipsis‿fibfac‿key54 = 0b100111100011011101111001101110010111111101001010011111ull , ellipsis‿fibfac‿key55 = 0b1001111000110111011110011011100101111111010010100111111ull , ellipsis‿fibfac‿key56 = 0b10011110001101110111100110111001011111110100101001111101ull , ellipsis‿fibfac‿key57 = 0b100111100011011101111001101110010111111101001010011111001ull , ellipsis‿fibfac‿key58 = 0b1001111000110111011110011011100101111111010010100111110001ull , ellipsis‿fibfac‿key59 = 0b10011110001101110111100110111001011111110100101001111100001ull , ellipsis‿fibfac‿key60 = 0b100111100011011101111001101110010111111101001010011111000001ull , ellipsis‿fibfac‿key61 = 0b1001111000110111011110011011100101111111010010100111110000011ull , ellipsis‿fibfac‿key62 = 0b10011110001101110111100110111001011111110100101001111100000101ull , ellipsis‿fibfac‿key63 = 0b100111100011011101111001101110010111111101001010011111000001011ull , ellipsis‿fibfac‿key64 = 0b1001111000110111011110011011100101111111010010100111110000010101ull } |
An enumeration type ellipsis‿fibfac with the underlying integer type ellipsis‿fibfac‿base . More... | |
Functions | |
char const * | ellipsis‿fibfac‿getname (size_t __LOC_ID_0_1) |
Return the name of the enumeration constant of type ellipsis‿fibfac at position n , if any. | |
Variables | |
char const *const *const | ellipsis‿fibfac‿names |
An array with the names of the constants of type ellipsis‿fibfac . | |
static char const *const | ellipsis‿fibfac‿namesbuf_intern [ellipsis‿fibfac‿max_intern] |
Fibonacci factors.
These are chosen to be close to the binary expansion of the golden ratio. It is rounded to the next odd integer to ensure that the number is invertible; namely every odd number is co-prime to a given power of 2. Such a choice then warrants that multiplication with this number is a bijection on the multiplication group and that the images of successive values are even spread in the domain.
Factors are provided for widths 3 to 64: hashing just 2¹ = 2
or 2² = 4
buckets makes not much sense, and generally we do not have numbers wider than 64 bit in the preprocessor.
#define ELLIPSIS_FIBFAC | ( | N | ) | _Generic((char(*)[N]){}, typeof(char(*)[3]): ellipsis‿fibfac‿key3,typeof(char(*)[4]): ellipsis‿fibfac‿key4,typeof(char(*)[5]): ellipsis‿fibfac‿key5,typeof(char(*)[6]): ellipsis‿fibfac‿key6,typeof(char(*)[7]): ellipsis‿fibfac‿key7,typeof(char(*)[8]): ellipsis‿fibfac‿key8,typeof(char(*)[9]): ellipsis‿fibfac‿key9,typeof(char(*)[10]): ellipsis‿fibfac‿key10,typeof(char(*)[11]): ellipsis‿fibfac‿key11,typeof(char(*)[12]): ellipsis‿fibfac‿key12,typeof(char(*)[13]): ellipsis‿fibfac‿key13,typeof(char(*)[14]): ellipsis‿fibfac‿key14,typeof(char(*)[15]): ellipsis‿fibfac‿key15,typeof(char(*)[16]): ellipsis‿fibfac‿key16,typeof(char(*)[17]): ellipsis‿fibfac‿key17,typeof(char(*)[18]): ellipsis‿fibfac‿key18,typeof(char(*)[19]): ellipsis‿fibfac‿key19,typeof(char(*)[20]): ellipsis‿fibfac‿key20,typeof(char(*)[21]): ellipsis‿fibfac‿key21,typeof(char(*)[22]): ellipsis‿fibfac‿key22,typeof(char(*)[23]): ellipsis‿fibfac‿key23,typeof(char(*)[24]): ellipsis‿fibfac‿key24,typeof(char(*)[25]): ellipsis‿fibfac‿key25,typeof(char(*)[26]): ellipsis‿fibfac‿key26,typeof(char(*)[27]): ellipsis‿fibfac‿key27,typeof(char(*)[28]): ellipsis‿fibfac‿key28,typeof(char(*)[29]): ellipsis‿fibfac‿key29,typeof(char(*)[30]): ellipsis‿fibfac‿key30,typeof(char(*)[31]): ellipsis‿fibfac‿key31,typeof(char(*)[32]): ellipsis‿fibfac‿key32,typeof(char(*)[33]): ellipsis‿fibfac‿key33,typeof(char(*)[34]): ellipsis‿fibfac‿key34,typeof(char(*)[35]): ellipsis‿fibfac‿key35,typeof(char(*)[36]): ellipsis‿fibfac‿key36,typeof(char(*)[37]): ellipsis‿fibfac‿key37,typeof(char(*)[38]): ellipsis‿fibfac‿key38,typeof(char(*)[39]): ellipsis‿fibfac‿key39,typeof(char(*)[40]): ellipsis‿fibfac‿key40,typeof(char(*)[41]): ellipsis‿fibfac‿key41,typeof(char(*)[42]): ellipsis‿fibfac‿key42,typeof(char(*)[43]): ellipsis‿fibfac‿key43,typeof(char(*)[44]): ellipsis‿fibfac‿key44,typeof(char(*)[45]): ellipsis‿fibfac‿key45,typeof(char(*)[46]): ellipsis‿fibfac‿key46,typeof(char(*)[47]): ellipsis‿fibfac‿key47,typeof(char(*)[48]): ellipsis‿fibfac‿key48,typeof(char(*)[49]): ellipsis‿fibfac‿key49,typeof(char(*)[50]): ellipsis‿fibfac‿key50,typeof(char(*)[51]): ellipsis‿fibfac‿key51,typeof(char(*)[52]): ellipsis‿fibfac‿key52,typeof(char(*)[53]): ellipsis‿fibfac‿key53,typeof(char(*)[54]): ellipsis‿fibfac‿key54,typeof(char(*)[55]): ellipsis‿fibfac‿key55,typeof(char(*)[56]): ellipsis‿fibfac‿key56,typeof(char(*)[57]): ellipsis‿fibfac‿key57,typeof(char(*)[58]): ellipsis‿fibfac‿key58,typeof(char(*)[59]): ellipsis‿fibfac‿key59,typeof(char(*)[60]): ellipsis‿fibfac‿key60,typeof(char(*)[61]): ellipsis‿fibfac‿key61,typeof(char(*)[62]): ellipsis‿fibfac‿key62,typeof(char(*)[63]): ellipsis‿fibfac‿key63,typeof(char(*)[64]): ellipsis‿fibfac‿key64) |
The Fibonacci factor for N
bits as an integer constant expression.
typedef size_t ellipsis‿fibfac‿base |
typedef enum ellipsis‿fibfac ellipsis‿fibfac |
An enumeration type ellipsis‿fibfac
with the underlying integer type ellipsis‿fibfac‿base
.
|
inline |
Return the name of the enumeration constant of type ellipsis‿fibfac
at position n
, if any.
Beware that this is not necessarily the value of the enumeration constant.
References ellipsis‿fibfac‿max_intern, and ellipsis‿fibfac‿names.
Referenced by ellipsis‿fibfac‿_Once‿init‿user().
|
extern |
An array with the names of the constants of type ellipsis‿fibfac
.
Referenced by ellipsis‿fibfac‿getname().
|
static |