diff --git a/CONFIG/DAPPLE.config b/CONFIG/DAPPLE.config
index 137abc78070bcccf25dabda38246398965a400dd..d57291a1c9dfd21b44583d8442357700bb10362f 100755
--- a/CONFIG/DAPPLE.config
+++ b/CONFIG/DAPPLE.config
@@ -1,6 +1,6 @@
 # Experiments parameters
  perf{
-      testBuildingBlocks="false";
+      testBuildingBlocks="true";
       PrivacyPreservation="false";
       MLAlgorithm="lr";
       runs_number ="30";
diff --git a/CRYPTO/EvalDotProd.h b/CRYPTO/EvalDotProd.h
index 3477dfc8b6137554512f7ccaeecc3de2be61515a..9d1ffca238060726543bf76cae8d8d5530b05e09 100755
--- a/CRYPTO/EvalDotProd.h
+++ b/CRYPTO/EvalDotProd.h
@@ -1,5 +1,5 @@
 #ifndef DAPPLE_EVALDOTPROD_H
-#define DAPPLE_EVALDOTPROD__H
+#define DAPPLE_EVALDOTPROD_H
 
 #include "DTPKC.h" // Header of the DTPKC cryptosystem's class
 
diff --git a/TEST/TESTBuildingBlocks.cpp b/TEST/TESTBuildingBlocks.cpp
index 85df97c1cf5030e2ab666a43f8b7899fff20c919..27e4e52866d6318fba085cdcc8ffc8e54b7edb76 100755
--- a/TEST/TESTBuildingBlocks.cpp
+++ b/TEST/TESTBuildingBlocks.cpp
@@ -580,12 +580,14 @@ void TESTBuildingBlocks::run (bool deserialize, int keysize, int prec, int error
 
     vector<Cipher> C_av, C_bv, C_cv;
     mpz_class output =0;
+    mpz_class output2 =0;
     for(int i=0; i < 8; i++)
     {
         C_av.push_back(dtpkc.enc(av[i],dtpkc.pkw));
         C_bv.push_back(dtpkc.enc(bv[i],dtpkc.pkw));
         C_cv.push_back(dtpkc.enc(cv[i],dtpkc.pkw));
         output = output +  alpha2 * (av[i]-bv[i])*cv[i];
+        output2 = output2 + cv[i]*bv[i];
     }
 
     EvalLrUpdate evalLrUpdate(C_av, C_bv, C_cv ,alpha, dtpkc);
@@ -598,6 +600,18 @@ void TESTBuildingBlocks::run (bool deserialize, int keysize, int prec, int error
     if (abs(int(output.get_ui()- C.get_ui())) > 3 ) cptF++;
 
     cout<<"Test(" << cpt << ") <<LRupdate> gave : " << C.get_str() << " expected result " << output << " state :" << state << endl;
+
+
+    EvalDotProd evalDotProd(C_cv, C_bv , C_bv.size(), dtpkc);
+    C_C = evalDotProd.EvalDotProd_U1_step3(evalDotProd.EvalDotProd_U2_step2(evalDotProd.EvalDotProd_U1_step1()));
+    C =  dtpkc.Sdec(C_C);
+    if ( dtpkc.n - C < 10000000000000 ) C= 0 - (dtpkc.n - dtpkc.Sdec(C_C));
+    else
+        state = (abs(int(output2.get_ui()- C.get_ui())) < 3 ) ? " passed":" failed";
+
+    if (abs(int(output2.get_ui()- C.get_ui())) > 3 ) cptF++;
+
+    cout<<"Test(" << cpt << ") <<Dot Product> gave : " << C.get_str() << " expected result " << output2 << " state :" << state << endl;
     //cout << dtpkc.n << endl;
 
 /**
diff --git a/TEST/TESTBuildingBlocks.h b/TEST/TESTBuildingBlocks.h
index c058b167df496586d34eef06076c460f524bed0d..66e75658adb5fc7b3d673b9084632ed897b54dd5 100755
--- a/TEST/TESTBuildingBlocks.h
+++ b/TEST/TESTBuildingBlocks.h
@@ -13,7 +13,7 @@
 #include "../CRYPTO/EvalAddPow2.h"
 #include "../CRYPTO/EvalStandardDiv.h"
 #include "../CRYPTO/EvalSigmoid.h"
-
+#include "../CRYPTO/EvalDotProd.h"
 #include "../UTIL/mpz_class.hh"
 #include "../UTIL/num_th_alg.hh"