the "Diaphony" (dispersion)
of an M-dimensional Pointset

DIAPHONY is a C++ program which computes the "diaphony" of an M-dimensional pointset.

The "diaphony" of an M-dimensional pointset is a numeric measure of the uniformity of the dispersion of the points throughout the unit hypercube.

Regarded as a random variable itself, the diaphony of a set of N points has an expected value of 1/sqrt(N).

For the Halton datasets in 2D, 7D and 16D, here is the table of the number of points versus the diaphony:
Diaphony(M,N)M=2DM=7DM=16D 1/Sqrt(N)
N=100.2460.316 0.3160.316
N=1000.0430.099 0.0990.100
N=10000.0060.031 0.0310.031
N=100000.0010.009 0.0090.010


The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.


DIAPHONY is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version.

Related Data and Programs:

STAR_DISCREPANCY, a C++ program which reads a TABLE file of points (presumed to lie in the unit hypercube) and computes bounds on the star discrepancy, a measure of dispersion, by Eric Thiemard.

TABLE_LATINIZE, a C++ program which reads a file of points and creates a "latinized" version by adjusting the data.

TABLE_QUALITY, a C++ program which reads a file of points and computes the quality of dispersion.


  1. Peter Heelekalek,
    On Correlation Analysis of Pseudorandom Numbers, in Monte Carlo and Quasi-Monte Carlo Methods 1996,
    edited by Harald Niederreiter, Peter Hellekalek, Gerhard Larcher, and Peter Zinterhof,
    Volume 127 of Lecture Notes in Statistics,
    Springer Verlag, 1997, pages 251-265.
  2. Peter Heelekalek, Harald Niederreiter,
    The Weighted Spectral Test: Diaphony,
    ACM Transactions on Modeling and Computer Simulation,
    Volume 8, Number 1, January 1998, pages 43-60.
  3. Peter Heelekalek, Hannes Leeb,
    Dyadic Diaphony,
    Acta Arithmetica,
    Volume 80, Number 2, 1997, pages 187-196.

Source Code:

List of Routines:

You can go up one level to the C++ source codes.

Last revised on 25 January 2012.