From f8cd42e2ea8e2c0fd0117891eb5fca98e19cfed4 Mon Sep 17 00:00:00 2001
From: Giovanni Bussi <giovanni.bussi@gmail.com>
Date: Thu, 3 May 2018 10:14:50 +0200
Subject: [PATCH] Regtest

Some test for the leptonx2 optimization.
Also some test for different functions.
---
 regtest/basic/rt20b/COLVAR1.reference |  31 ++
 regtest/basic/rt20b/deriv1.reference  | 451 ++++++++++++++++++++++++++
 regtest/basic/rt20b/plumed.dat        |  11 +
 regtest/basic/rt42/check1.reference   | 109 +++++++
 regtest/basic/rt42/plumed.dat         |  18 +
 5 files changed, 620 insertions(+)
 create mode 100644 regtest/basic/rt20b/COLVAR1.reference
 create mode 100644 regtest/basic/rt20b/deriv1.reference
 create mode 100644 regtest/basic/rt42/check1.reference

diff --git a/regtest/basic/rt20b/COLVAR1.reference b/regtest/basic/rt20b/COLVAR1.reference
new file mode 100644
index 000000000..680ee6551
--- /dev/null
+++ b/regtest/basic/rt20b/COLVAR1.reference
@@ -0,0 +1,31 @@
+#! FIELDS time c1 cs1
+ 0.000000 1.000000 1.000000
+ 1.000000 1.000000 1.000000
+ 2.000000 0.999987 0.999987
+ 3.000000 0.999849 0.999847
+ 4.000000 0.999152 0.999139
+ 5.000000 0.996773 0.996723
+ 6.000000 0.990427 0.990277
+ 7.000000 0.976206 0.975834
+ 8.000000 0.948488 0.947683
+ 9.000000 0.900818 0.899268
+ 10.000000 0.828379 0.825698
+ 11.000000 0.731515 0.727320
+ 12.000000 0.617808 0.611837
+ 13.000000 0.500000 0.492188
+ 14.000000 0.390634 0.381113
+ 15.000000 0.297631 0.286656
+ 16.000000 0.223422 0.211288
+ 17.000000 0.166646 0.153625
+ 18.000000 0.124277 0.110594
+ 19.000000 0.093051 0.078880
+ 20.000000 0.070130 0.055601
+ 21.000000 0.053280 0.038488
+ 22.000000 0.040834 0.025847
+ 23.000000 0.031576 0.016444
+ 24.000000 0.024635 0.009395
+ 25.000000 0.019387 0.004065
+ 26.000000 0.000000 0.000000
+ 27.000000 0.000000 0.000000
+ 28.000000 0.000000 0.000000
+ 29.000000 0.000000 0.000000
diff --git a/regtest/basic/rt20b/deriv1.reference b/regtest/basic/rt20b/deriv1.reference
new file mode 100644
index 000000000..8a26867dc
--- /dev/null
+++ b/regtest/basic/rt20b/deriv1.reference
@@ -0,0 +1,451 @@
+#! FIELDS time parameter c1 cs1
+ 0.000000 0   0.0000   0.0000
+ 0.000000 1   0.0000   0.0000
+ 0.000000 2   0.0000   0.0000
+ 0.000000 3   0.0000   0.0000
+ 0.000000 4   0.0000   0.0000
+ 0.000000 5   0.0000   0.0000
+ 0.000000 6   0.0000   0.0000
+ 0.000000 7   0.0000   0.0000
+ 0.000000 8   0.0000   0.0000
+ 0.000000 9   0.0000   0.0000
+ 0.000000 10   0.0000   0.0000
+ 0.000000 11   0.0000   0.0000
+ 0.000000 12   0.0000   0.0000
+ 0.000000 13   0.0000   0.0000
+ 0.000000 14   0.0000   0.0000
+ 1.000000 0   0.0000   0.0000
+ 1.000000 1   0.0000   0.0000
+ 1.000000 2   0.0000   0.0000
+ 1.000000 3   0.0000   0.0000
+ 1.000000 4   0.0000   0.0000
+ 1.000000 5  -0.0000  -0.0000
+ 1.000000 6   0.0000   0.0000
+ 1.000000 7   0.0000   0.0000
+ 1.000000 8   0.0000   0.0000
+ 1.000000 9   0.0000   0.0000
+ 1.000000 10   0.0000   0.0000
+ 1.000000 11   0.0000   0.0000
+ 1.000000 12   0.0000   0.0000
+ 1.000000 13   0.0000   0.0000
+ 1.000000 14   0.0000   0.0000
+ 2.000000 0   0.0000   0.0000
+ 2.000000 1   0.0000   0.0000
+ 2.000000 2   0.0004   0.0004
+ 2.000000 3   0.0000   0.0000
+ 2.000000 4   0.0000   0.0000
+ 2.000000 5  -0.0004  -0.0004
+ 2.000000 6   0.0000   0.0000
+ 2.000000 7   0.0000   0.0000
+ 2.000000 8   0.0000   0.0000
+ 2.000000 9   0.0000   0.0000
+ 2.000000 10   0.0000   0.0000
+ 2.000000 11   0.0000   0.0000
+ 2.000000 12   0.0000   0.0000
+ 2.000000 13   0.0000   0.0000
+ 2.000000 14   0.0001   0.0001
+ 3.000000 0   0.0000   0.0000
+ 3.000000 1   0.0000   0.0000
+ 3.000000 2   0.0030   0.0031
+ 3.000000 3   0.0000   0.0000
+ 3.000000 4   0.0000   0.0000
+ 3.000000 5  -0.0030  -0.0031
+ 3.000000 6   0.0000   0.0000
+ 3.000000 7   0.0000   0.0000
+ 3.000000 8   0.0000   0.0000
+ 3.000000 9   0.0000   0.0000
+ 3.000000 10   0.0000   0.0000
+ 3.000000 11   0.0000   0.0000
+ 3.000000 12   0.0000   0.0000
+ 3.000000 13   0.0000   0.0000
+ 3.000000 14   0.0009   0.0009
+ 4.000000 0   0.0000   0.0000
+ 4.000000 1   0.0000   0.0000
+ 4.000000 2   0.0127   0.0129
+ 4.000000 3   0.0000   0.0000
+ 4.000000 4   0.0000   0.0000
+ 4.000000 5  -0.0127  -0.0129
+ 4.000000 6   0.0000   0.0000
+ 4.000000 7   0.0000   0.0000
+ 4.000000 8   0.0000   0.0000
+ 4.000000 9   0.0000   0.0000
+ 4.000000 10   0.0000   0.0000
+ 4.000000 11   0.0000   0.0000
+ 4.000000 12   0.0000   0.0000
+ 4.000000 13   0.0000   0.0000
+ 4.000000 14   0.0051   0.0052
+ 5.000000 0   0.0000   0.0000
+ 5.000000 1   0.0000   0.0000
+ 5.000000 2   0.0386   0.0392
+ 5.000000 3   0.0000   0.0000
+ 5.000000 4   0.0000   0.0000
+ 5.000000 5  -0.0386  -0.0392
+ 5.000000 6   0.0000   0.0000
+ 5.000000 7   0.0000   0.0000
+ 5.000000 8   0.0000   0.0000
+ 5.000000 9   0.0000   0.0000
+ 5.000000 10   0.0000   0.0000
+ 5.000000 11   0.0000   0.0000
+ 5.000000 12   0.0000   0.0000
+ 5.000000 13   0.0000   0.0000
+ 5.000000 14   0.0193   0.0196
+ 6.000000 0   0.0000   0.0000
+ 6.000000 1   0.0000   0.0000
+ 6.000000 2   0.0948   0.0963
+ 6.000000 3   0.0000   0.0000
+ 6.000000 4   0.0000   0.0000
+ 6.000000 5  -0.0948  -0.0963
+ 6.000000 6   0.0000   0.0000
+ 6.000000 7   0.0000   0.0000
+ 6.000000 8   0.0000   0.0000
+ 6.000000 9   0.0000   0.0000
+ 6.000000 10   0.0000   0.0000
+ 6.000000 11   0.0000   0.0000
+ 6.000000 12   0.0000   0.0000
+ 6.000000 13   0.0000   0.0000
+ 6.000000 14   0.0569   0.0578
+ 7.000000 0   0.0000   0.0000
+ 7.000000 1   0.0000   0.0000
+ 7.000000 2   0.1991   0.2022
+ 7.000000 3   0.0000   0.0000
+ 7.000000 4   0.0000   0.0000
+ 7.000000 5  -0.1991  -0.2022
+ 7.000000 6   0.0000   0.0000
+ 7.000000 7   0.0000   0.0000
+ 7.000000 8   0.0000   0.0000
+ 7.000000 9   0.0000   0.0000
+ 7.000000 10   0.0000   0.0000
+ 7.000000 11   0.0000   0.0000
+ 7.000000 12   0.0000   0.0000
+ 7.000000 13   0.0000   0.0000
+ 7.000000 14   0.1394   0.1415
+ 8.000000 0   0.0000   0.0000
+ 8.000000 1   0.0000   0.0000
+ 8.000000 2   0.3664   0.3722
+ 8.000000 3   0.0000   0.0000
+ 8.000000 4   0.0000   0.0000
+ 8.000000 5  -0.3664  -0.3722
+ 8.000000 6   0.0000   0.0000
+ 8.000000 7   0.0000   0.0000
+ 8.000000 8   0.0000   0.0000
+ 8.000000 9   0.0000   0.0000
+ 8.000000 10   0.0000   0.0000
+ 8.000000 11   0.0000   0.0000
+ 8.000000 12   0.0000   0.0000
+ 8.000000 13   0.0000   0.0000
+ 8.000000 14   0.2932   0.2977
+ 9.000000 0   0.0000   0.0000
+ 9.000000 1   0.0000   0.0000
+ 9.000000 2   0.5956   0.6049
+ 9.000000 3   0.0000   0.0000
+ 9.000000 4   0.0000   0.0000
+ 9.000000 5  -0.5956  -0.6049
+ 9.000000 6   0.0000   0.0000
+ 9.000000 7   0.0000   0.0000
+ 9.000000 8   0.0000   0.0000
+ 9.000000 9   0.0000   0.0000
+ 9.000000 10   0.0000   0.0000
+ 9.000000 11   0.0000   0.0000
+ 9.000000 12   0.0000   0.0000
+ 9.000000 13   0.0000   0.0000
+ 9.000000 14   0.5361   0.5444
+ 10.000000 0   0.0000   0.0000
+ 10.000000 1   0.0000   0.0000
+ 10.000000 2   0.8530   0.8663
+ 10.000000 3   0.0000   0.0000
+ 10.000000 4   0.0000   0.0000
+ 10.000000 5  -0.8530  -0.8663
+ 10.000000 6   0.0000   0.0000
+ 10.000000 7   0.0000   0.0000
+ 10.000000 8   0.0000   0.0000
+ 10.000000 9   0.0000   0.0000
+ 10.000000 10   0.0000   0.0000
+ 10.000000 11   0.0000   0.0000
+ 10.000000 12   0.0000   0.0000
+ 10.000000 13   0.0000   0.0000
+ 10.000000 14   0.8530   0.8663
+ 11.000000 0   0.0000   0.0000
+ 11.000000 1   0.0000   0.0000
+ 11.000000 2   1.0713   1.0880
+ 11.000000 3   0.0000   0.0000
+ 11.000000 4   0.0000   0.0000
+ 11.000000 5  -1.0713  -1.0880
+ 11.000000 6   0.0000   0.0000
+ 11.000000 7   0.0000   0.0000
+ 11.000000 8   0.0000   0.0000
+ 11.000000 9   0.0000   0.0000
+ 11.000000 10   0.0000   0.0000
+ 11.000000 11   0.0000   0.0000
+ 11.000000 12   0.0000   0.0000
+ 11.000000 13   0.0000   0.0000
+ 11.000000 14   1.1784   1.1968
+ 12.000000 0   0.0000   0.0000
+ 12.000000 1   0.0000   0.0000
+ 12.000000 2   1.1806   1.1991
+ 12.000000 3   0.0000   0.0000
+ 12.000000 4   0.0000   0.0000
+ 12.000000 5  -1.1806  -1.1991
+ 12.000000 6   0.0000   0.0000
+ 12.000000 7   0.0000   0.0000
+ 12.000000 8   0.0000   0.0000
+ 12.000000 9   0.0000   0.0000
+ 12.000000 10   0.0000   0.0000
+ 12.000000 11   0.0000   0.0000
+ 12.000000 12   0.0000   0.0000
+ 12.000000 13   0.0000   0.0000
+ 12.000000 14   1.4167   1.4389
+ 13.000000 0   0.0000   0.0000
+ 13.000000 1   0.0000   0.0000
+ 13.000000 2   1.1538   1.1719
+ 13.000000 3   0.0000   0.0000
+ 13.000000 4   0.0000   0.0000
+ 13.000000 5  -1.1538  -1.1719
+ 13.000000 6   0.0000   0.0000
+ 13.000000 7   0.0000   0.0000
+ 13.000000 8   0.0000   0.0000
+ 13.000000 9   0.0000   0.0000
+ 13.000000 10   0.0000   0.0000
+ 13.000000 11   0.0000   0.0000
+ 13.000000 12   0.0000   0.0000
+ 13.000000 13   0.0000   0.0000
+ 13.000000 14   1.5000   1.5234
+ 14.000000 0   0.0000   0.0000
+ 14.000000 1   0.0000   0.0000
+ 14.000000 2   1.0202   1.0361
+ 14.000000 3   0.0000   0.0000
+ 14.000000 4   0.0000   0.0000
+ 14.000000 5  -1.0202  -1.0361
+ 14.000000 6   0.0000   0.0000
+ 14.000000 7   0.0000   0.0000
+ 14.000000 8   0.0000   0.0000
+ 14.000000 9   0.0000   0.0000
+ 14.000000 10   0.0000   0.0000
+ 14.000000 11   0.0000   0.0000
+ 14.000000 12   0.0000   0.0000
+ 14.000000 13   0.0000   0.0000
+ 14.000000 14   1.4282   1.4506
+ 15.000000 0   0.0000   0.0000
+ 15.000000 1   0.0000   0.0000
+ 15.000000 2   0.8362   0.8493
+ 15.000000 3   0.0000   0.0000
+ 15.000000 4   0.0000   0.0000
+ 15.000000 5  -0.8362  -0.8493
+ 15.000000 6   0.0000   0.0000
+ 15.000000 7   0.0000   0.0000
+ 15.000000 8   0.0000   0.0000
+ 15.000000 9   0.0000   0.0000
+ 15.000000 10   0.0000   0.0000
+ 15.000000 11   0.0000   0.0000
+ 15.000000 12   0.0000   0.0000
+ 15.000000 13   0.0000   0.0000
+ 15.000000 14   1.2543   1.2739
+ 16.000000 0   0.0000   0.0000
+ 16.000000 1   0.0000   0.0000
+ 16.000000 2   0.6506   0.6608
+ 16.000000 3   0.0000   0.0000
+ 16.000000 4   0.0000   0.0000
+ 16.000000 5  -0.6506  -0.6608
+ 16.000000 6   0.0000   0.0000
+ 16.000000 7   0.0000   0.0000
+ 16.000000 8   0.0000   0.0000
+ 16.000000 9   0.0000   0.0000
+ 16.000000 10   0.0000   0.0000
+ 16.000000 11   0.0000   0.0000
+ 16.000000 12   0.0000   0.0000
+ 16.000000 13   0.0000   0.0000
+ 16.000000 14   1.0410   1.0573
+ 17.000000 0   0.0000   0.0000
+ 17.000000 1   0.0000   0.0000
+ 17.000000 2   0.4901   0.4978
+ 17.000000 3   0.0000   0.0000
+ 17.000000 4   0.0000   0.0000
+ 17.000000 5  -0.4901  -0.4978
+ 17.000000 6   0.0000   0.0000
+ 17.000000 7   0.0000   0.0000
+ 17.000000 8   0.0000   0.0000
+ 17.000000 9   0.0000   0.0000
+ 17.000000 10   0.0000   0.0000
+ 17.000000 11   0.0000   0.0000
+ 17.000000 12   0.0000   0.0000
+ 17.000000 13   0.0000   0.0000
+ 17.000000 14   0.8333   0.8463
+ 18.000000 0   0.0000   0.0000
+ 18.000000 1   0.0000   0.0000
+ 18.000000 2   0.3628   0.3684
+ 18.000000 3   0.0000   0.0000
+ 18.000000 4   0.0000   0.0000
+ 18.000000 5  -0.3628  -0.3684
+ 18.000000 6   0.0000   0.0000
+ 18.000000 7   0.0000   0.0000
+ 18.000000 8   0.0000   0.0000
+ 18.000000 9   0.0000   0.0000
+ 18.000000 10   0.0000   0.0000
+ 18.000000 11   0.0000   0.0000
+ 18.000000 12   0.0000   0.0000
+ 18.000000 13   0.0000   0.0000
+ 18.000000 14   0.6530   0.6632
+ 19.000000 0   0.0000   0.0000
+ 19.000000 1   0.0000   0.0000
+ 19.000000 2   0.2665   0.2707
+ 19.000000 3   0.0000   0.0000
+ 19.000000 4   0.0000   0.0000
+ 19.000000 5  -0.2665  -0.2707
+ 19.000000 6   0.0000   0.0000
+ 19.000000 7   0.0000   0.0000
+ 19.000000 8   0.0000   0.0000
+ 19.000000 9   0.0000   0.0000
+ 19.000000 10   0.0000   0.0000
+ 19.000000 11   0.0000   0.0000
+ 19.000000 12   0.0000   0.0000
+ 19.000000 13   0.0000   0.0000
+ 19.000000 14   0.5064   0.5143
+ 20.000000 0   0.0000   0.0000
+ 20.000000 1   0.0000   0.0000
+ 20.000000 2   0.1956   0.1987
+ 20.000000 3   0.0000   0.0000
+ 20.000000 4   0.0000   0.0000
+ 20.000000 5  -0.1956  -0.1987
+ 20.000000 6   0.0000   0.0000
+ 20.000000 7   0.0000   0.0000
+ 20.000000 8   0.0000   0.0000
+ 20.000000 9   0.0000   0.0000
+ 20.000000 10   0.0000   0.0000
+ 20.000000 11   0.0000   0.0000
+ 20.000000 12   0.0000   0.0000
+ 20.000000 13   0.0000   0.0000
+ 20.000000 14   0.3913   0.3974
+ 21.000000 0   0.0000   0.0000
+ 21.000000 1   0.0000   0.0000
+ 21.000000 2   0.1441   0.1464
+ 21.000000 3   0.0000   0.0000
+ 21.000000 4   0.0000   0.0000
+ 21.000000 5  -0.1441  -0.1464
+ 21.000000 6   0.0000   0.0000
+ 21.000000 7   0.0000   0.0000
+ 21.000000 8   0.0000   0.0000
+ 21.000000 9   0.0000   0.0000
+ 21.000000 10   0.0000   0.0000
+ 21.000000 11   0.0000   0.0000
+ 21.000000 12   0.0000   0.0000
+ 21.000000 13   0.0000   0.0000
+ 21.000000 14   0.3026   0.3074
+ 22.000000 0   0.0000   0.0000
+ 22.000000 1   0.0000   0.0000
+ 22.000000 2   0.1068   0.1085
+ 22.000000 3   0.0000   0.0000
+ 22.000000 4   0.0000   0.0000
+ 22.000000 5  -0.1068  -0.1085
+ 22.000000 6   0.0000   0.0000
+ 22.000000 7   0.0000   0.0000
+ 22.000000 8   0.0000   0.0000
+ 22.000000 9   0.0000   0.0000
+ 22.000000 10   0.0000   0.0000
+ 22.000000 11   0.0000   0.0000
+ 22.000000 12   0.0000   0.0000
+ 22.000000 13   0.0000   0.0000
+ 22.000000 14   0.2350   0.2387
+ 23.000000 0   0.0000   0.0000
+ 23.000000 1   0.0000   0.0000
+ 23.000000 2   0.0798   0.0810
+ 23.000000 3   0.0000   0.0000
+ 23.000000 4   0.0000   0.0000
+ 23.000000 5  -0.0798  -0.0810
+ 23.000000 6   0.0000   0.0000
+ 23.000000 7   0.0000   0.0000
+ 23.000000 8   0.0000   0.0000
+ 23.000000 9   0.0000   0.0000
+ 23.000000 10   0.0000   0.0000
+ 23.000000 11   0.0000   0.0000
+ 23.000000 12   0.0000   0.0000
+ 23.000000 13   0.0000   0.0000
+ 23.000000 14   0.1835   0.1863
+ 24.000000 0   0.0000   0.0000
+ 24.000000 1   0.0000   0.0000
+ 24.000000 2   0.0601   0.0610
+ 24.000000 3   0.0000   0.0000
+ 24.000000 4   0.0000   0.0000
+ 24.000000 5  -0.0601  -0.0610
+ 24.000000 6   0.0000   0.0000
+ 24.000000 7   0.0000   0.0000
+ 24.000000 8   0.0000   0.0000
+ 24.000000 9   0.0000   0.0000
+ 24.000000 10   0.0000   0.0000
+ 24.000000 11   0.0000   0.0000
+ 24.000000 12   0.0000   0.0000
+ 24.000000 13   0.0000   0.0000
+ 24.000000 14   0.1442   0.1464
+ 25.000000 0   0.0000   0.0000
+ 25.000000 1   0.0000   0.0000
+ 25.000000 2   0.0456   0.0463
+ 25.000000 3   0.0000   0.0000
+ 25.000000 4   0.0000   0.0000
+ 25.000000 5  -0.0456  -0.0463
+ 25.000000 6   0.0000   0.0000
+ 25.000000 7   0.0000   0.0000
+ 25.000000 8   0.0000   0.0000
+ 25.000000 9   0.0000   0.0000
+ 25.000000 10   0.0000   0.0000
+ 25.000000 11   0.0000   0.0000
+ 25.000000 12   0.0000   0.0000
+ 25.000000 13   0.0000   0.0000
+ 25.000000 14   0.1141   0.1159
+ 26.000000 0   0.0000   0.0000
+ 26.000000 1   0.0000   0.0000
+ 26.000000 2   0.0000   0.0000
+ 26.000000 3   0.0000   0.0000
+ 26.000000 4   0.0000   0.0000
+ 26.000000 5   0.0000   0.0000
+ 26.000000 6   0.0000   0.0000
+ 26.000000 7   0.0000   0.0000
+ 26.000000 8   0.0000   0.0000
+ 26.000000 9   0.0000   0.0000
+ 26.000000 10   0.0000   0.0000
+ 26.000000 11   0.0000   0.0000
+ 26.000000 12   0.0000   0.0000
+ 26.000000 13   0.0000   0.0000
+ 26.000000 14   0.0000   0.0000
+ 27.000000 0   0.0000   0.0000
+ 27.000000 1   0.0000   0.0000
+ 27.000000 2   0.0000   0.0000
+ 27.000000 3   0.0000   0.0000
+ 27.000000 4   0.0000   0.0000
+ 27.000000 5   0.0000   0.0000
+ 27.000000 6   0.0000   0.0000
+ 27.000000 7   0.0000   0.0000
+ 27.000000 8   0.0000   0.0000
+ 27.000000 9   0.0000   0.0000
+ 27.000000 10   0.0000   0.0000
+ 27.000000 11   0.0000   0.0000
+ 27.000000 12   0.0000   0.0000
+ 27.000000 13   0.0000   0.0000
+ 27.000000 14   0.0000   0.0000
+ 28.000000 0   0.0000   0.0000
+ 28.000000 1   0.0000   0.0000
+ 28.000000 2   0.0000   0.0000
+ 28.000000 3   0.0000   0.0000
+ 28.000000 4   0.0000   0.0000
+ 28.000000 5   0.0000   0.0000
+ 28.000000 6   0.0000   0.0000
+ 28.000000 7   0.0000   0.0000
+ 28.000000 8   0.0000   0.0000
+ 28.000000 9   0.0000   0.0000
+ 28.000000 10   0.0000   0.0000
+ 28.000000 11   0.0000   0.0000
+ 28.000000 12   0.0000   0.0000
+ 28.000000 13   0.0000   0.0000
+ 28.000000 14   0.0000   0.0000
+ 29.000000 0   0.0000   0.0000
+ 29.000000 1   0.0000   0.0000
+ 29.000000 2   0.0000   0.0000
+ 29.000000 3   0.0000   0.0000
+ 29.000000 4   0.0000   0.0000
+ 29.000000 5   0.0000   0.0000
+ 29.000000 6   0.0000   0.0000
+ 29.000000 7   0.0000   0.0000
+ 29.000000 8   0.0000   0.0000
+ 29.000000 9   0.0000   0.0000
+ 29.000000 10   0.0000   0.0000
+ 29.000000 11   0.0000   0.0000
+ 29.000000 12   0.0000   0.0000
+ 29.000000 13   0.0000   0.0000
+ 29.000000 14   0.0000   0.0000
diff --git a/regtest/basic/rt20b/plumed.dat b/regtest/basic/rt20b/plumed.dat
index 463e8d3db..223915b8a 100644
--- a/regtest/basic/rt20b/plumed.dat
+++ b/regtest/basic/rt20b/plumed.dat
@@ -8,5 +8,16 @@ PRINT ...
 
 DUMPDERIVATIVES ARG=c,cs FILE=deriv FMT=%8.4f
 
