// // This file is part of Eigen, a lightweight C++ template library
// for linear algebra.
//
// Copyright (C) 2012 Desire Nuentsa Wakam <desire.nuentsa_wakam@inria.fr>
//
// This Source Code Form is subject to the terms of the Mozilla
// Public License v. 2.0. If a copy of the MPL was not distributed
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
// This file is modified from the colamd/symamd library. The copyright is below
// The authors of the code itself are Stefan I. Larimore and Timothy A.
// Davis (davis@cise.ufl.edu), University of Florida. The algorithm was
// developed in collaboration with John Gilbert, Xerox PARC, and Esmond
// Ng, Oak Ridge National Laboratory.
//
// Date:
//
// September 8, 2003. Version 2.3.
//
// Acknowledgements:
//
// This work was supported by the National Science Foundation, under
// grants DMS-9504974 and DMS-9803599.
//
// Notice:
//
// Copyright (c) 1998-2003 by the University of Florida.
// All Rights Reserved.
//
// THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY
// EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
//
// Permission is hereby granted to use, copy, modify, and/or distribute
// this program, provided that the Copyright, this License, and the
// Availability of the original version is retained on all copies and made
// accessible to the end-user of any code or package that includes COLAMD
// or any modified version of COLAMD.
//
// Availability:
//
// The colamd/symamd library is available at
//
// http://www.suitesparse.com
#ifndef EIGEN_COLAMD_H
#define EIGEN_COLAMD_H
namespace internal {
/* Ensure that debugging is turned off: */
#ifndef COLAMD_NDEBUG
#define COLAMD_NDEBUG
#endif /* NDEBUG */
/* ========================================================================== */
/* === Knob and statistics definitions ====================================== */
/* ========================================================================== */
/* size of the knobs [ ] array. Only knobs [0..1] are currently used. */
#define COLAMD_KNOBS 20
/* number of output statistics. Only stats [0..6] are currently used. */
#define COLAMD_STATS 20
/* knobs [0] and stats [0]: dense row knob and output statistic. */
#define COLAMD_DENSE_ROW 0
/* knobs [1] and stats [1]: dense column knob and output statistic. */
#define COLAMD_DENSE_COL 1
/* stats [2]: memory defragmentation count output statistic */
#define COLAMD_DEFRAG_COUNT 2
/* stats [3]: colamd status: zero OK, > 0 warning or notice, < 0 error */
#define COLAMD_STATUS 3
/* stats [4..6]: error info, or info on jumbled columns */
#define COLAMD_INFO1 4
#define COLAMD_INFO2 5
#define COLAMD_INFO3 6
/* error codes returned in stats [3]: */
#define COLAMD_OK (0)
#define COLAMD_OK_BUT_JUMBLED (1)
#define COLAMD_ERROR_A_not_present (-1)
#define COLAMD_ERROR_p_not_present (-2)
#define COLAMD_ERROR_nrow_negative (-3)
#define COLAMD_ERROR_ncol_negative (-4)
#define COLAMD_ERROR_nnz_negative (-5)
#define COLAMD_ERROR_p0_nonzero (-6)
#define COLAMD_ERROR_A_too_small (-7)
#define COLAMD_ERROR_col_length_negative (-8)
#define COLAMD_ERROR_row_index_out_of_bounds (-9)
#define COLAMD_ERROR_out_of_memory (-10)
#define COLAMD_ERROR_internal_error (-999)
/* ========================================================================== */
/* === Definitions ========================================================== */
/* ========================================================================== */
#define ONES_COMPLEMENT(r) (-(r)-1)
/* -------------------------------------------------------------------------- */
#define COLAMD_EMPTY (-1)
/* Row and column status */
#define ALIVE (0)
#define DEAD (-1)
/* Column status */
#define DEAD_PRINCIPAL (-1)
#define DEAD_NON_PRINCIPAL (-2)
/* Macros for row and column status update and checking. */
#define ROW_IS_DEAD(r) ROW_IS_MARKED_DEAD (Row[r].shared2.mark)
#define ROW_IS_MARKED_DEAD(row_mark) (row_mark < ALIVE)
#define ROW_IS_ALIVE(r) (Row [r].shared2.mark >= ALIVE)
#define COL_IS_DEAD(c) (Col [c].start < ALIVE)
#define COL_IS_ALIVE(c) (Col [c].start >= ALIVE)
#define COL_IS_DEAD_PRINCIPAL(c) (Col [c].start == DEAD_PRINCIPAL)
#define KILL_ROW(r) { Row [r].shared2.mark = DEAD ; }
#define KILL_PRINCIPAL_COL(c) { Col [c].start = DEAD_PRINCIPAL ; }
#define KILL_NON_PRINCIPAL_COL(c) { Col [c].start = DEAD_NON_PRINCIPAL ; }
/* ========================================================================== */
/* === Colamd reporting mechanism =========================================== */
/* ========================================================================== */
// == Row and Column structures ==
template <typename Index>
struct colamd_col
{
Index start ; /* index for A of first row in this column, or DEAD */
/* if column is dead */
Index length ; /* number of rows in this column */
union
{
Index thickness ; /* number of original columns represented by this */
/* col, if the column is alive */
Index parent ; /* parent in parent tree super-column structure, if */
/* the column is dead */
} shared1 ;
union
{
Index score ; /* the score used to maintain heap, if col is alive */
Index order ; /* pivot ordering of this column, if col is dead */
} shared2 ;
union
{
Index headhash ; /* head of a hash bucket, if col is at the head of */
/* a degree list */
Index hash ; /* hash value, if col is not in a degree list */
Index prev ; /* previous column in degree list, if col is in a */
/* degree list (but not at the head of a degree list) */
} shared3 ;
union
{
Index degree_next ; /* next column, if col is in a degree list */
Index hash_next ; /* next column, if col is in a hash list */
} shared4 ;
};
template <typename Index>
struct Colamd_Row
{
Index start ; /* index for A of first col in this row */
Index length ; /* number of principal columns in this row */
union
{
Index degree ; /* number of principal & non-principal columns in row */
Index p ; /* used as a row pointer in init_rows_cols () */
} shared1 ;
union
{
Index mark ; /* for computing set differences and marking dead rows*/
Index first_column ;/* first column in row (used in garbage collection) */
} shared2 ;
};
/* ========================================================================== */
/* === Colamd recommended memory size ======================================= */
/* ========================================================================== */
/*
The recommended length Alen of the array A passed to colamd is given by
the COLAMD_RECOMMENDED (nnz, n_row, n_col) macro. It returns -1 if any
argument is negative. 2*nnz space is required for the row and column
indices of the matrix. colamd_c (n_col) + colamd_r (n_row) space is
required for the Col and Row arrays, respectively, which are internal to
colamd. An additional n_col space is the minimal amount of "elbow room",
and nnz/5 more space is recommended for run time efficiency.
This macro is not needed when using symamd.
Explicit typecast to Index added Sept. 23, 2002, COLAMD version 2.2, to avoid
gcc -pedantic warning messages.
*/
template <typename Index>
inline Index colamd_c(Index n_col)
{ return Index( ((n_col) + 1) * sizeof (colamd_col<Index>) / sizeof (Index) ) ; }
template <typename Index>
inline Index colamd_r(Index n_row)
{ return Index(((n_row) + 1) * sizeof (Colamd_Row<Index>) / sizeof (Index)); }
// Prototypes of non-user callable routines
template <typename Index>
static Index init_rows_cols (Index n_row, Index n_col, Colamd_Row<Index> Row [], colamd_col<Index> col [], Index A [], Index p [], Index stats[COLAMD_STATS] );
template <typename Index>
static void init_scoring (Index n_row, Index n_col, Colamd_Row<Index> Row [], colamd_col<Index> Col [], Index A
没有合适的资源?快使用搜索试试~ 我知道了~
win7下vs2010编译的g2o+eigen3库文件(ReleaseX64+DebugX64)
共629个文件
h:474个
lib:46个
dll:42个
需积分: 50 18 下载量 184 浏览量
2018-03-12
10:38:45
上传
评论
收藏 6.18MB RAR 举报
温馨提示
在Win7下,由VS2010编译的g2o+eigen3库文件,解压可直接使用(已亲测)
资源推荐
资源详情
资源评论
收起资源包目录
win7下vs2010编译的g2o+eigen3库文件(ReleaseX64+DebugX64) (629个子文件)
AdolcForward 4KB
AlignedVector3 5KB
ArpackSupport 905B
Array 304B
AutoDiff 1KB
BVH 5KB
Cholesky 775B
CholmodSupport 2KB
Core 13KB
Dense 122B
g2o_solver_pcg_d.dll 2.92MB
g2o_solver_dense_d.dll 2.7MB
g2o_solver_csparse_d.dll 2.6MB
g2o_core_d.dll 2.34MB
g2o_types_sba_d.dll 2.28MB
g2o_types_slam3d_d.dll 2.11MB
g2o_types_slam2d_d.dll 1.61MB
g2o_simulator_d.dll 1.52MB
g2o_types_sim3_d.dll 1.02MB
g2o_solver_slam2d_linear_d.dll 1.01MB
g2o_solver_eigen_d.dll 1012KB
g2o_types_sclam2d_d.dll 747KB
g2o_types_icp_d.dll 643KB
g2o_stuff_d.dll 612KB
g2o_solver_structure_only_d.dll 529KB
g2o_core.dll 446KB
g2o_types_slam3d.dll 305KB
g2o_types_data_d.dll 301KB
g2o_types_sba.dll 280KB
g2o_solver_csparse.dll 271KB
g2o_solver_pcg.dll 268KB
g2o_solver_dense.dll 247KB
g2o_types_slam2d.dll 238KB
g2o_cli_d.dll 211KB
g2o_stuff.dll 190KB
g2o_solver_eigen.dll 175KB
g2o_simulator.dll 172KB
g2o_csparse_extension_d.dll 132KB
g2o_solver_slam2d_linear.dll 118KB
g2o_ext_csparse_d.dll 103KB
g2o_types_sclam2d.dll 101KB
g2o_types_icp.dll 97KB
g2o_types_sim3.dll 92KB
g2o_ext_freeglut_minimal_d.dll 78KB
g2o_types_data.dll 74KB
g2o_cli.dll 54KB
g2o_ext_csparse.dll 49KB
g2o_opengl_helper_d.dll 47KB
g2o_ext_freeglut_minimal.dll 39KB
g2o_csparse_extension.dll 35KB
g2o_solver_structure_only.dll 31KB
g2o_opengl_helper.dll 13KB
Eigen 37B
Eigen2Support 3KB
Eigenvalues 1KB
g2o.exe 124KB
g2o_simulator3d.exe 69KB
g2o_simulator2d.exe 53KB
FFT 14KB
simulator_out.g2o 0B
Geometry 2KB
Eigen_Colamd.h 60KB
Transform.h 56KB
GeneralBlockPanelKernel.h 45KB
SparseMatrix.h 44KB
JacobiSVD.h 40KB
Functors.h 38KB
Memory.h 37KB
PlainObjectBase.h 35KB
BlockMethods.h 34KB
blas.h 33KB
SuperLUSupport.h 32KB
SkylineMatrix.h 30KB
TriangularMatrix.h 30KB
SelfAdjointEigenSolver.h 30KB
ArpackSelfAdjointEigenSolver.h 29KB
CwiseNullaryOp.h 29KB
Quaternion.h 29KB
SparseLU.h 28KB
FullPivLU.h 28KB
Transform.h 28KB
GeneralProduct.h 27KB
DenseCoeffsBase.h 27KB
VectorwiseOp.h 26KB
SparseBlock.h 26KB
SparseQR.h 26KB
AutoDiffScalar.h 25KB
optimizable_graph.h 25KB
Macros.h 25KB
PermutationMatrix.h 25KB
PacketMath.h 24KB
MatrixBase.h 24KB
Assign.h 23KB
PaStiXSupport.h 23KB
SimplicialCholesky.h 23KB
FullPivHouseholderQR.h 23KB
GeneralMatrixVector.h 23KB
MatrixLogarithm.h 22KB
MathFunctions.h 22KB
DenseBase.h 22KB
共 629 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
Lchen44
- 粉丝: 2
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功