Two big changes: 1) all input arrays (X,x,w) have been generalized. Any C++ object that supports indexing [] can be used, including vector<vector<double>> and double**, for example. 2) BUGFIX: RMSD is now calculated correctly when allow_rescale==true. (Equivalently, when c≠1. Note: The optimal rotation and translation are not effected. They continue to be calculated correctly. However the estimate of the RMSD was incorrect. Now RMSD is reported correctly.) This bug was detected using more rigorous automated testing than I used in the past. Those tests are now included in "tests/test_superpose3d.cpp" and ".travis.yml". Tests for memory safety and code coverage have also been added.