+# this is just to make sure that stretching is correct with the optimized x2 implementation
+c1:   COORDINATION GROUPA=1 GROUPB=2 SWITCH={MATHEVAL R_0=1.3 D_MAX=2.6 FUNC=1/(1+x2^3) NOSTRETCH}
+cs1:  COORDINATION GROUPA=1 GROUPB=2 SWITCH={CUSTOM R_0=1.3 D_MAX=2.6 FUNC=1/(1+x2^3)}
+
+PRINT ...
+  ARG=c1,cs1
+  FILE=COLVAR1
+... PRINT
+
+DUMPDERIVATIVES ARG=c1,cs1 FILE=deriv1 FMT=%8.4f
+
 ENDPLUMED
 
diff --git a/regtest/basic/rt42/check1.reference b/regtest/basic/rt42/check1.reference
new file mode 100644
index 000000000..a059518b3
--- /dev/null
+++ b/regtest/basic/rt42/check1.reference
@@ -0,0 +1,109 @@
+#! FIELDS time c d dfast e f g h
+ 0.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 1.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 2.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 3.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 4.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 5.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 6.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 7.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 8.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 9.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 10.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 11.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 12.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 13.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 14.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 15.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 16.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 17.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 18.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 19.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 20.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 21.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 22.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 23.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 24.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 25.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 26.000000 171.1815 171.2953 171.2953 182.5448 182.6585 857.1425 857.1425
+ 27.000000 11555.3194 11555.3194 11555.3194 11555.9968 11555.9968 9813.4170 9813.4170
+ 28.000000 11555.9993 11555.9993 11555.9993 11556.0000 11556.0000 10952.2272 10952.2272
+ 29.000000 11555.7324 11555.7324 11555.7324 11555.9995 11555.9995 10083.8540 10083.8540
+ 30.000000 11555.9999 11555.9999 11555.9999 11556.0000 11556.0000 11126.5294 11126.5294
+ 31.000000 11551.3675 11551.3676 11551.3676 11555.8899 11555.8899 9262.6433 9262.6433
+ 32.000000 11554.8705 11554.8705 11554.8705 11555.9900 11555.9900 9704.2327 9704.2327
+ 33.000000 11555.8052 11555.8052 11555.8052 11555.9998 11555.9998 10036.1770 10036.1770
+ 34.000000 11553.8594 11553.8594 11553.8594 11555.9738 11555.9738 9431.1577 9431.1577
+ 35.000000 11555.9485 11555.9485 11555.9485 11556.0000 11556.0000 10418.1634 10418.1634
+ 36.000000 11553.9347 11553.9347 11553.9347 11555.9756 11555.9756 9466.8778 9466.8778
+ 37.000000 11554.7972 11554.7972 11554.7972 11555.9914 11555.9914 9641.7889 9641.7889
+ 38.000000 11555.8020 11555.8020 11555.8020 11555.9998 11555.9998 10035.9562 10035.9562
+ 39.000000 11555.4367 11555.4367 11555.4367 11555.9983 11555.9983 9790.0490 9790.0490
+ 40.000000 11555.9104 11555.9104 11555.9104 11556.0000 11556.0000 10230.8314 10230.8314
+ 41.000000 11555.6978 11555.6978 11555.6978 11555.9995 11555.9995 9969.0934 9969.0934
+ 42.000000 11548.9710 11548.9711 11548.9711 11555.8145 11555.8145 8973.7830 8973.7830
+ 43.000000 11555.5133 11555.5133 11555.5133 11555.9984 11555.9984 9896.2166 9896.2166
+ 44.000000 11555.4781 11555.4781 11555.4781 11555.9985 11555.9985 9788.6446 9788.6446
+ 45.000000 11555.4807 11555.4807 11555.4807 11555.9980 11555.9980 9886.2067 9886.2067
+ 46.000000 11555.1715 11555.1716 11555.1716 11555.9951 11555.9951 9746.5077 9746.5077
+ 47.000000 11555.0278 11555.0279 11555.0279 11555.9938 11555.9938 9663.8156 9663.8156
+ 48.000000 11555.8818 11555.8818 11555.8818 11555.9999 11555.9999 10206.8420 10206.8420
+ 49.000000 11550.7984 11550.7984 11550.7984 11555.8733 11555.8733 9243.9690 9243.9690
+ 50.000000 11552.3158 11552.3158 11552.3158 11555.9456 11555.9456 9153.2704 9153.2704
+ 51.000000 11555.9024 11555.9024 11555.9024 11556.0000 11556.0000 10294.5076 10294.5076
+ 52.000000 11553.8360 11553.8360 11553.8360 11555.9785 11555.9785 9341.5602 9341.5602
+ 53.000000 11550.5747 11550.5748 11550.5748 11555.8742 11555.8742 9101.5537 9101.5537
+ 54.000000 11555.8688 11555.8688 11555.8688 11555.9999 11555.9999 10148.0927 10148.0927
+ 55.000000 11555.9098 11555.9098 11555.9098 11556.0000 11556.0000 10260.4494 10260.4494
+ 56.000000 11555.9968 11555.9968 11555.9968 11556.0000 11556.0000 10772.3540 10772.3540
+ 57.000000 11555.9475 11555.9475 11555.9475 11556.0000 11556.0000 10328.1273 10328.1273
+ 58.000000 11555.2189 11555.2190 11555.2190 11555.9956 11555.9956 9797.4731 9797.4731
+ 59.000000 11554.3484 11554.3485 11554.3485 11555.9833 11555.9833 9545.7559 9545.7559
+ 60.000000 11555.9989 11555.9989 11555.9989 11556.0000 11556.0000 10908.7613 10908.7613
+ 61.000000 11554.1871 11554.1871 11554.1871 11555.9787 11555.9787 9479.4950 9479.4950
+ 62.000000 11553.9961 11553.9961 11553.9961 11555.9772 11555.9772 9441.4599 9441.4599
+ 63.000000 11553.1389 11553.1389 11553.1389 11555.9552 11555.9552 9341.9431 9341.9431
+ 64.000000 11554.0967 11554.0968 11554.0968 11555.9775 11555.9775 9529.9313 9529.9313
+ 65.000000 11555.9954 11555.9954 11555.9954 11556.0000 11556.0000 10722.0256 10722.0256
+ 66.000000 11555.6342 11555.6342 11555.6342 11555.9992 11555.9992 9924.2156 9924.2156
+ 67.000000 11553.6744 11553.6744 11553.6744 11555.9706 11555.9706 9387.7469 9387.7469
+ 68.000000 11555.7428 11555.7428 11555.7428 11555.9997 11555.9997 9968.6967 9968.6967
+ 69.000000 11552.3911 11552.3911 11552.3911 11555.9355 11555.9355 9240.7544 9240.7544
+ 70.000000 11555.9997 11555.9997 11555.9997 11556.0000 11556.0000 11018.4173 11018.4173
+ 71.000000 11555.0612 11555.0612 11555.0612 11555.9936 11555.9936 9740.3220 9740.3220
+ 72.000000 11555.9224 11555.9224 11555.9224 11556.0000 11556.0000 10349.6091 10349.6091
+ 73.000000 11555.9231 11555.9231 11555.9231 11556.0000 11556.0000 10299.3941 10299.3941
+ 74.000000 11555.7558 11555.7558 11555.7558 11555.9997 11555.9997 9982.0367 9982.0367
+ 75.000000 11551.0097 11551.0098 11551.0098 11555.8819 11555.8819 9173.7783 9173.7783
+ 76.000000 11554.1278 11554.1279 11554.1279 11555.9794 11555.9794 9509.6803 9509.6803
+ 77.000000 11555.7544 11555.7544 11555.7544 11555.9997 11555.9997 10021.2115 10021.2115
+ 78.000000 11553.2694 11553.2694 11553.2694 11555.9644 11555.9644 9388.2415 9388.2415
+ 79.000000 11555.9087 11555.9087 11555.9087 11556.0000 11556.0000 10253.3549 10253.3549
+ 80.000000 11555.2733 11555.2733 11555.2733 11555.9964 11555.9964 9793.0432 9793.0432
+ 81.000000 11554.4183 11554.4184 11554.4184 11555.9865 11555.9865 9492.8793 9492.8793
+ 82.000000 11554.0377 11554.0377 11554.0377 11555.9786 11555.9786 9505.6322 9505.6322
+ 83.000000 11555.8667 11555.8667 11555.8667 11555.9999 11555.9999 10172.6161 10172.6161
+ 84.000000 11555.9784 11555.9784 11555.9784 11556.0000 11556.0000 10476.2075 10476.2075
+ 85.000000 11551.7929 11551.7930 11551.7930 11555.9225 11555.9225 9164.1025 9164.1025
+ 86.000000 11555.3497 11555.3497 11555.3497 11555.9976 11555.9976 9734.5934 9734.5934
+ 87.000000 11555.5810 11555.5810 11555.5810 11555.9991 11555.9991 9854.4028 9854.4028
+ 88.000000 11554.7942 11554.7942 11554.7942 11555.9882 11555.9882 9788.3750 9788.3750
+ 89.000000 11555.2354 11555.2354 11555.2354 11555.9969 11555.9969 9676.7742 9676.7742
+ 90.000000 11554.4651 11554.4651 11554.4651 11555.9841 11555.9841 9605.0962 9605.0962
+ 91.000000 11555.2909 11555.2909 11555.2909 11555.9971 11555.9971 9710.0986 9710.0986
+ 92.000000 11555.8838 11555.8838 11555.8838 11556.0000 11556.0000 10164.7871 10164.7871
+ 93.000000 11554.7613 11554.7613 11554.7613 11555.9908 11555.9908 9563.8592 9563.8592
+ 94.000000 11555.8958 11555.8958 11555.8958 11555.9999 11555.9999 10340.5430 10340.5430
+ 95.000000 11555.8504 11555.8504 11555.8504 11555.9999 11555.9999 10188.6328 10188.6328
+ 96.000000 11553.4806 11553.4806 11553.4806 11555.9709 11555.9709 9306.7080 9306.7080
+ 97.000000 11554.3927 11554.3927 11554.3927 11555.9860 11555.9860 9488.4639 9488.4639
+ 98.000000 11553.9367 11553.9367 11553.9367 11555.9757 11555.9757 9486.2964 9486.2964
+ 99.000000 11555.8015 11555.8015 11555.8015 11555.9998 11555.9998 10061.1075 10061.1075
+ 100.000000 11555.4155 11555.4155 11555.4155 11555.9978 11555.9978 9858.3232 9858.3232
+ 101.000000 11555.2815 11555.2815 11555.2815 11555.9968 11555.9968 9727.2081 9727.2081
+ 102.000000 11549.7314 11549.7315 11549.7315 11555.8361 11555.8361 9060.2674 9060.2674
+ 103.000000 11555.9984 11555.9984 11555.9984 11556.0000 11556.0000 10858.0931 10858.0931
+ 104.000000 11555.3982 11555.3982 11555.3982 11555.9979 11555.9979 9756.6344 9756.6344
+ 105.000000 11555.5026 11555.5027 11555.5027 11555.9983 11555.9983 9887.7851 9887.7851
+ 106.000000 11551.1266 11551.1266 11551.1266 11555.9018 11555.9018 9097.0913 9097.0913
+ 107.000000 11555.7818 11555.7818 11555.7818 11555.9997 11555.9997 10098.5292 10098.5292
diff --git a/regtest/basic/rt42/plumed.dat b/regtest/basic/rt42/plumed.dat
index 02435cbcd..39f0afb24 100644
--- a/regtest/basic/rt42/plumed.dat
+++ b/regtest/basic/rt42/plumed.dat
@@ -5,3 +5,21 @@ PRINT ARG=c,d FILE=colvar FMT=%8.4f STRIDE=1
 FLUSH STRIDE=1
 s: COMBINE ARG=c,d PERIODIC=NO
 RESTRAINT ARG=s KAPPA=0 SLOPE=1 AT=0
