diff --git a/src/methods/pca/pca.cpp b/src/methods/pca/pca.cpp
index 57d66dd60b3f2e3bb04a4effdb9007e196dde1aa..ae8444af59344ed8f89cf57c662732d58c10a81e 100644
--- a/src/methods/pca/pca.cpp
+++ b/src/methods/pca/pca.cpp
@@ -104,7 +104,11 @@ double pcaDimReduction(SP_integer scaleData, char const *decompositionPolicy,
 {
     // convert the Prolog array to arma::mat
     mat data = convertArrayToMat(dataMatArr, dataMatSize, dataMatRowNum);
-
+    if(data.n_rows < newDimension)
+    {
+        raisePrologSystemExeption("NewDimension cant be greater than the Dimensionality of the Data!");
+        return 0.0;
+    }
     double returnValue;
 
 
@@ -119,7 +123,7 @@ double pcaDimReduction(SP_integer scaleData, char const *decompositionPolicy,
         {
             returnValue = PCA<RandomizedSVDPolicy>((scaleData == 1)).Apply(data, (size_t)newDimension);
         }
-        else if (strcmp(decompositionPolicy, "randomized-block-krylov") == 0)
+        else if (strcmp(decompositionPolicy, "randomized_block_krylov") == 0)
         {
             returnValue = PCA<RandomizedBlockKrylovSVDPolicy>((scaleData == 1)).Apply(data, (size_t)newDimension);
         }
@@ -178,7 +182,7 @@ double pcaVarianceDimReduction(SP_integer scaleData, char const *decompositionPo
         {
             returnValue = PCA<RandomizedSVDPolicy>((scaleData == 1)).Apply(data, varRetained);
         }
-        else if (strcmp(decompositionPolicy, "randomized-block-krylov") == 0)
+        else if (strcmp(decompositionPolicy, "randomized_block_krylov") == 0)
         {
             returnValue = PCA<RandomizedBlockKrylovSVDPolicy>((scaleData == 1)).Apply(data, varRetained);
         }
diff --git a/src/methods/pca/pca.pl b/src/methods/pca/pca.pl
index 7d15876c4ffc0254666e9f714099cf3213d33fa8..1687d58014157b2659cdb8eedf95d4a5fd74de85 100644
--- a/src/methods/pca/pca.pl
+++ b/src/methods/pca/pca.pl
@@ -21,7 +21,7 @@
 
 %% --Input--
 %%              bool    scaleData                    => (1)true / (0)false,
-%%              string  decompositionPolicy     "exact", "randomized", "randomized-block-krylov", "quic",
+%%              string  decompositionPolicy     "exact", "randomized", "randomized_block_krylov", "quic",
 %%              mat     data,
 %%
 %% --Output--
@@ -49,7 +49,7 @@ foreign(pca, c, pcaI(   +integer,
 
 %% --Input--
 %%              bool    scaleData               => (1)true / (0)false,
-%%              string  decompositionPolicy     "exact", "randomized", "randomized-block-krylov", "quic",
+%%              string  decompositionPolicy     "exact", "randomized", "randomized_block_krylov", "quic",
 %%              mat     data,
 %%              int     newDimension
 %%
@@ -77,7 +77,7 @@ foreign(pcaDimReduction, c, pcaDimReductionI(   +integer,
 
 %% --Input--
 %%              bool    scaleData               => (1)true / (0)false,
-%%              string  decompositionPolicy     "exact", "randomized", "randomized-block-krylov", "quic",
+%%              string  decompositionPolicy     "exact", "randomized", "randomized_block_krylov", "quic",
 %%              mat     data,
 %%              float32 varRetained             => [0,1]
 %%
diff --git a/src/methods/pca/pca_test.pl b/src/methods/pca/pca_test.pl
index 045b4b9d46a2329b10a0389191897b603964ee28..a0dc77e0690587dba22f8e93994483ba07cc823d 100644
--- a/src/methods/pca/pca_test.pl
+++ b/src/methods/pca/pca_test.pl
@@ -49,7 +49,7 @@ test(pca_Normal_Use_Randomized_Block_Krylov) :-
         print(EigVecList).
 
 test(pca_Normal_Use_Quic) :-
-        pca(0, quic, [5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, TDataList, _, EigValList, EigVecList, _),
+        pca(0, quic, [5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 4, TDataList, _, EigValList, EigVecList, _),
         print('\nTransformed Data: '),
         print(TDataList),
         print('\nEigenValues: '),
@@ -85,7 +85,7 @@ test(pcaDimReduction_Wrong_DecompositionPolicy_Input, [error(domain_error('The g
 test(pcaDimReduction_Negative_NewDimension, fail) :-
         pcaDimReduction(0, randomized, [5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, -2, _, _, _).
 
-test(pcaDimReduction_Too_Big_NewDimension, fail) :-
+test(pcaDimReduction_Too_Big_NewDimension, [error(_, system_error('NewDimension cant be greater than the Dimensionality of the Data!'))]) :-
         pcaDimReduction(0, randomized, [5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, 5, _, _, _).
 
 %% Successful Tests
@@ -112,7 +112,7 @@ test(pcaDimReduction_Normal_Use_Randomized_Block_Krylov) :-
         print(RetainedVar).
 
 test(pcaDimReduction_Normal_Use_Quic) :-
-        pcaDimReduction(0, quic, [5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, 2, TDataList, _, RetainedVar),
+        pcaDimReduction(0, quic, [5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5,5.1,3.5,1.4,4.9], 4, 1, TDataList, _, RetainedVar),
         print('\nTransformed Data: '),
         print(TDataList),
         print('\nRetained Variance: '),
@@ -169,7 +169,7 @@ test(pcaVarianceDimReduction_Normal_Use_Randomized_Block_Krylov) :-
         print(RetainedVar).
 
 test(pcaVarianceDimReduction_Normal_Use_Quic) :-
-        pcaVarianceDimReduction(0, quic, [5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, 0.5, TDataList, _, RetainedVar),
+        pcaVarianceDimReduction(0, quic, [5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 4, 0.2, TDataList, _, RetainedVar),
         print('\nTransformed Data: '),
         print(TDataList),
         print('\nRetained Variance: '),