ReproBLAS
binned.h
Go to the documentation of this file.
1 
33 #ifndef BINNED_H_
34 #define BINNED_H_
35 #include <stddef.h>
36 #include <stdlib.h>
37 #include <float.h>
38 
46 typedef double double_binned;
47 
55 typedef double double_complex_binned;
56 
64 typedef float float_binned;
65 
73 typedef float float_complex_binned;
74 
84 #define DBWIDTH 40
85 
95 #define SBWIDTH 13
96 
105 #define binned_DBMAXINDEX (((DBL_MAX_EXP - DBL_MIN_EXP + DBL_MANT_DIG - 1)/DBWIDTH) - 1)
106 
115 #define binned_SBMAXINDEX (((FLT_MAX_EXP - FLT_MIN_EXP + FLT_MANT_DIG - 1)/SBWIDTH) - 1)
116 
123 #define binned_DBMAXFOLD (binned_DBMAXINDEX + 1)
124 
131 #define binned_SBMAXFOLD (binned_SBMAXINDEX + 1)
132 
142 #define binned_DBENDURANCE (1 << (DBL_MANT_DIG - DBWIDTH - 2))
143 
153 #define binned_SBENDURANCE (1 << (FLT_MANT_DIG - SBWIDTH - 2))
154 
163 #define binned_DBCAPACITY (binned_DBENDURANCE*(1.0/DBL_EPSILON - 1.0))
164 
173 #define binned_SBCAPACITY (binned_SBENDURANCE*(1.0/FLT_EPSILON - 1.0))
174 
184 #define binned_DMCOMPRESSION (1.0/(1 << (DBL_MANT_DIG - DBWIDTH + 1)))
185 
195 #define binned_SMCOMPRESSION (1.0/(1 << (FLT_MANT_DIG - SBWIDTH + 1)))
196 
206 #define binned_DMEXPANSION (1.0*(1 << (DBL_MANT_DIG - DBWIDTH + 1)))
207 
217 #define binned_SMEXPANSION (1.0*(1 << (FLT_MANT_DIG - SBWIDTH + 1)))
218 
219 size_t binned_dbsize(const int fold);
220 size_t binned_zbsize(const int fold);
221 size_t binned_sbsbze(const int fold);
222 size_t binned_cbsize(const int fold);
223 
224 double_binned *binned_dballoc(const int fold);
225 double_complex_binned *binned_zballoc(const int fold);
226 float_binned *binned_sballoc(const int fold);
227 float_complex_binned *binned_cballoc(const int fold);
228 
229 int binned_dbnum(const int fold);
230 int binned_zbnum(const int fold);
231 int binned_sbnum(const int fold);
232 int binned_cbnum(const int fold);
233 
234 double binned_dbbound(const int fold, const int N, const double X, const double S);
235 float binned_sbbound(const int fold, const int N, const float X, const float S);
236 
237 const double *binned_dmbins(const int X);
238 const float *binned_smbins(const int X);
239 
240 int binned_dindex(const double X);
241 int binned_dmindex(const double *priX);
242 int binned_dmindex0(const double *priX);
243 
244 int binned_sindex(const float X);
245 int binned_smindex(const float *priX);
246 int binned_smindex0(const float *priX);
247 
248 int binned_dmdenorm(const int fold, const double *priX);
249 int binned_zmdenorm(const int fold, const double *priX);
250 int binned_smdenorm(const int fold, const float *priX);
251 int binned_cmdenorm(const int fold, const float *priX);
252 
253 void binned_dbprint(const int fold, const double_binned *X);
254 void binned_dmprint(const int fold, const double *priX, const int incpriX, const double *carX, const int inccarX);
255 void binned_zbprint(const int fold, const double_complex_binned *X);
256 void binned_zmprint(const int fold, const double *priX, const int incpriX, const double *carX, const int inccarX);
257 void binned_sbprint(const int fold, const float_binned *X);
258 void binned_smprint(const int fold, const float *priX, const int incpriX, const float *carX, const int inccarX);
259 void binned_cbprint(const int fold, const float_complex_binned *X);
260 void binned_cmprint(const int fold, const float* priX, const int incpriX, const float* carX, const int inccarX);
261 
262 void binned_dbdbset(const int fold, const double_binned *X, double_binned *Y);
263 void binned_dmdmset(const int fold, const double *priX, const int incpriX, const double *carX, const int inccarX, double *priY, const int incpriY, double *carY, const int inccarY);
264 void binned_zbzbset(const int fold, const double_complex_binned *X, double_complex_binned *Y);
265 void binned_zmzmset(const int fold, const double *priX, const int incpriX, const double *carX, const int inccarX, double *priY, const int incpriY, double *carY, const int inccarY);
266 void binned_zbdbset(const int fold, const double_binned *X, double_complex_binned *Y);
267 void binned_zmdmset(const int fold, const double *priX, const int incpriX, const double *carX, const int inccarX, double *priY, const int incpriY, double *carY, const int inccarY);
268 void binned_sbsbset(const int fold, const float_binned *X, float_binned *Y);
269 void binned_smsmset(const int fold, const float *priX, const int incpriX, const float *carX, const int inccarX, float *priY, const int incpriY, float *carY, const int inccarY);
270 void binned_cbcbset(const int fold, const float_complex_binned *X, float_complex_binned *Y);
271 void binned_cmcmset(const int fold, const float *priX, const int incpriX, const float *carX, const int inccarX, float *priY, const int incpriY, float *carY, const int inccarY);
272 void binned_cbsbset(const int fold, const float_binned *X, float_complex_binned *Y);
273 void binned_cmsmset(const int fold, const float *priX, const int incpriX, const float *carX, const int inccarX, float *priY, const int incpriY, float *carY, const int inccarY);
274 
275 void binned_dbsetzero(const int fold, double_binned *X);
276 void binned_dmsetzero(const int fold, double *priX, const int incpriX, double *carX, const int inccarX);
277 void binned_zbsetzero(const int fold, double_complex_binned *X);
278 void binned_zmsetzero(const int fold, double *priX, const int incpriX, double *carX, const int inccarX);
279 void binned_sbsetzero(const int fold, float_binned *X);
280 void binned_smsetzero(const int fold, float *priX, const int incpriX, float *carX, const int inccarX);
281 void binned_cbsetzero(const int fold, float_complex_binned *X);
282 void binned_cmsetzero(const int fold, float *priX, const int incpriX, float *carX, const int inccarX);
283 
284 void binned_dbdbadd(const int fold, const double_binned *X, double_binned *Y);
285 void binned_dmdmadd(const int fold, const double *priX, const int incpriX, const double *carX, const int inccarX, double* priY, const int incpriY, double* carY, const int inccarY);
286 void binned_zbzbadd(const int fold, const double_complex_binned *X, double_complex_binned *Y);
287 void binned_zmzmadd(const int fold, const double *priX, const int incpriX, const double *carX, const int inccarX, double* priY, const int incpriY, double* carY, const int inccarY);
288 void binned_sbsbadd(const int fold, const float_binned *X, float_binned *Y);
289 void binned_smsmadd(const int fold, const float *priX, const int incpriX, const float *carX, const int inccarX, float* priY, const int incpriY, float* carY, const int inccarY) ;
290 void binned_cbcbadd(const int fold, const float_complex_binned *X, float_complex_binned *Y);
291 void binned_cmcmadd(const int fold, const float *priX, const int incpriX, const float *carX, const int inccarX, float* priY, const int incpriY, float* carY, const int inccarY) ;
292 
293 void binned_dbdbaddv(const int fold, const int N, const double_binned *X, const int incX, double_binned *Y, const int incY);
294 void binned_zbzbaddv(const int fold, const int N, const double_complex_binned *X, const int incX, double_complex_binned *Y, const int incY);
295 void binned_sbsbaddv(const int fold, const int N, const float_binned *X, const int incX, float_binned *Y, const int incY);
296 void binned_cbcbaddv(const int fold, const int N, const float_complex_binned *X, const int incX, float_complex_binned *Y, const int incY);
297 
298 void binned_dbdadd(const int fold, const double X, double_binned *Y);
299 void binned_dmdadd(const int fold, const double X, double *priY, const int incpriY, double *carY, const int inccarY);
300 void binned_zbzadd(const int fold, const void *X, double_complex_binned *Y);
301 void binned_zmzadd(const int fold, const void *X, double *priY, const int incpriY, double *carY, const int inccarY);
302 void binned_sbsadd(const int fold, const float X, float_binned *Y);
303 void binned_smsadd(const int fold, const float X, float *priY, const int incpriY, float *carY, const int inccarY);
304 void binned_cbcadd(const int fold, const void *X, float_complex_binned *Y);
305 void binned_cmcadd(const int fold, const void *X, float *priY, const int incpriY, float *carY, const int inccarY);
306 
307 void binned_dbdupdate(const int fold, const double X, double_binned *Y);
308 void binned_dmdupdate(const int fold, const double X, double* priY, const int incpriY, double* carY, const int inccarY);
309 void binned_zbzupdate(const int fold, const void *X, double_complex_binned *Y);
310 void binned_zmzupdate(const int fold, const void *X, double* priY, const int incpriY, double* carY, const int inccarY);
311 void binned_zbdupdate(const int fold, const double X, double_complex_binned *Y);
312 void binned_zmdupdate(const int fold, const double X, double* priY, const int incpriY, double* carY, const int inccarY);
313 void binned_sbsupdate(const int fold, const float X, float_binned *Y);
314 void binned_smsupdate(const int fold, const float X, float* priY, const int incpriY, float* carY, const int inccarY);
315 void binned_cbcupdate(const int fold, const void *X, float_complex_binned *Y);
316 void binned_cmcupdate(const int fold, const void *X, float* priY, const int incpriY, float* carY, const int inccarY);
317 void binned_cbsupdate(const int fold, const float X, float_complex_binned *Y);
318 void binned_cmsupdate(const int fold, const float X, float* priY, const int incpriY, float* carY, const int inccarY);
319 
320 void binned_dbddeposit(const int fold, const double X, double_binned *Y);
321 void binned_dmddeposit(const int fold, const double X, double *priY, const int incpriY);
322 void binned_zbzdeposit(const int fold, const void *X, double_complex_binned *Y);
323 void binned_zmzdeposit(const int fold, const void *X, double *priY, const int incpriY);
324 void binned_sbsdeposit(const int fold, const float X, float_binned *Y);
325 void binned_smsdeposit(const int fold, const float X, float *priY, const int incpriY);
326 void binned_cbcdeposit(const int fold, const void *X, float_complex_binned *Y);
327 void binned_cmcdeposit(const int fold, const void *X, float *priY, const int incpriY);
328 
329 void binned_dbrenorm(const int fold, double_binned *X);
330 void binned_dmrenorm(const int fold, double* priX, const int incpriX, double* carX, const int inccarX);
331 void binned_zbrenorm(const int fold, double_complex_binned *X);
332 void binned_zmrenorm(const int fold, double* priX, const int incpriX, double* carX, const int inccarX);
333 void binned_sbrenorm(const int fold, float_binned *X);
334 void binned_smrenorm(const int fold, float* priX, const int incpriX, float* carX, const int inccarX);
335 void binned_cbrenorm(const int fold, float_complex_binned *X);
336 void binned_cmrenorm(const int fold, float* priX, const int incpriX, float* carX, const int inccarX);
337 
338 void binned_dbdconv(const int fold, const double X, double_binned *Y);
339 void binned_dmdconv(const int fold, const double X, double* priY, const int incpriY, double* carY, const int inccarY);
340 void binned_zbzconv(const int fold, const void *X, double_complex_binned *Y);
341 void binned_zmzconv(const int fold, const void *X, double *priY, const int incpriY, double *carY, const int inccarY);
342 void binned_sbsconv(const int fold, const float X, float_binned *Y);
343 void binned_smsconv(const int fold, const float X, float* priY, const int incpriY, float* carY, const int inccarY);
344 void binned_cbcconv(const int fold, const void *X, float_complex_binned *Y);
345 void binned_cmcconv(const int fold, const void *X, float *priY, const int incpriY, float *carY, const int inccarY);
346 double binned_ddbconv(const int fold, const double_binned *X);
347 double binned_ddmconv(const int fold, const double* priX, const int incpriX, const double* carX, const int inccarX);
348 void binned_zzbconv_sub(const int fold, const double_complex_binned *X, void *conv);
349 void binned_zzmconv_sub(const int fold, const double *priX, const int incpriX, const double *carX, const int inccarX, void *conv);
350 float binned_ssbconv(const int fold, const float_binned *X);
351 float binned_ssmconv(const int fold, const float* priX, const int incpriX, const float* carX, const int inccarX);
352 void binned_ccbconv_sub(const int fold, const float_complex_binned *X, void *conv);
353 void binned_ccmconv_sub(const int fold, const float *priX, const int incpriX, const float *carX, const int inccarX, void *conv);
354 
355 void binned_dbnegate(const int fold, double_binned* X);
356 void binned_dmnegate(const int fold, double* priX, const int incpriX, double* carX, const int inccarX);
357 void binned_zbnegate(const int fold, double_complex_binned* X);
358 void binned_zmnegate(const int fold, double* priX, const int incpriX, double* carX, const int inccarX);
359 void binned_sbnegate(const int fold, float_binned* X);
360 void binned_smnegate(const int fold, float* priX, const int incpriX, float* carX, const int inccarX);
361 void binned_cbnegate(const int fold, float_complex_binned* X);
362 void binned_cmnegate(const int fold, float* priX, const int incpriX, float* carX, const int inccarX);
363 
364 double binned_dscale(const double X);
365 float binned_sscale(const float X);
366 
367 void binned_dmdrescale(const int fold, const double X, const double scaleY, double *priY, const int incpriY, double *carY, const int inccarY);
368 void binned_zmdrescale(const int fold, const double X, const double scaleY, double *priY, const int incpriY, double *carY, const int inccarY);
369 void binned_smsrescale(const int fold, const float X, const float scaleY, float *priY, const int incpriY, float *carY, const int inccarY);
370 void binned_cmsrescale(const int fold, const float X, const float scaleY, float *priY, const int incpriY, float *carY, const int inccarY);
371 
372 double binned_dmdmaddsq(const int fold, const double scaleX, const double *priX, const int incpriX, const double *carX, const int inccarX, const double scaleY, double *priY, const int incpriY, double *carY, const int inccarY);
373 double binned_dbdbaddsq(const int fold, const double scaleX, const double_binned *X, const double scaleY, double_binned *Y);
374 float binned_smsmaddsq(const int fold, const float scaleX, const float *priX, const int incpriX, const float *carX, const int inccarX, const float scaleY, float *priY, const int incpriY, float *carY, const int inccarY);
375 float binned_sbsbaddsq(const int fold, const float scaleX, const float_binned *X, const float scaleY, float_binned *Y);
376 
377 double binned_ufp(const double X);
378 float binned_ufpf(const float X);
379 #endif
int binned_smindex(const float *priX)
Get index of manually specified binned single precision.
Definition: smindex.c:22
void binned_dmdmset(const int fold, const double *priX, const int incpriX, const double *carX, const int inccarX, double *priY, const int incpriY, double *carY, const int inccarY)
Set manually specified binned double precision (Y = X)
Definition: dmdmset.c:23
void binned_zmrenorm(const int fold, double *priX, const int incpriX, double *carX, const int inccarX)
Renormalize manually specified binned complex double precision.
Definition: zmrenorm.c:19
void binned_dmrenorm(const int fold, double *priX, const int incpriX, double *carX, const int inccarX)
Renormalize manually specified binned double precision.
Definition: dmrenorm.c:23
size_t binned_dbsize(const int fold)
binned double precision size
Definition: dbsize.c:13
void binned_cbcadd(const int fold, const void *X, float_complex_binned *Y)
Add complex single precision to binned complex single precision (Y += X)
Definition: cbcadd.c:16
void binned_zmzmadd(const int fold, const double *priX, const int incpriX, const double *carX, const int inccarX, double *priY, const int incpriY, double *carY, const int inccarY)
Add manually specified binned complex double precision (Y += X)
Definition: zmzmadd.c:23
int binned_dbnum(const int fold)
binned double precision size
Definition: dbnum.c:12
void binned_zbdbset(const int fold, const double_binned *X, double_complex_binned *Y)
Set binned complex double precision to binned double precision (Y = X)
Definition: zbdbset.c:16
int binned_zmdenorm(const int fold, const double *priX)
Check if binned type has denormal bits.
Definition: zmdenorm.c:20
void binned_cmcmadd(const int fold, const float *priX, const int incpriX, const float *carX, const int inccarX, float *priY, const int incpriY, float *carY, const int inccarY)
Add manually specified binned complex single precision (Y += X)
Definition: cmcmadd.c:23
float binned_sbsbaddsq(const int fold, const float scaleX, const float_binned *X, const float scaleY, float_binned *Y)
Add binned single precision scaled sums of squares (Y += X)
Definition: sbsbaddsq.c:19
void binned_zmzconv(const int fold, const void *X, double *priY, const int incpriY, double *carY, const int inccarY)
Convert complex double precision to manually specified binned complex double precision (X -> Y) ...
Definition: zmzconv.c:18
double binned_ufp(const double X)
unit in the first place
Definition: ufp.c:20
const double * binned_dmbins(const int X)
Get binned double precision reference bins.
Definition: dmbins.c:23
void binned_cbrenorm(const int fold, float_complex_binned *X)
Renormalize binned complex single precision.
Definition: cbrenorm.c:15
int binned_smindex0(const float *priX)
Check if index of manually specified binned single precision is 0.
Definition: smindex0.c:19
float float_complex_binned
The binned complex float datatype.
Definition: binned.h:73
int binned_sbnum(const int fold)
binned single precision size
Definition: sbnum.c:12
void binned_cmcmset(const int fold, const float *priX, const int incpriX, const float *carX, const int inccarX, float *priY, const int incpriY, float *carY, const int inccarY)
Set manually specified binned complex single precision (Y = X)
Definition: cmcmset.c:23
void binned_zmzdeposit(const int fold, const void *X, double *priY, const int incpriY)
Add complex double precision to suitably binned manually specified binned complex double precision (Y...
Definition: zmzdeposit.c:24
void binned_smnegate(const int fold, float *priX, const int incpriX, float *carX, const int inccarX)
Negate manually specified binned single precision (X = -X)
Definition: smnegate.c:19
int binned_cmdenorm(const int fold, const float *priX)
Check if binned type has denormal bits.
Definition: cmdenorm.c:20
void binned_dbddeposit(const int fold, const double X, double_binned *Y)
Add double precision to suitably binned binned double precision (Y += X)
Definition: dbddeposit.c:18
int binned_dmindex0(const double *priX)
Check if index of manually specified binned double precision is 0.
Definition: dmindex0.c:19
void binned_dbdbaddv(const int fold, const int N, const double_binned *X, const int incX, double_binned *Y, const int incY)
Add binned double precision vectors (Y += X)
Definition: dbdbaddv.c:18
void binned_smsadd(const int fold, const float X, float *priY, const int incpriY, float *carY, const int inccarY)
Add single precision to manually specified binned single precision (Y += X)
Definition: smsadd.c:20
void binned_zmprint(const int fold, const double *priX, const int incpriX, const double *carX, const int inccarX)
Print manually specified binned complex double precision.
Definition: zmprint.c:22
double binned_dbbound(const int fold, const int N, const double X, const double S)
Get binned double precision summation error bound.
Definition: dbbound.c:21
int binned_cbnum(const int fold)
binned complex single precision size
Definition: cbnum.c:12
void binned_cmcdeposit(const int fold, const void *X, float *priY, const int incpriY)
Add complex single precision to suitably binned manually specified binned complex single precision (Y...
Definition: cmcdeposit.c:24
void binned_zzbconv_sub(const int fold, const double_complex_binned *X, void *conv)
Convert binned complex double precision to complex double precision (X -> Y)
Definition: zzbconv_sub.c:14
int binned_dmdenorm(const int fold, const double *priX)
Check if binned type has denormal bits.
Definition: dmdenorm.c:20
void binned_dmsetzero(const int fold, double *priX, const int incpriX, double *carX, const int inccarX)
Set manually specified binned double precision to 0 (X = 0)
Definition: dmsetzero.c:19
void binned_ccbconv_sub(const int fold, const float_complex_binned *X, void *conv)
Convert binned complex single precision to complex single precision (X -> Y)
Definition: ccbconv_sub.c:14
void binned_cmsmset(const int fold, const float *priX, const int incpriX, const float *carX, const int inccarX, float *priY, const int incpriY, float *carY, const int inccarY)
Set manually specified binned complex single precision to manually specified binned single precision ...
Definition: cmsmset.c:23
void binned_dbdupdate(const int fold, const double X, double_binned *Y)
Update binned double precision with double precision (X -> Y)
Definition: dbdupdate.c:16
double binned_ddbconv(const int fold, const double_binned *X)
Convert binned double precision to double precision (X -> Y)
Definition: ddbconv.c:14
void binned_dmdadd(const int fold, const double X, double *priY, const int incpriY, double *carY, const int inccarY)
Add double precision to manually specified binned double precision (Y += X)
Definition: dmdadd.c:20
void binned_sbsbaddv(const int fold, const int N, const float_binned *X, const int incX, float_binned *Y, const int incY)
Add binned single precision vectors (Y += X)
Definition: sbsbaddv.c:18
void binned_dbdadd(const int fold, const double X, double_binned *Y)
Add double precision to binned double precision (Y += X)
Definition: dbdadd.c:16
void binned_dbprint(const int fold, const double_binned *X)
Print binned double precision.
Definition: dbprint.c:13
void binned_cbsetzero(const int fold, float_complex_binned *X)
Set binned single precision to 0 (X = 0)
Definition: cbsetzero.c:17
void binned_zbzbset(const int fold, const double_complex_binned *X, double_complex_binned *Y)
Set binned complex double precision (Y = X)
Definition: zbzbset.c:18
void binned_cmnegate(const int fold, float *priX, const int incpriX, float *carX, const int inccarX)
Negate manually specified binned complex single precision (X = -X)
Definition: cmnegate.c:19
float binned_sbbound(const int fold, const int N, const float X, const float S)
Get binned single precision summation error bound.
Definition: sbbound.c:25
void binned_sbsbadd(const int fold, const float_binned *X, float_binned *Y)
Add binned single precision (Y += X)
Definition: sbsbadd.c:16
void binned_zzmconv_sub(const int fold, const double *priX, const int incpriX, const double *carX, const int inccarX, void *conv)
Convert manually specified binned complex double precision to complex double precision (X -> Y) ...
Definition: zzmconv_sub.c:18
void binned_zmzmset(const int fold, const double *priX, const int incpriX, const double *carX, const int inccarX, double *priY, const int incpriY, double *carY, const int inccarY)
Set manually specified binned complex double precision (Y = X)
Definition: zmzmset.c:23
void binned_dbdbset(const int fold, const double_binned *X, double_binned *Y)
Set binned double precision (Y = X)
Definition: dbdbset.c:18
void binned_dmnegate(const int fold, double *priX, const int incpriX, double *carX, const int inccarX)
Negate manually specified binned double precision (X = -X)
Definition: dmnegate.c:19
int binned_smdenorm(const int fold, const float *priX)
Check if binned type has denormal bits.
Definition: smdenorm.c:20
double_binned * binned_dballoc(const int fold)
binned double precision allocation
Definition: dballoc.c:12
void binned_sbsupdate(const int fold, const float X, float_binned *Y)
Update binned single precision with single precision (X -> Y)
Definition: sbsupdate.c:16
void binned_zbzconv(const int fold, const void *X, double_complex_binned *Y)
Convert complex double precision to binned complex double precision (X -> Y)
Definition: zbzconv.c:14
void binned_zbzadd(const int fold, const void *X, double_complex_binned *Y)
Add complex double precision to binned complex double precision (Y += X)
Definition: zbzadd.c:16
void binned_sbnegate(const int fold, float_binned *X)
Negate binned single precision (X = -X)
Definition: sbnegate.c:15
void binned_cbnegate(const int fold, float_complex_binned *X)
Negate binned complex single precision (X = -X)
Definition: cbnegate.c:15
void binned_dbdbadd(const int fold, const double_binned *X, double_binned *Y)
Add binned double precision (Y += X)
Definition: dbdbadd.c:16
int binned_zbnum(const int fold)
binned complex double precision size
Definition: zbnum.c:12
void binned_dbsetzero(const int fold, double_binned *X)
Set binned double precision to 0 (X = 0)
Definition: dbsetzero.c:17
void binned_sbsbset(const int fold, const float_binned *X, float_binned *Y)
Set binned single precision (Y = X)
Definition: sbsbset.c:18
void binned_smsconv(const int fold, const float X, float *priY, const int incpriY, float *carY, const int inccarY)
Convert single precision to manually specified binned single precision (X -> Y)
Definition: smsconv.c:18
double double_binned
The binned double datatype.
Definition: binned.h:46
void binned_cmrenorm(const int fold, float *priX, const int incpriX, float *carX, const int inccarX)
Renormalize manually specified binned complex single precision.
Definition: cmrenorm.c:19
void binned_zmzadd(const int fold, const void *X, double *priY, const int incpriY, double *carY, const int inccarY)
Add complex double precision to manually specified binned complex double precision (Y += X) ...
Definition: zmzadd.c:20
void binned_smrenorm(const int fold, float *priX, const int incpriX, float *carX, const int inccarX)
Renormalize manually specified binned single precision.
Definition: smrenorm.c:23
void binned_dmdconv(const int fold, const double X, double *priY, const int incpriY, double *carY, const int inccarY)
Convert double precision to manually specified binned double precision (X -> Y)
Definition: dmdconv.c:18
void binned_zmdmset(const int fold, const double *priX, const int incpriX, const double *carX, const int inccarX, double *priY, const int incpriY, double *carY, const int inccarY)
Set manually specified binned complex double precision to manually specified binned double precision ...
Definition: zmdmset.c:23
void binned_sbprint(const int fold, const float_binned *X)
Print binned single precision.
Definition: sbprint.c:13
void binned_cbcbset(const int fold, const float_complex_binned *X, float_complex_binned *Y)
Set binned complex single precision (Y = X)
Definition: cbcbset.c:18
double binned_dmdmaddsq(const int fold, const double scaleX, const double *priX, const int incpriX, const double *carX, const int inccarX, const double scaleY, double *priY, const int incpriY, double *carY, const int inccarY)
Add manually specified binned double precision scaled sums of squares (Y += X)
Definition: dmdmaddsq.c:26
double binned_ddmconv(const int fold, const double *priX, const int incpriX, const double *carX, const int inccarX)
Convert manually specified binned double precision to double precision (X -> Y)
Definition: ddmconv.c:23
size_t binned_sbsbze(const int fold)
binned single precision size
Definition: sbsbze.c:13
float_complex_binned * binned_cballoc(const int fold)
binned complex single precision allocation
Definition: cballoc.c:12
const float * binned_smbins(const int X)
Get binned single precision reference bins.
Definition: smbins.c:23
void binned_ccmconv_sub(const int fold, const float *priX, const int incpriX, const float *carX, const int inccarX, void *conv)
Convert manually specified binned complex single precision to complex single precision (X -> Y) ...
Definition: ccmconv_sub.c:18
void binned_dmdmadd(const int fold, const double *priX, const int incpriX, const double *carX, const int inccarX, double *priY, const int incpriY, double *carY, const int inccarY)
Add manually specified binned double precision (Y += X)
Definition: dmdmadd.c:27
void binned_smsrescale(const int fold, const float X, const float scaleY, float *priY, const int incpriY, float *carY, const int inccarY)
rescale manually specified binned single precision sum of squares
Definition: smsrescale.c:20
void binned_cmsupdate(const int fold, const float X, float *priY, const int incpriY, float *carY, const int inccarY)
Update manually specified binned complex single precision with single precision (X -> Y) ...
Definition: cmsupdate.c:20
void binned_sbsconv(const int fold, const float X, float_binned *Y)
Convert single precision to binned single precision (X -> Y)
Definition: sbsconv.c:14
void binned_zbzdeposit(const int fold, const void *X, double_complex_binned *Y)
Add complex double precision to suitably binned binned complex double precision (Y += X) ...
Definition: zbzdeposit.c:18
float binned_smsmaddsq(const int fold, const float scaleX, const float *priX, const int incpriX, const float *carX, const int inccarX, const float scaleY, float *priY, const int incpriY, float *carY, const int inccarY)
Add manually specified binned single precision scaled sums of squares (Y += X)
Definition: smsmaddsq.c:27
void binned_dmdrescale(const int fold, const double X, const double scaleY, double *priY, const int incpriY, double *carY, const int inccarY)
rescale manually specified binned double precision sum of squares
Definition: dmdrescale.c:20
void binned_zbprint(const int fold, const double_complex_binned *X)
Print binned complex double precision.
Definition: zbprint.c:13
void binned_cbcdeposit(const int fold, const void *X, float_complex_binned *Y)
Add complex single precision to suitably binned binned complex single precision (Y += X) ...
Definition: cbcdeposit.c:18
double binned_dscale(const double X)
Get a reproducible double precision scale.
Definition: dscale.c:25
void binned_zmsetzero(const int fold, double *priX, const int incpriX, double *carX, const int inccarX)
Set manually specified binned complex double precision to 0 (X = 0)
Definition: zmsetzero.c:19
void binned_smsmadd(const int fold, const float *priX, const int incpriX, const float *carX, const int inccarX, float *priY, const int incpriY, float *carY, const int inccarY)
Add manually specified binned single precision (Y += X)
Definition: smsmadd.c:27
void binned_zmdrescale(const int fold, const double X, const double scaleY, double *priY, const int incpriY, double *carY, const int inccarY)
rescale manually specified binned complex double precision sum of squares
Definition: zmdrescale.c:20
void binned_dmprint(const int fold, const double *priX, const int incpriX, const double *carX, const int inccarX)
Print manually specified binned double precision.
Definition: dmprint.c:22
void binned_smsetzero(const int fold, float *priX, const int incpriX, float *carX, const int inccarX)
Set manually specified binned single precision to 0 (X = 0)
Definition: smsetzero.c:19
int binned_dmindex(const double *priX)
Get index of manually specified binned double precision.
Definition: dmindex.c:22
void binned_cmsrescale(const int fold, const float X, const float scaleY, float *priY, const int incpriY, float *carY, const int inccarY)
rescale manually specified binned complex single precision sum of squares
Definition: cmsrescale.c:20
void binned_sbsdeposit(const int fold, const float X, float_binned *Y)
Add single precision to suitably binned binned single precision (Y += X)
Definition: sbsdeposit.c:18
void binned_zmdupdate(const int fold, const double X, double *priY, const int incpriY, double *carY, const int inccarY)
Update manually specified binned complex double precision with double precision (X -> Y) ...
Definition: zmdupdate.c:20
void binned_zbsetzero(const int fold, double_complex_binned *X)
Set binned double precision to 0 (X = 0)
Definition: zbsetzero.c:17
void binned_smsupdate(const int fold, const float X, float *priY, const int incpriY, float *carY, const int inccarY)
Update manually specified binned single precision with single precision (X -> Y)
Definition: smsupdate.c:24
void binned_dbnegate(const int fold, double_binned *X)
Negate binned double precision (X = -X)
Definition: dbnegate.c:15
float binned_sscale(const float X)
Get a reproducible single precision scale.
Definition: sscale.c:25
void binned_dmddeposit(const int fold, const double X, double *priY, const int incpriY)
Add double precision to suitably binned manually specified binned double precision (Y += X) ...
Definition: dmddeposit.c:24
void binned_cbcbadd(const int fold, const float_complex_binned *X, float_complex_binned *Y)
Add binned complex single precision (Y += X)
Definition: cbcbadd.c:16
void binned_cbcconv(const int fold, const void *X, float_complex_binned *Y)
Convert complex single precision to binned complex single precision (X -> Y)
Definition: cbcconv.c:14
void binned_cbcupdate(const int fold, const void *X, float_complex_binned *Y)
Update binned complex single precision with complex single precision (X -> Y)
Definition: cbcupdate.c:16
void binned_cbprint(const int fold, const float_complex_binned *X)
Print binned complex single precision.
Definition: cbprint.c:13
void binned_cmsetzero(const int fold, float *priX, const int incpriX, float *carX, const int inccarX)
Set manually specified binned complex single precision to 0 (X = 0)
Definition: cmsetzero.c:19
void binned_cmcadd(const int fold, const void *X, float *priY, const int incpriY, float *carY, const int inccarY)
Add complex single precision to manually specified binned complex single precision (Y += X) ...
Definition: cmcadd.c:20
double_complex_binned * binned_zballoc(const int fold)
binned complex double precision allocation
Definition: zballoc.c:12
void binned_cbsupdate(const int fold, const float X, float_complex_binned *Y)
Update binned complex single precision with single precision (X -> Y)
Definition: cbsupdate.c:16
size_t binned_zbsize(const int fold)
binned complex double precision size
Definition: zbsize.c:13
float binned_ufpf(const float X)
unit in the first place
Definition: ufpf.c:20
void binned_cmprint(const int fold, const float *priX, const int incpriX, const float *carX, const int inccarX)
Print manually specified binned complex single precision.
Definition: cmprint.c:22
double double_complex_binned
The binned complex double datatype.
Definition: binned.h:55
void binned_smsmset(const int fold, const float *priX, const int incpriX, const float *carX, const int inccarX, float *priY, const int incpriY, float *carY, const int inccarY)
Set manually specified binned single precision (Y = X)
Definition: smsmset.c:23
void binned_cbcbaddv(const int fold, const int N, const float_complex_binned *X, const int incX, float_complex_binned *Y, const int incY)
Add binned complex single precision vectors (Y += X)
Definition: cbcbaddv.c:18
float binned_ssmconv(const int fold, const float *priX, const int incpriX, const float *carX, const int inccarX)
Convert manually specified binned single precision to single precision (X -> Y)
Definition: ssmconv.c:22
void binned_cmcconv(const int fold, const void *X, float *priY, const int incpriY, float *carY, const int inccarY)
Convert complex single precision to manually specified binned complex single precision (X -> Y) ...
Definition: cmcconv.c:18
void binned_zbzupdate(const int fold, const void *X, double_complex_binned *Y)
Update binned complex double precision with complex double precision (X -> Y)
Definition: zbzupdate.c:16
void binned_smsdeposit(const int fold, const float X, float *priY, const int incpriY)
Add single precision to suitably binned manually specified binned single precision (Y += X) ...
Definition: smsdeposit.c:24
void binned_dbrenorm(const int fold, double_binned *X)
Renormalize binned double precision.
Definition: dbrenorm.c:15
void binned_sbsadd(const int fold, const float X, float_binned *Y)
Add single precision to binned single precision (Y += X)
Definition: sbsadd.c:16
int binned_dindex(const double X)
Get index of double precision.
Definition: dindex.c:19
size_t binned_cbsize(const int fold)
binned complex single precision size
Definition: cbsize.c:13
int binned_sindex(const float X)
Get index of single precision.
Definition: sindex.c:19
void binned_zmnegate(const int fold, double *priX, const int incpriX, double *carX, const int inccarX)
Negate manually specified binned complex double precision (X = -X)
Definition: zmnegate.c:19
void binned_sbsetzero(const int fold, float_binned *X)
Set binned single precision to 0 (X = 0)
Definition: sbsetzero.c:17
void binned_zbzbadd(const int fold, const double_complex_binned *X, double_complex_binned *Y)
Add binned complex double precision (Y += X)
Definition: zbzbadd.c:16
void binned_smprint(const int fold, const float *priX, const int incpriX, const float *carX, const int inccarX)
Print manually specified binned single precision.
Definition: smprint.c:22
void binned_dbdconv(const int fold, const double X, double_binned *Y)
Convert double precision to binned double precision (X -> Y)
Definition: dbdconv.c:14
double binned_dbdbaddsq(const int fold, const double scaleX, const double_binned *X, const double scaleY, double_binned *Y)
Add binned double precision scaled sums of squares (Y += X)
Definition: dbdbaddsq.c:19
float_binned * binned_sballoc(const int fold)
binned single precision allocation
Definition: sballoc.c:12
void binned_zmzupdate(const int fold, const void *X, double *priY, const int incpriY, double *carY, const int inccarY)
Update manually specified binned complex double precision with complex double precision (X -> Y) ...
Definition: zmzupdate.c:20
void binned_sbrenorm(const int fold, float_binned *X)
Renormalize binned single precision.
Definition: sbrenorm.c:15
float float_binned
The binned float datatype.
Definition: binned.h:64
void binned_dmdupdate(const int fold, const double X, double *priY, const int incpriY, double *carY, const int inccarY)
Update manually specified binned double precision with double precision (X -> Y)
Definition: dmdupdate.c:24
float binned_ssbconv(const int fold, const float_binned *X)
Convert binned single precision to single precision (X -> Y)
Definition: ssbconv.c:14
void binned_cbsbset(const int fold, const float_binned *X, float_complex_binned *Y)
Set binned complex single precision to binned single precision (Y = X)
Definition: cbsbset.c:16
void binned_zbdupdate(const int fold, const double X, double_complex_binned *Y)
Update binned complex double precision with double precision (X -> Y)
Definition: zbdupdate.c:16
void binned_zbrenorm(const int fold, double_complex_binned *X)
Renormalize binned complex double precision.
Definition: zbrenorm.c:15
void binned_zbzbaddv(const int fold, const int N, const double_complex_binned *X, const int incX, double_complex_binned *Y, const int incY)
Add binned complex double precision vectors (Y += X)
Definition: zbzbaddv.c:18
void binned_cmcupdate(const int fold, const void *X, float *priY, const int incpriY, float *carY, const int inccarY)
Update manually specified binned complex single precision with complex single precision (X -> Y) ...
Definition: cmcupdate.c:20
void binned_zbnegate(const int fold, double_complex_binned *X)
Negate binned complex double precision (X = -X)
Definition: zbnegate.c:15