Converts a vector-form distance vector to a square-form distance
matrix, and vice-versa.

Parameters:

X : ndarray

Either a condensed or redundant distance matrix.

force : str, optional

As with MATLAB(TM), if force is equal to ‘tovector’ or ‘tomatrix’,
the input will be treated as a distance matrix or distance vector
respectively.

checks : bool, optional

If checks is set to False, no checks will be made for matrix
symmetry nor zero diagonals. This is useful if it is known that
X-X.T1 is small and diag(X) is close to zero.
These values are ignored any way so they do not disrupt the
squareform transformation.

Returns:

Y : ndarray

If a condensed distance matrix is passed, a redundant one is
returned, or if a redundant one is passed, a condensed distance
matrix is returned.

v[{n choose 2}-{n-i choose 2} + (j-i-1)] is the distance
between points i and j. If X is non-square or asymmetric, an error
is returned.

X = squareform(v)

Given a d*(d-1)/2 sized v for some integer d>=2 encoding distances
as described, X=squareform(v) returns a d by d distance matrix X. The
X[i, j] and X[j, i] values are set to
v[{n choose 2}-{n-i choose 2} + (j-i-1)] and all
diagonal elements are zero.