35 #include "sharp_vecsupport.h" 36 #include "sharp_complex_hacks.h" 41 typedef complex
double dcmplx;
44 #define MAXJOB_SPECIAL 2 46 #define XCONCATX(a,b) a##b 47 #define CONCATX(a,b) XCONCATX(a,b) 48 #define XCONCAT2(a,b) a##_##b 49 #define CONCAT2(a,b) XCONCAT2(a,b) 50 #define XCONCAT3(a,b,c) a##_##b##_##c 51 #define CONCAT3(a,b,c) XCONCAT3(a,b,c) 54 #include "sharp_core_inchelper.c" 58 #include "sharp_core_inchelper.c" 62 #include "sharp_core_inchelper.c" 66 #include "sharp_core_inchelper.c" 70 #include "sharp_core_inchelper.c" 74 #include "sharp_core_inchelper.c" 77 void CONCATX(inner_loop,ARCH) (sharp_job *job,
const int *ispair,
const double *cth,
78 const double *sth,
int llim,
int ulim, sharp_Ylmgen_C *gen,
int mi,
81 int njobs=job->ntrans, nv=job->flags&SHARP_NVMAX;
82 if (njobs<=MAXJOB_SPECIAL)
86 #if ((MAXJOB_SPECIAL>=1)&&(SHARP_MAXTRANS>=1)) 88 CONCAT3(inner_loop,1,1) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
91 CONCAT3(inner_loop,2,1) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
94 CONCAT3(inner_loop,3,1) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
97 CONCAT3(inner_loop,4,1) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
100 CONCAT3(inner_loop,5,1) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
103 CONCAT3(inner_loop,6,1) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
106 #if ((MAXJOB_SPECIAL>=2)&&(SHARP_MAXTRANS>=2)) 108 CONCAT3(inner_loop,1,2) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
111 CONCAT3(inner_loop,2,2) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
114 CONCAT3(inner_loop,3,2) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
117 CONCAT3(inner_loop,4,2) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
120 CONCAT3(inner_loop,5,2) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
123 CONCAT3(inner_loop,6,2) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
126 #if ((MAXJOB_SPECIAL>=3)&&(SHARP_MAXTRANS>=3)) 128 CONCAT3(inner_loop,1,3) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
131 CONCAT3(inner_loop,2,3) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
134 CONCAT3(inner_loop,3,3) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
137 CONCAT3(inner_loop,4,3) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
140 CONCAT3(inner_loop,5,3) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
143 CONCAT3(inner_loop,6,3) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
146 #if ((MAXJOB_SPECIAL>=4)&&(SHARP_MAXTRANS>=4)) 148 CONCAT3(inner_loop,1,4) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
151 CONCAT3(inner_loop,2,4) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
154 CONCAT3(inner_loop,3,4) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
157 CONCAT3(inner_loop,4,4) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
160 CONCAT3(inner_loop,5,4) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
163 CONCAT3(inner_loop,6,4) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
166 #if ((MAXJOB_SPECIAL>=5)&&(SHARP_MAXTRANS>=5)) 168 CONCAT3(inner_loop,1,5) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
171 CONCAT3(inner_loop,2,5) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
174 CONCAT3(inner_loop,3,5) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
177 CONCAT3(inner_loop,4,5) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
180 CONCAT3(inner_loop,5,5) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
183 CONCAT3(inner_loop,6,5) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
186 #if ((MAXJOB_SPECIAL>=6)&&(SHARP_MAXTRANS>=6)) 188 CONCAT3(inner_loop,1,6) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
191 CONCAT3(inner_loop,2,6) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
194 CONCAT3(inner_loop,3,6) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
197 CONCAT3(inner_loop,4,6) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
200 CONCAT3(inner_loop,5,6) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
203 CONCAT3(inner_loop,6,6) (job, ispair,cth,sth,llim,ulim,gen,mi,mlim);
208 #if (SHARP_MAXTRANS>MAXJOB_SPECIAL) 214 CONCAT2(inner_loop,1)
215 (job, ispair,cth,sth,llim,ulim,gen,mi,mlim,job->ntrans);
218 CONCAT2(inner_loop,2)
219 (job, ispair,cth,sth,llim,ulim,gen,mi,mlim,job->ntrans);
222 CONCAT2(inner_loop,3)
223 (job, ispair,cth,sth,llim,ulim,gen,mi,mlim,job->ntrans);
226 CONCAT2(inner_loop,4)
227 (job, ispair,cth,sth,llim,ulim,gen,mi,mlim,job->ntrans);
230 CONCAT2(inner_loop,5)
231 (job, ispair,cth,sth,llim,ulim,gen,mi,mlim,job->ntrans);
234 CONCAT2(inner_loop,6)
235 (job, ispair,cth,sth,llim,ulim,gen,mi,mlim,job->ntrans);
240 UTIL_FAIL(
"Incorrect vector parameters");