1515#include <math.h>
1616#include <lapacke.h>
1717#include "common.h"
18-
19- #define COMPLEX
20-
21- #define UPDATE ( __nb , __value ) \
22- if (__value != 0. ){ \
23- if ( *scale < __value ) { \
24- *sumsq = __nb + (*sumsq) * ( *scale / __value ) * ( *scale / __value ); \
25- *scale = __value; \
26- } else { \
27- *sumsq = *sumsq + __nb * ( __value / *scale ) * ( __value / *scale ); \
28- } \
29- }
18+ #include "sumsq_update.h"
3019
3120/*****************************************************************************
3221 *
@@ -97,33 +86,27 @@ int CORE_zsyssq(PLASMA_enum uplo, int N,
9786 double * scale , double * sumsq )
9887{
9988 int i , j ;
100- double tmp ;
10189 double * ptr ;
10290
10391 if ( uplo == PlasmaUpper ) {
10492 for (j = 0 ; j < N ; j ++ ) {
10593 ptr = (double * ) ( A + j * LDA );
10694
10795 for (i = 0 ; i < j ; i ++ , ptr ++ ) {
108-
109- tmp = fabs (* ptr );
110- UPDATE ( 2. , tmp );
111-
112- #ifdef COMPLEX
113- ptr ++ ;
114- tmp = fabs (* ptr );
115- UPDATE ( 2. , tmp );
96+ sumsq_update ( 2 , scale , sumsq , ptr );
97+
98+ #if defined(PRECISION_z ) || defined(PRECISION_c )
99+ ptr ++ ;
100+ sumsq_update ( 2 , scale , sumsq , ptr );
116101#endif
117102 }
118103
119104 /* Diagonal */
120- tmp = fabs (* ptr );
121- UPDATE ( 1. , tmp );
122-
123- #ifdef COMPLEX
124- ptr ++ ;
125- tmp = fabs (* ptr );
126- UPDATE ( 1. , tmp );
105+ sumsq_update ( 1 , scale , sumsq , ptr );
106+
107+ #if defined(PRECISION_z ) || defined(PRECISION_c )
108+ ptr ++ ;
109+ sumsq_update ( 1 , scale , sumsq , ptr );
127110#endif
128111 }
129112 } else {
@@ -132,25 +115,20 @@ int CORE_zsyssq(PLASMA_enum uplo, int N,
132115 ptr = (double * ) ( A + j * LDA + j );
133116
134117 /* Diagonal */
135- tmp = fabs (* ptr );
136- UPDATE ( 1. , tmp );
137- ptr ++ ;
138-
139- #ifdef COMPLEX
140- tmp = fabs (* ptr );
141- UPDATE ( 1. , tmp );
142- ptr ++ ;
118+ sumsq_update ( 1 , scale , sumsq , ptr );
119+ ptr ++ ;
120+
121+ #if defined(PRECISION_z ) || defined(PRECISION_c )
122+ sumsq_update ( 1 , scale , sumsq , ptr );
123+ ptr ++ ;
143124#endif
144125
145126 for (i = j + 1 ; i < N ; i ++ , ptr ++ ) {
146-
147- tmp = fabs (* ptr );
148- UPDATE ( 2. , tmp );
149-
150- #ifdef COMPLEX
151- ptr ++ ;
152- tmp = fabs (* ptr );
153- UPDATE ( 2. , tmp );
127+ sumsq_update ( 2 , scale , sumsq , ptr );
128+
129+ #if defined(PRECISION_z ) || defined(PRECISION_c )
130+ ptr ++ ;
131+ sumsq_update ( 2 , scale , sumsq , ptr );
154132#endif
155133 }
156134 }
0 commit comments