diff --git a/.travis.yml b/.travis.yml
index b86634a232ec6920def2b6be818ad7b1b8020c2b..4f344159d14ac33676b9f2bd3eef67b3c3df6b2e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -30,11 +30,6 @@ matrix:
     dist: trusty
     sudo: required
     env: PLUMED_CC=gcc   PLUMED_CXX=g++     PLUMED_CXXFLAGS=-O3 LAPACK=yes
-# then I try serial compiler on UBUNTU precise
-  - os: linux
-    dist: precise
-    sudo: required
-    env: PLUMED_CC=gcc   PLUMED_CXX=g++
 # test using external blas with internal lapack
   - os: linux
     dist: trusty
@@ -85,7 +80,7 @@ install:
 # I use 1.71 since 1.72 seems to report a lot of false positive
   - if test "$CPPCHECK" == yes ; then  ./.travis/install.cppcheck $CPPCHECK_VERSION ; fi
 # for plumedcheck I need latest gawk
-  - if test "$CPPCHECK" == yes ; then  ./.travis/install.gawk ; fi
+  - if test "$CPPCHECK" == yes ; then  ./.travis/install.gawk 4.1.4 ; fi
 # installation of these packages takes a lot of time
 # we do it only when needed
   - if test "$PLUMED_CXX" == "mpic++" -a "$TRAVIS_OS_NAME" == "linux" ; then sudo apt-get install -y libopenmpi-dev openmpi-bin ; fi
diff --git a/.travis/install.cppcheck b/.travis/install.cppcheck
index 25543080f983183abe83aa534786eea78af63679..b00de738de4a5682e13cb1dc4c9e447a28d2077e 100755
--- a/.travis/install.cppcheck
+++ b/.travis/install.cppcheck
@@ -3,6 +3,7 @@
 set -e
 set -x
 
+cd "$(mktemp -d)"
 
 git clone https://github.com/danmar/cppcheck.git
 cd cppcheck
@@ -15,12 +16,9 @@ else
   version=$(git tag | tail -n 1)
 fi
 
-
 git checkout $version
 make -j 4 install CFGDIR="$HOME/opt/share/cppcheck/" CXXFLAGS="-O2 -march=native -mtune=native -Wunreachable-code" PREFIX="$HOME/opt"
 cd ../
 
 cppcheck --version
 
-
-
diff --git a/.travis/install.doxygen b/.travis/install.doxygen
index 7a425f33da380f8acd1753b03fd8c83794d3e4a4..1f020a22e0a5d7e0aa9b17b68fac69811c4642e1 100755
--- a/.travis/install.doxygen
+++ b/.travis/install.doxygen
@@ -3,6 +3,8 @@
 set -e
 set -x
 
+cd "$(mktemp -d)"
+
 git clone https://github.com/doxygen/doxygen.git
 
 cd doxygen
diff --git a/.travis/install.gawk b/.travis/install.gawk
index a0a66370e1e15898f13584906b7848782649cd02..d7fdf6edf2ff42d8ce8ab37c6564d9a8e0064d45 100755
--- a/.travis/install.gawk
+++ b/.travis/install.gawk
@@ -3,12 +3,25 @@
 set -e
 set -x
 
-echo "installing latest gawk"
-wget http://git.savannah.gnu.org/cgit/gawk.git/snapshot/gawk-4.1.4.tar.gz
-tar xzf gawk-4.1.4.tar.gz
-cd gawk-4.1.4
+cd "$(mktemp -d)"
+
+version=4.1.4
+
+if [ -n "$1" ] ; then
+  version=$1
+fi
+
+echo "installing gawk $version"
+
+wget http://git.savannah.gnu.org/cgit/gawk.git/snapshot/gawk-$version.tar.gz
+
+tar xzf gawk-$version.tar.gz
+
+cd gawk-$version
+
 ./configure --prefix="$HOME/opt"
+
 make -j 4
+
 make install
-cd ../
 
diff --git a/.travis/install.xdrfile b/.travis/install.xdrfile
index 96fa78f40cbb085d90c908609fef081c615241c0..296a8eaf3d1bb363dd05987c077b16d2af7f36ee 100755
--- a/.travis/install.xdrfile
+++ b/.travis/install.xdrfile
@@ -3,16 +3,25 @@
 set -e
 set -x
 
+cd "$(mktemp -d)"
+
 echo "installing xdrfile library"
 # wget ftp://ftp.gromacs.org/pub/contrib/xdrfile-1.1.4.tar.gz
 # xdrfile was removed from gromacs ftp
 # as a workaround I added a copy to people.sissa.it/~bussi/plumed
 # this complies with its license
+
 wget people.sissa.it/~bussi/plumed/xdrfile-1.1.4.tar.gz
+
 tar xzf xdrfile-1.1.4.tar.gz
+
 cd xdrfile-1.1.4
+
 ./configure --enable-shared --prefix="$HOME/opt"
+
 make
+
 make install
+
 cd ../
 
diff --git a/CHANGES/v2.4.txt b/CHANGES/v2.4.txt
index da8969083fc5c02de5c2c5ef1a645e0e3bb87b36..c7c15e866cd6b4286a779f11071c1b2d854eb08d 100644
--- a/CHANGES/v2.4.txt
+++ b/CHANGES/v2.4.txt
@@ -5,6 +5,12 @@
 This page contains changes that will end up in 2.4
 
 Changes from version 2.3 which are relevant for users:
+- Changes leading to incompatible behavior:
+  - A c++11 compliant compiler is required (see \issue{212}). This should mean:
+    - gcc 4.8
+    - clang 3.3
+    - intel 15
+- Other changes:
   - \ref PBMETAD : multiple walkers using files (thanks to Marco De La Pierre).
   - \ref PBMETAD : adaptive gaussians
   - \ref PBMETAD : default names for GRID and FILE (usefull with many collective variables) 
@@ -15,4 +21,5 @@ Changes from version 2.3 which are relevant for developers:
     PLUMED totally exception safe (there are still many non-safe pointers around),
     this made it possible to add a regtest that actually tests erroneous cmd strings
     and erroneous inputs.
+  - Due to the required c++11 support, travis-ci test on Ubuntu Precise has been removed.
 */
diff --git a/README b/README
index 341cc3fd083084d37d79a92f2a8233bc63250ec8..55e6b5eba3a01ebc2f3b6e11dd6c17966d4b688f 100644
--- a/README
+++ b/README
@@ -23,7 +23,7 @@ http://www.plumed.org/documentation
 
 Needed software:
 * GNU make
-* c/c++ compiler
+* c/c++ compiler (c++11 support is required as of version 2.4).
 * a modern version of the "patch"
 * support for POSIX library dirent.h
 * xxd (present in most unix distributions)
diff --git a/configure b/configure
index eda363efcf5554e750586b2f6633b7dae06d89af..0b4f7aef76a1a233a818fd471bc1f442d76f492b 100755
--- a/configure
+++ b/configure
@@ -4443,9 +4443,9 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 
   save_CXXFLAGS="$CXXFLAGS"
-  CXXFLAGS="$CXXFLAGS -ansi"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -ansi" >&5
-$as_echo_n "checking whether $CXX accepts -ansi... " >&6; }
+  CXXFLAGS="$CXXFLAGS -std=c++11"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -std=c++11" >&5
+$as_echo_n "checking whether $CXX accepts -std=c++11... " >&6; }
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -5056,11 +5056,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports explicit" >&5
-$as_echo_n "checking whether $CXX supports explicit... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX declares c++11 support" >&5
+$as_echo_n "checking whether $CXX declares c++11 support... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
- class A{explicit A(){}};
+
+#if __cplusplus <= 199711L
+this_compiler_does_not_support_cxx11
+#endif
+
 int
 main ()
 {
@@ -5075,13 +5079,14 @@ $as_echo "yes" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; } ;
-   $as_echo "#define explicit /**/" >>confdefs.h
-
+   as_fn_error $? "C++11 support is required" "$LINENO" 5
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 
 
+
+
 if test "$dependency_tracking" = true
 then
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX can generate dependency file with -MM -MF" >&5
diff --git a/configure.ac b/configure.ac
index b9ecf5beca7dcd5c71370523c3220f583dc00891..be80486cdf7ff2a14bf00375e621c8396ba4cbf8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -252,7 +252,7 @@ if test $basic_warnings == true
 then
   PLUMED_CHECK_CXXFLAG([-Wall])
   PLUMED_CHECK_CXXFLAG([-pedantic])
-  PLUMED_CHECK_CXXFLAG([-ansi])
+  PLUMED_CHECK_CXXFLAG([-std=c++11])
 fi
 
 if test $debug == true
@@ -282,11 +282,17 @@ then
   PLUMED_CHECK_CXXFLAG([-Wold-style-cast])
 fi
 
-AC_MSG_CHECKING([whether $CXX supports explicit])
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ class A{explicit A(){}};])],
+AC_MSG_CHECKING([whether $CXX declares c++11 support])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
+#if __cplusplus <= 199711L
+this_compiler_does_not_support_cxx11
+#endif
+])],
   [AC_MSG_RESULT([yes])],
   [AC_MSG_RESULT([no]) ;
-   AC_DEFINE([explicit],[])])
+   AC_MSG_ERROR([C++11 support is required])])
+
+
 
 AC_SUBST(disable_dependency_tracking)
 
diff --git a/developer-doc/HowToContributeToPlumed.txt b/developer-doc/HowToContributeToPlumed.txt
index 8f148b6e1778be6841edf7975d5f1290576288bd..ed259b6145d0a4f2e80ff538b8f9bcc1b0948621 100644
--- a/developer-doc/HowToContributeToPlumed.txt
+++ b/developer-doc/HowToContributeToPlumed.txt
@@ -151,7 +151,8 @@ libraries so as to make compilation straightforward for users who are using/not
 on how to add complilation options on this page: \ref UsingExternalLibs.  N.B. you should only need to modify the configure
 scripts if you are using modules.  Flags for activating your module at configure time will be generated automatically.
 - We ask you not to include C++ features that are too new and not supported by the vast majority of compilers.
-As of PLUMED v2.3, we are not using any C++11 feature. This might change in the future as compilers are improved.
+Until PLUMED v2.3, we were not using any C++11 feature. Since PLUMED v2.4, a C++11-compliant compiler is explicitly
+requested and so you can use C++11 features.
 
 \subsection ctesting Writing regression tests 
 
diff --git a/regtest/basic/rt-make-mw/main.cpp b/regtest/basic/rt-make-mw/main.cpp
index 6f4e4c8ff0d9e53baa23f9180a4b16e39dec74a6..fc435d19f06ac888c9418095f77c80787a5a8e9a 100644
--- a/regtest/basic/rt-make-mw/main.cpp
+++ b/regtest/basic/rt-make-mw/main.cpp
@@ -4,7 +4,7 @@
 
 using namespace PLMD;
 
