getfem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Getfem-commits] [getfem-commits] branch master updated: Avoid nested ma


From: Konstantinos Poulios
Subject: [Getfem-commits] [getfem-commits] branch master updated: Avoid nested macros
Date: Mon, 25 Mar 2024 04:09:40 -0400

This is an automated email from the git hooks/post-receive script.

logari81 pushed a commit to branch master
in repository getfem.

The following commit(s) were added to refs/heads/master by this push:
     new 66e40968 Avoid nested macros
66e40968 is described below

commit 66e40968bb8da5623d0a78e88a141970a5d70b28
Author: Konstantinos Poulios <logari81@gmail.com>
AuthorDate: Mon Mar 25 09:09:29 2024 +0100

    Avoid nested macros
---
 src/gmm/gmm_blas_interface.h | 100 ++++++++++++++++++-------------------------
 1 file changed, 41 insertions(+), 59 deletions(-)

diff --git a/src/gmm/gmm_blas_interface.h b/src/gmm/gmm_blas_interface.h
index a81f7ab5..7ba97f4b 100644
--- a/src/gmm/gmm_blas_interface.h
+++ b/src/gmm/gmm_blas_interface.h
@@ -199,69 +199,51 @@ namespace gmm {
   /* vect_sp(x, y).                                                        */
   /* ********************************************************************* */
 
-# define dot_interface(param1, trans1, mult1, param2, trans2, mult2,       \
-                         blas_name, base_type)                             \
-  inline base_type vect_sp(param1(base_type), param2(base_type)) {         \
+# define dot_interface(blas_name, base_type)                               \
+  inline base_type vect_sp(const std::vector<base_type > &x,               \
+                           const std::vector<base_type > &y) {             \
     GMMLAPACK_TRACE("dot_interface");                                      \
-    trans1(base_type); trans2(base_type);                                  \
     BLAS_INT inc(1), n(BLAS_INT(vect_size(y)));                            \
-    return mult1 mult2 blas_name(&n, &x[0], &inc, &y[0], &inc);            \
+    return blas_name(&n, &x[0], &inc, &y[0], &inc);                        \
+  }                                                                        \
+  inline base_type vect_sp                                                 \
+   (const scaled_vector_const_ref<std::vector<base_type>,base_type> &x_,   \
+    const std::vector<base_type> &y) {                                     \
+    GMMLAPACK_TRACE("dot_interface");                                      \
+    std::vector<base_type > &x =                                           \
+      const_cast<std::vector<base_type > &>(*(linalg_origin(x_)));         \
+    base_type a(x_.r);                                                     \
+    BLAS_INT inc(1), n(BLAS_INT(vect_size(y)));                            \
+    return a* blas_name(&n, &x[0], &inc, &y[0], &inc);                     \
+  }                                                                        \
+  inline base_type vect_sp                                                 \
+    (const std::vector<base_type> &x,                                      \
+     const scaled_vector_const_ref<std::vector<base_type>,base_type> &y_) {\
+    GMMLAPACK_TRACE("dot_interface");                                      \
+    std::vector<base_type > &y =                                           \
+      const_cast<std::vector<base_type > &>(*(linalg_origin(y_)));         \
+    base_type b(y_.r);                                                     \
+    BLAS_INT inc(1), n(BLAS_INT(vect_size(y)));                            \
+    return b* blas_name(&n, &x[0], &inc, &y[0], &inc);                     \
+  }                                                                        \
+  inline base_type vect_sp                                                 \
+    (const scaled_vector_const_ref<std::vector<base_type>,base_type> &x_,  \
+     const scaled_vector_const_ref<std::vector<base_type>,base_type> &y_) {\
+    GMMLAPACK_TRACE("dot_interface");                                      \
+    std::vector<base_type > &x =                                           \
+      const_cast<std::vector<base_type > &>(*(linalg_origin(x_)));         \
+    base_type a(x_.r);                                                     \
+    std::vector<base_type > &y =                                           \
+      const_cast<std::vector<base_type > &>(*(linalg_origin(y_)));         \
+    base_type b(y_.r);                                                     \
+    BLAS_INT inc(1), n(BLAS_INT(vect_size(y)));                            \
+    return a* b* blas_name(&n, &x[0], &inc, &y[0], &inc);                  \
   }
 
-# define dot_p1(base_type) const std::vector<base_type > &x
-# define dot_trans1(base_type)
-# define dot_p1_s(base_type)                                               \
-    const scaled_vector_const_ref<std::vector<base_type >, base_type > &x_
-# define dot_trans1_s(base_type)                                           \
-         std::vector<base_type > &x =                                      \
-         const_cast<std::vector<base_type > &>(*(linalg_origin(x_)));      \
-         base_type a(x_.r)
-
-# define dot_p2(base_type) const std::vector<base_type > &y
-# define dot_trans2(base_type)
-# define dot_p2_s(base_type)                                               \
-    const scaled_vector_const_ref<std::vector<base_type >, base_type > &y_
-# define dot_trans2_s(base_type)                                           \
-         std::vector<base_type > &y =                                      \
-         const_cast<std::vector<base_type > &>(*(linalg_origin(y_)));      \
-         base_type b(y_.r)
-
-  dot_interface(dot_p1, dot_trans1, (BLAS_S),
-                dot_p2, dot_trans2, (BLAS_S), sdot_,  BLAS_S)
-  dot_interface(dot_p1, dot_trans1, (BLAS_D),
-                dot_p2, dot_trans2, (BLAS_D), ddot_,  BLAS_D)
-  dot_interface(dot_p1, dot_trans1, (BLAS_C),
-                dot_p2, dot_trans2, (BLAS_C), cdotu_, BLAS_C)
-  dot_interface(dot_p1, dot_trans1, (BLAS_Z),
-                dot_p2, dot_trans2, (BLAS_Z), zdotu_, BLAS_Z)
-
-  dot_interface(dot_p1_s, dot_trans1_s, a*,
-                dot_p2,   dot_trans2,   (BLAS_S), sdot_,  BLAS_S)
-  dot_interface(dot_p1_s, dot_trans1_s, a*,
-                dot_p2,   dot_trans2,   (BLAS_D), ddot_,  BLAS_D)
-  dot_interface(dot_p1_s, dot_trans1_s, a*,
-                dot_p2,   dot_trans2,   (BLAS_C), cdotu_, BLAS_C)
-  dot_interface(dot_p1_s, dot_trans1_s, a*,
-                dot_p2,   dot_trans2,   (BLAS_Z), zdotu_, BLAS_Z)
-
-  dot_interface(dot_p1,   dot_trans1,   (BLAS_S),
-                dot_p2_s, dot_trans2_s, b*,       sdot_,  BLAS_S)
-  dot_interface(dot_p1,   dot_trans1,   (BLAS_D),
-                dot_p2_s, dot_trans2_s, b*,       ddot_,  BLAS_D)
-  dot_interface(dot_p1,   dot_trans1,   (BLAS_C),
-                dot_p2_s, dot_trans2_s, b*,       cdotu_, BLAS_C)
-  dot_interface(dot_p1,   dot_trans1,   (BLAS_Z),
-                dot_p2_s, dot_trans2_s, b*,       zdotu_, BLAS_Z)
-
-  dot_interface(dot_p1_s, dot_trans1_s, a*,
-                dot_p2_s, dot_trans2_s, b*, sdot_,  BLAS_S)
-  dot_interface(dot_p1_s, dot_trans1_s, a*,
-                dot_p2_s, dot_trans2_s, b*, ddot_,  BLAS_D)
-  dot_interface(dot_p1_s, dot_trans1_s, a*,
-                dot_p2_s, dot_trans2_s, b*, cdotu_, BLAS_C)
-  dot_interface(dot_p1_s, dot_trans1_s, a*,
-                dot_p2_s, dot_trans2_s, b*, zdotu_, BLAS_Z)
-
+  dot_interface(sdot_,  BLAS_S)
+  dot_interface(ddot_,  BLAS_D)
+  dot_interface(cdotu_, BLAS_C)
+  dot_interface(zdotu_, BLAS_Z)
 
   /* ********************************************************************* */
   /* vect_hp(x, y).                                                        */



reply via email to

[Prev in Thread] Current Thread [Next in Thread]