Prev Next base_hash

@(@\newcommand{\W}[1]{ \; #1 \; } \newcommand{\R}[1]{ {\rm #1} } \newcommand{\B}[1]{ {\bf #1} } \newcommand{\D}[2]{ \frac{\partial #1}{\partial #2} } \newcommand{\DD}[3]{ \frac{\partial^2 #1}{\partial #2 \partial #3} } \newcommand{\Dpow}[2]{ \frac{\partial^{#1}}{\partial {#2}^{#1}} } \newcommand{\dpow}[2]{ \frac{ {\rm d}^{#1}}{{\rm d}\, {#2}^{#1}} }@)@
Base Type Requirements for Hash Coding Values

code = hash_code(x)

CppAD uses a table of Base type values when recording AD<Base> operations. A hashing function is used to reduce number of values stored in this table; for example, it is not necessary to store the value 3.0 every time it is used as a parameter .

The default hashing function works with the set of bits that correspond to a Base value. In most cases this works well, but in some cases it does not. For example, in the base_adolc.hpp case, an adouble value can have fields that are not initialized and valgrind reported an error when these are used to form the hash code.

This argument has prototype
It is the value we are forming a hash code for.

The return value code has prototype
     unsigned short 
It is the hash code corresponding to x . This intention is the commonly used values will have different hash codes. The hash code must satisfy
so that it is a valid index into the hash code table.

If you define this function, it should declare it to be inline, so that you do not get multiple definitions from different compilation units.

See the base_alloc hash_code and the adouble hash_code .
Input File: cppad/core/base_hash.hpp