[Liblas-commits] ann: more autoconf fixes
liblas-commits at liblas.org
liblas-commits at liblas.org
Tue Jan 12 12:26:59 EST 2010
changeset e55e94b2dced in /Volumes/Data/www/liblas.org/ann
details: http://hg.liblas.organn?cmd=changeset;node=e55e94b2dced
summary: more autoconf fixes
diffstat:
include/ANN/ANN.h | 826 --------------------------------------------------
include/ANN/ANNperf.h | 223 -------------
include/ANN/ANNx.h | 167 ----------
include/Makefile.am | 8 +-
include/ann/ANN.h | 826 ++++++++++++++++++++++++++++++++++++++++++++++++++
include/ann/ANNperf.h | 223 +++++++++++++
include/ann/ANNx.h | 167 ++++++++++
src/ANN.cpp | 4 +-
8 files changed, 1222 insertions(+), 1222 deletions(-)
diffs (truncated from 2485 to 300 lines):
diff -r a7ec72901785 -r e55e94b2dced include/ANN/ANN.h
--- a/include/ANN/ANN.h Tue Jan 12 11:00:33 2010 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,826 +0,0 @@
-//----------------------------------------------------------------------
-// File: ANN.h
-// Programmer: Sunil Arya and David Mount
-// Last modified: 05/03/05 (Release 1.1)
-// Description: Basic include file for approximate nearest
-// neighbor searching.
-//----------------------------------------------------------------------
-// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
-// David Mount. All Rights Reserved.
-//
-// This software and related documentation is part of the Approximate
-// Nearest Neighbor Library (ANN). This software is provided under
-// the provisions of the Lesser GNU Public License (LGPL). See the
-// file ../ReadMe.txt for further information.
-//
-// The University of Maryland (U.M.) and the authors make no
-// representations about the suitability or fitness of this software for
-// any purpose. It is provided "as is" without express or implied
-// warranty.
-//----------------------------------------------------------------------
-// History:
-// Revision 0.1 03/04/98
-// Initial release
-// Revision 1.0 04/01/05
-// Added copyright and revision information
-// Added ANNcoordPrec for coordinate precision.
-// Added methods theDim, nPoints, maxPoints, thePoints to ANNpointSet.
-// Cleaned up C++ structure for modern compilers
-// Revision 1.1 05/03/05
-// Added fixed-radius k-NN searching
-//----------------------------------------------------------------------
-
-//----------------------------------------------------------------------
-// ANN - approximate nearest neighbor searching
-// ANN is a library for approximate nearest neighbor searching,
-// based on the use of standard and priority search in kd-trees
-// and balanced box-decomposition (bbd) trees. Here are some
-// references to the main algorithmic techniques used here:
-//
-// kd-trees:
-// Friedman, Bentley, and Finkel, ``An algorithm for finding
-// best matches in logarithmic expected time,'' ACM
-// Transactions on Mathematical Software, 3(3):209-226, 1977.
-//
-// Priority search in kd-trees:
-// Arya and Mount, ``Algorithms for fast vector quantization,''
-// Proc. of DCC '93: Data Compression Conference, eds. J. A.
-// Storer and M. Cohn, IEEE Press, 1993, 381-390.
-//
-// Approximate nearest neighbor search and bbd-trees:
-// Arya, Mount, Netanyahu, Silverman, and Wu, ``An optimal
-// algorithm for approximate nearest neighbor searching,''
-// 5th Ann. ACM-SIAM Symposium on Discrete Algorithms,
-// 1994, 573-582.
-//----------------------------------------------------------------------
-
-#ifndef ANN_H
-#define ANN_H
-
-#ifdef WIN32
- //----------------------------------------------------------------------
- // For Microsoft Visual C++, externally accessible symbols must be
- // explicitly indicated with DLL_API, which is somewhat like "extern."
- //
- // The following ifdef block is the standard way of creating macros
- // which make exporting from a DLL simpler. All files within this DLL
- // are compiled with the DLL_EXPORTS preprocessor symbol defined on the
- // command line. In contrast, projects that use (or import) the DLL
- // objects do not define the DLL_EXPORTS symbol. This way any other
- // project whose source files include this file see DLL_API functions as
- // being imported from a DLL, wheras this DLL sees symbols defined with
- // this macro as being exported.
- //----------------------------------------------------------------------
- #ifdef DLL_EXPORTS
- #define DLL_API __declspec(dllexport)
- #else
- #define DLL_API __declspec(dllimport)
- #endif
- //----------------------------------------------------------------------
- // DLL_API is ignored for all other systems
- //----------------------------------------------------------------------
-#else
- #define DLL_API
-#endif
-
-//----------------------------------------------------------------------
-// basic includes
-//----------------------------------------------------------------------
-
-#include <cmath> // math includes
-#include <iostream> // I/O streams
-
-//----------------------------------------------------------------------
-// Limits
-// There are a number of places where we use the maximum double value as
-// default initializers (and others may be used, depending on the
-// data/distance representation). These can usually be found in limits.h
-// (as LONG_MAX, INT_MAX) or in float.h (as DBL_MAX, FLT_MAX).
-//
-// Not all systems have these files. If you are using such a system,
-// you should set the preprocessor symbol ANN_NO_LIMITS_H when
-// compiling, and modify the statements below to generate the
-// appropriate value. For practical purposes, this does not need to be
-// the maximum double value. It is sufficient that it be at least as
-// large than the maximum squared distance between between any two
-// points.
-//----------------------------------------------------------------------
-#ifdef ANN_NO_LIMITS_H // limits.h unavailable
- #include <cvalues> // replacement for limits.h
- const double ANN_DBL_MAX = MAXDOUBLE; // insert maximum double
-#else
- #include <climits>
- #include <cfloat>
- const double ANN_DBL_MAX = DBL_MAX;
-#endif
-
-#define ANNversion "1.1.1" // ANN version and information
-#define ANNversionCmt ""
-#define ANNcopyright "David M. Mount and Sunil Arya"
-#define ANNlatestRev "Aug 4, 2006"
-
-//----------------------------------------------------------------------
-// ANNbool
-// This is a simple boolean type. Although ANSI C++ is supposed
-// to support the type bool, some compilers do not have it.
-//----------------------------------------------------------------------
-
-enum ANNbool {ANNfalse = 0, ANNtrue = 1}; // ANN boolean type (non ANSI C++)
-
-//----------------------------------------------------------------------
-// ANNcoord, ANNdist
-// ANNcoord and ANNdist are the types used for representing
-// point coordinates and distances. They can be modified by the
-// user, with some care. It is assumed that they are both numeric
-// types, and that ANNdist is generally of an equal or higher type
-// from ANNcoord. A variable of type ANNdist should be large
-// enough to store the sum of squared components of a variable
-// of type ANNcoord for the number of dimensions needed in the
-// application. For example, the following combinations are
-// legal:
-//
-// ANNcoord ANNdist
-// --------- -------------------------------
-// short short, int, long, float, double
-// int int, long, float, double
-// long long, float, double
-// float float, double
-// double double
-//
-// It is the user's responsibility to make sure that overflow does
-// not occur in distance calculation.
-//----------------------------------------------------------------------
-
-typedef double ANNcoord; // coordinate data type
-typedef double ANNdist; // distance data type
-
-//----------------------------------------------------------------------
-// ANNidx
-// ANNidx is a point index. When the data structure is built, the
-// points are given as an array. Nearest neighbor results are
-// returned as an integer index into this array. To make it
-// clearer when this is happening, we define the integer type
-// ANNidx. Indexing starts from 0.
-//
-// For fixed-radius near neighbor searching, it is possible that
-// there are not k nearest neighbors within the search radius. To
-// indicate this, the algorithm returns ANN_NULL_IDX as its result.
-// It should be distinguishable from any valid array index.
-//----------------------------------------------------------------------
-
-typedef int ANNidx; // point index
-const ANNidx ANN_NULL_IDX = -1; // a NULL point index
-
-//----------------------------------------------------------------------
-// Infinite distance:
-// The code assumes that there is an "infinite distance" which it
-// uses to initialize distances before performing nearest neighbor
-// searches. It should be as larger or larger than any legitimate
-// nearest neighbor distance.
-//
-// On most systems, these should be found in the standard include
-// file <limits.h> or possibly <float.h>. If you do not have these
-// file, some suggested values are listed below, assuming 64-bit
-// long, 32-bit int and 16-bit short.
-//
-// ANNdist ANN_DIST_INF Values (see <limits.h> or <float.h>)
-// ------- ------------ ------------------------------------
-// double DBL_MAX 1.79769313486231570e+308
-// float FLT_MAX 3.40282346638528860e+38
-// long LONG_MAX 0x7fffffffffffffff
-// int INT_MAX 0x7fffffff
-// short SHRT_MAX 0x7fff
-//----------------------------------------------------------------------
-
-const ANNdist ANN_DIST_INF = ANN_DBL_MAX;
-
-//----------------------------------------------------------------------
-// Significant digits for tree dumps:
-// When floating point coordinates are used, the routine that dumps
-// a tree needs to know roughly how many significant digits there
-// are in a ANNcoord, so it can output points to full precision.
-// This is defined to be ANNcoordPrec. On most systems these
-// values can be found in the standard include files <limits.h> or
-// <float.h>. For integer types, the value is essentially ignored.
-//
-// ANNcoord ANNcoordPrec Values (see <limits.h> or <float.h>)
-// -------- ------------ ------------------------------------
-// double DBL_DIG 15
-// float FLT_DIG 6
-// long doesn't matter 19
-// int doesn't matter 10
-// short doesn't matter 5
-//----------------------------------------------------------------------
-
-#ifdef DBL_DIG // number of sig. bits in ANNcoord
- const int ANNcoordPrec = DBL_DIG;
-#else
- const int ANNcoordPrec = 15; // default precision
-#endif
-
-//----------------------------------------------------------------------
-// Self match?
-// In some applications, the nearest neighbor of a point is not
-// allowed to be the point itself. This occurs, for example, when
-// computing all nearest neighbors in a set. By setting the
-// parameter ANN_ALLOW_SELF_MATCH to ANNfalse, the nearest neighbor
-// is the closest point whose distance from the query point is
-// strictly positive.
-//----------------------------------------------------------------------
-
-const ANNbool ANN_ALLOW_SELF_MATCH = ANNtrue;
-
-//----------------------------------------------------------------------
-// Norms and metrics:
-// ANN supports any Minkowski norm for defining distance. In
-// particular, for any p >= 1, the L_p Minkowski norm defines the
-// length of a d-vector (v0, v1, ..., v(d-1)) to be
-//
-// (|v0|^p + |v1|^p + ... + |v(d-1)|^p)^(1/p),
-//
-// (where ^ denotes exponentiation, and |.| denotes absolute
-// value). The distance between two points is defined to be the
-// norm of the vector joining them. Some common distance metrics
-// include
-//
-// Euclidean metric p = 2
-// Manhattan metric p = 1
-// Max metric p = infinity
-//
-// In the case of the max metric, the norm is computed by taking
-// the maxima of the absolute values of the components. ANN is
-// highly "coordinate-based" and does not support general distances
-// functions (e.g. those obeying just the triangle inequality). It
-// also does not support distance functions based on
-// inner-products.
-//
-// For the purpose of computing nearest neighbors, it is not
-// necessary to compute the final power (1/p). Thus the only
-// component that is used by the program is |v(i)|^p.
-//
-// ANN parameterizes the distance computation through the following
-// macros. (Macros are used rather than procedures for
-// efficiency.) Recall that the distance between two points is
-// given by the length of the vector joining them, and the length
-// or norm of a vector v is given by formula:
-//
-// |v| = ROOT(POW(v0) # POW(v1) # ... # POW(v(d-1)))
-//
-// where ROOT, POW are unary functions and # is an associative and
-// commutative binary operator mapping the following types:
-//
-// ** POW: ANNcoord --> ANNdist
-// ** #: ANNdist x ANNdist --> ANNdist
-// ** ROOT: ANNdist (>0) --> double
-//
-// For early termination in distance calculation (partial distance
-// calculation) we assume that POW and # together are monotonically
-// increasing on sequences of arguments, meaning that for all
-// v0..vk and y:
-//
-// POW(v0) #...# POW(vk) <= (POW(v0) #...# POW(vk)) # POW(y).
-//
-// Incremental Distance Calculation:
-// The program uses an optimized method of computing distances for
-// kd-trees and bd-trees, called incremental distance calculation.
-// It is used when distances are to be updated when only a single
-// coordinate of a point has been changed. In order to use this,
-// we assume that there is an incremental update function DIFF(x,y)
-// for #, such that if:
-//
-// s = x0 # ... # xi # ... # xk
-//
-// then if s' is equal to s but with xi replaced by y, that is,
-//
-// s' = x0 # ... # y # ... # xk
-//
More information about the Liblas-commits
mailing list