This repository contains a numerically stable implementation of the Squint algorithm from the paper
Second-Order Quantile Methods for Experts and Combinatorial Games
Koolen, Wouter M., and Tim van Erven
In Proceedings of the 28th Annual Conference on Learning Theory (COLT) 2015, 1155–75
- The implementation is in C++. It comes with a Makefile for compilation using GCC or Clang.
- The run.m example script works in both Matlab and Octave.
- The run_squint.py example script works in Python 3. It uses numpy and matplotlib. Compilation additionally requires swig and python3-dev.
- Get the source code by cloning this git repository
- For Matlab/Octave
- Run 'make octave' or 'make matlab'
- Fire up octave or matlab
- Execute 'run'. This will run Squint on stochastic IID data and graph the results.
- For Python
- Run 'make python'
- Execute 'python3 run_squint.py'. This will run Squint on stochastic IID data and graph the results.
How to run tests
The repository contains a battery of unit tests that check the implementation against more direct expressions (which are unstable in some regions of the parameter space).
- Run 'make test' to compile and execute the test executable.
- The reported precision should be around 15 digits for long double arithmetic.