本文整理汇总了C++中cppad::vector::data方法的典型用法代码示例。如果您正苦于以下问题:C++ vector::data方法的具体用法?C++ vector::data怎么用?C++ vector::data使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类cppad::vector
的用法示例。
在下文中一共展示了vector::data方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: put_check_for_nan
void put_check_for_nan(const CppAD::vector<Base>& vec, std::string& file_name)
{
size_t char_size = sizeof(Base) * vec.size();
const char* char_ptr = reinterpret_cast<const char*>( vec.data() );
# if CPPAD_HAS_MKSTEMP
char pattern[] = "/tmp/fileXXXXXX";
int fd = mkstemp(pattern);
file_name = pattern;
write(fd, char_ptr, char_size);
close(fd);
# else
# if CPPAD_HAS_TMPNAM_S
std::vector<char> name(L_tmpnam_s);
if( tmpnam_s( name.data(), L_tmpnam_s ) != 0 )
{ CPPAD_ASSERT_KNOWN(
false,
"Cannot create a temporary file name"
);
}
file_name = name.data();
# else
file_name = tmpnam( CPPAD_NULL );
# endif
std::fstream file_out(file_name.c_str(), std::ios::out|std::ios::binary );
file_out.write(char_ptr, char_size);
file_out.close();
# endif
return;
}
示例2: cppad_colpack_symmetric
// The following routine is not yet used or tested.
void cppad_colpack_symmetric(
CppAD::vector<size_t>& color ,
size_t n ,
const CppAD::vector<unsigned int*>& adolc_pattern )
{ size_t i, k;
CPPAD_ASSERT_UNKNOWN( adolc_pattern.size() == n );
// Use adolc sparsity pattern to create corresponding bipartite graph
ColPack::GraphColoringInterface graph(
SRC_MEM_ADOLC,
adolc_pattern.data(),
n
);
// Color the graph with the speciied ordering
// graph.Coloring("SMALLEST_LAST", "STAR") is slower in adolc testing
graph.Coloring("SMALLEST_LAST", "ACYCLIC_FOR_INDIRECT_RECOVERY");
// Use coloring information to create seed matrix
int n_seed_row;
int n_seed_col;
double** seed_matrix = graph.GetSeedMatrix(&n_seed_row, &n_seed_col);
CPPAD_ASSERT_UNKNOWN( size_t(n_seed_col) == n );
// now return coloring in format required by CppAD
for(i = 0; i < n; i++)
color[i] = n;
for(k = 0; k < size_t(n_seed_row); k++)
{ for(i = 0; i < n; i++)
{ if( seed_matrix[k][i] != 0.0 )
{ CPPAD_ASSERT_UNKNOWN( color[i] == n );
color[i] = k;
}
}
}
# ifndef NDEBUG
for(i = 0; i < n; i++)
CPPAD_ASSERT_UNKNOWN(color[i] < n || adolc_pattern[i][0] == 0);
// The coloring above will probably fail this test.
// Check that no rows with the same color have overlapping entries:
CppAD::vector<bool> found(n);
for(k = 0; k < size_t(n_seed_row); k++)
{ size_t j, ell;
for(j = 0; j < n; j++)
found[j] = false;
for(i = 0; i < n; i++) if( color[i] == k )
{ for(ell = 0; ell < adolc_pattern[i][0]; ell++)
{ j = adolc_pattern[i][1 + ell];
CPPAD_ASSERT_UNKNOWN( ! found[j] );
found[j] = true;
}
}
}
# endif
return;
}
示例3: get_check_for_nan
void get_check_for_nan(CppAD::vector<Base>& vec, const std::string& file_name)
{ //
size_t n = vec.size();
size_t char_size = sizeof(Base) * n;
char* char_ptr = reinterpret_cast<char*>( vec.data() );
//
std::fstream file_in(file_name.c_str(), std::ios::in|std::ios::binary );
file_in.read(char_ptr, char_size);
//
return;
}
示例4: cppad_colpack_general
// ----------------------------------------------------------------------
void cppad_colpack_general(
CppAD::vector<size_t>& color ,
size_t m ,
size_t n ,
const CppAD::vector<unsigned int*>& adolc_pattern )
{ size_t i, k;
CPPAD_ASSERT_UNKNOWN( adolc_pattern.size() == m );
CPPAD_ASSERT_UNKNOWN( color.size() == m );
// Use adolc sparsity pattern to create corresponding bipartite graph
ColPack::BipartiteGraphPartialColoringInterface graph(
SRC_MEM_ADOLC,
adolc_pattern.data(),
m,
n
);
// row ordered Partial-Distance-Two-Coloring of the bipartite graph
graph.PartialDistanceTwoColoring(
"SMALLEST_LAST", "ROW_PARTIAL_DISTANCE_TWO"
);
// Use coloring information to create seed matrix
int n_seed_row;
int n_seed_col;
double** seed_matrix = graph.GetSeedMatrix(&n_seed_row, &n_seed_col);
CPPAD_ASSERT_UNKNOWN( size_t(n_seed_col) == m );
// now return coloring in format required by CppAD
for(i = 0; i < m; i++)
color[i] = m;
for(k = 0; k < size_t(n_seed_row); k++)
{ for(i = 0; i < m; i++)
{ if( seed_matrix[k][i] != 0.0 )
{ // check that no row appears twice in the coloring
CPPAD_ASSERT_UNKNOWN( color[i] == m );
color[i] = k;
}
}
}
# ifndef NDEBUG
// check that all non-zero rows appear in the coloring
for(i = 0; i < m; i++)
CPPAD_ASSERT_UNKNOWN(color[i] < m || adolc_pattern[i][0] == 0);
// check that no rows with the same color have overlapping entries
CppAD::vector<bool> found(n);
for(k = 0; k < size_t(n_seed_row); k++)
{ size_t j, ell;
for(j = 0; j < n; j++)
found[j] = false;
for(i = 0; i < m; i++) if( color[i] == k )
{ for(ell = 0; ell < adolc_pattern[i][0]; ell++)
{ j = adolc_pattern[i][1 + ell];
CPPAD_ASSERT_UNKNOWN( ! found[j] );
found[j] = true;
}
}
}
# endif
return;
}
示例5: cppad_colpack_symmetric
/*!
Determine which rows of a symmetrix sparse matrix can be computed together.
\param color
is a vector with color.size() == m.
For i = 0 , ... , m-1, color[i] is the color for the corresponding row
of the matrix. We say that a sparsity pattern entry (i, j) is valid if
for all i1, such that i1 != i and color[i1]==color[i],
and all j1, such that (i1, j1) is in sparsity pattern, j1 != j.
The coloring is chosen so that for all (i, j) in the sparsity pattern;
either (i, j) or (j, i) is valid (possibly both).
\param m
is the number of rows (and columns) in the matrix.
\param adolc_pattern
is a vector with adolc_pattern.size() == m.
For i = 0 , ... , m-1, and for k = 1, ... ,adolc_pattern[i][0],
the entry with index (i, adolc_pattern[i][k]) is
in the sparsity pattern for the symmetric matrix.
*/
void cppad_colpack_symmetric(
CppAD::vector<size_t>& color ,
size_t m ,
const CppAD::vector<unsigned int*>& adolc_pattern )
{ size_t i;
CPPAD_ASSERT_UNKNOWN( adolc_pattern.size() == m );
CPPAD_ASSERT_UNKNOWN( color.size() == m );
// Use adolc sparsity pattern to create corresponding bipartite graph
ColPack::GraphColoringInterface graph(
SRC_MEM_ADOLC,
adolc_pattern.data(),
m
);
// Use STAR coloring because it has a direct recovery scheme; i.e.,
// not necessary to solve equations to extract values.
graph.Coloring("SMALLEST_LAST", "STAR");
// Use coloring information to create seed matrix
int n_seed_row;
int n_seed_col;
double** seed_matrix = graph.GetSeedMatrix(&n_seed_row, &n_seed_col);
CPPAD_ASSERT_UNKNOWN( size_t(n_seed_row) == m );
// now return coloring for each row in format required by CppAD
for(i = 0; i < m; i++)
color[i] = m;
for(i = 0; i < m; i++)
{ for(size_t k = 0; k < size_t(n_seed_col); k++)
{ if( seed_matrix[i][k] != 0.0 )
{ CPPAD_ASSERT_UNKNOWN( color[i] == m );
color[i] = k;
}
}
}
# ifndef NDEBUG
// check that every entry in the symetric matrix can be direclty recovered
size_t i1, i2, j1, j2, k1, k2, nz1, nz2;
for(i1 = 0; i1 < m; i1++)
{ nz1 = size_t(adolc_pattern[i1][0]);
for(k1 = 1; k1 <= nz1; k1++)
{ j1 = adolc_pattern[i1][k1];
// check of a forward on color[i1] followed by a reverse
// can recover entry (i1, j1)
bool color_i1_ok = true;
for(i2 = 0; i2 < m; i2++) if( i1 != i2 && color[i1] == color[i2] )
{ nz2 = adolc_pattern[i2][0];
for(k2 = 1; k2 <= nz2; k2++)
{ j2 = adolc_pattern[i2][k2];
color_i1_ok &= (j1 != j2);
}
}
// check of a forward on color[j1] followed by a reverse
// can recover entry (j1, i1)
bool color_j1_ok = true;
for(j2 = 0; j2 < m; j2++) if( j1 != j2 && color[j1] == color[j2] )
{ nz2 = adolc_pattern[j2][0];
for(k2 = 1; k2 <= nz2; k2++)
{ i2 = adolc_pattern[j2][k2];
color_j1_ok &= (i1 != i2);
}
}
CPPAD_ASSERT_UNKNOWN( color_i1_ok || color_j1_ok );
}
}
# endif
return;
}
示例6: cppad_colpack_general
// ----------------------------------------------------------------------
CPPAD_LIB_EXPORT void cppad_colpack_general(
CppAD::vector<size_t>& color ,
size_t m ,
size_t n ,
const CppAD::vector<unsigned int*>& adolc_pattern )
{ size_t i, k;
CPPAD_ASSERT_UNKNOWN( adolc_pattern.size() == m );
CPPAD_ASSERT_UNKNOWN( color.size() == m );
// Use adolc sparsity pattern to create corresponding bipartite graph
ColPack::BipartiteGraphPartialColoringInterface graph(
SRC_MEM_ADOLC,
adolc_pattern.data(),
m,
n
);
// row ordered Partial-Distance-Two-Coloring of the bipartite graph
graph.PartialDistanceTwoColoring(
"SMALLEST_LAST", "ROW_PARTIAL_DISTANCE_TWO"
);
// Use coloring information to create seed matrix
int n_seed_row;
int n_seed_col;
double** seed_matrix = graph.GetSeedMatrix(&n_seed_row, &n_seed_col);
CPPAD_ASSERT_UNKNOWN( size_t(n_seed_col) == m );
// now return coloring in format required by CppAD
for(i = 0; i < m; i++)
color[i] = m;
for(k = 0; k < size_t(n_seed_row); k++)
{ for(i = 0; i < m; i++)
{ if( seed_matrix[k][i] != 0.0 )
{ // check that entries in the seed matrix are zero or one
CPPAD_ASSERT_UNKNOWN( seed_matrix[k][i] == 1.0 );
// check that no row appears twice in the coloring
CPPAD_ASSERT_UNKNOWN( color[i] == m );
// only need include rows with non-zero entries
if( adolc_pattern[i][0] != 0 )
{ // set color for this row
color[i] = k;
}
}
}
}
# ifndef NDEBUG
// check non-zero versus color for each row
for(i = 0; i < m; i++)
{
// if there is a color for row i, check that it has non-zero entries
if(color[i] < m )
CPPAD_ASSERT_UNKNOWN( adolc_pattern[i][0] != 0 );
// if there is no color for row i, check that it is empty
if( color[i] == m )
CPPAD_ASSERT_UNKNOWN( adolc_pattern[i][0] == 0 );
}
// check that no rows with the same color have non-zero entries
// with the same column index
CppAD::vector<bool> found(n);
for(k = 0; k < size_t(n_seed_row); k++)
{ // k is the color index
// found: column already has a non-zero entries for this color
for(size_t j = 0; j < n; j++)
found[j] = false;
// for each row with color k
for(i = 0; i < m; i++) if( color[i] == k )
{ // for each non-zero entry in this row
for(size_t ell = 0; ell < adolc_pattern[i][0]; ell++)
{ // column index for this entry
size_t j = adolc_pattern[i][1 + ell];
// check that this is the first non-zero in this column
CPPAD_ASSERT_UNKNOWN( ! found[j] );
// found a non-zero in this column
found[j] = true;
}
}
}
# endif
return;
}