diff --git a/src/shared/algorithms/SFD/SFDAscent.cpp b/src/shared/algorithms/SFD/SFDAscent.cpp
index fc5d6e54bdbe70fbcb16f91c57e7b7873e9d06c6..35b94568fd126d135fdf4253fe897a4855804d25 100644
--- a/src/shared/algorithms/SFD/SFDAscent.cpp
+++ b/src/shared/algorithms/SFD/SFDAscent.cpp
@@ -22,8 +22,6 @@
 
 // ======= Sensor Fault Detection Model (SFDAscent) =======
 
-#pragma once
-
 #include "SFDAscent.h"
 
 #include <algorithms/FFT.h>
@@ -48,17 +46,17 @@ SFDAscent::FeaturesVec SFDAscent::getFeatures(const VectorIn& input)
     u   = data.mean();
     x0  = data - u * VectorIn::Ones();
     var = x0.squaredNorm() / lenChunk;
-    s2  = x0.pow(2).mean();
-    m4  = x0.pow(4).mean();
+    s2  = x0.array().pow(2).mean();
+    m4  = x0.array().pow(4).mean();
 
-    rfourier = FFT32::fft(data);  // TODO: fix complex -> float
+    rfourier = FFT32::fft(data).real();  // TODO: fix complex -> float
     rfmean   = rfourier.mean();
     rfvar    = (rfourier - rfmean * VectorIn::Ones()).squaredNorm() / lenChunk;
 
     features(0) = delta;
     features(1) = var;
     features(2) = m4 / std::pow(s2, 2);
-    features(3) = data.pow(5).mean();
+    features(3) = data.array().pow(5).mean();
     features(4) = rfvar;
     features(5) = rfourier.cwiseAbs().sum();
 
diff --git a/src/shared/algorithms/SFD/SFDAscent.h b/src/shared/algorithms/SFD/SFDAscent.h
index 970cf31c7d917f46baa6a285151acc3a286bae2e..9640d0c8f44d8e3ea76e160915c3b6d582c7bf47 100644
--- a/src/shared/algorithms/SFD/SFDAscent.h
+++ b/src/shared/algorithms/SFD/SFDAscent.h
@@ -37,13 +37,13 @@ public:
     static constexpr int numFeatures = 6;
     static constexpr int lenChunk    = 32;
 
-    using SVM         = SVM<numFeatures>;
+    using SVMn        = SVM<numFeatures>;
     using FeaturesVec = Eigen::Vector<float, numFeatures>;
     using VectorIn    = Eigen::Vector<float, lenChunk>;
 
     struct SFDAConfig
     {
-        SVM::SVMConfig modelParameters;
+        SVMn::SVMConfig modelParameters;
     };
 
     SFDAscent(const SFDAConfig& config);
@@ -51,7 +51,7 @@ public:
     bool classify(const VectorIn& input);
 
 private:
-    SVM svm;
+    SVMn svm;
 
     FeaturesVec getFeatures(const VectorIn& input);
 };
diff --git a/src/shared/algorithms/SFD/SFDDescent.cpp b/src/shared/algorithms/SFD/SFDDescent.cpp
index f88bc16820be8f3677800bbd2d86281aaa495e07..7ea5283acbfbd96e45c0009c6be1a907c3240a9c 100644
--- a/src/shared/algorithms/SFD/SFDDescent.cpp
+++ b/src/shared/algorithms/SFD/SFDDescent.cpp
@@ -22,8 +22,6 @@
 
 // ======= Sensor Fault Detection Model (SFDAscent) =======
 
-#pragma once
-
 #include "SFDDescent.h"
 
 namespace Boardcore
@@ -47,9 +45,9 @@ SFDDescent::FeaturesVec SFDDescent::getFeatures(const VectorIn& input)
         data(i) = (input(i) - min) / (std::max(delta, 1e-25f) * 2) - 1;
     u   = data.mean();
     x0  = data - u * VectorIn::Ones();
-    s2  = x0.pow(2).mean();
-    m3  = x0.pow(3).mean();
-    m4  = x0.pow(4).mean();
+    s2  = x0.array().pow(2).mean();
+    m3  = x0.array().pow(3).mean();
+    m4  = x0.array().pow(4).mean();
     rms = std::sqrt(s2);
 
     features(0) = data.cwiseAbs().maxCoeff() / rms;
diff --git a/src/shared/algorithms/SFD/SFDDescent.h b/src/shared/algorithms/SFD/SFDDescent.h
index 45c043a388adb1370e9e9604e55ca1f1e04c65a6..a0c332f4b82a7f9c2ba2a102e1d5eea969ea24af 100644
--- a/src/shared/algorithms/SFD/SFDDescent.h
+++ b/src/shared/algorithms/SFD/SFDDescent.h
@@ -37,13 +37,13 @@ public:
     static constexpr int numFeatures = 5;
     static constexpr int lenChunk    = 32;
 
-    using SVM         = SVM<numFeatures>;
+    using SVMn        = SVM<numFeatures>;
     using FeaturesVec = Eigen::Vector<float, numFeatures>;
     using VectorIn    = Eigen::Vector<float, lenChunk>;
 
     struct SFDDConfig
     {
-        SVM::SVMConfig modelParameters;
+        SVMn::SVMConfig modelParameters;
     };
 
     SFDDescent(const SFDDConfig& config);
@@ -51,7 +51,7 @@ public:
     bool classify(const VectorIn& input);
 
 private:
-    SVM svm;
+    SVMn svm;
 
     FeaturesVec getFeatures(const VectorIn& input);
 };
diff --git a/src/shared/models/SVM.h b/src/shared/models/SVM.h
index fe019d6597e786135f6a6ae25e52d1db8e23b2e2..27594b3d66f21bc653431e61045ac6ffcb387367 100644
--- a/src/shared/models/SVM.h
+++ b/src/shared/models/SVM.h
@@ -51,7 +51,7 @@ public:
     float score(VectorD input)
     {
         VectorD x = input - mu;
-        x /= sigma;
+        x         = x.array() / sigma.array();
         return -((x / scale).dot(beta) + bias);
     }