From ef3d005614a96bf1eba01c4e8e3a138ea42e6279 Mon Sep 17 00:00:00 2001 From: hhadjdji <hhadjdji hakim.hadj-djilani@inria.fr> Date: Tue, 22 Aug 2023 17:11:27 +0200 Subject: [PATCH] Correct kernel RelativeError_inria_cplx. --- src/kernels.cu | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/kernels.cu b/src/kernels.cu index 1474db7..18f1841 100644 --- a/src/kernels.cu +++ b/src/kernels.cu @@ -828,11 +828,20 @@ template<typename T> __global__ void RelativeError_inria_cplx(T* data_dst, const { int i = blockDim.x * blockIdx.x + threadIdx.x; while(i<numElements) - { - data_dst[i].x = fabs((data_src_th[i].x-data_src_mes[i].x)/data_src_th[i].x); - data_dst[i].y = fabs((data_src_th[i].y-data_src_mes[i].y)/data_src_th[i].y); - i += gridDim.x * blockDim.x; - } + { + auto a_ = data_src_th[i].x; + auto b_ = data_src_th[i].y; + auto a = data_src_mes[i].x; + auto b = data_src_mes[i].y; + auto d = (a_ * a_ + b_ * b_); + auto da = a - a_; + auto db = b - b_; + auto x = (da * a_ + db * b_) / d; + auto y = (db * a_ - da * b_) / d; + data_dst[i].x = sqrt(x * x + y * y); + data_dst[i].y = 0; + i += gridDim.x * blockDim.x; + } } /*template<typename T> __global__ void SetLinfAR1(T* mat_Linf, T* mat_Hinf, T* atur, int nb_n, int nb_elements) -- GitLab