Updated 4 April 2018
The calculation is based on the parameterisation in Cheng (2008) Ind. Eng. Chem. Res. 47 3285-3288, with a number of adjustments (see below), which are described in Volk and Kähler (2018) Experiments in Fluids 59 75. I'd recommend reading the latter paper first.
M1: Modified on 28 June 2016. Density calculation has been changed: equation 25 in Cheng's paper to compute the density of the mixture should use the glycerine fraction by VOLUME and not by mass. Thanks to Paul Debue for pointing this out.
M2: Modified on 12 July 2017. Andreas Volk pointed out that the density calculation can be made more accurate by (i) accounting for the volume contraction of the mixture; (ii) adjusting the fit for the density of pure glycerine as a function of temperature. In both cases the fit was chosen to match data from Gregory (table 3 and 7)
M3: Modified on 20 December 2017. Further refinements from Andreas Volk to density of pure water, and the temperature-dependence of the contraction of the mixture. Andreas has a publication on this: see here.
Two matlab functions are also available. One takes volume fraction of glycerine as input. The other (written by A.V.) takes the mass fraction as the input parameter.
A python version has now also been written by Matthew Partridge at Cranfield University. This does not yet include AV's latest tweaks (M3 above) - however the differences for most applications should be quite minor.