+
+dfast: COORDINATION GROUPA=1-108 GROUPB=1-108 SWITCH={CUSTOM FUNC=1/(1+x2^3) R_0=1}
+e: COORDINATION GROUPA=1-108 GROUPB=1-108 R_0=1 NN=7 D_0=0.1
+f: COORDINATION GROUPA=1-108 GROUPB=1-108 SWITCH={CUSTOM FUNC=1/(1+x^7) R_0=1 D_0=0.1}
+g: COORDINATION GROUPA=1-108 GROUPB=1-108 SWITCH={EXP R_0=1}
+h: COORDINATION GROUPA=1-108 GROUPB=1-108 SWITCH={CUSTOM FUNC=exp(-x) R_0=1}
+PRINT ARG=c,d,dfast,e,f,g,h FILE=check1 FMT=%8.4f
+# this would check derivatives:
+# DUMPDERIVATIVES ARG=c,d,dfast FILE=der0 FMT=%8.4f
+# DUMPDERIVATIVES ARG=e,f FILE=der1 FMT=%8.4f
+# DUMPDERIVATIVES ARG=g,h FILE=der2 FMT=%8.4f
+
+# to detect errors we just add and subtract biases
+# this should add zero forces
+all: COMBINE ARG=c,d,dfast,e,f,g,h COEFFICIENTS=1,-0.5,-0.5,1,-1,1,-1 PERIODIC=NO
+RESTRAINT ARG=all KAPPA=0 SLOPE=0.001 AT=0
+# SLOPE is very small in order to avoid numerical errors to appear
+# it should be sufficient to detect errors
-- 
GitLab