diff --git a/src/PTQ/PTQ.cpp b/src/PTQ/PTQ.cpp
index 828b724b650ad6d2d8c1db6ad4a4ba648503f7b3..1172c0105691ec4b5801366d5f287453f3fe4603 100644
--- a/src/PTQ/PTQ.cpp
+++ b/src/PTQ/PTQ.cpp
@@ -30,6 +30,7 @@
 #include "aidge/operator/ArgMax.hpp"
 #include "aidge/operator/Abs.hpp"
 #include "aidge/operator/Reshape.hpp"
+#include "aidge/operator/Round.hpp"
 
 
 #include "aidge/recipes/Recipes.hpp"
@@ -81,41 +82,40 @@ static void fillTensor(std::shared_ptr<Tensor> tensor, float value)
 
 static void rescaleTensor(std::shared_ptr<Tensor> tensor, float scaling)
 {
-    // Get the tensor data pointer
-    float * castedTensor = static_cast <float *> (tensor->getImpl()->rawPtr());
+    auto mulOp = Mul_Op();
+    mulOp.setDataType(tensor->dataType());
+    mulOp.setBackend(tensor->backend());
 
-    // Rescale the tensor
-    for(std::size_t i = 0; i < tensor->size(); i++)
-        castedTensor[i] *= scaling;
+    std::shared_ptr<Aidge::Tensor> scalingTensor = std::make_shared<Aidge::Tensor>(Aidge::Array1D<float, 1> {scaling});
+    scalingTensor->setDataType(tensor->dataType());
+    scalingTensor->setBackend(tensor->backend());
+
+    mulOp.associateInput(0, tensor);
+    mulOp.associateInput(1, scalingTensor);
+
+    mulOp.forward();
+    
+    auto outTensor = mulOp.getOutput(0);
+    *tensor = *outTensor;
+    //tensor->copyCast(*outTensor);
 }
 
 static void roundTensor(std::shared_ptr<Tensor> tensor)
 {
-    // Get the tensor data pointer
-    float * castedTensor = static_cast <float *> (tensor->getImpl()->rawPtr());
+    auto roundOp = Round_Op();
+    roundOp.setDataType(tensor->dataType());
+    roundOp.setBackend(tensor->backend());
 
-    // Rescale the tensor
-    for(std::size_t i = 0; i < tensor->size(); i++)
-        castedTensor[i] = std::nearbyint(castedTensor[i]);//Round
+    roundOp.associateInput(0, tensor);
+    roundOp.forward();
+    
+    auto outTensor = roundOp.getOutput(0);
+    *tensor = *outTensor;
+    //tensor->copyCast(*outTensor)
 }
 
 static float getTensorAbsoluteMax(std::shared_ptr<Tensor> tensor)
 {
-/*
-    // Get the tensor data pointer and edit it
-    float * castedTensor = static_cast<float*>(tensor->getImpl()->rawPtr());
-
-    // Get the tensor absolute max value
-    float maxValue = 0.0f;
-    for (std::size_t i = 0; i < tensor->size(); ++i) {
-        if(std::fabs(castedTensor[i]) > maxValue) {
-            maxValue = std::fabs(castedTensor[i]);
-        }
-    }
-
-    return maxValue;
-*/
-
     // get the abs tensor
 
     std::shared_ptr<Tensor> absTensor = std::make_shared<Tensor>(tensor->abs());