Code for max-sliced Bures distance 
Functionality and demonstration and benchmarking scripts

Written for MATLAB
tested in version '9.5.0.944444 (R2018b)'

Scripts:
// The first 4 scripts show examples of zero-mean Gaussians in 2 and 1000 dimensions.
// Multiple trials are tested across different sample sizes and number of iterations.
cmd_demo_linear_2D.m
cmd_demo_linear_1kD.m

cmd_demo_linear_2D_monte.m
cmd_demo_linear_test_max_iter.m

// Reproduces the kernel example from Figure 1.
cmd_demo_kernel.m

// Reproduces the MNIST results in Figure 4. (Requires EMNIST)
// Please download from https://www.nist.gov/itl/products-and-services/emnist-dataset
cmd_demo_across_mnist.m


Functions:
// The first two functions compute the one-sided max-sliced Bures divergence
// using either the optimal solution along a path, where each evaluation requires 
// solving an eigenvalue problem, or ADAM with default parameters.
one_side_max_sliced_bures_path.m
one_side_max_bures_adam.m

// This function computes the max-sliced Wasserstein-2 distance with ADAM 
max_sliced_w2_adam.m

// This function computes the proposed kernel-based max-sliced approaches along with MMD
kernel_max_slice.m

Utilities:
// Computes a Gaussian kernel and finds kernel size as median distance 
gaussian_kernel.m
// Optimal transport problem in one-dimension by sorting
sortOT.m
