No matter in what space dimension we are working, we will define candidates for nearest neighbors in two dimensions using a grid of evenly spaced boxes. With a grid of spacing , all neighbors of a vector closer than epsilon must be located in the adjacent boxes. But not all points in the adjacent boxes are neighbors, they may be up to away in two dimensions and arbitrarily far in higher dimensions. Neighbors search is thus a two stage process. First the box-assisted data base has to be filled and then for each point a list of neighbors can be requested. There are a few instances where it is advisable to abandon the fast neighbor search strategy. One example is the program noise that does nonlinear noise filtering in a data stream. (This program is no longer maintained as part of TISEAN). It is supposed to start filtering soon after the first points have been recorded. Thus the neighbor data base cannot be constructed in the beginning. Another exception is if quite short (<500 points, say), high dimensional data are processed. Then the overhead for the neighbor search should be avoided and instead an optimized straight O(N²) method be used, like it is done in c2naive.
For portability, all programs expect time series data in column format represented by ASCII numbers. The column to be processed can be specified on the command line. Although somewhat wasteful for storing data, ASCII is the least common divisor between the different ways most software can store data. All parameters can be set by adding options to the command, which, in many programs, just replace the default values. Obviously, relying on default settings is particularly dangerous in such a subtle field. Since almost all routines can read from standard input and write to standard output, programs can be part of pipelines. For example they can be called as filters from inside graphics software or other software tools which are able to execute shell commands. Also, data conversion or compression can be done ``on the fly'' this way. The reader here realizes that we are speaking of UNIX or LINUX platforms which seems to be the most appropriate environment. It is however expected that most of the programs will be ported to other environments in the near future.
For those readers familiar with the programs published in Ref. [2] we should mention that these form the basis for a number of those TISEAN programs written in FORTRAN. The C programs, even if they do similar things, are fairly independent implementations. All C programs now use dynamic allocation of storage, for example.