-void go(Plumed* p,int natoms,unsigned iw,unsigned is){
+void go(Plumed& p,int natoms,unsigned iw,unsigned is){
   std::vector<double> positions(3*natoms,0.0);
   for(unsigned i=0;i<natoms;i++) positions[i]=i+iw+is;
   std::vector<double> masses(natoms,1.0);
@@ -12,38 +12,41 @@ void go(Plumed* p,int natoms,unsigned iw,unsigned is){
   std::vector<double> box(9,0.0);
   std::vector<double> virial(9,0.0);
 
-  p->cmd("setStep",&is);
-  p->cmd("setPositions",&positions[0]);
-  p->cmd("setBox",&box[0]);
-  p->cmd("setForces",&forces[0]);
-  p->cmd("setVirial",&virial[0]);
-  p->cmd("setMasses",&masses[0]);
-  p->cmd("calc");
+  p.cmd("setStep",&is);
+  p.cmd("setPositions",&positions[0]);
+  p.cmd("setBox",&box[0]);
+  p.cmd("setForces",&forces[0]);
+  p.cmd("setVirial",&virial[0]);
+  p.cmd("setMasses",&masses[0]);
+  p.cmd("calc");
 }
 
 int main(){
-  std::vector<Plumed*> p;
+/*
+  This regtest uses a STL containing Plumed objects.
+  This is only possible with a c++11 compiler that implements move semantics.
+*/
+  std::vector<Plumed> p;
 
   unsigned nwalkers=3;
   unsigned nsteps=10;
 
   p.resize(nwalkers);
-  for(unsigned iw=0;iw<nwalkers;iw++) p[iw]=new Plumed;
 
   int natoms=10;
 
   for(unsigned iw=0;iw<nwalkers;iw++){
 
-    p[iw]->cmd("setNatoms",&natoms);
+    p[iw].cmd("setNatoms",&natoms);
 
     std::ostringstream iwss;
     iwss<<iw;
     std::string file;
     file="test." + iwss.str() + ".log";
-    p[iw]->cmd("setLogFile",file.c_str());
+    p[iw].cmd("setLogFile",file.c_str());
     file="plumed." + iwss.str() + ".dat";
-    p[iw]->cmd("setPlumedDat",file.c_str());
-    p[iw]->cmd("init");
+    p[iw].cmd("setPlumedDat",file.c_str());
+    p[iw].cmd("init");
   }
 
 // half steps for each walker
@@ -52,7 +55,5 @@ int main(){
 // other half steps for each walker
   for(unsigned iw=0;iw<nwalkers;iw++) for(unsigned is=nsteps/2;is<nsteps;is++) go(p[iw],natoms,iw,is);
 
-  for(unsigned iw=0;iw<nwalkers;iw++) delete p[iw];
-
   return 0;
 }
diff --git a/regtest/crystallization/rt-spherical-integral/config b/regtest/crystallization/rt-spherical-integral/config
index 31b0428ecb877af3773c67492e5ed02d76fbda18..86881dd730e4432aee2f654848b24a98396564b2 100644
--- a/regtest/crystallization/rt-spherical-integral/config
+++ b/regtest/crystallization/rt-spherical-integral/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization 
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz trajectory.xyz --dump-forces forces --dump-forces-fmt %8.4f" # --debug-forces forces.num"
diff --git a/regtest/multicolvar/rt-dist-contour/deriv.reference b/regtest/multicolvar/rt-dist-contour/deriv.reference
index 148e921166fac9db5f0425d1aef6402679c141f1..531fbfce89dd19ab6d5085ec44ac370d4d2f0496 100644
--- a/regtest/multicolvar/rt-dist-contour/deriv.reference
+++ b/regtest/multicolvar/rt-dist-contour/deriv.reference
@@ -1,10 +1,10 @@
 #! FIELDS time parameter dc.qdist
  0.000000 0   0.0000
  0.000000 1   0.0000
- 0.000000 2   2.7307
+ 0.000000 2  -2.7307
  0.000000 3   0.0000
  0.000000 4   0.0000
- 0.000000 5  -2.7307
+ 0.000000 5   2.7307
  0.000000 6   0.0000
  0.000000 7   0.0000
  0.000000 8   0.0000
@@ -13,2044 +13,2044 @@
  0.000000 11   0.0000
  0.000000 12   0.0000
  0.000000 13   0.0000
- 0.000000 14   3.7283
+ 0.000000 14  -3.7283
  1.000000 0  -0.0099
  1.000000 1  -0.0015
- 1.000000 2   2.8856
+ 1.000000 2  -2.8856
  1.000000 3   0.0099
  1.000000 4   0.0015
- 1.000000 5  -2.8856
+ 1.000000 5   2.8856
  1.000000 6  -0.0000
  1.000000 7  -0.0000
  1.000000 8  -0.0143
  1.000000 9  -0.0000
  1.000000 10  -0.0000
  1.000000 11  -0.0022
- 1.000000 12   0.0143
- 1.000000 13   0.0022
- 1.000000 14   4.1634
+ 1.000000 12  -0.0143
+ 1.000000 13  -0.0022
+ 1.000000 14  -4.1634
  2.000000 0  -0.0191
  2.000000 1  -0.0059
- 2.000000 2   3.0068
+ 2.000000 2  -3.0068
  2.000000 3   0.0191
  2.000000 4   0.0059
- 2.000000 5  -3.0068
+ 2.000000 5   3.0068
  2.000000 6  -0.0002
  2.000000 7  -0.0001
  2.000000 8  -0.0287
  2.000000 9  -0.0001
  2.000000 10  -0.0000
  2.000000 11  -0.0089
- 2.000000 12   0.0287
- 2.000000 13   0.0089
- 2.000000 14   4.5204
+ 2.000000 12  -0.0287
+ 2.000000 13  -0.0089
+ 2.000000 14  -4.5204
  3.000000 0  -0.0270
  3.000000 1  -0.0130
- 3.000000 2   3.0678
+ 3.000000 2  -3.0678
  3.000000 3   0.0270
  3.000000 4   0.0130
- 3.000000 5  -3.0678
+ 3.000000 5   3.0678
  3.000000 6  -0.0004
  3.000000 7  -0.0002
  3.000000 8  -0.0414
  3.000000 9  -0.0002
  3.000000 10  -0.0001
  3.000000 11  -0.0200
- 3.000000 12   0.0414
- 3.000000 13   0.0200
- 3.000000 14   4.7057
+ 3.000000 12  -0.0414
+ 3.000000 13  -0.0200
+ 3.000000 14  -4.7057
  4.000000 0  -0.0330
  4.000000 1  -0.0226
- 4.000000 2   3.0553
+ 4.000000 2  -3.0553
  4.000000 3   0.0330
  4.000000 4   0.0226
- 4.000000 5  -3.0553
+ 4.000000 5   3.0553
  4.000000 6  -0.0005
  4.000000 7  -0.0004
  4.000000 8  -0.0504
  4.000000 9  -0.0004
  4.000000 10  -0.0003
  4.000000 11  -0.0345
- 4.000000 12   0.0504
- 4.000000 13   0.0345
- 4.000000 14   4.6674
+ 4.000000 12  -0.0504
+ 4.000000 13  -0.0345
+ 4.000000 14  -4.6674
  5.000000 0  -0.0366
  5.000000 1  -0.0341
- 5.000000 2   2.9720
+ 5.000000 2  -2.9720
  5.000000 3   0.0366
  5.000000 4   0.0341
- 5.000000 5  -2.9720
+ 5.000000 5   2.9720
  5.000000 6  -0.0007
  5.000000 7  -0.0006
  5.000000 8  -0.0544
  5.000000 9  -0.0006
  5.000000 10  -0.0006
  5.000000 11  -0.0506
- 5.000000 12   0.0544
- 5.000000 13   0.0506
- 5.000000 14   4.4165
+ 5.000000 12  -0.0544
+ 5.000000 13  -0.0506
+ 5.000000 14  -4.4165
  6.000000 0  -0.0373
  6.000000 1  -0.0470
- 6.000000 2   2.8361
+ 6.000000 2  -2.8361
  6.000000 3   0.0373
  6.000000 4   0.0470
- 6.000000 5  -2.8361
+ 6.000000 5   2.8361
  6.000000 6  -0.0007
  6.000000 7  -0.0009
  6.000000 8  -0.0529
  6.000000 9  -0.0009
  6.000000 10  -0.0011
  6.000000 11  -0.0666
- 6.000000 12   0.0529
- 6.000000 13   0.0666
- 6.000000 14   4.0218
+ 6.000000 12  -0.0529
+ 6.000000 13  -0.0666
+ 6.000000 14  -4.0218
  7.000000 0  -0.0348
  7.000000 1  -0.0607
- 7.000000 2   2.6773
+ 7.000000 2  -2.6773
  7.000000 3   0.0348
  7.000000 4   0.0607
- 7.000000 5  -2.6773
+ 7.000000 5   2.6773
  7.000000 6  -0.0006
  7.000000 7  -0.0011
  7.000000 8  -0.0466
  7.000000 9  -0.0011
  7.000000 10  -0.0018
  7.000000 11  -0.0813
- 7.000000 12   0.0466
- 7.000000 13   0.0813
- 7.000000 14   3.5839
+ 7.000000 12  -0.0466
+ 7.000000 13  -0.0813
+ 7.000000 14  -3.5839
  8.000000 0  -0.0290
  8.000000 1  -0.0746
- 8.000000 2   2.5300
+ 8.000000 2  -2.5300
  8.000000 3   0.0290
  8.000000 4   0.0746
- 8.000000 5  -2.5300
+ 8.000000 5   2.5300
  8.000000 6  -0.0004
  8.000000 7  -0.0011
  8.000000 8  -0.0367
  8.000000 9  -0.0011
  8.000000 10  -0.0028
  8.000000 11  -0.0943
- 8.000000 12   0.0367
- 8.000000 13   0.0943
- 8.000000 14   3.2006
+ 8.000000 12  -0.0367
+ 8.000000 13  -0.0943
+ 8.000000 14  -3.2006
  9.000000 0  -0.0197
  9.000000 1  -0.0878
- 9.000000 2   2.4265
+ 9.000000 2  -2.4265
  9.000000 3   0.0197
  9.000000 4   0.0878
- 9.000000 5  -2.4265
+ 9.000000 5   2.4265
  9.000000 6  -0.0002
  9.000000 7  -0.0009
  9.000000 8  -0.0239
  9.000000 9  -0.0009
  9.000000 10  -0.0039
  9.000000 11  -0.1065
- 9.000000 12   0.0239
- 9.000000 13   0.1065
- 9.000000 14   2.9440
+ 9.000000 12  -0.0239
+ 9.000000 13  -0.1065
+ 9.000000 14  -2.9440
  10.000000 0  -0.0071
  10.000000 1  -0.0997
- 10.000000 2   2.3893
+ 10.000000 2  -2.3893
  10.000000 3   0.0071
  10.000000 4   0.0997
- 10.000000 5  -2.3893
+ 10.000000 5   2.3893
  10.000000 6  -0.0000
  10.000000 7  -0.0004
  10.000000 8  -0.0085
  10.000000 9  -0.0004
  10.000000 10  -0.0050
  10.000000 11  -0.1192
- 10.000000 12   0.0085
- 10.000000 13   0.1192
- 10.000000 14   2.8544
+ 10.000000 12  -0.0085
+ 10.000000 13  -0.1192
+ 10.000000 14  -2.8544
  11.000000 0   0.0087
  11.000000 1  -0.1097
- 11.000000 2   2.4265
+ 11.000000 2  -2.4265
  11.000000 3  -0.0087
  11.000000 4   0.1097
- 11.000000 5  -2.4265
+ 11.000000 5   2.4265
  11.000000 6  -0.0000
  11.000000 7   0.0005
  11.000000 8   0.0106
  11.000000 9   0.0005
  11.000000 10  -0.0060
  11.000000 11  -0.1330
- 11.000000 12  -0.0106
- 11.000000 13   0.1330
- 11.000000 14   2.9440
+ 11.000000 12   0.0106
+ 11.000000 13  -0.1330
+ 11.000000 14  -2.9440
  12.000000 0   0.0273
  12.000000 1  -0.1169
- 12.000000 2   2.5300
+ 12.000000 2  -2.5300
  12.000000 3  -0.0273
  12.000000 4   0.1169
- 12.000000 5  -2.5300
+ 12.000000 5   2.5300
  12.000000 6  -0.0004
  12.000000 7   0.0016
  12.000000 8   0.0345
  12.000000 9   0.0016
  12.000000 10  -0.0068
  12.000000 11  -0.1478
- 12.000000 12  -0.0345
- 12.000000 13   0.1478
- 12.000000 14   3.2006
+ 12.000000 12   0.0345
+ 12.000000 13  -0.1478
+ 12.000000 14  -3.2006
  13.000000 0   0.0481
  13.000000 1  -0.1208
- 13.000000 2   2.6773
+ 13.000000 2  -2.6773
  13.000000 3  -0.0481
  13.000000 4   0.1208
- 13.000000 5  -2.6773
+ 13.000000 5   2.6773
  13.000000 6  -0.0012
  13.000000 7   0.0029
  13.000000 8   0.0644
  13.000000 9   0.0029
  13.000000 10  -0.0073
  13.000000 11  -0.1617
- 13.000000 12  -0.0644
- 13.000000 13   0.1617
- 13.000000 14   3.5839
+ 13.000000 12   0.0644
+ 13.000000 13  -0.1617
+ 13.000000 14  -3.5839
  14.000000 0   0.0707
  14.000000 1  -0.1208
- 14.000000 2   2.8361
+ 14.000000 2  -2.8361
  14.000000 3  -0.0707
  14.000000 4   0.1208
- 14.000000 5  -2.8361
+ 14.000000 5   2.8361
  14.000000 6  -0.0025
  14.000000 7   0.0043
  14.000000 8   0.1002
  14.000000 9   0.0043
  14.000000 10  -0.0073
  14.000000 11  -0.1714
- 14.000000 12  -0.1002
- 14.000000 13   0.1714
- 14.000000 14   4.0218
+ 14.000000 12   0.1002
+ 14.000000 13  -0.1714
+ 14.000000 14  -4.0218
  15.000000 0   0.0942
  15.000000 1  -0.1167
- 15.000000 2   2.9720
+ 15.000000 2  -2.9720
  15.000000 3  -0.0942
  15.000000 4   0.1167
- 15.000000 5  -2.9720
+ 15.000000 5   2.9720
  15.000000 6  -0.0044
  15.000000 7   0.0055
  15.000000 8   0.1400
  15.000000 9   0.0055
  15.000000 10  -0.0068
  15.000000 11  -0.1734
- 15.000000 12  -0.1400
- 15.000000 13   0.1734
- 15.000000 14   4.4165
+ 15.000000 12   0.1400
+ 15.000000 13  -0.1734
+ 15.000000 14  -4.4165
  16.000000 0   0.1180
  16.000000 1  -0.1081
- 16.000000 2   3.0553
+ 16.000000 2  -3.0553
  16.000000 3  -0.1180
  16.000000 4   0.1081
- 16.000000 5  -3.0553
+ 16.000000 5   3.0553
  16.000000 6  -0.0070
  16.000000 7   0.0064
  16.000000 8   0.1802
  16.000000 9   0.0064
  16.000000 10  -0.0058
  16.000000 11  -0.1651
- 16.000000 12  -0.1802
- 16.000000 13   0.1651
- 16.000000 14   4.6674
+ 16.000000 12   0.1802
+ 16.000000 13  -0.1651
+ 16.000000 14  -4.6674
  17.000000 0   0.1411
  17.000000 1  -0.0948
- 17.000000 2   3.0678
+ 17.000000 2  -3.0678
  17.000000 3  -0.1411
  17.000000 4   0.0948
- 17.000000 5  -3.0678
+ 17.000000 5   3.0678
  17.000000 6  -0.0100
  17.000000 7   0.0067
  17.000000 8   0.2164
  17.000000 9   0.0067
  17.000000 10  -0.0045
  17.000000 11  -0.1454
- 17.000000 12  -0.2164
- 17.000000 13   0.1454
- 17.000000 14   4.7057
+ 17.000000 12   0.2164
+ 17.000000 13  -0.1454
+ 17.000000 14  -4.7057
  18.000000 0   0.1627
  18.000000 1  -0.0769
- 18.000000 2   3.0068
+ 18.000000 2  -3.0068
  18.000000 3  -0.1627
  18.000000 4   0.0769
- 18.000000 5  -3.0068
+ 18.000000 5   3.0068
  18.000000 6  -0.0132
  18.000000 7   0.0063
  18.000000 8   0.2447
  18.000000 9   0.0063
  18.000000 10  -0.0030
  18.000000 11  -0.1157
- 18.000000 12  -0.2447
- 18.000000 13   0.1157
- 18.000000 14   4.5204
+ 18.000000 12   0.2447
+ 18.000000 13  -0.1157
+ 18.000000 14  -4.5204
  19.000000 0   0.1820
  19.000000 1  -0.0546
- 19.000000 2   2.8856
+ 19.000000 2  -2.8856
  19.000000 3  -0.1820
  19.000000 4   0.0546
- 19.000000 5  -2.8856
+ 19.000000 5   2.8856
  19.000000 6  -0.0166
  19.000000 7   0.0050
  19.000000 8   0.2626
  19.000000 9   0.0050
  19.000000 10  -0.0015
  19.000000 11  -0.0788
- 19.000000 12  -0.2626
- 19.000000 13   0.0788
- 19.000000 14   4.1634
+ 19.000000 12   0.2626
+ 19.000000 13  -0.0788
+ 19.000000 14  -4.1634
  20.000000 0   0.1980
  20.000000 1  -0.0282
- 20.000000 2   2.7307
+ 20.000000 2  -2.7307
  20.000000 3  -0.1980
  20.000000 4   0.0282
- 20.000000 5  -2.7307
+ 20.000000 5   2.7307
  20.000000 6  -0.0196
  20.000000 7   0.0028
  20.000000 8   0.2703
  20.000000 9   0.0028
  20.000000 10  -0.0004
  20.000000 11  -0.0385
- 20.000000 12  -0.2703
- 20.000000 13   0.0385
- 20.000000 14   3.7283
+ 20.000000 12   0.2703
+ 20.000000 13  -0.0385
+ 20.000000 14  -3.7283
  21.000000 0   0.2100
  21.000000 1   0.0018
- 21.000000 2   2.5757
+ 21.000000 2  -2.5757
  21.000000 3  -0.2100
  21.000000 4  -0.0018
- 21.000000 5  -2.5757
+ 21.000000 5   2.5757
  21.000000 6  -0.0220
  21.000000 7  -0.0002
  21.000000 8   0.2704
  21.000000 9  -0.0002
  21.000000 10  -0.0000
  21.000000 11   0.0023
- 21.000000 12  -0.2704
- 21.000000 13  -0.0023
- 21.000000 14   3.3171
+ 21.000000 12   0.2704
+ 21.000000 13   0.0023
+ 21.000000 14  -3.3171
  22.000000 0   0.2172
  22.000000 1   0.0347
- 22.000000 2   2.4545
+ 22.000000 2  -2.4545
  22.000000 3  -0.2172
  22.000000 4  -0.0347
- 22.000000 5  -2.4545
+ 22.000000 5   2.4545
  22.000000 6  -0.0236
  22.000000 7  -0.0038
  22.000000 8   0.2666
  22.000000 9  -0.0038
  22.000000 10  -0.0006
  22.000000 11   0.0426
- 22.000000 12  -0.2666
- 22.000000 13  -0.0426
- 22.000000 14   3.0123
+ 22.000000 12   0.2666
+ 22.000000 13   0.0426
+ 22.000000 14  -3.0123
  23.000000 0   0.2191
  23.000000 1   0.0698
- 23.000000 2   2.3935
+ 23.000000 2  -2.3935
  23.000000 3  -0.2191
  23.000000 4  -0.0698
- 23.000000 5  -2.3935
+ 23.000000 5   2.3935
  23.000000 6  -0.0240
  23.000000 7  -0.0076
  23.000000 8   0.2623
  23.000000 9  -0.0076
  23.000000 10  -0.0024
  23.000000 11   0.0836
- 23.000000 12  -0.2623
- 23.000000 13  -0.0836
- 23.000000 14   2.8645
+ 23.000000 12   0.2623
+ 23.000000 13   0.0836
+ 23.000000 14  -2.8645
  24.000000 0   0.2152
  24.000000 1   0.1062
- 24.000000 2   2.4060
+ 24.000000 2  -2.4060
  24.000000 3  -0.2152
  24.000000 4  -0.1062
- 24.000000 5  -2.4060
+ 24.000000 5   2.4060
  24.000000 6  -0.0232
  24.000000 7  -0.0114
  24.000000 8   0.2589
  24.000000 9  -0.0114
  24.000000 10  -0.0056
  24.000000 11   0.1278
- 24.000000 12  -0.2589
- 24.000000 13  -0.1278
- 24.000000 14   2.8945
+ 24.000000 12   0.2589
+ 24.000000 13   0.1278
+ 24.000000 14  -2.8945
  25.000000 0   0.2051
  25.000000 1   0.1429
- 25.000000 2   2.4893
+ 25.000000 2  -2.4893
  25.000000 3  -0.2051
  25.000000 4  -0.1429
- 25.000000 5  -2.4893
+ 25.000000 5   2.4893
  25.000000 6  -0.0210
  25.000000 7  -0.0147
  25.000000 8   0.2553
  25.000000 9  -0.0147
  25.000000 10  -0.0102
  25.000000 11   0.1778
- 25.000000 12  -0.2553
- 25.000000 13  -0.1778
- 25.000000 14   3.0983
+ 25.000000 12   0.2553
+ 25.000000 13   0.1778
+ 25.000000 14  -3.0983
  26.000000 0   0.1887
  26.000000 1   0.1788
- 26.000000 2   2.6252
+ 26.000000 2  -2.6252
  26.000000 3  -0.1887
  26.000000 4  -0.1788
- 26.000000 5  -2.6252
+ 26.000000 5   2.6252
  26.000000 6  -0.0178
  26.000000 7  -0.0169
  26.000000 8   0.2477
  26.000000 9  -0.0169
  26.000000 10  -0.0160
  26.000000 11   0.2347
- 26.000000 12  -0.2477
- 26.000000 13  -0.2347
- 26.000000 14   3.4458
+ 26.000000 12   0.2477
+ 26.000000 13   0.2347
+ 26.000000 14  -3.4458
  27.000000 0   0.1661
  27.000000 1   0.2129
- 27.000000 2   2.7841
+ 27.000000 2  -2.7841
  27.000000 3  -0.1661
  27.000000 4  -0.2129
- 27.000000 5  -2.7841
+ 27.000000 5   2.7841
  27.000000 6  -0.0138
  27.000000 7  -0.0177
  27.000000 8   0.2311
  27.000000 9  -0.0177
  27.000000 10  -0.0227
  27.000000 11   0.2964
- 27.000000 12  -0.2311
- 27.000000 13  -0.2964
- 27.000000 14   3.8755
+ 27.000000 12   0.2311
+ 27.000000 13   0.2964
+ 27.000000 14  -3.8755
  28.000000 0   0.1373
  28.000000 1   0.2440
- 28.000000 2   2.9313
+ 28.000000 2  -2.9313
  28.000000 3  -0.1373
  28.000000 4  -0.2440
- 28.000000 5  -2.9313
+ 28.000000 5   2.9313
  28.000000 6  -0.0094
  28.000000 7  -0.0168
  28.000000 8   0.2012
  28.000000 9  -0.0168
  28.000000 10  -0.0298
  28.000000 11   0.3577
- 28.000000 12  -0.2012
- 28.000000 13  -0.3577
- 28.000000 14   4.2963
+ 28.000000 12   0.2012
+ 28.000000 13   0.3577
+ 28.000000 14  -4.2963
  29.000000 0   0.1028
  29.000000 1   0.2712
- 29.000000 2   3.0348
+ 29.000000 2  -3.0348
  29.000000 3  -0.1028
  29.000000 4  -0.2712
- 29.000000 5  -3.0348
+ 29.000000 5   3.0348
  29.000000 6  -0.0053
  29.000000 7  -0.0139
  29.000000 8   0.1560
  29.000000 9  -0.0139
  29.000000 10  -0.0368
  29.000000 11   0.4115
- 29.000000 12  -0.1560
- 29.000000 13  -0.4115
- 29.000000 14   4.6050
+ 29.000000 12   0.1560
+ 29.000000 13   0.4115
+ 29.000000 14  -4.6050
  30.000000 0   0.0632
  30.000000 1   0.2933
- 30.000000 2   3.0720
+ 30.000000 2  -3.0720
  30.000000 3  -0.0632
  30.000000 4  -0.2933
- 30.000000 5  -3.0720
+ 30.000000 5   3.0720
  30.000000 6  -0.0020
  30.000000 7  -0.0093
  30.000000 8   0.0971
  30.000000 9  -0.0093
  30.000000 10  -0.0430
  30.000000 11   0.4504
- 30.000000 12  -0.0971
- 30.000000 13  -0.4504
- 30.000000 14   4.7186
+ 30.000000 12   0.0971
+ 30.000000 13   0.4504
+ 30.000000 14  -4.7186
  31.000000 0   0.0193
  31.000000 1   0.3094
- 31.000000 2   3.0348
+ 31.000000 2  -3.0348
  31.000000 3  -0.0193
  31.000000 4  -0.3094
- 31.000000 5  -3.0348
+ 31.000000 5   3.0348
  31.000000 6  -0.0002
  31.000000 7  -0.0030
  31.000000 8   0.0293
  31.000000 9  -0.0030
  31.000000 10  -0.0479
  31.000000 11   0.4695
- 31.000000 12  -0.0293
- 31.000000 13  -0.4695
- 31.000000 14   4.6050
+ 31.000000 12   0.0293
+ 31.000000 13   0.4695
+ 31.000000 14  -4.6050
  32.000000 0  -0.0280
  32.000000 1   0.3188
- 32.000000 2   2.9313
+ 32.000000 2  -2.9313
  32.000000 3   0.0280
  32.000000 4  -0.3188
- 32.000000 5  -2.9313
+ 32.000000 5   2.9313
  32.000000 6  -0.0004
  32.000000 7   0.0045
  32.000000 8  -0.0410
  32.000000 9   0.0045
  32.000000 10  -0.0508
  32.000000 11   0.4672
- 32.000000 12   0.0410
- 32.000000 13  -0.4672
- 32.000000 14   4.2963
+ 32.000000 12  -0.0410
+ 32.000000 13   0.4672
+ 32.000000 14  -4.2963
  33.000000 0  -0.0777
  33.000000 1   0.3207
- 33.000000 2   2.7841
+ 33.000000 2  -2.7841
  33.000000 3   0.0777
  33.000000 4  -0.3207
- 33.000000 5  -2.7841
+ 33.000000 5   2.7841
  33.000000 6  -0.0030
  33.000000 7   0.0125
  33.000000 8  -0.1081
  33.000000 9   0.0125
  33.000000 10  -0.0514
  33.000000 11   0.4465
- 33.000000 12   0.1081
- 33.000000 13  -0.4465
- 33.000000 14   3.8755
+ 33.000000 12  -0.1081
+ 33.000000 13   0.4465
+ 33.000000 14  -3.8755
  34.000000 0  -0.1285
  34.000000 1   0.3148
- 34.000000 2   2.6252
+ 34.000000 2  -2.6252
  34.000000 3   0.1285
  34.000000 4  -0.3148
- 34.000000 5  -2.6252
+ 34.000000 5   2.6252
  34.000000 6  -0.0083
  34.000000 7   0.0202
  34.000000 8  -0.1687
  34.000000 9   0.0202
  34.000000 10  -0.0495
  34.000000 11   0.4132
- 34.000000 12   0.1687
- 34.000000 13  -0.4132
- 34.000000 14   3.4458
+ 34.000000 12  -0.1687
+ 34.000000 13   0.4132
+ 34.000000 14  -3.4458
  35.000000 0  -0.1792
  35.000000 1   0.3006
- 35.000000 2   2.4893
+ 35.000000 2  -2.4893
  35.000000 3   0.1792
  35.000000 4  -0.3006
- 35.000000 5  -2.4893
+ 35.000000 5   2.4893
  35.000000 6  -0.0161
  35.000000 7   0.0269
  35.000000 8  -0.2231
  35.000000 9   0.0269
  35.000000 10  -0.0452
  35.000000 11   0.3742
- 35.000000 12   0.2231
- 35.000000 13  -0.3742
- 35.000000 14   3.0983
+ 35.000000 12  -0.2231
+ 35.000000 13   0.3742
+ 35.000000 14  -3.0983
  36.000000 0  -0.2285
  36.000000 1   0.2782
- 36.000000 2   2.4060
+ 36.000000 2  -2.4060
  36.000000 3   0.2285
  36.000000 4  -0.2782
- 36.000000 5  -2.4060
+ 36.000000 5   2.4060
  36.000000 6  -0.0261
  36.000000 7   0.0318
  36.000000 8  -0.2749
  36.000000 9   0.0318
  36.000000 10  -0.0387
  36.000000 11   0.3347
- 36.000000 12   0.2749
- 36.000000 13  -0.3347
- 36.000000 14   2.8945
+ 36.000000 12  -0.2749
+ 36.000000 13   0.3347
+ 36.000000 14  -2.8945
  37.000000 0  -0.2749
  37.000000 1   0.2476
- 37.000000 2   2.3935
+ 37.000000 2  -2.3935
  37.000000 3   0.2749
  37.000000 4  -0.2476
- 37.000000 5  -2.3935
+ 37.000000 5   2.3935
  37.000000 6  -0.0378
  37.000000 7   0.0340
  37.000000 8  -0.3290
  37.000000 9   0.0340
  37.000000 10  -0.0307
  37.000000 11   0.2963
- 37.000000 12   0.3290
- 37.000000 13  -0.2963
- 37.000000 14   2.8645
+ 37.000000 12  -0.3290
+ 37.000000 13   0.2963
+ 37.000000 14  -2.8645
  38.000000 0  -0.3172
  38.000000 1   0.2093
- 38.000000 2   2.4545
+ 38.000000 2  -2.4545
  38.000000 3   0.3172
  38.000000 4  -0.2093
- 38.000000 5  -2.4545
+ 38.000000 5   2.4545
  38.000000 6  -0.0503
  38.000000 7   0.0332
  38.000000 8  -0.3893
  38.000000 9   0.0332
  38.000000 10  -0.0219
  38.000000 11   0.2568
- 38.000000 12   0.3893
- 38.000000 13  -0.2568
- 38.000000 14   3.0123
+ 38.000000 12  -0.3893
+ 38.000000 13   0.2568
+ 38.000000 14  -3.0123
  39.000000 0  -0.3540
  39.000000 1   0.1637
- 39.000000 2   2.5757
+ 39.000000 2  -2.5757
  39.000000 3   0.3540
  39.000000 4  -0.1637
- 39.000000 5  -2.5757
+ 39.000000 5   2.5757
  39.000000 6  -0.0626
  39.000000 7   0.0290
  39.000000 8  -0.4559
  39.000000 9   0.0290
  39.000000 10  -0.0134
  39.000000 11   0.2108
- 39.000000 12   0.4559
- 39.000000 13  -0.2108
- 39.000000 14   3.3171
+ 39.000000 12  -0.4559
+ 39.000000 13   0.2108
+ 39.000000 14  -3.3171
  40.000000 0  -0.3841
  40.000000 1   0.1118
- 40.000000 2   2.7307
+ 40.000000 2  -2.7307
  40.000000 3   0.3841
  40.000000 4  -0.1118
- 40.000000 5  -2.7307
+ 40.000000 5   2.7307
  40.000000 6  -0.0738
  40.000000 7   0.0215
  40.000000 8  -0.5244
  40.000000 9   0.0215
  40.000000 10  -0.0062
  40.000000 11   0.1526
- 40.000000 12   0.5244
- 40.000000 13  -0.1526
- 40.000000 14   3.7283
+ 40.000000 12  -0.5244
+ 40.000000 13   0.1526
+ 40.000000 14  -3.7283
  41.000000 0  -0.4064
  41.000000 1   0.0544
- 41.000000 2   2.8856
+ 41.000000 2  -2.8856
  41.000000 3   0.4064
  41.000000 4  -0.0544
- 41.000000 5  -2.8856
+ 41.000000 5   2.8856
  41.000000 6  -0.0826
  41.000000 7   0.0111
  41.000000 8  -0.5863
  41.000000 9   0.0111
  41.000000 10  -0.0015
  41.000000 11   0.0786
- 41.000000 12   0.5863
- 41.000000 13  -0.0786
- 41.000000 14   4.1634
+ 41.000000 12  -0.5863
+ 41.000000 13   0.0786
+ 41.000000 14  -4.1634
  42.000000 0  -0.4199
  42.000000 1  -0.0071
- 42.000000 2   3.0068
+ 42.000000 2  -3.0068
  42.000000 3   0.4199
  42.000000 4   0.0071
- 42.000000 5  -3.0068
+ 42.000000 5   3.0068
  42.000000 6  -0.0882
  42.000000 7  -0.0015
  42.000000 8  -0.6313
  42.000000 9  -0.0015
  42.000000 10  -0.0000
  42.000000 11  -0.0106
- 42.000000 12   0.6313
- 42.000000 13   0.0106
- 42.000000 14   4.5204
+ 42.000000 12  -0.6313
+ 42.000000 13  -0.0106
+ 42.000000 14  -4.5204
  43.000000 0  -0.4240
  43.000000 1  -0.0714
- 43.000000 2   3.0678
+ 43.000000 2  -3.0678
  43.000000 3   0.4240
  43.000000 4   0.0714
- 43.000000 5  -3.0678
+ 43.000000 5   3.0678
  43.000000 6  -0.0899
  43.000000 7  -0.0151
  43.000000 8  -0.6504
  43.000000 9  -0.0151
  43.000000 10  -0.0025
  43.000000 11  -0.1095
- 43.000000 12   0.6504
- 43.000000 13   0.1095
- 43.000000 14   4.7057
+ 43.000000 12  -0.6504
+ 43.000000 13  -0.1095
+ 43.000000 14  -4.7057
  44.000000 0  -0.4181
  44.000000 1  -0.1371
- 44.000000 2   3.0553
+ 44.000000 2  -3.0553
  44.000000 3   0.4181
  44.000000 4   0.1371
- 44.000000 5  -3.0553
+ 44.000000 5   3.0553
  44.000000 6  -0.0874
  44.000000 7  -0.0287
  44.000000 8  -0.6387
  44.000000 9  -0.0287
  44.000000 10  -0.0094
  44.000000 11  -0.2094
- 44.000000 12   0.6387
- 44.000000 13   0.2094
- 44.000000 14   4.6674
+ 44.000000 12  -0.6387
+ 44.000000 13  -0.2094
+ 44.000000 14  -4.6674
  45.000000 0  -0.4019
  45.000000 1  -0.2025
- 45.000000 2   2.9720
+ 45.000000 2  -2.9720
  45.000000 3   0.4019
  45.000000 4   0.2025
- 45.000000 5  -2.9720
+ 45.000000 5   2.9720
  45.000000 6  -0.0807
  45.000000 7  -0.0407
  45.000000 8  -0.5972
  45.000000 9  -0.0407
  45.000000 10  -0.0205
  45.000000 11  -0.3009
- 45.000000 12   0.5972
- 45.000000 13   0.3009
- 45.000000 14   4.4165
+ 45.000000 12  -0.5972
+ 45.000000 13  -0.3009
+ 45.000000 14  -4.4165
  46.000000 0  -0.3752
  46.000000 1  -0.2661
- 46.000000 2   2.8361
+ 46.000000 2  -2.8361
  46.000000 3   0.3752
  46.000000 4   0.2661
- 46.000000 5  -2.8361
+ 46.000000 5   2.8361
  46.000000 6  -0.0704
  46.000000 7  -0.0499
  46.000000 8  -0.5321
  46.000000 9  -0.0499
  46.000000 10  -0.0354
  46.000000 11  -0.3773
- 46.000000 12   0.5321
- 46.000000 13   0.3773
- 46.000000 14   4.0218
+ 46.000000 12  -0.5321
+ 46.000000 13  -0.3773
+ 46.000000 14  -4.0218
  47.000000 0  -0.3385
  47.000000 1  -0.3261
- 47.000000 2   2.6773
+ 47.000000 2  -2.6773
  47.000000 3   0.3385
  47.000000 4   0.3261
- 47.000000 5  -2.6773
+ 47.000000 5   2.6773
  47.000000 6  -0.0573
  47.000000 7  -0.0552
  47.000000 8  -0.4531
  47.000000 9  -0.0552
  47.000000 10  -0.0532
  47.000000 11  -0.4365
- 47.000000 12   0.4531
- 47.000000 13   0.4365
- 47.000000 14   3.5839
+ 47.000000 12  -0.4531
+ 47.000000 13  -0.4365
+ 47.000000 14  -3.5839
  48.000000 0  -0.2920
  48.000000 1  -0.3810
- 48.000000 2   2.5300
+ 48.000000 2  -2.5300
  48.000000 3   0.2920
  48.000000 4   0.3810
- 48.000000 5  -2.5300
+ 48.000000 5   2.5300
  48.000000 6  -0.0426
  48.000000 7  -0.0556
  48.000000 8  -0.3694
  48.000000 9  -0.0556
  48.000000 10  -0.0726
  48.000000 11  -0.4819
- 48.000000 12   0.3694
- 48.000000 13   0.4819
- 48.000000 14   3.2006
+ 48.000000 12  -0.3694
+ 48.000000 13  -0.4819
+ 48.000000 14  -3.2006
  49.000000 0  -0.2366
  49.000000 1  -0.4291
- 49.000000 2   2.4265
+ 49.000000 2  -2.4265
  49.000000 3   0.2366
  49.000000 4   0.4291
- 49.000000 5  -2.4265
+ 49.000000 5   2.4265
  49.000000 6  -0.0280
  49.000000 7  -0.0508
  49.000000 8  -0.2871
  49.000000 9  -0.0508
  49.000000 10  -0.0921
  49.000000 11  -0.5206
- 49.000000 12   0.2871
- 49.000000 13   0.5206
- 49.000000 14   2.9440
+ 49.000000 12  -0.2871
+ 49.000000 13  -0.5206
+ 49.000000 14  -2.9440
  50.000000 0  -0.1733
  50.000000 1  -0.4690
- 50.000000 2   2.3893
+ 50.000000 2  -2.3893
  50.000000 3   0.1733
  50.000000 4   0.4690
- 50.000000 5  -2.3893
+ 50.000000 5   2.3893
  50.000000 6  -0.0150
  50.000000 7  -0.0406
  50.000000 8  -0.2071
  50.000000 9  -0.0406
  50.000000 10  -0.1100
  50.000000 11  -0.5603
- 50.000000 12   0.2071
- 50.000000 13   0.5603
- 50.000000 14   2.8544
+ 50.000000 12  -0.2071
+ 50.000000 13  -0.5603
+ 50.000000 14  -2.8544
  51.000000 0  -0.1033
  51.000000 1  -0.4994
- 51.000000 2   2.4265
+ 51.000000 2  -2.4265
  51.000000 3   0.1033
  51.000000 4   0.4994
- 51.000000 5  -2.4265
+ 51.000000 5   2.4265
  51.000000 6  -0.0053
  51.000000 7  -0.0258
  51.000000 8  -0.1253
  51.000000 9  -0.0258
  51.000000 10  -0.1247
  51.000000 11  -0.6059
- 51.000000 12   0.1253
- 51.000000 13   0.6059
- 51.000000 14   2.9440
+ 51.000000 12  -0.1253
+ 51.000000 13  -0.6059
+ 51.000000 14  -2.9440
  52.000000 0  -0.0281
  52.000000 1  -0.5192
- 52.000000 2   2.5300
+ 52.000000 2  -2.5300
  52.000000 3   0.0281
  52.000000 4   0.5192
- 52.000000 5  -2.5300
+ 52.000000 5   2.5300
  52.000000 6  -0.0004
  52.000000 7  -0.0073
  52.000000 8  -0.0355
  52.000000 9  -0.0073
  52.000000 10  -0.1348
  52.000000 11  -0.6569
- 52.000000 12   0.0355
- 52.000000 13   0.6569
- 52.000000 14   3.2006
+ 52.000000 12  -0.0355
+ 52.000000 13  -0.6569
+ 52.000000 14  -3.2006
  53.000000 0   0.0508
  53.000000 1  -0.5276
- 53.000000 2   2.6773
+ 53.000000 2  -2.6773
  53.000000 3  -0.0508
  53.000000 4   0.5276
- 53.000000 5  -2.6773
+ 53.000000 5   2.6773
  53.000000 6  -0.0013
  53.000000 7   0.0134
  53.000000 8   0.0680
  53.000000 9   0.0134
  53.000000 10  -0.1392
  53.000000 11  -0.7062
- 53.000000 12  -0.0680
- 53.000000 13   0.7062
- 53.000000 14   3.5839
+ 53.000000 12   0.0680
+ 53.000000 13  -0.7062
+ 53.000000 14  -3.5839
  54.000000 0   0.1315
  54.000000 1  -0.5237
- 54.000000 2   2.8361
+ 54.000000 2  -2.8361
  54.000000 3  -0.1315
  54.000000 4   0.5237
- 54.000000 5  -2.8361
+ 54.000000 5   2.8361
  54.000000 6  -0.0086
  54.000000 7   0.0344
  54.000000 8   0.1865
  54.000000 9   0.0344
  54.000000 10  -0.1372
  54.000000 11  -0.7427
- 54.000000 12  -0.1865
- 54.000000 13   0.7427
- 54.000000 14   4.0218
+ 54.000000 12   0.1865
+ 54.000000 13  -0.7427
+ 54.000000 14  -4.0218
  55.000000 0   0.2122
  55.000000 1  -0.5074
- 55.000000 2   2.9720
+ 55.000000 2  -2.9720
  55.000000 3  -0.2122
  55.000000 4   0.5074
- 55.000000 5  -2.9720
+ 55.000000 5   2.9720
  55.000000 6  -0.0225
  55.000000 7   0.0538
  55.000000 8   0.3153
  55.000000 9   0.0538
  55.000000 10  -0.1287
  55.000000 11  -0.7540
- 55.000000 12  -0.3153
- 55.000000 13   0.7540
- 55.000000 14   4.4165
+ 55.000000 12   0.3153
+ 55.000000 13  -0.7540
+ 55.000000 14  -4.4165
  56.000000 0   0.2908
  56.000000 1  -0.4786
- 56.000000 2   3.0553
+ 56.000000 2  -3.0553
  56.000000 3  -0.2908
  56.000000 4   0.4786
- 56.000000 5  -3.0553
+ 56.000000 5   3.0553
  56.000000 6  -0.0423
  56.000000 7   0.0696
  56.000000 8   0.4442
  56.000000 9   0.0696
  56.000000 10  -0.1145
  56.000000 11  -0.7311
- 56.000000 12  -0.4442
- 56.000000 13   0.7311
- 56.000000 14   4.6674
+ 56.000000 12   0.4442
+ 56.000000 13  -0.7311
+ 56.000000 14  -4.6674
  57.000000 0   0.3655
  57.000000 1  -0.4374
- 57.000000 2   3.0678
+ 57.000000 2  -3.0678
  57.000000 3  -0.3655
  57.000000 4   0.4374
- 57.000000 5  -3.0678
+ 57.000000 5   3.0678
  57.000000 6  -0.0668
  57.000000 7   0.0799
  57.000000 8   0.5606
  57.000000 9   0.0799
  57.000000 10  -0.0957
  57.000000 11  -0.6710
- 57.000000 12  -0.5606
- 57.000000 13   0.6710
- 57.000000 14   4.7057
+ 57.000000 12   0.5606
+ 57.000000 13  -0.6710
+ 57.000000 14  -4.7057
  58.000000 0   0.4342
  58.000000 1  -0.3845
- 58.000000 2   3.0068
+ 58.000000 2  -3.0068
  58.000000 3  -0.4342
  58.000000 4   0.3845
- 58.000000 5  -3.0068
+ 58.000000 5   3.0068
  58.000000 6  -0.0943
  58.000000 7   0.0835
  58.000000 8   0.6528
  58.000000 9   0.0835
  58.000000 10  -0.0739
  58.000000 11  -0.5781
- 58.000000 12  -0.6528
- 58.000000 13   0.5781
- 58.000000 14   4.5204
+ 58.000000 12   0.6528
+ 58.000000 13  -0.5781
+ 58.000000 14  -4.5204
  59.000000 0   0.4952
  59.000000 1  -0.3208
- 59.000000 2   2.8856
+ 59.000000 2  -2.8856
  59.000000 3  -0.4952
  59.000000 4   0.3208
- 59.000000 5  -2.8856
+ 59.000000 5   2.8856
  59.000000 6  -0.1226
  59.000000 7   0.0794
  59.000000 8   0.7145
  59.000000 9   0.0794
  59.000000 10  -0.0514
  59.000000 11  -0.4628
- 59.000000 12  -0.7145
- 59.000000 13   0.4628
- 59.000000 14   4.1634
+ 59.000000 12   0.7145
+ 59.000000 13  -0.4628
+ 59.000000 14  -4.1634
  60.000000 0   0.5467
  60.000000 1  -0.2473
- 60.000000 2   2.7307
+ 60.000000 2  -2.7307
  60.000000 3  -0.5467
  60.000000 4   0.2473
- 60.000000 5  -2.7307
+ 60.000000 5   2.7307
  60.000000 6  -0.1494
  60.000000 7   0.0676
  60.000000 8   0.7464
  60.000000 9   0.0676
  60.000000 10  -0.0306
  60.000000 11  -0.3376
- 60.000000 12  -0.7464
- 60.000000 13   0.3376
- 60.000000 14   3.7283
+ 60.000000 12   0.7464
+ 60.000000 13  -0.3376
+ 60.000000 14  -3.7283
  61.000000 0   0.5871
  61.000000 1  -0.1655
- 61.000000 2   2.5757
+ 61.000000 2  -2.5757
  61.000000 3  -0.5871
  61.000000 4   0.1655
- 61.000000 5  -2.5757
+ 61.000000 5   2.5757
  61.000000 6  -0.1724
  61.000000 7   0.0486
  61.000000 8   0.7561
  61.000000 9   0.0486
  61.000000 10  -0.0137
  61.000000 11  -0.2132
- 61.000000 12  -0.7561
- 61.000000 13   0.2132
- 61.000000 14   3.3171
+ 61.000000 12   0.7561
+ 61.000000 13  -0.2132
+ 61.000000 14  -3.3171
  62.000000 0   0.6152
  62.000000 1  -0.0772
- 62.000000 2   2.4545
+ 62.000000 2  -2.4545
  62.000000 3  -0.6152
  62.000000 4   0.0772
- 62.000000 5  -2.4545
+ 62.000000 5   2.4545
  62.000000 6  -0.1892
  62.000000 7   0.0237
  62.000000 8   0.7550
  62.000000 9   0.0237
  62.000000 10  -0.0030
  62.000000 11  -0.0947
- 62.000000 12  -0.7550
- 62.000000 13   0.0947
- 62.000000 14   3.0123
+ 62.000000 12   0.7550
+ 62.000000 13  -0.0947
+ 62.000000 14  -3.0123
  63.000000 0   0.6298
  63.000000 1   0.0159
- 63.000000 2   2.3935
+ 63.000000 2  -2.3935
  63.000000 3  -0.6298
  63.000000 4  -0.0159
- 63.000000 5  -2.3935
+ 63.000000 5   2.3935
  63.000000 6  -0.1983
  63.000000 7  -0.0050
  63.000000 8   0.7537
  63.000000 9  -0.0050
  63.000000 10  -0.0001
  63.000000 11   0.0190
- 63.000000 12  -0.7537
- 63.000000 13  -0.0190
- 63.000000 14   2.8645
+ 63.000000 12   0.7537
+ 63.000000 13   0.0190
+ 63.000000 14  -2.8645
  64.000000 0   0.6302
  64.000000 1   0.1116
- 64.000000 2   2.4060
+ 64.000000 2  -2.4060
  64.000000 3  -0.6302
  64.000000 4  -0.1116
- 64.000000 5  -2.4060
+ 64.000000 5   2.4060
  64.000000 6  -0.1986
  64.000000 7  -0.0352
  64.000000 8   0.7581
  64.000000 9  -0.0352
  64.000000 10  -0.0062
  64.000000 11   0.1342
- 64.000000 12  -0.7581
- 64.000000 13  -0.1342
- 64.000000 14   2.8945
+ 64.000000 12   0.7581
+ 64.000000 13   0.1342
+ 64.000000 14  -2.8945
  65.000000 0   0.6159
  65.000000 1   0.2077
- 65.000000 2   2.4893
+ 65.000000 2  -2.4893
  65.000000 3  -0.6159
  65.000000 4  -0.2077
- 65.000000 5  -2.4893
+ 65.000000 5   2.4893
  65.000000 6  -0.1897
  65.000000 7  -0.0640
  65.000000 8   0.7666
  65.000000 9  -0.0640
  65.000000 10  -0.0216
  65.000000 11   0.2585
- 65.000000 12  -0.7666
- 65.000000 13  -0.2585
- 65.000000 14   3.0983
+ 65.000000 12   0.7666
+ 65.000000 13   0.2585
+ 65.000000 14  -3.0983
  66.000000 0   0.5869
  66.000000 1   0.3020
- 66.000000 2   2.6252
+ 66.000000 2  -2.6252
  66.000000 3  -0.5869
  66.000000 4  -0.3020
- 66.000000 5  -2.6252
+ 66.000000 5   2.6252
  66.000000 6  -0.1722
  66.000000 7  -0.0886
  66.000000 8   0.7703
  66.000000 9  -0.0886
  66.000000 10  -0.0456
  66.000000 11   0.3964
- 66.000000 12  -0.7703
- 66.000000 13  -0.3964
- 66.000000 14   3.4458
+ 66.000000 12   0.7703
+ 66.000000 13   0.3964
+ 66.000000 14  -3.4458
  67.000000 0   0.5433
  67.000000 1   0.3921
- 67.000000 2   2.7841
+ 67.000000 2  -2.7841
  67.000000 3  -0.5433
  67.000000 4  -0.3921
- 67.000000 5  -2.7841
+ 67.000000 5   2.7841
  67.000000 6  -0.1476
  67.000000 7  -0.1065
  67.000000 8   0.7562
  67.000000 9  -0.1065
  67.000000 10  -0.0769
  67.000000 11   0.5459
- 67.000000 12  -0.7562
- 67.000000 13  -0.5459
- 67.000000 14   3.8755
+ 67.000000 12   0.7562
+ 67.000000 13   0.5459
+ 67.000000 14  -3.8755
  68.000000 0   0.4857
  68.000000 1   0.4759
- 68.000000 2   2.9313
+ 68.000000 2  -2.9313
  68.000000 3  -0.4857
  68.000000 4  -0.4759
- 68.000000 5  -2.9313
+ 68.000000 5   2.9313
  68.000000 6  -0.1180
  68.000000 7  -0.1156
  68.000000 8   0.7119
  68.000000 9  -0.1156
  68.000000 10  -0.1132
  68.000000 11   0.6975
- 68.000000 12  -0.7119
- 68.000000 13  -0.6975
- 68.000000 14   4.2963
+ 68.000000 12   0.7119
+ 68.000000 13   0.6975
+ 68.000000 14  -4.2963
  69.000000 0   0.4151
  69.000000 1   0.5511
- 69.000000 2   3.0348
+ 69.000000 2  -3.0348
  69.000000 3  -0.4151
  69.000000 4  -0.5511
- 69.000000 5  -3.0348
+ 69.000000 5   3.0348
  69.000000 6  -0.0862
  69.000000 7  -0.1144
  69.000000 8   0.6299
  69.000000 9  -0.1144
  69.000000 10  -0.1519
  69.000000 11   0.8363
- 69.000000 12  -0.6299
- 69.000000 13  -0.8363
- 69.000000 14   4.6050
+ 69.000000 12   0.6299
+ 69.000000 13   0.8363
+ 69.000000 14  -4.6050
  70.000000 0   0.3329
  70.000000 1   0.6158
- 70.000000 2   3.0720
+ 70.000000 2  -3.0720
  70.000000 3  -0.3329
  70.000000 4  -0.6158
- 70.000000 5  -3.0720
+ 70.000000 5   3.0720
  70.000000 6  -0.0554
  70.000000 7  -0.1025
  70.000000 8   0.5113
  70.000000 9  -0.1025
  70.000000 10  -0.1896
  70.000000 11   0.9459
- 70.000000 12  -0.5113
- 70.000000 13  -0.9459
- 70.000000 14   4.7186
+ 70.000000 12   0.5113
+ 70.000000 13   0.9459
+ 70.000000 14  -4.7186
  71.000000 0   0.2405
  71.000000 1   0.6680
- 71.000000 2   3.0348
+ 71.000000 2  -3.0348
  71.000000 3  -0.2405
  71.000000 4  -0.6680
- 71.000000 5  -3.0348
+ 71.000000 5   3.0348
  71.000000 6  -0.0289
  71.000000 7  -0.0803
  71.000000 8   0.3649
  71.000000 9  -0.0803
  71.000000 10  -0.2231
  71.000000 11   1.0137
- 71.000000 12  -0.3649
- 71.000000 13  -1.0137
- 71.000000 14   4.6050
+ 71.000000 12   0.3649
+ 71.000000 13   1.0137
+ 71.000000 14  -4.6050
  72.000000 0   0.1399
  72.000000 1   0.7063
- 72.000000 2   2.9313
+ 72.000000 2  -2.9313
  72.000000 3  -0.1399
  72.000000 4  -0.7063
- 72.000000 5  -2.9313
+ 72.000000 5   2.9313
  72.000000 6  -0.0098
  72.000000 7  -0.0494
  72.000000 8   0.2051
  72.000000 9  -0.0494
  72.000000 10  -0.2494
  72.000000 11   1.0352
- 72.000000 12  -0.2051
- 72.000000 13  -1.0352
- 72.000000 14   4.2963
+ 72.000000 12   0.2051
+ 72.000000 13   1.0352
+ 72.000000 14  -4.2963
  73.000000 0   0.0333
  73.000000 1   0.7292
- 73.000000 2   2.7841
+ 73.000000 2  -2.7841
  73.000000 3  -0.0333
  73.000000 4  -0.7292
- 73.000000 5  -2.7841
+ 73.000000 5   2.7841
  73.000000 6  -0.0006
  73.000000 7  -0.0121
  73.000000 8   0.0463
  73.000000 9  -0.0121
  73.000000 10  -0.2659
  73.000000 11   1.0151
- 73.000000 12  -0.0463
- 73.000000 13  -1.0151
- 73.000000 14   3.8755
+ 73.000000 12   0.0463
+ 73.000000 13   1.0151
+ 73.000000 14  -3.8755
  74.000000 0  -0.0771
  74.000000 1   0.7360
- 74.000000 2   2.6252
+ 74.000000 2  -2.6252
  74.000000 3   0.0771
  74.000000 4  -0.7360
- 74.000000 5  -2.6252
+ 74.000000 5   2.6252
  74.000000 6  -0.0030
  74.000000 7   0.0284
  74.000000 8  -0.1012
  74.000000 9   0.0284
  74.000000 10  -0.2708
  74.000000 11   0.9660
- 74.000000 12   0.1012
- 74.000000 13  -0.9660
- 74.000000 14   3.4458
+ 74.000000 12  -0.1012
+ 74.000000 13   0.9660
+ 74.000000 14  -3.4458
  75.000000 0  -0.1888
  75.000000 1   0.7259
- 75.000000 2   2.4893
+ 75.000000 2  -2.4893
  75.000000 3   0.1888
  75.000000 4  -0.7259
- 75.000000 5  -2.4893
+ 75.000000 5   2.4893
  75.000000 6  -0.0178
  75.000000 7   0.0685
  75.000000 8  -0.2349
  75.000000 9   0.0685
  75.000000 10  -0.2634
  75.000000 11   0.9034
- 75.000000 12   0.2349
- 75.000000 13  -0.9034
- 75.000000 14   3.0983
+ 75.000000 12  -0.2349
+ 75.000000 13   0.9034
+ 75.000000 14  -3.0983
  76.000000 0  -0.2991
  76.000000 1   0.6987
- 76.000000 2   2.4060
+ 76.000000 2  -2.4060
  76.000000 3   0.2991
  76.000000 4  -0.6987
- 76.000000 5  -2.4060
+ 76.000000 5   2.4060
  76.000000 6  -0.0447
  76.000000 7   0.1045
  76.000000 8  -0.3598
  76.000000 9   0.1045
  76.000000 10  -0.2441
  76.000000 11   0.8405
- 76.000000 12   0.3598
- 76.000000 13  -0.8405
- 76.000000 14   2.8945
+ 76.000000 12  -0.3598
+ 76.000000 13   0.8405
+ 76.000000 14  -2.8945
  77.000000 0  -0.4054
  77.000000 1   0.6547
- 77.000000 2   2.3935
+ 77.000000 2  -2.3935
  77.000000 3   0.4054
  77.000000 4  -0.6547
- 77.000000 5  -2.3935
+ 77.000000 5   2.3935
  77.000000 6  -0.0822
  77.000000 7   0.1327
  77.000000 8  -0.4851
  77.000000 9   0.1327
  77.000000 10  -0.2143
  77.000000 11   0.7835
- 77.000000 12   0.4851
- 77.000000 13  -0.7835
- 77.000000 14   2.8645
+ 77.000000 12  -0.4851
+ 77.000000 13   0.7835
+ 77.000000 14  -2.8645
  78.000000 0  -0.5051
  78.000000 1   0.5943
- 78.000000 2   2.4545
+ 78.000000 2  -2.4545
  78.000000 3   0.5051
  78.000000 4  -0.5943
- 78.000000 5  -2.4545
+ 78.000000 5   2.4545
  78.000000 6  -0.1276
  78.000000 7   0.1501
  78.000000 8  -0.6199
  78.000000 9   0.1501
  78.000000 10  -0.1766
  78.000000 11   0.7294
- 78.000000 12   0.6199
- 78.000000 13  -0.7294
- 78.000000 14   3.0123
+ 78.000000 12  -0.6199
+ 78.000000 13   0.7294
+ 78.000000 14  -3.0123
  79.000000 0  -0.5958
  79.000000 1   0.5188
- 79.000000 2   2.5757
+ 79.000000 2  -2.5757
  79.000000 3   0.5958
  79.000000 4  -0.5188
- 79.000000 5  -2.5757
+ 79.000000 5   2.5757
  79.000000 6  -0.1775
  79.000000 7   0.1545
  79.000000 8  -0.7673
  79.000000 9   0.1545
  79.000000 10  -0.1346
  79.000000 11   0.6681
- 79.000000 12   0.7673
- 79.000000 13  -0.6681
- 79.000000 14   3.3171
+ 79.000000 12  -0.7673
+ 79.000000 13   0.6681
+ 79.000000 14  -3.3171
  80.000000 0  -0.6751
  80.000000 1   0.4293
- 80.000000 2   2.7307
+ 80.000000 2  -2.7307
  80.000000 3   0.6751
  80.000000 4  -0.4293
- 80.000000 5  -2.7307
+ 80.000000 5   2.7307
  80.000000 6  -0.2279
  80.000000 7   0.1449
  80.000000 8  -0.9217
  80.000000 9   0.1449
  80.000000 10  -0.0921
  80.000000 11   0.5861
- 80.000000 12   0.9217
- 80.000000 13  -0.5861
- 80.000000 14   3.7283
+ 80.000000 12  -0.9217
+ 80.000000 13   0.5861
+ 80.000000 14  -3.7283
  81.000000 0  -0.7408
  81.000000 1   0.3276
- 81.000000 2   2.8856
+ 81.000000 2  -2.8856
  81.000000 3   0.7408
  81.000000 4  -0.3276
- 81.000000 5  -2.8856
+ 81.000000 5   2.8856
  81.000000 6  -0.2744
  81.000000 7   0.1213
  81.000000 8  -1.0688
  81.000000 9   0.1213
  81.000000 10  -0.0537
  81.000000 11   0.4727
- 81.000000 12   1.0688
- 81.000000 13  -0.4727
- 81.000000 14   4.1634
+ 81.000000 12  -1.0688
+ 81.000000 13   0.4727
+ 81.000000 14  -4.1634
  82.000000 0  -0.7911
- 82.000000 1   0.2159
- 82.000000 2   3.0068
+ 82.000000 1   0.2158
+ 82.000000 2  -3.0068
  82.000000 3   0.7911
- 82.000000 4  -0.2159
- 82.000000 5  -3.0068
+ 82.000000 4  -0.2158
+ 82.000000 5   3.0068
  82.000000 6  -0.3129
  82.000000 7   0.0854
  82.000000 8  -1.1893
  82.000000 9   0.0854
  82.000000 10  -0.0233
  82.000000 11   0.3245
- 82.000000 12   1.1893
- 82.000000 13  -0.3245
- 82.000000 14   4.5204
+ 82.000000 12  -1.1893
+ 82.000000 13   0.3245
+ 82.000000 14  -4.5204
  83.000000 0  -0.8244
  83.000000 1   0.0964
- 83.000000 2   3.0678
+ 83.000000 2  -3.0678
  83.000000 3   0.8244
  83.000000 4  -0.0964
- 83.000000 5  -3.0678
+ 83.000000 5   3.0678
  83.000000 6  -0.3398
  83.000000 7   0.0397
  83.000000 8  -1.2645
  83.000000 9   0.0397
  83.000000 10  -0.0046
  83.000000 11   0.1478
- 83.000000 12   1.2645
- 83.000000 13  -0.1478
- 83.000000 14   4.7057
+ 83.000000 12  -1.2645
+ 83.000000 13   0.1478
+ 83.000000 14  -4.7057
  84.000000 0  -0.8395
  84.000000 1  -0.0282
- 84.000000 2   3.0553
+ 84.000000 2  -3.0553
  84.000000 3   0.8395
  84.000000 4   0.0282
- 84.000000 5  -3.0553
+ 84.000000 5   3.0553
  84.000000 6  -0.3524
  84.000000 7  -0.0119
  84.000000 8  -1.2825
  84.000000 9  -0.0119
  84.000000 10  -0.0004
  84.000000 11  -0.0431
- 84.000000 12   1.2825
- 84.000000 13   0.0431
- 84.000000 14   4.6674
+ 84.000000 12  -1.2825
+ 84.000000 13  -0.0431
+ 84.000000 14  -4.6674
  85.000000 0  -0.8357
  85.000000 1  -0.1552
- 85.000000 2   2.9720
+ 85.000000 2  -2.9720
  85.000000 3   0.8357
  85.000000 4   0.1552
- 85.000000 5  -2.9720
+ 85.000000 5   2.9720
  85.000000 6  -0.3492
  85.000000 7  -0.0649
  85.000000 8  -1.2419
  85.000000 9  -0.0649
  85.000000 10  -0.0120
  85.000000 11  -0.2306
- 85.000000 12   1.2419
- 85.000000 13   0.2306
- 85.000000 14   4.4165
+ 85.000000 12  -1.2419
+ 85.000000 13  -0.2306
+ 85.000000 14  -4.4165
  86.000000 0  -0.8126
  86.000000 1  -0.2816
- 86.000000 2   2.8361
+ 86.000000 2  -2.8361
  86.000000 3   0.8126
  86.000000 4   0.2816
- 86.000000 5  -2.8361
+ 86.000000 5   2.8361
  86.000000 6  -0.3301
  86.000000 7  -0.1144
  86.000000 8  -1.1523
  86.000000 9  -0.1144
  86.000000 10  -0.0397
  86.000000 11  -0.3994
- 86.000000 12   1.1523
- 86.000000 13   0.3994
- 86.000000 14   4.0218
+ 86.000000 12  -1.1523
+ 86.000000 13  -0.3994
+ 86.000000 14  -4.0218
  87.000000 0  -0.7702
  87.000000 1  -0.4045
- 87.000000 2   2.6773
+ 87.000000 2  -2.6773
  87.000000 3   0.7702
  87.000000 4   0.4045
- 87.000000 5  -2.6773
+ 87.000000 5   2.6773
  87.000000 6  -0.2966
  87.000000 7  -0.1558
  87.000000 8  -1.0310
  87.000000 9  -0.1558
  87.000000 10  -0.0818
  87.000000 11  -0.5415
- 87.000000 12   1.0310
- 87.000000 13   0.5415
- 87.000000 14   3.5839
+ 87.000000 12  -1.0310
+ 87.000000 13  -0.5415
+ 87.000000 14  -3.5839
  88.000000 0  -0.7092
  88.000000 1  -0.5210
- 88.000000 2   2.5300
+ 88.000000 2  -2.5300
  88.000000 3   0.7092
  88.000000 4   0.5210
- 88.000000 5  -2.5300
+ 88.000000 5   2.5300
  88.000000 6  -0.2515
  88.000000 7  -0.1847
  88.000000 8  -0.8971
  88.000000 9  -0.1847
  88.000000 10  -0.1357
  88.000000 11  -0.6591
- 88.000000 12   0.8971
- 88.000000 13   0.6591
- 88.000000 14   3.2006
+ 88.000000 12  -0.8971
+ 88.000000 13  -0.6591
+ 88.000000 14  -3.2006
  89.000000 0  -0.6304
  89.000000 1  -0.6282
- 89.000000 2   2.4265
+ 89.000000 2  -2.4265
  89.000000 3   0.6304
  89.000000 4   0.6282
- 89.000000 5  -2.4265
+ 89.000000 5   2.4265
  89.000000 6  -0.1987
  89.000000 7  -0.1980
  89.000000 8  -0.7649
  89.000000 9  -0.1980
  89.000000 10  -0.1973
  89.000000 11  -0.7622
- 89.000000 12   0.7649
- 89.000000 13   0.7622
- 89.000000 14   2.9440
+ 89.000000 12  -0.7649
+ 89.000000 13  -0.7622
+ 89.000000 14  -2.9440
  90.000000 0  -0.5354
  90.000000 1  -0.7234
- 90.000000 2   2.3893
+ 90.000000 2  -2.3893
  90.000000 3   0.5354
  90.000000 4   0.7234
- 90.000000 5  -2.3893
+ 90.000000 5   2.3893
  90.000000 6  -0.1433
  90.000000 7  -0.1937
  90.000000 8  -0.6397
  90.000000 9  -0.1937
  90.000000 10  -0.2617
  90.000000 11  -0.8642
- 90.000000 12   0.6397
- 90.000000 13   0.8642
- 90.000000 14   2.8544
+ 90.000000 12  -0.6397
+ 90.000000 13  -0.8642
+ 90.000000 14  -2.8544
  91.000000 0  -0.4260
  91.000000 1  -0.8041
- 91.000000 2   2.4265
+ 91.000000 2  -2.4265
  91.000000 3   0.4260
  91.000000 4   0.8041
- 91.000000 5  -2.4265
+ 91.000000 5   2.4265
  91.000000 6  -0.0907
  91.000000 7  -0.1713
  91.000000 8  -0.5168
  91.000000 9  -0.1713
  91.000000 10  -0.3233
  91.000000 11  -0.9756
- 91.000000 12   0.5168
- 91.000000 13   0.9756
- 91.000000 14   2.9440
- 92.000000 0  -0.3043
+ 91.000000 12  -0.5168
+ 91.000000 13  -0.9756
+ 91.000000 14  -2.9440
+ 92.000000 0  -0.3044
  92.000000 1  -0.8682
- 92.000000 2   2.5300
- 92.000000 3   0.3043
+ 92.000000 2  -2.5300
+ 92.000000 3   0.3044
  92.000000 4   0.8682
- 92.000000 5  -2.5300
+ 92.000000 5   2.5300
  92.000000 6  -0.0463
  92.000000 7  -0.1321
  92.000000 8  -0.3850
  92.000000 9  -0.1321
  92.000000 10  -0.3769
  92.000000 11  -1.0983
- 92.000000 12   0.3850
- 92.000000 13   1.0983
- 92.000000 14   3.2006
+ 92.000000 12  -0.3850
+ 92.000000 13  -1.0983
+ 92.000000 14  -3.2006
  93.000000 0  -0.1731
  93.000000 1  -0.9138
- 93.000000 2   2.6773
+ 93.000000 2  -2.6773
  93.000000 3   0.1731
  93.000000 4   0.9138
- 93.000000 5  -2.6773
+ 93.000000 5   2.6773
  93.000000 6  -0.0150
  93.000000 7  -0.0791
  93.000000 8  -0.2317
  93.000000 9  -0.0791
  93.000000 10  -0.4175
  93.000000 11  -1.2232
- 93.000000 12   0.2317
- 93.000000 13   1.2232
- 93.000000 14   3.5839
+ 93.000000 12  -0.2317
+ 93.000000 13  -1.2232
+ 93.000000 14  -3.5839
  94.000000 0  -0.0349
- 94.000000 1  -0.9394
- 94.000000 2   2.8361
+ 94.000000 1  -0.9393
+ 94.000000 2  -2.8361
  94.000000 3   0.0349
- 94.000000 4   0.9394
- 94.000000 5  -2.8361
+ 94.000000 4   0.9393
+ 94.000000 5   2.8361
  94.000000 6  -0.0006
  94.000000 7  -0.0164
  94.000000 8  -0.0495
  94.000000 9  -0.0164
  94.000000 10  -0.4412
  94.000000 11  -1.3321
- 94.000000 12   0.0495
- 94.000000 13   1.3321
- 94.000000 14   4.0218
+ 94.000000 12  -0.0495
+ 94.000000 13  -1.3321
+ 94.000000 14  -4.0218
  95.000000 0   0.1070
  95.000000 1  -0.9440
- 95.000000 2   2.9720
+ 95.000000 2  -2.9720
  95.000000 3  -0.1070
  95.000000 4   0.9440
- 95.000000 5  -2.9720
+ 95.000000 5   2.9720
  95.000000 6  -0.0057
  95.000000 7   0.0505
  95.000000 8   0.1589
  95.000000 9   0.0505
  95.000000 10  -0.4455
  95.000000 11  -1.4027
- 95.000000 12  -0.1589
- 95.000000 13   1.4027
- 95.000000 14   4.4165
+ 95.000000 12   0.1589
+ 95.000000 13  -1.4027
+ 95.000000 14  -4.4165
  96.000000 0   0.2494
  96.000000 1  -0.9270
- 96.000000 2   3.0553
+ 96.000000 2  -3.0553
  96.000000 3  -0.2494
  96.000000 4   0.9270
- 96.000000 5  -3.0553
+ 96.000000 5   3.0553
  96.000000 6  -0.0311
  96.000000 7   0.1156
  96.000000 8   0.3810
  96.000000 9   0.1156
  96.000000 10  -0.4297
  96.000000 11  -1.4162
- 96.000000 12  -0.3810
- 96.000000 13   1.4162
- 96.000000 14   4.6674
+ 96.000000 12   0.3810
+ 96.000000 13  -1.4162
+ 96.000000 14  -4.6674
  97.000000 0   0.3892
  97.000000 1  -0.8885
- 97.000000 2   3.0678
+ 97.000000 2  -3.0678
  97.000000 3  -0.3892
  97.000000 4   0.8885
- 97.000000 5  -3.0678
+ 97.000000 5   3.0678
  97.000000 6  -0.0757
  97.000000 7   0.1729
  97.000000 8   0.5969
  97.000000 9   0.1729
  97.000000 10  -0.3947
  97.000000 11  -1.3629
- 97.000000 12  -0.5969
- 97.000000 13   1.3629
- 97.000000 14   4.7057
+ 97.000000 12   0.5969
+ 97.000000 13  -1.3629
+ 97.000000 14  -4.7057
  98.000000 0   0.5229
  98.000000 1  -0.8288
- 98.000000 2   3.0068
+ 98.000000 2  -3.0068
  98.000000 3  -0.5229
  98.000000 4   0.8288
- 98.000000 5  -3.0068
+ 98.000000 5   3.0068
  98.000000 6  -0.1367
  98.000000 7   0.2167
  98.000000 8   0.7861
  98.000000 9   0.2167
  98.000000 10  -0.3435
  98.000000 11  -1.2461
- 98.000000 12  -0.7861
- 98.000000 13   1.2461
- 98.000000 14   4.5204
+ 98.000000 12   0.7861
+ 98.000000 13  -1.2461
+ 98.000000 14  -4.5204
  99.000000 0   0.6474
  99.000000 1  -0.7489
- 99.000000 2   2.8856
+ 99.000000 2  -2.8856
  99.000000 3  -0.6474
  99.000000 4   0.7489
- 99.000000 5  -2.8856
+ 99.000000 5   2.8856
  99.000000 6  -0.2096
  99.000000 7   0.2424
  99.000000 8   0.9341
  99.000000 9   0.2424
  99.000000 10  -0.2805
  99.000000 11  -1.0806
- 99.000000 12  -0.9341
- 99.000000 13   1.0806
- 99.000000 14   4.1634
+ 99.000000 12   0.9341
+ 99.000000 13  -1.0806
+ 99.000000 14  -4.1634
  100.000000 0   0.7597
  100.000000 1  -0.6503
- 100.000000 2   2.7307
+ 100.000000 2  -2.7307
  100.000000 3  -0.7597
  100.000000 4   0.6503
- 100.000000 5  -2.7307
+ 100.000000 5   2.7307
  100.000000 6  -0.2886
  100.000000 7   0.2470
  100.000000 8   1.0372
  100.000000 9   0.2470
  100.000000 10  -0.2114
  100.000000 11  -0.8879
- 100.000000 12  -1.0372
- 100.000000 13   0.8879
- 100.000000 14   3.7283
+ 100.000000 12   1.0372
+ 100.000000 13  -0.8879
+ 100.000000 14  -3.7283
  101.000000 0   0.8568
  101.000000 1  -0.5348
- 101.000000 2   2.5757
+ 101.000000 2  -2.5757
  101.000000 3  -0.8568
  101.000000 4   0.5348
- 101.000000 5  -2.5757
+ 101.000000 5   2.5757
  101.000000 6  -0.3671
  101.000000 7   0.2291
  101.000000 8   1.1035
  101.000000 9   0.2291
  101.000000 10  -0.1430
  101.000000 11  -0.6887
- 101.000000 12  -1.1035
- 101.000000 13   0.6887
- 101.000000 14   3.3171
+ 101.000000 12   1.1035
+ 101.000000 13  -0.6887
+ 101.000000 14  -3.3171
  102.000000 0   0.9363
  102.000000 1  -0.4047
- 102.000000 2   2.4545
+ 102.000000 2  -2.4545
  102.000000 3  -0.9363
  102.000000 4   0.4047
- 102.000000 5  -2.4545
+ 102.000000 5   2.4545
  102.000000 6  -0.4383
  102.000000 7   0.1894
  102.000000 8   1.1491
  102.000000 9   0.1894
  102.000000 10  -0.0819
  102.000000 11  -0.4966
- 102.000000 12  -1.1491
- 102.000000 13   0.4966
- 102.000000 14   3.0123
+ 102.000000 12   1.1491
+ 102.000000 13  -0.4966
+ 102.000000 14  -3.0123
  103.000000 0   0.9959
  103.000000 1  -0.2628
- 103.000000 2   2.3935
+ 103.000000 2  -2.3935
  103.000000 3  -0.9959
  103.000000 4   0.2628
- 103.000000 5  -2.3935
+ 103.000000 5   2.3935
  103.000000 6  -0.4959
  103.000000 7   0.1308
  103.000000 8   1.1919
  103.000000 9   0.1308
  103.000000 10  -0.0345
  103.000000 11  -0.3145
- 103.000000 12  -1.1919
- 103.000000 13   0.3145
- 103.000000 14   2.8645
+ 103.000000 12   1.1919
+ 103.000000 13  -0.3145
+ 103.000000 14  -2.8645
  104.000000 0   1.0339
  104.000000 1  -0.1121
- 104.000000 2   2.4060
+ 104.000000 2  -2.4060
  104.000000 3  -1.0339
  104.000000 4   0.1121
- 104.000000 5  -2.4060
+ 104.000000 5   2.4060
  104.000000 6  -0.5345
  104.000000 7   0.0579
  104.000000 8   1.2439
  104.000000 9   0.0579
  104.000000 10  -0.0063
  104.000000 11  -0.1348
- 104.000000 12  -1.2439
- 104.000000 13   0.1348
- 104.000000 14   2.8945
+ 104.000000 12   1.2439
+ 104.000000 13  -0.1348
+ 104.000000 14  -2.8945
  105.000000 0   1.0491
  105.000000 1   0.0441
- 105.000000 2   2.4893
+ 105.000000 2  -2.4893
  105.000000 3  -1.0491
  105.000000 4  -0.0441
- 105.000000 5  -2.4893
+ 105.000000 5   2.4893
  105.000000 6  -0.5503
  105.000000 7  -0.0231
  105.000000 8   1.3057
  105.000000 9  -0.0231
  105.000000 10  -0.0010
  105.000000 11   0.0549
- 105.000000 12  -1.3057
- 105.000000 13  -0.0549
- 105.000000 14   3.0983
+ 105.000000 12   1.3057
+ 105.000000 13   0.0549
+ 105.000000 14  -3.0983
  106.000000 0   1.0405
  106.000000 1   0.2023
- 106.000000 2   2.6252
+ 106.000000 2  -2.6252
  106.000000 3  -1.0405
  106.000000 4  -0.2023
- 106.000000 5  -2.6252
+ 106.000000 5   2.6252
  106.000000 6  -0.5413
  106.000000 7  -0.1053
  106.000000 8   1.3658
  106.000000 9  -0.1053
  106.000000 10  -0.0205
  106.000000 11   0.2656
- 106.000000 12  -1.3658
- 106.000000 13  -0.2656
- 106.000000 14   3.4458
+ 106.000000 12   1.3658
+ 106.000000 13   0.2656
+ 106.000000 14  -3.4458
  107.000000 0   1.0080
  107.000000 1   0.3589
- 107.000000 2   2.7841
+ 107.000000 2  -2.7841
  107.000000 3  -1.0080
  107.000000 4  -0.3589
- 107.000000 5  -2.7841
- 107.000000 6  -0.5080
+ 107.000000 5   2.7841
+ 107.000000 6  -0.5081
  107.000000 7  -0.1809
  107.000000 8   1.4032
  107.000000 9  -0.1809
  107.000000 10  -0.0644
  107.000000 11   0.4996
- 107.000000 12  -1.4032
- 107.000000 13  -0.4996
- 107.000000 14   3.8755
+ 107.000000 12   1.4032
+ 107.000000 13   0.4996
+ 107.000000 14  -3.8755
  108.000000 0   0.9519
  108.000000 1   0.5102
- 108.000000 2   2.9313
+ 108.000000 2  -2.9313
  108.000000 3  -0.9519
  108.000000 4  -0.5102
- 108.000000 5  -2.9313
+ 108.000000 5   2.9313
  108.000000 6  -0.4530
  108.000000 7  -0.2428
  108.000000 8   1.3951
  108.000000 9  -0.2428
  108.000000 10  -0.1302
  108.000000 11   0.7478
- 108.000000 12  -1.3951
- 108.000000 13  -0.7478
- 108.000000 14   4.2963
+ 108.000000 12   1.3951
+ 108.000000 13   0.7478
+ 108.000000 14  -4.2963
  109.000000 0   0.8730
  109.000000 1   0.6527
- 109.000000 2   3.0348
+ 109.000000 2  -3.0348
  109.000000 3  -0.8730
  109.000000 4  -0.6527
- 109.000000 5  -3.0348
+ 109.000000 5   3.0348
  109.000000 6  -0.3810
  109.000000 7  -0.2849
  109.000000 8   1.3246
  109.000000 9  -0.2849
  109.000000 10  -0.2130
  109.000000 11   0.9904
- 109.000000 12  -1.3246
- 109.000000 13  -0.9904
- 109.000000 14   4.6050
+ 109.000000 12   1.3246
+ 109.000000 13   0.9904
+ 109.000000 14  -4.6050
  110.000000 0   0.7726
  110.000000 1   0.7830
- 110.000000 2   3.0720
+ 110.000000 2  -3.0720
  110.000000 3  -0.7726
  110.000000 4  -0.7830
- 110.000000 5  -3.0720
+ 110.000000 5   3.0720
  110.000000 6  -0.2985
  110.000000 7  -0.3025
  110.000000 8   1.1868
  110.000000 9  -0.3025
  110.000000 10  -0.3065
  110.000000 11   1.2026
- 110.000000 12  -1.1868
- 110.000000 13  -1.2026
- 110.000000 14   4.7186
+ 110.000000 12   1.1868
+ 110.000000 13   1.2026
+ 110.000000 14  -4.7186
  111.000000 0   0.6528
  111.000000 1   0.8977
- 111.000000 2   3.0348
+ 111.000000 2  -3.0348
  111.000000 3  -0.6528
  111.000000 4  -0.8977
- 111.000000 5  -3.0348
+ 111.000000 5   3.0348
  111.000000 6  -0.2131
  111.000000 7  -0.2930
  111.000000 8   0.9906
  111.000000 9  -0.2930
  111.000000 10  -0.4030
  111.000000 11   1.3622
- 111.000000 12  -0.9906
- 111.000000 13  -1.3622
- 111.000000 14   4.6050
+ 111.000000 12   0.9906
+ 111.000000 13   1.3622
+ 111.000000 14  -4.6050
  112.000000 0   0.5160
  112.000000 1   0.9941
- 112.000000 2   2.9313
+ 112.000000 2  -2.9313
  112.000000 3  -0.5160
  112.000000 4  -0.9941
- 112.000000 5  -2.9313
+ 112.000000 5   2.9313
  112.000000 6  -0.1331
  112.000000 7  -0.2565
  112.000000 8   0.7562
  112.000000 9  -0.2565
  112.000000 10  -0.4941
  112.000000 11   1.4570
- 112.000000 12  -0.7562
- 112.000000 13  -1.4570
- 112.000000 14   4.2963
+ 112.000000 12   0.7562
+ 112.000000 13   1.4570
+ 112.000000 14  -4.2963
  113.000000 0   0.3648
  113.000000 1   1.0695
- 113.000000 2   2.7841
+ 113.000000 2  -2.7841
  113.000000 3  -0.3648
  113.000000 4  -1.0695
- 113.000000 5  -2.7841
+ 113.000000 5   2.7841
  113.000000 6  -0.0666
  113.000000 7  -0.1951
  113.000000 8   0.5079
  113.000000 9  -0.1951
  113.000000 10  -0.5719
  113.000000 11   1.4888
- 113.000000 12  -0.5079
- 113.000000 13  -1.4888
- 113.000000 14   3.8755
+ 113.000000 12   0.5079
+ 113.000000 13   1.4888
+ 113.000000 14  -3.8755
  114.000000 0   0.2027
  114.000000 1   1.1218
- 114.000000 2   2.6252
+ 114.000000 2  -2.6252
  114.000000 3  -0.2027
  114.000000 4  -1.1218
- 114.000000 5  -2.6252
+ 114.000000 5   2.6252
  114.000000 6  -0.0205
  114.000000 7  -0.1137
  114.000000 8   0.2661
  114.000000 9  -0.1137
  114.000000 10  -0.6293
  114.000000 11   1.4725
- 114.000000 12  -0.2661
- 114.000000 13  -1.4725
- 114.000000 14   3.4458
+ 114.000000 12   0.2661
+ 114.000000 13   1.4725
+ 114.000000 14  -3.4458
  115.000000 0   0.0331
  115.000000 1   1.1495
- 115.000000 2   2.4893
+ 115.000000 2  -2.4893
  115.000000 3  -0.0331
  115.000000 4  -1.1495
- 115.000000 5  -2.4893
+ 115.000000 5   2.4893
  115.000000 6  -0.0005
  115.000000 7  -0.0190
  115.000000 8   0.0412
  115.000000 9  -0.0190
  115.000000 10  -0.6607
  115.000000 11   1.4308
- 115.000000 12  -0.0412
- 115.000000 13  -1.4308
- 115.000000 14   3.0983
+ 115.000000 12   0.0412
+ 115.000000 13   1.4308
+ 115.000000 14  -3.0983
  116.000000 0  -0.1403
  116.000000 1   1.1515
- 116.000000 2   2.4060
+ 116.000000 2  -2.4060
  116.000000 3   0.1403
  116.000000 4  -1.1515
- 116.000000 5  -2.4060
+ 116.000000 5   2.4060
  116.000000 6  -0.0098
  116.000000 7   0.0808
  116.000000 8  -0.1688
  116.000000 9   0.0808
  116.000000 10  -0.6630
  116.000000 11   1.3853
- 116.000000 12   0.1688
- 116.000000 13  -1.3853
- 116.000000 14   2.8945
+ 116.000000 12  -0.1688
+ 116.000000 13   1.3853
+ 116.000000 14  -2.8945
  117.000000 0  -0.3135
  117.000000 1   1.1272
- 117.000000 2   2.3935
+ 117.000000 2  -2.3935
  117.000000 3   0.3135
  117.000000 4  -1.1272
- 117.000000 5  -2.3935
+ 117.000000 5   2.3935
  117.000000 6  -0.0491
  117.000000 7   0.1767
  117.000000 8  -0.3752
  117.000000 9   0.1767
  117.000000 10  -0.6353
  117.000000 11   1.3490
- 117.000000 12   0.3752
- 117.000000 13  -1.3490
- 117.000000 14   2.8645
+ 117.000000 12  -0.3752
+ 117.000000 13   1.3490
+ 117.000000 14  -2.8645
  118.000000 0  -0.4825
  118.000000 1   1.0768
- 118.000000 2   2.4545
+ 118.000000 2  -2.4545
  118.000000 3   0.4825
  118.000000 4  -1.0768
- 118.000000 5  -2.4545
+ 118.000000 5   2.4545
  118.000000 6  -0.1164
  118.000000 7   0.2598
  118.000000 8  -0.5921
  118.000000 9   0.2598
  118.000000 10  -0.5798
  118.000000 11   1.3216
- 118.000000 12   0.5921
- 118.000000 13  -1.3216
- 118.000000 14   3.0123
+ 118.000000 12  -0.5921
+ 118.000000 13   1.3216
+ 118.000000 14  -3.0123
  119.000000 0  -0.6434
  119.000000 1   1.0011
- 119.000000 2   2.5757
+ 119.000000 2  -2.5757
  119.000000 3   0.6434
  119.000000 4  -1.0011
- 119.000000 5  -2.5757
+ 119.000000 5   2.5757
  119.000000 6  -0.2070
  119.000000 7   0.3220
  119.000000 8  -0.8286
  119.000000 9   0.3220
  119.000000 10  -0.5011
  119.000000 11   1.2892
- 119.000000 12   0.8286
- 119.000000 13  -1.2892
- 119.000000 14   3.3171
+ 119.000000 12  -0.8286
+ 119.000000 13   1.2892
+ 119.000000 14  -3.3171
  120.000000 0  -0.7924
  120.000000 1   0.9012
- 120.000000 2   2.7307
+ 120.000000 2  -2.7307
  120.000000 3   0.7924
  120.000000 4  -0.9012
- 120.000000 5  -2.7307
+ 120.000000 5   2.7307
  120.000000 6  -0.3139
  120.000000 7   0.3570
  120.000000 8  -1.0819
  120.000000 9   0.3570
  120.000000 10  -0.4061
  120.000000 11   1.2304
- 120.000000 12   1.0819
- 120.000000 13  -1.2304
- 120.000000 14   3.7283
+ 120.000000 12  -1.0819
+ 120.000000 13   1.2304
+ 120.000000 14  -3.7283
  121.000000 0  -0.9258
  121.000000 1   0.7791
- 121.000000 2   2.8856
+ 121.000000 2  -2.8856
  121.000000 3   0.9258
  121.000000 4  -0.7791
- 121.000000 5  -2.8856
+ 121.000000 5   2.8856
  121.000000 6  -0.4286
  121.000000 7   0.3606
  121.000000 8  -1.3358
  121.000000 9   0.3606
  121.000000 10  -0.3035
  121.000000 11   1.1241
- 121.000000 12   1.3358
- 121.000000 13  -1.1241
- 121.000000 14   4.1634
+ 121.000000 12  -1.3358
+ 121.000000 13   1.1241
+ 121.000000 14  -4.1634
  122.000000 0  -1.0404
  122.000000 1   0.6372
- 122.000000 2   3.0068
+ 122.000000 2  -3.0068
  122.000000 3   1.0404
  122.000000 4  -0.6372
- 122.000000 5  -3.0068
+ 122.000000 5   3.0068
  122.000000 6  -0.5412
  122.000000 7   0.3315
  122.000000 8  -1.5641
  122.000000 9   0.3315
  122.000000 10  -0.2030
  122.000000 11   0.9580
- 122.000000 12   1.5641
- 122.000000 13  -0.9580
- 122.000000 14   4.5204
+ 122.000000 12  -1.5641
+ 122.000000 13   0.9580
+ 122.000000 14  -4.5204
  123.000000 0  -1.1331
  123.000000 1   0.4785
- 123.000000 2   3.0678
+ 123.000000 2  -3.0678
  123.000000 3   1.1331
  123.000000 4  -0.4785
- 123.000000 5  -3.0678
+ 123.000000 5   3.0678
  123.000000 6  -0.6420
  123.000000 7   0.2711
  123.000000 8  -1.7381
  123.000000 9   0.2711
  123.000000 10  -0.1145
  123.000000 11   0.7339
- 123.000000 12   1.7381
- 123.000000 13  -0.7339
- 123.000000 14   4.7057
+ 123.000000 12  -1.7381
+ 123.000000 13   0.7339
+ 123.000000 14  -4.7057
  124.000000 0  -1.2016
  124.000000 1   0.3062
- 124.000000 2   3.0553
+ 124.000000 2  -3.0553
  124.000000 3   1.2016
  124.000000 4  -0.3062
- 124.000000 5  -3.0553
+ 124.000000 5   3.0553
  124.000000 6  -0.7219
  124.000000 7   0.1840
  124.000000 8  -1.8356
  124.000000 9   0.1840
  124.000000 10  -0.0469
  124.000000 11   0.4678
- 124.000000 12   1.8356
- 124.000000 13  -0.4678
- 124.000000 14   4.6674
+ 124.000000 12  -1.8356
+ 124.000000 13   0.4678
+ 124.000000 14  -4.6674
  125.000000 0  -1.2438
  125.000000 1   0.1242
- 125.000000 2   2.9720
+ 125.000000 2  -2.9720
  125.000000 3   1.2438
  125.000000 4  -0.1242
- 125.000000 5  -2.9720
+ 125.000000 5   2.9720
  125.000000 6  -0.7735
  125.000000 7   0.0773
  125.000000 8  -1.8483
  125.000000 9   0.0773
  125.000000 10  -0.0077
  125.000000 11   0.1846
- 125.000000 12   1.8483
- 125.000000 13  -0.1846
- 125.000000 14   4.4165
+ 125.000000 12  -1.8483
+ 125.000000 13   0.1846
+ 125.000000 14  -4.4165
  126.000000 0  -1.2584
  126.000000 1  -0.0635
- 126.000000 2   2.8361
+ 126.000000 2  -2.8361
  126.000000 3   1.2584
  126.000000 4   0.0635
- 126.000000 5  -2.8361
+ 126.000000 5   2.8361
  126.000000 6  -0.7918
  126.000000 7  -0.0400
  126.000000 8  -1.7845
  126.000000 9  -0.0400
  126.000000 10  -0.0020
  126.000000 11  -0.0901
- 126.000000 12   1.7845
- 126.000000 13   0.0901
- 126.000000 14   4.0218
+ 126.000000 12  -1.7845
+ 126.000000 13  -0.0901
+ 126.000000 14  -4.0218
  127.000000 0  -1.2446
  127.000000 1  -0.2529
- 127.000000 2   2.6773
+ 127.000000 2  -2.6773
  127.000000 3   1.2446
  127.000000 4   0.2529
- 127.000000 5  -2.6773
+ 127.000000 5   2.6773
  127.000000 6  -0.7745
  127.000000 7  -0.1574
  127.000000 8  -1.6660
  127.000000 9  -0.1574
  127.000000 10  -0.0320
  127.000000 11  -0.3385
- 127.000000 12   1.6660
- 127.000000 13   0.3385
- 127.000000 14   3.5839
+ 127.000000 12  -1.6660
+ 127.000000 13  -0.3385
+ 127.000000 14  -3.5839
  128.000000 0  -1.2022
  128.000000 1  -0.4394
- 128.000000 2   2.5300
+ 128.000000 2  -2.5300
  128.000000 3   1.2022
  128.000000 4   0.4394
- 128.000000 5  -2.5300
+ 128.000000 5   2.5300
  128.000000 6  -0.7226
  128.000000 7  -0.2642
  128.000000 8  -1.5208
  128.000000 9  -0.2642
  128.000000 10  -0.0966
  128.000000 11  -0.5559
- 128.000000 12   1.5208
- 128.000000 13   0.5559
- 128.000000 14   3.2006
+ 128.000000 12  -1.5208
+ 128.000000 13  -0.5559
+ 128.000000 14  -3.2006
  129.000000 0  -1.1318
  129.000000 1  -0.6190
- 129.000000 2   2.4265
+ 129.000000 2  -2.4265
  129.000000 3   1.1318
  129.000000 4   0.6190
- 129.000000 5  -2.4265
+ 129.000000 5   2.4265
  129.000000 6  -0.6405
  129.000000 7  -0.3503
  129.000000 8  -1.3732
  129.000000 9  -0.3503
  129.000000 10  -0.1916
  129.000000 11  -0.7510
- 129.000000 12   1.3732
- 129.000000 13   0.7510
- 129.000000 14   2.9440
+ 129.000000 12  -1.3732
+ 129.000000 13  -0.7510
+ 129.000000 14  -2.9440
  130.000000 0  -1.0346
  130.000000 1  -0.7872
- 130.000000 2   2.3893
+ 130.000000 2  -2.3893
  130.000000 3   1.0346
  130.000000 4   0.7872
- 130.000000 5  -2.3893
+ 130.000000 5   2.3893
  130.000000 6  -0.5352
  130.000000 7  -0.4072
  130.000000 8  -1.2359
  130.000000 9  -0.4072
  130.000000 10  -0.3098
  130.000000 11  -0.9404
- 130.000000 12   1.2359
- 130.000000 13   0.9404
- 130.000000 14   2.8544
+ 130.000000 12  -1.2359
+ 130.000000 13  -0.9404
+ 130.000000 14  -2.8544
  131.000000 0  -0.9123
  131.000000 1  -0.9401
- 131.000000 2   2.4265
+ 131.000000 2  -2.4265
  131.000000 3   0.9123
  131.000000 4   0.9401
- 131.000000 5  -2.4265
+ 131.000000 5   2.4265
  131.000000 6  -0.4161
  131.000000 7  -0.4288
  131.000000 8  -1.1068
  131.000000 9  -0.4288
  131.000000 10  -0.4419
  131.000000 11  -1.1406
- 131.000000 12   1.1068
- 131.000000 13   1.1406
- 131.000000 14   2.9440
+ 131.000000 12  -1.1068
+ 131.000000 13  -1.1406
+ 131.000000 14  -2.9440
  132.000000 0  -0.7673
- 132.000000 1  -1.0740
- 132.000000 2   2.5300
+ 132.000000 1  -1.0741
+ 132.000000 2  -2.5300
  132.000000 3   0.7673
- 132.000000 4   1.0740
- 132.000000 5  -2.5300
+ 132.000000 4   1.0741
+ 132.000000 5   2.5300
  132.000000 6  -0.2944
  132.000000 7  -0.4121
  132.000000 8  -0.9707
  132.000000 9  -0.4121
  132.000000 10  -0.5768
  132.000000 11  -1.3587
- 132.000000 12   0.9707
- 132.000000 13   1.3587
- 132.000000 14   3.2006
+ 132.000000 12  -0.9707
+ 132.000000 13  -1.3587
+ 132.000000 14  -3.2006
  133.000000 0  -0.6028
  133.000000 1  -1.1856
- 133.000000 2   2.6773
+ 133.000000 2  -2.6773
  133.000000 3   0.6028
  133.000000 4   1.1856
- 133.000000 5  -2.6773
+ 133.000000 5   2.6773
  133.000000 6  -0.1817
  133.000000 7  -0.3573
  133.000000 8  -0.8069
  133.000000 9  -0.3573
  133.000000 10  -0.7028
  133.000000 11  -1.5870
- 133.000000 12   0.8069
- 133.000000 13   1.5870
- 133.000000 14   3.5839
+ 133.000000 12  -0.8069
+ 133.000000 13  -1.5870
+ 133.000000 14  -3.5839
  134.000000 0  -0.4220
  134.000000 1  -1.2718
- 134.000000 2   2.8361
+ 134.000000 2  -2.8361
  134.000000 3   0.4220
  134.000000 4   1.2718
- 134.000000 5  -2.8361
+ 134.000000 5   2.8361
  134.000000 6  -0.0890
  134.000000 7  -0.2683
  134.000000 8  -0.5984
  134.000000 9  -0.2683
  134.000000 10  -0.8088
  134.000000 11  -1.8035
- 134.000000 12   0.5984
- 134.000000 13   1.8035
- 134.000000 14   4.0218
+ 134.000000 12  -0.5984
+ 134.000000 13  -1.8035
+ 134.000000 14  -4.0218
  135.000000 0  -0.2289
  135.000000 1  -1.3305
- 135.000000 2   2.9720
+ 135.000000 2  -2.9720
  135.000000 3   0.2289
  135.000000 4   1.3305
- 135.000000 5  -2.9720
+ 135.000000 5   2.9720
  135.000000 6  -0.0262
  135.000000 7  -0.1522
  135.000000 8  -0.3401
  135.000000 9  -0.1522
  135.000000 10  -0.8851
  135.000000 11  -1.9771
- 135.000000 12   0.3401
- 135.000000 13   1.9771
- 135.000000 14   4.4165
+ 135.000000 12  -0.3401
+ 135.000000 13  -1.9771
+ 135.000000 14  -4.4165
  136.000000 0  -0.0277
  136.000000 1  -1.3597
- 136.000000 2   3.0553
+ 136.000000 2  -3.0553
  136.000000 3   0.0277
  136.000000 4   1.3597
- 136.000000 5  -3.0553
+ 136.000000 5   3.0553
  136.000000 6  -0.0004
  136.000000 7  -0.0188
  136.000000 8  -0.0423
  136.000000 9  -0.0188
  136.000000 10  -0.9244
- 136.000000 11  -2.0771
- 136.000000 12   0.0423
- 136.000000 13   2.0772
- 136.000000 14   4.6674
+ 136.000000 11  -2.0772
+ 136.000000 12  -0.0423
+ 136.000000 13  -2.0772
+ 136.000000 14  -4.6674
diff --git a/src/colvar/Torsion.cpp b/src/colvar/Torsion.cpp
index 805388f89b84565fd1ea454662d8c79391ba6ec7..7a3a69212c0eab956175a1d8b1a428af48307ae9 100644
--- a/src/colvar/Torsion.cpp
+++ b/src/colvar/Torsion.cpp
@@ -107,7 +107,7 @@ do_cosine(false)
   checkRead();
 
   if(atoms.size()==4){
-    if(!(v1.empty()) && (v2.empty()) && (axis.empty()))
+    if(!(v1.empty() && v2.empty() && axis.empty()))
       error("ATOMS keyword is not compatible with VECTOR1, VECTOR2 and AXIS keywords");
     log.printf("  between atoms %d %d %d %d\n",atoms[0].serial(),atoms[1].serial(),atoms[2].serial(),atoms[3].serial());
     atoms.resize(6);
diff --git a/src/core/GREX.cpp b/src/core/GREX.cpp
index 871fc9af0ef7108619da2e75caafb2bfbed12d9b..001b0108f600389c80a990416d756b18123b77ec 100644
--- a/src/core/GREX.cpp
+++ b/src/core/GREX.cpp
@@ -25,14 +25,15 @@
 #include "tools/Tools.h"
 #include "tools/Communicator.h"
 #include <sstream>
+#include <unordered_map>
 
 #include "GREXEnum.inc"
 
 using namespace std;
 namespace PLMD{
 
-std::map<std::string, int> & GREXWordMap(){
-  static std::map<std::string, int> word_map;
+const std::unordered_map<std::string, int> & GREXWordMap(){
+  static std::unordered_map<std::string, int> word_map;
   static bool init=false;
   if(!init){
 #include "GREXMap.inc"
@@ -73,7 +74,7 @@ void GREX::cmd(const string&key,void*val){
     // do nothing
   } else {
     int iword=-1;
-    std::map<std::string, int>::const_iterator it=GREXWordMap().find(words[0]);
+    auto it=GREXWordMap().find(words[0]);
     if(it!=GREXWordMap().end()) iword=it->second;
     switch(iword){
     case cmd_initialized:
diff --git a/src/core/PlumedMain.cpp b/src/core/PlumedMain.cpp
index 007cdf8ae8a6c534fdb3792a19bf5bcd7edf8806..e391a999a4fca189677d17afa1de3712a7f10940 100644
--- a/src/core/PlumedMain.cpp
+++ b/src/core/PlumedMain.cpp
@@ -43,6 +43,7 @@
 #include <cstdlib>
 #include <cstring>
 #include <set>
+#include <unordered_map>
 
 using namespace std;
 
@@ -50,8 +51,8 @@ using namespace std;
 
 namespace PLMD{
 
-std::map<std::string, int> & plumedMainWordMap(){
-  static std::map<std::string, int> word_map;
+const std::unordered_map<std::string, int> & plumedMainWordMap(){
+  static std::unordered_map<std::string, int> word_map;
   static bool init=false;
   if(!init){
 #include "PlumedMainMap.inc"
@@ -127,7 +128,7 @@ void PlumedMain::cmd(const std::string & word,void*val){
   } else {
     int iword=-1;
     double d;
-    std::map<std::string, int>::const_iterator it=plumedMainWordMap().find(words[0]);
+    auto it=plumedMainWordMap().find(words[0]);
     if(it!=plumedMainWordMap().end()) iword=it->second;
     switch(iword) {
       case cmd_setBox:
diff --git a/src/maketools/codecheck b/src/maketools/codecheck
index 15b6bd2f21a623123de2bc858ab6849052005f39..89781a37143d7dee8a667cfb13bfba991aa5c09a 100755
--- a/src/maketools/codecheck
+++ b/src/maketools/codecheck
@@ -34,7 +34,7 @@ if [ $do_cppcheck == true ] ; then
   else
     files="$(echo */*.{h,cpp})"
   fi
-  cppcheck --std=c++03 --std=posix 4 -j 4 --platform=unix64 \
+  cppcheck --std=c++11 --std=posix 4 -j 4 --platform=unix64 \
   --template='[{file}:{line}] ({severity}) :{id}: {message}' --enable=all --inline-suppr --force \
   $files
 fi
diff --git a/src/multicolvar/DistanceFromContour.cpp b/src/multicolvar/DistanceFromContour.cpp
index 0de8592ace12af95d3f9419eae32fd28278f01ec..35e792a735786ebca6435e5e2de9f98eb1328f01 100644
--- a/src/multicolvar/DistanceFromContour.cpp
+++ b/src/multicolvar/DistanceFromContour.cpp
@@ -264,36 +264,31 @@ void DistanceFromContour::calculate(){
   // This deals with periodic boundary conditions - if we are inside the membrane the sum of the absolute 
   // distances from the contours should add up to the spacing.  When this is not the case we must be outside
   // the contour
-  if( predir==-1 && (fabs(root1[dir])+fabs(root2[dir]))>(spacing+pbc_param) ) predir=1; 
+  // if( predir==-1 && (fabs(root1[dir])+fabs(root2[dir]))>(spacing+pbc_param) ) predir=1; 
   // Set the final value to root that is closest to the "origin" = position of atom
   if( fabs(root1[dir])<fabs(root2[dir]) ){ 
       getPntrToComponent("dist1")->set( predir*fabs(root1[dir]) ); 
       getPntrToComponent("dist2")->set( fabs(root2[dir]) );
-      getPntrToComponent("qdist")->set( predir*fabs(root1[dir])*fabs(root2[dir]) );
   } else { 
       getPntrToComponent("dist1")->set( predir*fabs(root2[dir]) );  
       getPntrToComponent("dist2")->set( fabs(root1[dir]) );
-      getPntrToComponent("qdist")->set( predir*fabs(root2[dir])*fabs(root1[dir]) );
   }
+  getPntrToComponent("qdist")->set( root2[dir]*root1[dir] );
 
   // Now calculate the derivatives
   if( !doNotCalculateDerivatives() ){
       Value* ival=myvalue_vessel->getFinalValue(); ival->clearDerivatives(); 
       std::vector<double> root1v(3); for(unsigned i=0;i<3;++i) root1v[i]=root1[i];
       derivTime=true; std::vector<double> der(3); getDifferenceFromContour( root1v, der ); double prefactor;
-      if( mybasemulticolvars[0]->isDensity() ){
-          if( fabs(root1[dir])<fabs(root2[dir]) ) prefactor = predir*fabs(root1[dir]) / myderiv_vessel->getOutputValue(); 
-          else prefactor = fabs(root2[dir]);
-      } else plumed_error();
+      if( mybasemulticolvars[0]->isDensity() ) prefactor = root2[dir] / myderiv_vessel->getOutputValue();
+      else plumed_error();
       Value* val=getPntrToComponent("qdist"); 
       for(unsigned i=0;i<val->getNumberOfDerivatives();++i) val->setDerivative( i, -prefactor*ival->getDerivative(i) );
       ival->clearDerivatives(); 
       std::vector<double> root2v(3); for(unsigned i=0;i<3;++i) root2v[i]=root2[i];
       getDifferenceFromContour( root2v, der );
-      if( mybasemulticolvars[0]->isDensity() ){
-          if( fabs(root1[dir])<fabs(root2[dir]) ) prefactor = fabs(root2[dir]) / myderiv_vessel->getOutputValue();
-          else prefactor = predir*fabs(root2[dir]) / myderiv_vessel->getOutputValue(); 
-      } else plumed_error();
+      if( mybasemulticolvars[0]->isDensity() ) prefactor = root1[dir] / myderiv_vessel->getOutputValue();
+      else plumed_error();  
       for(unsigned i=0;i<val->getNumberOfDerivatives();++i) val->addDerivative( i, -prefactor*ival->getDerivative(i) );
   }
 }
diff --git a/src/tools/Kearsley.cpp b/src/tools/Kearsley.cpp
deleted file mode 100644
index 0061b5e9a1c6883d5f2e268284ba5c8557fdc2a5..0000000000000000000000000000000000000000
--- a/src/tools/Kearsley.cpp
+++ /dev/null
@@ -1,874 +0,0 @@
-/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-   Copyright (c) 2011-2016 The plumed team
-   (see the PEOPLE file at the root of the distribution for a list of names)
-
-   See http://www.plumed.org for more information.
-
-   This file is part of plumed, version 2.
-
-   plumed is free software: you can redistribute it and/or modify
-   it under the terms of the GNU Lesser General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-
-   plumed is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public License
-   along with plumed.  If not, see <http://www.gnu.org/licenses/>.
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
-#include "Kearsley.h"
-#include <cmath>
-#include <iostream>
-#include <cstdlib>
-#include "Matrix.h"
-#include "Tensor.h"
-#include "Log.h"
-#include "Matrix.h"
-#include "Random.h"
-
-using namespace std;
-namespace PLMD{
-
-// put some notes
-
-Kearsley::Kearsley(const vector<Vector> &p0, const vector<Vector> &p1, const vector<double> &align, Log* &log):
-	log(log),
-	p0(p0),
-	p1(p1),
-	align(align),
-	com0_is_removed(false),
-	com1_is_removed(false),
-	err(0.0)
-{
-	// now make an initial allocation
-//	int n=p0.size();
-	// eventually here one should make a "hard" resize of all the structures
-//	log->printf("Reallocating a size of %d atoms to kearsley structure\n",n);
-
-//	try{
-//		diff.resize(n);
-//	}catch(bad_alloc&) {
-//		cerr<<"Cannot allocate the vector in Kearsley"<<endl;
-//	}
-//	try{
-//		diff.resize(n);
-//	}catch(bad_alloc&) {
-//		cerr<<"Cannot allocate the vector in Kearsley"<<endl;
-//	}
-
-}
-// do the alignment
-
-double Kearsley::calculate(bool rmsd) {
-	// just an ad-hoc scaling factor
-	double myscale=1.;
-	// basic sanity check
-	if(p0.size()!=p1.size() || p1.size()!=align.size()){
-			cerr<<"Kearsley: looks like you have not properly allocated the vectors: the two frames have different size"<<endl;
-			cerr<<"size of p0 is :"<<p0.size()<<endl;
-			cerr<<"size of p1 is :"<<p1.size()<<endl;
-			cerr<<"size of align is :"<<align.size()<<endl;
-			exit(0);
-	}
-	if(p0.empty() || p1.empty()  ){
-		cerr<<"Kearsley: looks like you have not properly allocated the vectors: they do not contain anything"<<endl;
-		exit(0);
-	}
-        Vector rr1,rr0;
-        Vector4d q;
-	double dddq[4][4][4],gamma[3][3][3],rrsq;
-	Matrix<double> m=Matrix<double>(4,4);
-//	double dm_r1[4][4][3],dm_r0[4][4][3];
-        Vector dm_r1[4][4];
-        Vector dm_r0[4][4];
-        Tensor pi1,pi0;
-	Tensor d;
-	Tensor dinv;
-        Vector xx;
-	double totalign=0.,  s, tmp1, err;
-	unsigned  i,j,k,l,ii,ll,jj,mm,n,nn,iii;
-	bool verbose=false;
-
-	vector<int> alignmap; // on the fly map done for optimization
-
-	unsigned natoms=p0.size();
-
-
-	// calculate coms
-
-	for(i=0;i<natoms;i++){
-		if (align[i]>0.){
-			alignmap.push_back(i);
-			totalign+=align[i];
-		}
-		if (align[i]<0.){cerr<<"FOUND ALIGNMENT WEIGHT NEGATIVE!"<<endl;exit(0);};
-
-	}
-
-
-	// later will be implemented something for optimizing this piece of crap
-
-	com0_is_removed=false;
-	com1_is_removed=false;
-
-	bool do_center=true; // keep it for legacy code compatibility
-
-	if(com0_is_removed==false){
-
-		xx.zero();
-
-		if(do_center) {// if you dont need to center no prob...
-			for(i=0;i<alignmap.size();i++){
-				xx+=p0[alignmap[i]]*align[alignmap[i]];
-			}
-			xx/=(totalign);
-		}
-
-		com0=xx;
-
-		if (p0reset.empty()){p0reset.resize(natoms);}
-		for(i=0;i<natoms;i++){
-			p0reset[i]=p0[i]-xx;
-		}
-		com0_is_removed=true;
-
-		if (verbose){
-			log->printf("P0 RESET\n");
-			for(i=0;i<natoms;i++){
-				log->printf("ATOM %6u  C   ALA     1    %8.3f%8.3f%8.3f  1.00  1.00\n",i+1,p0reset[i][0]/myscale,p0reset[i][1]/myscale,p0reset[i][2]/myscale);
-			}
-			log->printf("END\n");
-		}
-
-	}
-
-	if(com1_is_removed==false){
-
-		xx.zero();
-
-		if(do_center) {// if you dont need to center no prob...
-			for(i=0;i<alignmap.size();i++){
-				xx+=p1[alignmap[i]]*align[alignmap[i]];
-			}
-			xx/=(totalign);
-		}
-
-		com1=xx;
-
-		if (p1reset.empty()){p1reset.resize(natoms);}
-
-		for(i=0;i<natoms;i++){
-				p1reset[i]=p1[i]-xx;
-		}
-		com1_is_removed=true;
-
-		if(verbose){
-			log->printf("P1 RESET\n");
-			for(i=0;i<natoms;i++){
-				log->printf("ATOM %6u  C   ALA     1    %8.3f%8.3f%8.3f  1.00  1.00\n",i+1,p1reset[i][0]/myscale,p1reset[i][1]/myscale,p1reset[i][2]/myscale);
-			}
-			log->printf("END\n");
-		}
-
-	}
-
-	bool fake=false;
-	if(fake){
-	// case of trivial alignment
-         // set rotmat
-                rotmat0on1=Tensor::identity();
-		if (p0reset.size()==0){p0reset.resize(natoms);}
-		if (p1reset.size()==0){p1reset.resize(natoms);}
-
-		derrdp0.resize(natoms);
-		derrdp1.resize(natoms);
-		dmatdp0.resize(3*3*3*natoms);for(i=0;i<dmatdp0.size();i++)dmatdp0[i]=0.;
-		dmatdp1.resize(3*3*3*natoms);for(i=0;i<dmatdp1.size();i++)dmatdp1[i]=0.;
-
-		err=0.;
-		for(i=0;i<natoms;i++){
-			if(align[i]>0.)err+=align[i]*modulo2(p0reset[i]-p1reset[i]);
-		}
-
-		return 0.;
-	}
-	//
-	// CLEAN M MATRIX
-
-	m=0.;
-
-	// ASSIGN MATRIX ELEMENTS USING ONLY THE ATOMS INVOLVED IN ALIGNMENT
-
-	for(i=0;i<alignmap.size();i++){
-
-		k=alignmap[i];
-		tmp1=sqrt(align[k]/totalign);
-
-		// adopt scaled coordinates
-
-		rr1=p1reset[k]*tmp1;
-		rr0=p0reset[k]*tmp1;
-
-		rrsq=modulo2(rr0)+modulo2(rr1);
-
-		m[0][0] +=  rrsq+2.*(-rr0[0]*rr1[0]-rr0[1]*rr1[1]-rr0[2]*rr1[2]);
-		m[1][1] +=  rrsq+2.*(-rr0[0]*rr1[0]+rr0[1]*rr1[1]+rr0[2]*rr1[2]);
-		m[2][2] +=  rrsq+2.*(+rr0[0]*rr1[0]-rr0[1]*rr1[1]+rr0[2]*rr1[2]);
-		m[3][3] +=  rrsq+2.*(+rr0[0]*rr1[0]+rr0[1]*rr1[1]-rr0[2]*rr1[2]);
-		m[0][1] += 2.*(-rr0[1]*rr1[2]+rr0[2]*rr1[1]);
-		m[0][2] += 2.*( rr0[0]*rr1[2]-rr0[2]*rr1[0]);
-		m[0][3] += 2.*(-rr0[0]*rr1[1]+rr0[1]*rr1[0]);
-		m[1][2] -= 2.*( rr0[0]*rr1[1]+rr0[1]*rr1[0]);
-		m[1][3] -= 2.*( rr0[0]*rr1[2]+rr0[2]*rr1[0]);
-		m[2][3] -= 2.*( rr0[1]*rr1[2]+rr0[2]*rr1[1]);
-
-	};
-	m[1][0] = m[0][1];
-	m[2][0] = m[0][2];
-	m[2][1] = m[1][2];
-	m[3][0] = m[0][3];
-	m[3][1] = m[1][3];
-	m[3][2] = m[2][3];
-
-	// diagonalize the 4x4 matrix
-
-	vector<double> eigenvals;
-	Matrix<double> eigenvecs;
-
-	int diagerror=diagMat(m, eigenvals, eigenvecs );
-
-	if (diagerror!=0){cerr<<"DIAGONALIZATION FAILED WITH ERROR CODE "<<diagerror<<endl;exit(0);}
-
-	s=1.0;
-	if(eigenvecs(0,0)<0.)s=-1.;//correct for negative values (?)
-	// eigenvecs are in rows!!
-
-	q[0]=s*eigenvecs(0,0);
-	q[1]=s*eigenvecs(0,1);
-	q[2]=s*eigenvecs(0,2);
-	q[3]=s*eigenvecs(0,3);
-	err=eigenvals[0];
-
-	//log->printf(" ERR: %20.10f \n",err);
-
-	if(verbose){
-		log->printf(" ERR: %f \n",err);
-		for (i=0;i<4;i++){
-			log->printf(" EIGENVALS: %f \n",eigenvals[i]);
-		}
-	}
-
-	if(abs(eigenvals[0]-eigenvals[1])<1.e-8){
-		cerr<<"DIAGONALIZATION: NON UNIQUE SOLUTION"<<endl;exit(0);
-	}
-
-	/*
-	 * the ROTATION matrix
-	 */
-
-	d[0][0]=q[0]*q[0]+q[1]*q[1]-q[2]*q[2]-q[3]*q[3]       ;
-	d[1][0]=2.0*(q[1]*q[2]-q[0]*q[3]);
-	d[2][0]=2.0*(q[1]*q[3]+q[0]*q[2]);
-	d[0][1]=2.0*(q[1]*q[2]+q[0]*q[3]);
-	d[1][1]=q[0]*q[0]+q[2]*q[2]-q[1]*q[1]-q[3]*q[3];
-	d[2][1]=2.0*(q[2]*q[3]-q[0]*q[1]);
-	d[0][2]=2.0*(q[1]*q[3]-q[0]*q[2]);
-	d[1][2]=2.0*(q[2]*q[3]+q[0]*q[1]);
-	d[2][2]=q[0]*q[0]+q[3]*q[3]-q[1]*q[1]-q[2]*q[2];
-
-	/*
-	 * first derivative in perturbation theory : derivative of the rotation matrix respect to the
-	 * quternion vectors
-	 */
-
-	dddq[0][0][0]= 2.0*q[0];
-	dddq[1][0][0]=-2.0*q[3];
-	dddq[2][0][0]= 2.0*q[2];
-	dddq[0][1][0]= 2.0*q[3];
-	dddq[1][1][0]= 2.0*q[0];
-	dddq[2][1][0]=-2.0*q[1];
-	dddq[0][2][0]=-2.0*q[2];
-	dddq[1][2][0]= 2.0*q[1];
-	dddq[2][2][0]= 2.0*q[0];
-
-	dddq[0][0][1]= 2.0*q[1];
-	dddq[1][0][1]= 2.0*q[2];
-	dddq[2][0][1]= 2.0*q[3];
-	dddq[0][1][1]= 2.0*q[2];
-	dddq[1][1][1]=-2.0*q[1];
-	dddq[2][1][1]=-2.0*q[0];
-	dddq[0][2][1]= 2.0*q[3];
-	dddq[1][2][1]= 2.0*q[0];
-	dddq[2][2][1]=-2.0*q[1];
-
-	dddq[0][0][2]=-2.0*q[2];
-	dddq[1][0][2]= 2.0*q[1];
-	dddq[2][0][2]= 2.0*q[0];
-	dddq[0][1][2]= 2.0*q[1];
-	dddq[1][1][2]= 2.0*q[2];
-	dddq[2][1][2]= 2.0*q[3];
-	dddq[0][2][2]=-2.0*q[0];
-	dddq[1][2][2]= 2.0*q[3];
-	dddq[2][2][2]=-2.0*q[2];
-
-	dddq[0][0][3]=-2.0*q[3];
-	dddq[1][0][3]=-2.0*q[0];
-	dddq[2][0][3]= 2.0*q[1];
-	dddq[0][1][3]= 2.0*q[0];
-	dddq[1][1][3]=-2.0*q[3];
-	dddq[2][1][3]= 2.0*q[2];
-	dddq[0][2][3]= 2.0*q[1];
-	dddq[1][2][3]= 2.0*q[2];
-	dddq[2][2][3]= 2.0*q[3];
-
-	/*
-	 * Build gamma 3x3x3 matrix
-	 */
-	for(i=0;i<3;i++){     //direction
-		for(j=0;j<3;j++){     //direction
-			for(k=0;k<3;k++){     //eigenvector number
-				gamma[i][j][k]=0.0;
-				for(l=0;l<4;l++){   //components of each eigenvector in pert. series
-					if(abs(eigenvals[0]-eigenvals[k+1])<1.e-8){
-						log->printf(" FOUND DEGENERACY IN RMSD_ESS ROUTINE \n");
-						log->printf(" I'm DYING....\n");
-						log->printf(" COPYING STACK HERE \n");
-						log->printf(" P0\n");
-						for(ll=0;ll<natoms;ll++)log->printf(" %f %f %f \n",p0reset[ll][0],p0reset[ll][1],p0reset[ll][2]);
-						log->printf(" P1\n");
-						for(ll=0;ll<natoms;ll++)log->printf(" %f %f %f \n",p1reset[ll][0],p1reset[ll][1],p1reset[ll][2]);
-						exit(0);
-					}
-					else{
-						gamma[i][j][k]  +=  dddq[i][j][l]*eigenvecs(k+1,l)/(eigenvals[0]-eigenvals[k+1]);
-					}
-				}
-                //log->printf("GAMMA %2d %2d %2d V %12.6f\n",i,j,k,gamma[i][j][k]);
-			}
-		}
-	}
-
-	// allocate various arrays
-
-	dmatdp1.resize(3*3*3*natoms);
-	for(i=0;i<dmatdp1.size();i++)dmatdp1[i]=0.;
-	dmatdp0.resize(3*3*3*natoms);
-	for(i=0;i<dmatdp0.size();i++)dmatdp0[i]=0.;
-
-	vector<double> dd_dr_temp;dd_dr_temp.resize(natoms);
-
-	vector<Vector> derr_dr1;
-	derr_dr1.resize(natoms);
-	vector<Vector> derr_dr0;
-	derr_dr0.resize(natoms);
-	vector<Vector> array_3_n;
-	array_3_n.resize(natoms);
-
-
-	/*
-	 * Table of Derivative of the quaternion matrix respect to atom position: needed only if simple
-	 * alignment is required and no correction respect to the rotation matrix is wanted
-	 */
-
-	for(iii=0;iii<alignmap.size();iii++){
-
-		i=alignmap[iii];
-		tmp1=sqrt(align[i]/totalign);
-
-		// once again: derivative respect to scaled distance
-
-		rr1=2.*p1reset[i]*tmp1;
-		rr0=2.*p0reset[i]*tmp1;
-
-
-		dm_r1 [0][0][0]=(rr1[0]-rr0[0]);
-		dm_r1 [0][0][1]=(rr1[1]-rr0[1]);
-		dm_r1 [0][0][2]=(rr1[2]-rr0[2]);
-
-		dm_r1 [0][1][0]=0.;
-		dm_r1 [0][1][1]= rr0[2];
-		dm_r1 [0][1][2]=-rr0[1];
-
-		dm_r1 [0][2][0]=-rr0[2];
-		dm_r1 [0][2][1]= 0.;
-		dm_r1 [0][2][2]= rr0[0];
-
-		dm_r1 [0][3][0]= rr0[1];
-		dm_r1 [0][3][1]=-rr0[0];
-		dm_r1 [0][3][2]= 0.;
-
-		dm_r1 [1][1][0]=(rr1[0]-rr0[0]);
-		dm_r1 [1][1][1]=(rr1[1]+rr0[1]);
-		dm_r1 [1][1][2]=(rr1[2]+rr0[2]);
-
-		dm_r1 [1][2][0]=-rr0[1];
-		dm_r1 [1][2][1]=-rr0[0];
-		dm_r1 [1][2][2]= 0.;
-
-		dm_r1 [1][3][0]=-rr0[2];
-		dm_r1 [1][3][1]= 0.;
-		dm_r1 [1][3][2]=-rr0[0];
-
-		dm_r1 [2][2][0]=(rr1[0]+rr0[0]);
-		dm_r1 [2][2][1]=(rr1[1]-rr0[1]);
-		dm_r1 [2][2][2]=(rr1[2]+rr0[2]);
-
-		dm_r1 [2][3][0]=0.;
-		dm_r1 [2][3][1]=-rr0[2];
-		dm_r1 [2][3][2]=-rr0[1];
-
-		dm_r1 [3][3][0]=(rr1[0]+rr0[0]);
-		dm_r1 [3][3][1]=(rr1[1]+rr0[1]);
-		dm_r1 [3][3][2]=(rr1[2]-rr0[2]);
-		/*
-   derivative respec to to the other vector
-		 */
-		dm_r0 [0][0][0]=-(rr1[0]-rr0[0]);
-		dm_r0 [0][0][1]=-(rr1[1]-rr0[1]);
-		dm_r0 [0][0][2]=-(rr1[2]-rr0[2]);
-
-		dm_r0 [0][1][0]=0.       ;
-		dm_r0 [0][1][1]=-rr1[2];
-		dm_r0 [0][1][2]=rr1[1];
-
-		dm_r0 [0][2][0]= rr1[2];
-		dm_r0 [0][2][1]= 0.;
-		dm_r0 [0][2][2]=-rr1[0];
-
-		dm_r0 [0][3][0]=-rr1[1] ;
-		dm_r0 [0][3][1]= rr1[0];
-		dm_r0 [0][3][2]= 0.;
-
-		dm_r0 [1][1][0]=-(rr1[0]-rr0[0]);
-		dm_r0 [1][1][1]=(rr1[1]+rr0[1]);
-		dm_r0 [1][1][2]=(rr1[2]+rr0[2]);
-
-		dm_r0 [1][2][0]=-rr1[1];
-		dm_r0 [1][2][1]=-rr1[0];
-		dm_r0 [1][2][2]= 0.;
-
-		dm_r0 [1][3][0]=-rr1[2];
-		dm_r0 [1][3][1]= 0.;
-		dm_r0 [1][3][2]=-rr1[0];
-
-		dm_r0 [2][2][0]=(rr1[0]+rr0[0]);
-		dm_r0 [2][2][1]=-(rr1[1]-rr0[1]);
-		dm_r0 [2][2][2]=(rr1[2]+rr0[2]);
-
-		dm_r0 [2][3][0]=0.;
-		dm_r0 [2][3][1]=-rr1[2];
-		dm_r0 [2][3][2]=-rr1[1];
-
-		dm_r0 [3][3][0]=(rr1[0]+rr0[0]);
-		dm_r0 [3][3][1]=(rr1[1]+rr0[1]);
-		dm_r0 [3][3][2]=-(rr1[2]-rr0[2]);
-		/*
-		 * write the diagonal
-		 */
-
-		dm_r1[1][0]=dm_r1[0][1];
-		dm_r1[2][0]=dm_r1[0][2];
-		dm_r1[3][0]=dm_r1[0][3];
-		dm_r1[2][1]=dm_r1[1][2];
-		dm_r1[3][1]=dm_r1[1][3];
-		dm_r1[3][2]=dm_r1[2][3];
-
-		dm_r0[1][0]=dm_r0[0][1];
-		dm_r0[2][0]=dm_r0[0][2];
-		dm_r0[3][0]=dm_r0[0][3];
-		dm_r0[2][1]=dm_r0[1][2];
-		dm_r0[3][1]=dm_r0[1][3];
-		dm_r0[3][2]=dm_r0[2][3];
-
-
-		//log->printf("DMDR0 ALIGN %f AT %d VAL %f\n",align[i],i,dm_r0[0][0][j]);
-
-
-		/*
-		 * pi matrix : coefficents in per theory
-		 */
-
-        pi0.zero();
-		pi1.zero();
-		derr_dr1[i].zero();
-		derr_dr0[i].zero();
-
-		for(k=0;k<4;k++){
-			for(l=0;l<4;l++){
-				derr_dr1[i]+=(q[k]*q[l])*dm_r1[l][k];
-				derr_dr0[i]+=(q[k]*q[l])*dm_r0[l][k];
-				for(mm=0;mm<3;mm++)for(j=0;j<3;j++){
-					pi0[mm][j]+=eigenvecs(mm+1,k)*dm_r0[l][k][j]*q[l];
-					pi1[mm][j]+=eigenvecs(mm+1,k)*dm_r1[l][k][j]*q[l];
-				};
-			};
-		};
-/*
-		derr_dr1[i]/=totalign;
-		derr_dr0[i]/=totalign;
-
-
-*/
-
-		for(j=0;j<3;j++){
-			for (k=0;k<3;k++){
-				for(l=0;l<3;l++){
-					int ind=j*3*3*natoms+k*3*natoms+l*natoms+i;
-					dmatdp0[ind]=0.;
-					dmatdp1[ind]=0.;
-					for(ii=0;ii<3;ii++){
-						dmatdp1[ind]+=gamma[j][k][ii]*pi1[ii][l];
-						dmatdp0[ind]+=gamma[j][k][ii]*pi0[ii][l];
-					}
-
-				}
-
-			}
-
-		}
-	}
-
-
-
-
-	// end of the calculation of the derivative of the rotation matrix
-
-	/*
-	 * Now correct for center of mass: only if needed
-	 *
-	 */
-
-	bool comcorr_r1=true;
-
-	if(comcorr_r1){
-		for(k=0;k<alignmap.size();k++){
-			i=alignmap[k];
-			tmp1=sqrt(align[i]/totalign);
-			array_3_n[i]=tmp1*derr_dr1[i];
-			if(do_center){
-				for(jj=0;jj<alignmap.size();jj++){
-					j=alignmap[jj];
-					array_3_n[i]-=tmp1*(align[j]/totalign)*derr_dr1[j];
-				}
-			}
-		}
-		for(k=0;k<alignmap.size();k++){
-			i=alignmap[k];
-			derr_dr1[i]=array_3_n[i];
-		}
-	}
-
-
-	bool do_comcorr_r0=true;
-	//
-	// correction for r0 frame
-	//
-	if(do_comcorr_r0){
-		for(k=0;k<alignmap.size();k++){
-			i=alignmap[k];
-			tmp1=sqrt(align[i]/totalign);
-			array_3_n[i]=tmp1*derr_dr0[i];
-			if(do_center){
-				for(jj=0;jj<alignmap.size();jj++){
-					j=alignmap[jj];
-					array_3_n[i]-=tmp1*(align[j]/totalign)*derr_dr0[j];
-				}
-			}
-		}
-		for(k=0;k<alignmap.size();k++){
-			i=alignmap[k];
-			derr_dr0[i]=array_3_n[i];
-		}
-	}
-
-
-	bool do_der_r1=true;
-	bool do_der_r0=true;
-	bool do_der_rotmat=true;
-
-	if(do_der_r1 && do_der_rotmat){
-		for(i=0;i<3;i++){
-			for(j=0;j<3;j++){
-				for(k=0;k<3;k++){
-					for(ll=0;ll<alignmap.size();ll++){
-						l=alignmap[ll];
-						int ind=i*3*3*natoms+j*3*natoms+k*natoms+l;
-						tmp1=sqrt(align[l]/totalign);
-						dd_dr_temp[l]=tmp1*dmatdp1[ind];
-						if(do_center){
-							for(nn=0;nn<alignmap.size();nn++){
-								n=alignmap[nn];
-								dd_dr_temp[l]-=dmatdp1[ind-l+n]*tmp1*align[n]/totalign;
-							}
-						}
-
-					}
-					for(ll=0;ll<alignmap.size();ll++){
-						l=alignmap[ll];
-						int ind=i*3*3*natoms+j*3*natoms+k*natoms+l;
-						dmatdp1[ind]=dd_dr_temp[l];
-					}
-
-				}
-			}
-		}
-
-	}
-
-	if(do_der_r0 && do_der_rotmat){
-		for(i=0;i<3;i++){
-			for(j=0;j<3;j++){
-				for(k=0;k<3;k++){
-					for(ll=0;ll<alignmap.size();ll++){
-						l=alignmap[ll];
-						int ind=i*3*3*natoms+j*3*natoms+k*natoms+l;
-						tmp1=sqrt(align[l]/totalign);
-						dd_dr_temp[l]=tmp1*dmatdp0[ind];
-						if(do_center){
-							for(nn=0;nn<alignmap.size();nn++){
-								n=alignmap[nn];
-								dd_dr_temp[l]-=dmatdp0[ind-l+n]*tmp1*align[n]/totalign;
-							}
-						}
-					}
-					for(ll=0;ll<alignmap.size();ll++){
-						l=alignmap[ll];
-						int ind=i*3*3*natoms+j*3*natoms+k*natoms+l;
-						dmatdp0[ind]=dd_dr_temp[l];
-					}
-				}
-			}
-		}
-	}
-
-
-	bool do_p1rotated=true;
-	if (do_p1rotated){
-		// resize if not allocated
-
-		if(p1.size()!=p1rotated.size())p1rotated.resize(p1.size());
-
-//		exit(0);
-
-		for(i=0;i<natoms;i++) p1rotated[i]=matmul(d,p1reset[i]);
-
-		// reallocate difference vectors
-		if(p1.size()!=diff1on0.size())diff1on0.resize(p1.size());
-		for(i=0;i<natoms;i++){
-			diff1on0[i]=p1rotated[i]-p0reset[i];
-		}
-
-		if(verbose){
-			log->printf("P1-RESET-AND-ROTATED\n");
-			for(i=0;i<natoms;i++){
-				log->printf("ATOM %6u  C   ALA     2    %8.3f%8.3f%8.3f  1.00  1.00\n",i+1,p1rotated[i][0]/myscale,p1rotated[i][1]/myscale,p1rotated[i][2]/myscale);
-			}
-			log->printf("END\n");
-			log->printf("P0-RESET\n");
-			for(i=0;i<natoms;i++){
-				log->printf("ATOM %6u  C   ALA     2    %8.3f%8.3f%8.3f  1.00  1.00\n",i+1,p0reset[i][0]/myscale,p0reset[i][1]/myscale,p0reset[i][2]/myscale);
-			}
-			log->printf("END\n");
-		}
-
-	}
-
-
-
-        dinv=inverse(d);
-
-	bool do_p0rotated=true;
-	if (do_p0rotated){
-		if(p0.size()!=p0rotated.size())p0rotated.resize(p0.size());
-		for(i=0;i<natoms;i++) p0rotated[i]=matmul(dinv,p0reset[i]);
-		if(p1.size()!=diff0on1.size())diff0on1.resize(p1.size());
-		for(i=0;i<natoms;i++) diff0on1[i]=p0rotated[i]-p1reset[i];
-		if(verbose){
-			log->printf("P0-RESET AND INVERSE ROTATED\n");
-			for(i=0;i<natoms;i++){
-				log->printf("ATOM %6u  C   ALA     1    %8.3f%8.3f%8.3f  1.00  1.00\n",i+1,p0rotated[i][0]/myscale,p0rotated[i][1]/myscale,p0rotated[i][2]/myscale);
-			}
-			log->printf("END\n");
-			log->printf("P1-RESET\n");
-			for(i=0;i<natoms;i++){
-				log->printf("ATOM %6u  C   ALA     2    %8.3f%8.3f%8.3f  1.00  1.00\n",i+1,p1reset[i][0]/myscale,p1reset[i][1]/myscale,p1reset[i][2]/myscale);
-			}
-			log->printf("END\n");
-		}
-	}
-	// copy on the official vectors:
-	rotmat0on1=d;
-	rotmat1on0=dinv;
-	derrdp0.resize(natoms);
-	derrdp0=derr_dr0;
-	derrdp1.resize(natoms);
-	derrdp1=derr_dr1;
-
-	// now rescale accordingly for rmsd instead of msd
-	if(rmsd){
-		err=sqrt(err);
-		double tmp=0.5/err;
-		for(ii=0;ii<alignmap.size();ii++){
-				i=alignmap[ii];
-				derrdp0[i]*=tmp;
-				derrdp1[i]*=tmp;
-		}
-
-	}
-
-	return err;
-
-}
-void Kearsley::assignP1(const std::vector<Vector> & p1) {
-	this->p1=p1;
-	com1_is_removed=false;
-}
-void Kearsley::assignP0(const std::vector<Vector> & p0) {
-	this->p0=p0;
-	com0_is_removed=false;
-}
-
-void Kearsley::assignAlign(const std::vector<double> & align) {
-	this->align=align;
-}
-
-void Kearsley::finiteDifferenceInterface(bool rmsd){
-log->printf("Entering rmsd finite difference test system for kearsley\n");
-log->printf("-------------------------------------------\n");
-log->printf("TEST1: derivative of the value (derr_dr0/derr_dr1)\n");
-//// test 1
-unsigned i,j,l,m;
-double step=1.e-6,olderr,delta;
-// messing up a bit with align weights
-double delta1;
-vector<double> align1;
-align1.resize(p0.size());
-Random rnd;
-for (i=0;i<p0.size();i++){
-		// draw a random number
-	    delta=rnd.RandU01();
-	    delta1=rnd.RandU01();
-	    if(delta>delta1){
-	    //if(delta>0.3){
-	    	align1[i]=delta;
-	    }else{align1[i]=0.;};
-	   // log->printf("ALIGN %d IS %8.3f\n",i,align1[i]);
-}
-assignAlign(align1);
-//// get initial value of the error and derivative of it
-olderr=calculate(rmsd);
-log->printf("INITIAL ERROR VALUE: %e\n",olderr);
-// store the matrix
-Tensor old_rotmat0on1=rotmat0on1;
-
-//// get initial value of the error and derivative of it
-
-log->printf("TESTING: derrdp1 \n");
-for(unsigned j=0;j<3;j++){
-   for(unsigned i=0;i<derrdp1.size();i++){
-       // random displacement
-       delta=(rnd.RandU01()-0.5)*2*step;
-       p1[i][j]+=delta;
-	   com1_is_removed=false; // this is required whenever the assignment is not done with the methods
-       com0_is_removed=false; // this is required whenever the assignment is not done with the methods
-       err=calculate(rmsd);
-       //log->printf("INITIAL ERROR VALUE: %e NEW ERROR %e DELTA %e ELEM %d %d \n",olderr,err,delta,i,j );
-       p1[i][j]-=delta;
-       switch(j){
-         case 0:
-             log->printf("TESTING: X  %4u ANAL %18.9f NUMER %18.9f DELTA %18.9f ALIGN %6.2f\n",i,derrdp1[i][j],(err-olderr)/delta,derrdp1[i][j]-(err-olderr)/delta,align[i]);break;
-         case 1:
-             log->printf("TESTING: Y  %4u ANAL %18.9f NUMER %18.9f DELTA %18.9f ALIGN %6.2f\n",i,derrdp1[i][j],(err-olderr)/delta,derrdp1[i][j]-(err-olderr)/delta,align[i]);break;
-         case 2:
-             log->printf("TESTING: Z  %4u ANAL %18.9f NUMER %18.9f DELTA %18.9f ALIGN %6.2f\n",i,derrdp1[i][j],(err-olderr)/delta,derrdp1[i][j]-(err-olderr)/delta,align[i]);break;
-
-       }
-   }
-}
-//exit(0);
-log->printf("TESTING: derrdp0 \n");
-for(unsigned j=0;j<3;j++){
-   for(unsigned i=0;i<derrdp0.size();i++){
-       // random displacement
-       delta=(rnd.RandU01()-0.5)*2*step;
-       p0[i][j]+=delta;
-       com0_is_removed=false; // this is required whenever the assignment is not done with the methods
-       com1_is_removed=false; // this is required whenever the assignment is not done with the methods
-
-       err=calculate(rmsd);
-       p0[i][j]-=delta;
-       switch(j){
-         case 0:
-             log->printf("TESTING: X  %4u ANAL %18.9f NUMER %18.9f DELTA %18.9f ALIGN %6.2f\n",i,derrdp0[i][j],(err-olderr)/delta,derrdp0[i][j]-(err-olderr)/delta,align[i]);break;
-         case 1:
-             log->printf("TESTING: Y  %4u ANAL %18.9f NUMER %18.9f DELTA %18.9f ALIGN %6.2f\n",i,derrdp0[i][j],(err-olderr)/delta,derrdp0[i][j]-(err-olderr)/delta,align[i]);break;
-         case 2:
-             log->printf("TESTING: Z  %4u ANAL %18.9f NUMER %18.9f DELTA %18.9f ALIGN %6.2f\n",i,derrdp0[i][j],(err-olderr)/delta,derrdp0[i][j]-(err-olderr)/delta,align[i]);break;
-       }
-   }
-}
-
-log->printf("TESTING: dmatdp0 \n");
-for(l=0;l<3;l++){
-  for(m=0;m<3;m++){
-    for(j=0;j<3;j++){
-       for(i=0;i<p0.size();i++){
-           // random displacement
-           delta=(rnd.RandU01()-0.5)*2*step;
-           p0[i][j]+=delta;
-           com0_is_removed=false;
-           com1_is_removed=false;
-           calculate(rmsd);
-           p0[i][j]-=delta;
-       	   int ind=l*3*3*p0.size()+m*3*p0.size()+j*p0.size()+i;
-           switch(j){
-           	 case 0:
-                log->printf("TESTING: DMATDP0 [ %u ][ %u ]:  X %u ANAL %18.9f NUMER %18.9f DELTA %18.9f ALIGN %6.2f\n",l,m,i,dmatdp0[ind],(rotmat0on1[l][m]- old_rotmat0on1[l][m])/delta,dmatdp0[ind]-(rotmat0on1[l][m]- old_rotmat0on1[l][m])/delta,align[i]);break;
-
-           	 case 1:
-                log->printf("TESTING: DMATDP0 [ %u ][ %u ]:  Y %u ANAL %18.9f NUMER %18.9f DELTA %18.9f ALIGN %6.2f\n",l,m,i,dmatdp0[ind],(rotmat0on1[l][m]- old_rotmat0on1[l][m])/delta,dmatdp0[ind]-(rotmat0on1[l][m]- old_rotmat0on1[l][m])/delta,align[i]);break;
-
-           	 case 2:
-                log->printf("TESTING: DMATDP0 [ %u ][ %u ]:  Z %u ANAL %18.9f NUMER %18.9f DELTA %18.9f ALIGN %6.2f\n",l,m,i,dmatdp0[ind],(rotmat0on1[l][m]- old_rotmat0on1[l][m])/delta,dmatdp0[ind]-(rotmat0on1[l][m]- old_rotmat0on1[l][m])/delta,align[i]);break;
-
-           }
-       }
-    }
-  }
-}
-log->printf("TESTING: dmatdp1 \n");
-for(l=0;l<3;l++){
-  for(m=0;m<3;m++){
-    for(j=0;j<3;j++){
-       for(i=0;i<p1.size();i++){
-           // random displacement
-           delta=(rnd.RandU01()-0.5)*2*step;
-           p1[i][j]+=delta;
-           com0_is_removed=false;
-           com1_is_removed=false;
-           calculate(rmsd);
-           p1[i][j]-=delta;
-       	   int ind=l*3*3*p1.size()+m*3*p1.size()+j*p1.size()+i;
-           switch(j){
-
-             case 0:
-                log->printf("TESTING: DMATDP1 [ %u ][ %u ]:  X %u ANAL %18.9f NUMER %18.9f DELTA %18.9f ALIGN %6.2f\n",l,m,i,dmatdp1[ind],(rotmat0on1[l][m]- old_rotmat0on1[l][m])/delta,dmatdp1[ind]-(rotmat0on1[l][m]- old_rotmat0on1[l][m])/delta,align[i]);break;
-
-             case 1:
-                log->printf("TESTING: DMATDP1 [ %u ][ %u ]:  Y %u ANAL %18.9f NUMER %18.9f DELTA %18.9f ALIGN %6.2f\n",l,m,i,dmatdp1[ind],(rotmat0on1[l][m]- old_rotmat0on1[l][m])/delta,dmatdp1[ind]-(rotmat0on1[l][m]- old_rotmat0on1[l][m])/delta,align[i]);break;
-
-             case 2:
-                log->printf("TESTING: DMATDP1 [ %u ][ %u ]:  Z %u ANAL %18.9f NUMER %18.9f DELTA %18.9f ALIGN %6.2f\n",l,m,i,dmatdp1[ind],(rotmat0on1[l][m]- old_rotmat0on1[l][m])/delta,dmatdp1[ind]-(rotmat0on1[l][m]- old_rotmat0on1[l][m])/delta,align[i]);break;
-
-           }
-       }
-    }
-  }
-}
-
-	exit(0);
-}
-}
diff --git a/src/tools/Kearsley.h b/src/tools/Kearsley.h
deleted file mode 100644
index 1a3de1f1d827ecdcc9b555c9e38994f78ba9c1f0..0000000000000000000000000000000000000000
--- a/src/tools/Kearsley.h
+++ /dev/null
@@ -1,239 +0,0 @@
-/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-   Copyright (c) 2011-2016 The plumed team
-   (see the PEOPLE file at the root of the distribution for a list of names)
-
-   See http://www.plumed.org for more information.
-
-   This file is part of plumed, version 2.
-
-   plumed is free software: you can redistribute it and/or modify
-   it under the terms of the GNU Lesser General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-
-   plumed is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public License
-   along with plumed.  If not, see <http://www.gnu.org/licenses/>.
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
-#ifndef __PLUMED_tools_Kearsley_h
-#define __PLUMED_tools_Kearsley_h
-
-#include "Vector.h"
-#include "Tensor.h"
-#include <vector>
-
-namespace PLMD{
-
-class Log;
-
-/*! A class that implements Kearsley's calculation
- which is optimal alignment via quaternion and
- analytical derivatives via perturbation theory
-
-In Kearsley algorithm (see, S. K. Kearsley, Acta Crystallogr., Sect. A: Found. Crystallogr. 45, 208 1989 ),
-here adapted to included the COM reset,
-one first calculates the COM reset position respect to frame  \f$ \{x_0,y_0,z_0\} \f$ (running frame),
-being \f$ w_{tot}^{al}=\sum_i w_{al}^i \f$
-
-\f{eqnarray}
-\tilde x_0^i=x_0^i-\sum_i \frac{w_{al}^i}{w_{tot}^{al}} x_0^i\\
-\tilde y_0^i=y_0^i-\sum_i \frac{w_{al}^i}{w_{tot}^{al}} y_0^i\\
-\tilde z_0^i=z_0^i-\sum_i \frac{w_{al}^i}{w_{tot}^{al}} z_0^i
-\f}
-
-and the same is done with the reference one \f$ \{x_1,y_1,z_1\} \f$
-\f{eqnarray}
-\tilde x_1^i=x_1^i-\sum_i \frac{w_{al}^i}{w_{tot}^{al}} x_1^i\\
-\tilde y_1^i=y_1^i-\sum_i \frac{w_{al}^i}{w_{tot}^{al}} y_1^i\\
-\tilde z_1^i=z_1^i-\sum_i \frac{w_{al}^i}{w_{tot}^{al}} z_1^i
-\f}
-
-Then one can build the \f$ \{x_p,y_p,z_p\} \f$ and \f$ \{x_m,y_m,z_m\} \f$
-vectors of weighted summation and differences:
-\f{eqnarray}
-x_m^i=w_{al}^i(\tilde x_0^i-\tilde x_1^i)\\
-y_m^i=w_{al}^i(\tilde y_0^i-\tilde y_1^i)\\
-z_m^i=w_{al}^i(\tilde z_0^i-\tilde z_1^i)
-\f}
-
-\f{eqnarray}
-x_p^i=w_{al}^i(x_0^i+x_1^i)\\
-y_p^i=w_{al}^i(y_0^i+y_1^i)\\
-z_p^i=w_{al}^i(z_0^i+z_1^i)
-\f}
-
-
-Then one build the COM-resetted matrix
-
-\f{displaymath}
-\mathbf{M}=\left[
-\begin{array}{cccc}
-\sum ( {x}_{m}^{2}+{y}_{m}^{2}+{z}_{m}^{2})      &
- \sum (y_{p}z_{m} -y_{m}z_{p})   &
- \sum ( x_{m}z_{p} -x_{p}z_{m}) &
- \sum (x_{p}y_{m}-x_{m}y_{p} ) \\
-  \sum ( y_{p}z_{m} -y_{m}z_{p}) &
-\sum (  {x}_{m}^{2}+{y}_{p}^{2}+{z}_{p}^{2}) &
-\sum ( x_{m}y_{m} -x_{p}y_{p} ) &
- \sum (x_{m}z_{m}-x_{p}z_{p} ) \\
-  \sum (x_m z_p - x_p z_m ) &
-\sum ( x_m y_m -x_p y_p) &
-\sum (  {x}_{p}^{2}+{y}_{m}^{2}+{z}_{p}^{2}) &
-\sum ( y_m z_m -y_p z_p) \\
-  \sum (x_p y_m -x_m y_p ) &
-\sum (x_m z_m - x_p z_p ) &
-\sum (y_m z_m- y_p z_p ) &
-\sum (  {x}_{p}^{2}+{y}_{p}^{2}+{z}_{m}^{2}) \\
-\end{array}
-\right]
-\f}
-
-by diagonalizing one obtains the mean square deviation by using the lowest eigenvalue \f$ \lambda_0 \f$
-\f{equation}
-MSD=  \frac{\lambda_{0}}{w_{tot}^{al}}
-\f}
-
-The rotation matrix is obtained from the eigenvector corresponding to \f$ \lambda_0 \f$ eigenvalue
-having components \f$ q_1, q_2, q_3, q_4 \f$
-
-\f{displaymath}
-\mathbf{R}=\left[
-\begin{array}{ccc}
-q_1 ^2 + q_2 ^2 - q_3 ^2 - q_4^2 &
-2(q_2 q_3 + q_1 q_4) &
-2(q_1 q_4 -q_1 q_3 )\\
-2(q_2 q_3 - q_1 q_4) &
-q_1 ^2 +q_3 ^2 -q_2 ^2 -q_4^2  &
-2(q_3 q_4 - q_1 q_2)\\
-2( q_2 q_4 + q_1 q_3) &
-2( q_3 q_4 - q_1 q_2) &
-q_1^2 +q_4 ^2 - q_2^2 - q_3 ^2 \\
-\end{array}
-\right]
-\f}
-
-by using the perturbation theory one can retrieve the various derivatives:
-
-In derivative calculation we exploited the classical Perturbation Theory up to the first order.
-In extensive manner, we introduce a perturbation over \f$\lambda_{0}\f$ correlated with
-a pertubation of the states \f$\vert q_{0}\rangle \f$ (in bra-ket notation):
-\f{displaymath}
-[\mathbf{M}+d\mathbf{M}][\vert q_{0}\rangle + \vert dq_{0}\rangle ]=
-[\lambda_{0}+d\lambda_{0}][\vert q_{0}\rangle +\vert dq_{0}\rangle ]
-\f}
-Grouping the zero order we recollect the unperturbed equation(see before).
-To the first order:
-\f{displaymath}
-d\mathbf{M}q_{0}+\mathbf{M}\vert dq_{0}\rangle =d\lambda_{0}\vert q_{0}\rangle +\lambda_{0} \vert dq_{0}\rangle
-\f}
-Now we express \f$dq_{0}\f$ as linear combination of the other ortogonal eigenvectors:
-\f{displaymath}
-\vert dq_{0}\rangle =\sum_{j\neq0}c_{j}\vert q_{j}\rangle
-\f}
-thus we have
-\f{displaymath}
-d\mathbf{M}\vert q_{0}\rangle +\sum_{j\neq0}c_{j}\mathbf{M}\vert q_{j}\rangle=
-d\lambda_{0}\vert q_{0}\rangle+\lambda_{0}\sum_{j\neq0}c_{j}\vert q_{j}\rangle
-\f}
-projecting onto the \f$q_{0}\f$ state and deleting the projection onto \f$\vert dq_{0}\rangle\f$ beacuse
-of ortogonality:
-\f{displaymath}
-\langle q_{0}\vert d\mathbf{M}\vert q_{0}\rangle +\sum_{j\neq0}c_{j}\lambda_{j}\langle q_{0} \vert q_{j}\rangle=
-d\lambda_{0}\langle q_{0}\vert q_{0}\rangle+\lambda_{0}\sum_{j\neq0}c_{j}\langle q_{0}\vert q_{j}\rangle
-\f}
-we get
-\f{displaymath}
-\langle q_{0}\vert d\mathbf{M}\vert q_{0}\rangle=d\lambda_{0}
-\f}
-So, using simple chain rules:
-\f{displaymath}
-\langle q_{0}\vert \frac{d\mathbf{M}}{dr_{k}^{\gamma}}\vert q_{0}\rangle
-dr_{k}^{\gamma}=d\lambda_{0}
-\f}
-where here we used the notation \f$r_{k}^{\gamma}\f$ to denote an arbitrary position which can be
-\f$\tilde x_0 ,\tilde y_0,\tilde z_0\f$ or   \f$\tilde x_1 ,\tilde y_1,\tilde z_1\f$
-we get
-\f{displaymath}
-\langle q_{0}\vert \frac{d\mathbf{M}}{dr_{k}^{\gamma}}\vert q_{0}\rangle
-=\frac{d\lambda_{0}}{dr_{k}^{\gamma}}
-\f}
-
-The derivatives of the matrix \f$\frac{d\mathbf{M}}{dr_{k}^{\gamma}} \f$ can be readily obtained via the
-chain rule
-\f{displaymath}
-\frac{d\mathbf{M}}{dr_{k}^{\gamma}}=\sum_{\l}^{nat}\sum_{\alpha}^{x,y,z} \frac{d\mathbf{M}}{dP_{l}^{\alpha}}\frac{dP_{l}^{\alpha}}{dr_{k}^{\gamma}} +\\
-\frac{d\mathbf{M}}{dM_{l}^{\alpha}}\frac{dM_{l}^{\alpha}}{dr_{k}^{\gamma}}
-\f}
-
-where \f$ M_{l}^{\alpha} \f$ corresponds to \f$ x_m^{l},y_m^{l},z_m^{l} \f$   and
-\f$ P_{l}^{\alpha} \f$ corresponds to \f$ x_p^{l},y_p^{l},z_p^{l} \f$ according to the \f$ \alpha \f$ component.
-*/
-
-
-class Kearsley
-{
-  /// general log reference that needs to be initialized when constructed
-  Log* log;
-  /// position of atoms (first frame. In md is the running frame)
-  std::vector<Vector> p0;
-  /// position of atoms (second frame. In md is the  reference frame)
-  std::vector<Vector> p1;
-  /// alignment weight: the rmsd/msd that it provides is only based on this scalar
-  std::vector<double> align;
-
-  bool com0_is_removed;
-  bool com1_is_removed;
-
-public:
-  /// error: the distance between two frames (might be rmsd/msd. See below)
-  double err;
-  /// displacement: the vector that goes from the p0 onto p1
-  std::vector<Vector> diff0on1;
-  /// displacement: the vector that goes from the p1 onto p0 (via inverse rotation)
-  std::vector<Vector> diff1on0;
-
-  /// center of mass of p0
-  Vector com0;
-  /// center of mass of p1
-  Vector com1;
-  /// position resetted wrt coms p0
-  std::vector<Vector> p0reset;
-  /// position resetted wrt coms p1
-  std::vector<Vector> p1reset;
-  /// position rotated: p0
-  std::vector<Vector> p0rotated;
-  /// position rotated: p1
-  std::vector<Vector> p1rotated;
-  /// rotation matrices p0 on p1 and reverse (p1 over p0)
-  Tensor rotmat0on1,rotmat1on0;
-  /// derivatives: derivative of the error respect p0
-  std::vector<Vector> derrdp0;
-  /// derivatives: derivative of the error respect p1
-  std::vector<Vector> derrdp1;
-  /// derivative of the rotation matrix
-  /// note the dimension 3x3 x 3 x N
-  std::vector<double> dmatdp0;
-  std::vector<double> dmatdp1;
-
-  /// constructor: need the two structure, the alignment vector and  the log reference
-  Kearsley(  const std::vector<Vector> &p0, const std::vector<Vector> &p1,  const std::vector<double> &align , Log* &log);
-  /// switch the assignment of the structure p0 (e.g. at each md step)
-  void assignP0(const std::vector<Vector> & p0);
-  /// derivatives: derivative of the error respect p1
-  void assignP1(const std::vector<Vector> & p1);
-  /// transfer the alignment vector
-  void assignAlign(const std::vector<double> & align);
-  /// finite differences of all the relevant quantities: takes a bool which decides if giving back rmsd or not (msd in this case)
-  void finiteDifferenceInterface(bool rmsd);
-  // this makes the real calculation: the rmsd bool decides wether doing rmsd or msd
-  double calculate( bool rmsd );
-};
-
-}
-
-#endif
-
diff --git a/src/tools/OptimalAlignment.cpp b/src/tools/OptimalAlignment.cpp
deleted file mode 100644
index eae4aabf63060fe96af7366c633a63c20c12594d..0000000000000000000000000000000000000000
--- a/src/tools/OptimalAlignment.cpp
+++ /dev/null
@@ -1,399 +0,0 @@
-/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-   Copyright (c) 2011-2016 The plumed team
-   (see the PEOPLE file at the root of the distribution for a list of names)
-
-   See http://www.plumed.org for more information.
-
-   This file is part of plumed, version 2.
-
-   plumed is free software: you can redistribute it and/or modify
-   it under the terms of the GNU Lesser General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-
-   plumed is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public License
-   along with plumed.  If not, see <http://www.gnu.org/licenses/>.
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
-#include "OptimalAlignment.h"
-#include "Kearsley.h"
-#include "Log.h"
-#include <cmath>
-#include <iostream>
-#include <cstdlib>
-#include "Random.h"
-
-using namespace std;
-namespace PLMD{
-
-OptimalAlignment::OptimalAlignment( const  std::vector<double>  & align, const  std::vector<double>  & displace, const std::vector<Vector> & p0, const std::vector<Vector> & p1 , Log* &log )
-:log(log){
-
-	// kearsley init to null
-	mykearsley=NULL;
-	if (mykearsley==NULL) {
-		mykearsley=new Kearsley(p0,p1,align,log);
-	}
-	// copy the structure into place
-	assignP0(p0);
-	assignP1(p1);
-	assignAlign(align);
-	assignDisplace(displace);
-
-	// basic check
-	if(p0.size() != p1.size()){
-		(this->log)->printf("THE SIZE OF THE TWO FRAMES TO BE ALIGNED ARE DIFFERENT\n");
-    }
-	// fast behaviour: if all the alignment and displacement are 1.0 then go for fast 
-	fast=true;
-	for (unsigned i=0;i<align.size();i++ ){
-                if(align[i]!=displace[i] || align[i]!=1.0)fast=false;
-	}
-
-}
-
-OptimalAlignment::~OptimalAlignment(){
-	if (mykearsley!=NULL)delete mykearsley;
-}
-
-void OptimalAlignment::assignP0(  const std::vector<Vector> & p0 ){
-	this->p0=p0;
-	if(mykearsley!=NULL){mykearsley->assignP0(p0);}else{cerr<<"kearsley is not initialized"<<endl; exit(0);}
-}
-
-void OptimalAlignment::assignP1(  const std::vector<Vector> & p1 ){
-	this->p1=p1;
-	if(mykearsley!=NULL){mykearsley->assignP1(p1);}else{cerr<<"kearsley is not initialized"<<endl; exit(0);}
-}
-
-void OptimalAlignment::assignAlign(  const std::vector<double> & align ){
-	this->align=align;
-	if(mykearsley!=NULL){mykearsley->assignAlign(align);}else{cerr<<"kearsley is not initialized"<<endl; exit(0);}
-}
-
-void OptimalAlignment::assignDisplace(  const std::vector<double> & displace ){
-	this->displace=displace;
-}
-
-
-double OptimalAlignment::calculate(bool squared, std::vector<Vector> & derivatives){
-
-	bool rmsd=!squared ;  
-
-	double err;
-
-	// at this point everything should be already in place for calculating the alignment (p1,p2,align)
-	// here everything is done with kearsley algorithm. Extension to other optimal alignment algos is
-	// possible here below with a switch
-
-	err=mykearsley->calculate(rmsd);  // this calculates the MSD: transform into RMSD
-
-	// check findiff alignment
-	 //mykearsley->finiteDifferenceInterface(rmsd);
-
-	if(fast){
-		//log->printf("Doing fast: ERR %12.6f \n",err);
-		derrdp0=mykearsley->derrdp0;
-		derrdp1=mykearsley->derrdp1;
-		derivatives=derrdp0;
-	}else{
-		/// TODO this interface really sucks since is strongly asymmetric should be re-engineered.
-		err=weightedAlignment(rmsd);
-		//log->printf("Doing slow: ERR %12.6f \n",err);
-		derivatives=derrdp0;
-	}
-	// destroy the kearsley object?
-
-	return err;
-}
-
-#ifdef __INTEL_COMPILER
-#pragma intel optimization_level 2
-#endif
-/// this does the weighed alignment if the vector of alignment is different from displacement
-double OptimalAlignment::weightedAlignment( bool rmsd){
-	double tmp0,tmp1,walign,wdisplace,const1,ret;
-	unsigned  i,k,l,m,n,o,oo,mm;
-
-	unsigned natoms=p0.size();
-
-	Kearsley *myk=mykearsley;  /// just a shortcut
-
-	/// TODO : these two blocks can be calculated once forever after the initialization (exception for certain methods?)
-
-	/// clear derivatives
-	if (derrdp0.size()!=natoms)derrdp0.resize(natoms);
-	if (derrdp1.size()!=natoms)derrdp1.resize(natoms);
-
-	// clear the container
-	for(i=0;i<natoms;i++){
-		derrdp0[i][0]=derrdp0[i][1]=derrdp0[i][2]=0.;
-		derrdp1[i][0]=derrdp1[i][1]=derrdp1[i][2]=0.;
-	}
-
-	walign=0.;
-	vector<int> alignmap;
-	for(i=0;i<natoms;i++){
-		if (align[i]>0.){
-			alignmap.push_back(i);
-			walign+=align[i];
-		}
-		if (align[i]<0.){cerr<<"FOUND ALIGNMENT WEIGHT NEGATIVE!"<<endl;exit(0);};
-	}
-
-	wdisplace=0.;
-	vector<int> displacemap;
-	for(i=0;i<natoms;i++){
-		if (displace[i]>0.){
-			displacemap.push_back(i);
-			wdisplace+=displace[i];
-		}
-		if (displace[i]<0.){cerr<<"FOUND ALIGNMENT WEIGHT NEGATIVE!"<<endl;exit(0);};
-	}
-
-
-	tmp0=0.;
-
-	vector<Vector> array_n_3;
-	array_n_3.resize(natoms);
-	for(i=0;i<array_n_3.size();i++)array_n_3[i][0]=array_n_3[i][1]=array_n_3[i][2]=0.;
-
-	//    err= (1/totdisplace) sum_k_l   displace_k*((p0reset_k_l- sum_k_m rot_l_m*p1reset_k_m )**2)
-
-	//for(kk=0;kk<displacemap.size();kk++){
-	//	k=displacemap[kk];
-	for(k=0;k<natoms;k++){
-
-		for(l=0;l<3;l++){
-
-			tmp1=0.;
-			// contribution from rotated reference frame //
-			for(m=0;m<3;m++){
-				tmp1-=myk->rotmat0on1[l][m]*myk->p1reset[k][m];
-			}
-
-			// contribution from running centered frame //
-			tmp1+= myk->p0reset[k][l];
-
-			array_n_3[k][l]=tmp1; // store coefficents for derivative usage//
-			tmp0+=tmp1*tmp1*displace[k]; //squared distance added//
-		}
-
-	}
-
-	tmp0=tmp0/wdisplace;
-
-  // log->printf(" ERRR NEW %f \n",tmp0);
-
-	ret=tmp0;
-
-	/* DERIVATIVE CALCULATION:respect to running frame */
-	for(k=0;k<natoms;k++){
-		for(l=0;l<3;l++){
-
-			tmp1 =2.*array_n_3[k][l]*displace[k]/wdisplace ; //ok
-
-			const1=2.*align[k]/(walign*wdisplace);
-
-			if(const1>0.){
-				for(oo=0;oo<displacemap.size();oo++){
-					o=displacemap[oo];
-					tmp1 -=const1*array_n_3[o][l]*displace[o];   //ok
-				}
-			}
-
-			for(mm=0;mm<displacemap.size();mm++){
-				m=displacemap[mm];
-				const1=2.* displace[m]/wdisplace ;
-				for(n=0;n<3;n++){
-					tmp0=0.;
-					for(o=0;o<3;o++){
-						int ind=n*3*3*natoms+o*3*natoms+l*natoms+k;  //ok
-						tmp0+=myk->dmatdp0[ind]*myk->p1reset[m][o];
-					}
-					tmp0*=-const1*array_n_3[m][n];
-
-					tmp1+=tmp0;
-				}
-			}
-
-			derrdp0[k][l]=tmp1;
-
-		}
-	}
-	//exit(0);
-
-	//return ret;
-	bool do_frameref_der=true;
-
-	// derivatives of
-	//    err= (1/totdisplace) sum_k_l   displace_k*((p0reset_k_l- sum_m rot_l_m*p1reset_k_m )**2)
-	// respect p1:
-	// derr_dp1=(1/totdisplace) sum_k_l 2*displace_k*(p0reset_k_l- sum_m rot_l_m*p1reset_k_m )
-	// 									 *d/dp1 ( p0reset_k_l- sum_m rot_l_m*p1reset_k_m)
-	// =
-	// (1/totdisplace) sum_k_l 2*displace_k*(p0reset_k_l- sum_m rot_l_m*p1reset_k_m )*
-	//							*(d/dp1 p0reset_k_l
-	//								- sum_m (d/dp1  rot_l_m)*p1reset_k_m
-	//								- sum_m rot_l_m*(d/dp1 p1reset_k_m ) )
-	// =
-	// 				sum_k_l 2*displace_k/totdisplace* array_n_3_k_l
-	//							*(- sum_m (d/dp1  rot_l_m)*p1reset_k_m
-	//								- sum_m rot_l_m*(d/dp1 p1reset_k_m ) )
-
-	if(do_frameref_der){
-		for(k=0;k<natoms;k++){
-//			for(kk=0;kk<displacemap.size();kk++){
-//				k=displacemap[kk];
-
-			for(l=0;l<3;l++){
-
-				tmp1=0.;
-				for(mm=0;mm<displacemap.size();mm++){
-					m=displacemap[mm];
-					const1=2.* displace[m]/wdisplace ;
-					for(n=0;n<3;n++){
-						tmp0=0.;
-						for(o=0;o<3;o++){
-							int ind=n*3*3*natoms+o*3*natoms+l*natoms+k;
-							tmp0+=myk->dmatdp1[ind]*myk->p1reset[m][o];
-						}
-						tmp0*=-const1*array_n_3[m][n];
-						tmp1+= tmp0;
-					}
-
-				}
-
-				tmp0=0.;
-				for(o=0;o<3;o++){
-							tmp0+=array_n_3[k][o]*myk->rotmat0on1[o][l];
-				}
-				tmp1+=-tmp0*2.*displace[k]/wdisplace;
-
-				tmp0=0.;
-
-				for(mm=0;mm<displacemap.size();mm++){
-					m=displacemap[mm];
-					for(o=0;o<3;o++){
-						tmp0+=array_n_3[m][o]*myk->rotmat0on1[o][l]*displace[m];
-					}
-				}
-				tmp1 += tmp0*2.*align[k]/(walign*wdisplace);
-
-				derrdp1[k][l]=tmp1;
-
-			}
-		}
-	}
-
-	/// probably not really the way it should be
-	if (rmsd){
-		ret=sqrt(ret);
-			double tmp=0.5/ret;
-			for(unsigned i=0;i<natoms;i++){
-					derrdp0[i][0]=derrdp0[i][0]*tmp;
-					derrdp0[i][1]=derrdp0[i][1]*tmp;
-					derrdp0[i][2]=derrdp0[i][2]*tmp;
-					derrdp1[i][0]=derrdp1[i][0]*tmp;
-					derrdp1[i][1]=derrdp1[i][1]*tmp;
-					derrdp1[i][2]=derrdp1[i][2]*tmp;
-
-			}
-	}
-
-	return ret;
-}
-
-double OptimalAlignment::weightedFindiffTest( bool rmsd){
-
-        Random rnd;
-
-	log->printf("Entering rmsd finite difference test system\n ");
-	log->printf("RMSD OR MSD: %s\n",(rmsd)?"rmsd":"msd");
-	log->printf("-------------------------------------------\n");
-	log->printf("TEST1: derivative of the value (derr_dr0/derr_dr1)\n");
-	//// test 1
-	double step=1.e-8,olderr,delta,err;
-	vector<Vector> fakederivatives;
-	fakederivatives.resize(p0.size());
-	fast=false;
-	// randomizing alignments and  displacements
-/*	for (i=0;i<p0.size();i++){
-		// draw a random number
-	    delta=drand48();
-	    delta1=drand48();
-	    if(delta>delta1){
-	    	align[i]=delta;
-	    }else{align[i]=0.;};
-	    delta=drand48();
-	    delta1=drand48();
-	    if(delta>delta1){
-	    	displace[i]=delta;
-	    }else{displace[i]=0.;}
-	}*/
-	//// get initial value of the error and derivative of it
-	assignAlign(align);
-	assignDisplace(displace);
-	olderr=calculate(rmsd, fakederivatives);
-
-	log->printf("INITIAL ERROR VALUE: %e\n",olderr);
-
-	// randomizing alignments and  displacements
-	log->printf("TESTING: derrdp0 \n");
-
-	for(unsigned j=0;j<3;j++){
-	   for(unsigned i=0;i<derrdp0.size();i++){
-	       // random displacement
-	       delta=(rnd.RandU01()-0.5)*2*step;
-	       p0[i][j]+=delta;
-	       assignP0( p0 );
-	       err=calculate(rmsd, fakederivatives);
-	       p0[i][j]-=delta;
-	       assignP0( p0 );
-	       switch(j){
-	         case 0:
-	             log->printf("TESTING: X  %4u ANAL %18.9f NUMER %18.9f DELTA %18.9f DISP %6.2f ALIGN %6.2f \n",i,derrdp0[i][j],(err-olderr)/delta,derrdp0[i][j]-(err-olderr)/delta,displace[i],align[i]);break;
-	         case 1:
-	             log->printf("TESTING: Y  %4u ANAL %18.9f NUMER %18.9f DELTA %18.9f DISP %6.2f ALIGN %6.2f \n",i,derrdp0[i][j],(err-olderr)/delta,derrdp0[i][j]-(err-olderr)/delta,displace[i],align[i]);break;
-	         case 2:
-	             log->printf("TESTING: Z  %4u ANAL %18.9f NUMER %18.9f DELTA %18.9f DISP %6.2f ALIGN %6.2f \n",i,derrdp0[i][j],(err-olderr)/delta,derrdp0[i][j]-(err-olderr)/delta,displace[i],align[i]);break;
-
-	       }
-	   }
-	}
-
-	log->printf("TESTING: derrdp1 \n");
-	for(unsigned j=0;j<3;j++){
-	   for(unsigned i=0;i<derrdp1.size();i++){
-	       // random displacement
-	       delta=(rnd.RandU01()-0.5)*2*step;
-	       p1[i][j]+=delta;
-	       assignP1( p1 );
-	       err=calculate(rmsd, fakederivatives);
-	       p1[i][j]-=delta;
-	       assignP1( p1 );
-	       switch(j){
-	         case 0:
-	             log->printf("TESTING: X  %4u ANAL %18.9f NUMER %18.9f DELTA %18.9f DISP %6.2f ALIGN %6.2f \n",i,derrdp1[i][j],(err-olderr)/delta,derrdp1[i][j]-(err-olderr)/delta,displace[i],align[i]);break;
-	         case 1:
-	             log->printf("TESTING: Y  %4u ANAL %18.9f NUMER %18.9f DELTA %18.9f DISP %6.2f ALIGN %6.2f \n",i,derrdp1[i][j],(err-olderr)/delta,derrdp1[i][j]-(err-olderr)/delta,displace[i],align[i]);break;
-	         case 2:
-	             log->printf("TESTING: Z  %4u ANAL %18.9f NUMER %18.9f DELTA %18.9f DISP %6.2f ALIGN %6.2f \n",i,derrdp1[i][j],(err-olderr)/delta,derrdp1[i][j]-(err-olderr)/delta,displace[i],align[i]);break;
-
-	       }
-	   }
-	}
-	exit(0);
-
-// This is to avoid warnings:
-  return 0.0;
-
-}
-
-
-
-}
diff --git a/src/tools/OptimalAlignment.h b/src/tools/OptimalAlignment.h
deleted file mode 100644
index 2718d2e8a2b3ba3f8431c893de4c47e1de8849ea..0000000000000000000000000000000000000000
--- a/src/tools/OptimalAlignment.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-   Copyright (c) 2011-2016 The plumed team
-   (see the PEOPLE file at the root of the distribution for a list of names)
-
-   See http://www.plumed.org for more information.
-
-   This file is part of plumed, version 2.
-
-   plumed is free software: you can redistribute it and/or modify
-   it under the terms of the GNU Lesser General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-
-   plumed is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public License
-   along with plumed.  If not, see <http://www.gnu.org/licenses/>.
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
-#ifndef __PLUMED_tools_OptimalAlignment_h
-#define __PLUMED_tools_OptimalAlignment_h
-
-#include "Vector.h"
-#include "Tensor.h"
-#include <vector>
-
-namespace PLMD{
-
-class Log;
-class Kearsley;
-
-/// A class that is intended to include or combine various optimal alignment algorithms
-
-class	OptimalAlignment 
-{
-private:
-	/// a pointer to the object that performs the optimal alignment via quaternions
-	Kearsley *mykearsley;
-	/// displacement vector : a double that says if the coordinate should be used in calculating the RMSD/MSD
-	std::vector<double> displace;
-	/// alignment vector: a double that says if the atom has to be used in reset COM and makeing the alignment
-	std::vector<double> align;
-	/// position of one frame (generally the MD)
-	std::vector<Vector> p0;
-	/// position of the reference frames
-	std::vector<Vector> p1;
-	/// derivatives of the error  respect to the p0 (MD running frame)
-	std::vector<Vector> derrdp0;
-	/// derivatives of the error respect to the p1 (static frame, do not remove: useful for SM)
-	std::vector<Vector> derrdp1;
-	/// the pointer to the logfile
-	Log* log;
-	/// a bool that decides to make the fast version (alignment vec= displacement vec) or the slower case
-	bool fast;
-
-public:
-	/// the contructor
-	OptimalAlignment( const  std::vector<double>  & align,  const std::vector<double>   & displace, const std::vector<Vector> & p0, const std::vector<Vector> & p1 , Log* &log );
-	/// the destructor: delete kearsley
-	~OptimalAlignment();
-	/// assignment of the running frame p0
-	void assignP0(  const std::vector<Vector> & p0 );
-	/// assignment to the reference frame p1
-	void assignP1(  const std::vector<Vector> & p1 );
-	// this updates align runtime
-	void assignAlign(  const std::vector<double> & align );
-	// this updates displace runtime
-	void assignDisplace(  const std::vector<double> & displace );
-	/// this does the real calculation
-	double calculate( bool rmsd, std::vector<Vector> & derivatives);
-	/// this should perform the weighted alignment
-	double weightedAlignment( bool rmsd);
-	// a finite difference test
-	double weightedFindiffTest( bool rmsd);
-};
-
-}
-
-#endif
-
diff --git a/src/wrapper/Plumed.h b/src/wrapper/Plumed.h
index aa3177744eeba57d3def0a883e6d92aa043a715a..60caea6e9819a3d7adc5abb0aea39473723df8bd 100644
--- a/src/wrapper/Plumed.h
+++ b/src/wrapper/Plumed.h
@@ -58,6 +58,8 @@
   In the C and FORTRAN interfaces, all the routines are named plumed_*, to
   avoid potential name clashes. Notice that the entire plumed library
   is implemented in C++, and it is hidden inside the PLMD namespace.
+  If the used C++ compiler supports C++11, PLMD::Plumed object defines move semantics
+  so as to be usable in STL containers. That is, you can declare a std::vector<PLMD::Plumed>.
 
   Handlers to the plumed object can be converted among different representations,
   to allow inter-operability among languages. In C, there are tools to convert
@@ -433,6 +435,25 @@ private:
 */
   Plumed&operator=(const Plumed&);
 public:
+/*
+  PLUMED 2.4 requires a C++11 compiler.
+  Anyway, since Plumed.h file might be redistributed with other codes
+  and it should be possible to combine it with earlier PLUMED versions,
+  we here explicitly check if C+11 is available before enabling move semantics.
+  This could still create problems if a compiler 'cheats', setting  __cplusplus > 199711L
+  but not supporting move semantics. Hopefully will not happen!
+*/
+#if __cplusplus > 199711L
+/** Move constructor.
+  Only if move semantics is enabled.
+  It allows storing PLMD::Plumed objects in STL containers.
+*/
+  Plumed(Plumed&&);
+/** Move assignment.
+  Only if move semantics is enabled.
+*/
+  Plumed& operator=(Plumed&&);
+#endif
 /**
    Retrieve the C plumed structure for this object
 */
@@ -488,6 +509,21 @@ Plumed::Plumed(plumed p):
   reference(true)
 {}
 
+#if __cplusplus > 199711L
+inline
+Plumed::Plumed(Plumed&& p):
+  main(p.main),
+  reference(p.reference)
+{}
+
+inline
+Plumed& Plumed::operator=(Plumed&& p){
+  main=p.main;
+  reference=p.reference;
+  return *this;
+}
+#endif
+
 inline
 Plumed::operator plumed()const{
   return main;