source: soft/giet_vm/applications/rosenfeld/nrc2/include/nrarith1.h

Last change on this file was 821, checked in by meunier, 8 years ago
  • Added several versions of rosenfeld: { SLOW, FAST } x { FEATURES, NO_FEATURES }
  • Added native linux compilation support
  • Added a script to check results natively
  • Started to refactor nrc code
File size: 5.4 KB
Line 
1/* ------------------ */
2/* --- nrarith1.h --- */
3/* ------------------ */
4
5/*
6 * Copyright (c) 2000-2014, Lionel Lacassagne, All rights reserved
7 * Univ Paris Sud XI, CNRS
8*/
9
10#ifndef _NRARITH1_H_
11#define _NRARITH1_H_
12
13/*
14 * ------------------
15 * --- sum_vector ---
16 * ------------------
17 */
18
19#define sum_type_vector(t,r) \
20r short_name(t,sum_,vector)(t * v, int32_t nl, int32_t nh)
21
22sum_type_vector(int8_t, int32_t);
23sum_type_vector(uint8_t, uint32_t);
24sum_type_vector(int16_t, int32_t);
25sum_type_vector(uint16_t, uint32_t);
26sum_type_vector(int32_t, int32_t);
27sum_type_vector(uint32_t, uint32_t);
28sum_type_vector(float, float);
29sum_type_vector(double, double);
30
31/*
32 * ------------------
33 * --- min_vector ---
34 * ------------------
35 */
36
37#define min_type_vector(t) \
38t short_name(t,min_,vector)(t * v, int32_t nl, int32_t nh)
39
40min_type_vector(int8_t);
41min_type_vector(uint8_t);
42min_type_vector(int16_t);
43min_type_vector(uint16_t);
44min_type_vector(int32_t);
45min_type_vector(uint32_t);
46min_type_vector(float);
47min_type_vector(double);
48
49
50/*
51 * ------------------
52 * --- max_vector ---
53 * ------------------
54 */
55
56#define max_type_vector(t) \
57t short_name(t,max_,vector)(t * v, int32_t nl, int32_t nh)
58
59max_type_vector(int8_t);
60max_type_vector(uint8_t);
61max_type_vector(int16_t);
62max_type_vector(uint16_t);
63max_type_vector(int32_t);
64max_type_vector(uint32_t);
65max_type_vector(float);
66max_type_vector(double);
67
68
69/*
70 * ----------------------
71 * --- min_vector_pos ---
72 * ----------------------
73 */
74
75
76#define min_type_vector_pos(t) \
77t short_name(t,min_,vector_pos)(t * v, int32_t nl, int32_t nh, int32_t * pos)
78
79min_type_vector_pos(int8_t);
80min_type_vector_pos(uint8_t);
81min_type_vector_pos(int16_t);
82min_type_vector_pos(uint16_t);
83min_type_vector_pos(int32_t);
84min_type_vector_pos(uint32_t);
85min_type_vector_pos(float);
86min_type_vector_pos(double);
87
88
89/*
90 * ----------------------
91 * --- max_vector_pos ---
92 * ----------------------
93 */
94
95#define max_type_vector_pos(t) \
96t short_name(t,max_,vector_pos)(t * v, int32_t nl, int32_t nh, int32_t * pos)
97
98max_type_vector_pos(int8_t);
99max_type_vector_pos(uint8_t);
100max_type_vector_pos(int16_t);
101max_type_vector_pos(uint16_t);
102max_type_vector_pos(int32_t);
103max_type_vector_pos(uint32_t);
104max_type_vector_pos(float);
105max_type_vector_pos(double);
106
107
108// =============
109// === other ===
110// =============
111
112#define add_type_vector(t) \
113void short_name(t,add_,vector)(t * S1, int32_t nl, int32_t nh, t * S2, t * D)
114
115add_type_vector(int8_t);
116add_type_vector(uint8_t);
117add_type_vector(int16_t);
118add_type_vector(uint16_t);
119add_type_vector(int32_t);
120add_type_vector(uint32_t);
121add_type_vector(float);
122add_type_vector(double);
123
124#define sub_type_vector(t) \
125void short_name(t,sub_,vector)(t * S1, int32_t nl, int32_t nh, t * S2, t * D)
126
127sub_type_vector(int8_t);
128sub_type_vector(uint8_t);
129sub_type_vector(int16_t);
130sub_type_vector(uint16_t);
131sub_type_vector(int32_t);
132sub_type_vector(uint32_t);
133sub_type_vector(float);
134sub_type_vector(double);
135
136#define mulc_type_vector(t) \
137void short_name(t,mulc_,vector)(t * S, int32_t nl, int32_t nh, int32_t c, t * D)
138
139mulc_type_vector(int8_t);
140mulc_type_vector(uint8_t);
141mulc_type_vector(int16_t);
142mulc_type_vector(uint16_t);
143mulc_type_vector(int32_t);
144mulc_type_vector(uint32_t);
145mulc_type_vector(float);
146mulc_type_vector(double);
147
148#define divc_type_vector(t) \
149void short_name(t,divc_,vector)(t * S, int32_t nl, int32_t nh, int32_t c, t * D)
150
151divc_type_vector(int8_t);
152divc_type_vector(uint8_t);
153divc_type_vector(int16_t);
154divc_type_vector(uint16_t);
155divc_type_vector(int32_t);
156divc_type_vector(uint32_t);
157divc_type_vector(float);
158divc_type_vector(double);
159
160
161#define cumulleft_type_vector(t) \
162void short_name(t,cumulleft_,vector)(t * S, int32_t nl, int32_t nh, int32_t * D)
163
164cumulleft_type_vector(int8_t);
165cumulleft_type_vector(uint8_t);
166cumulleft_type_vector(int16_t);
167cumulleft_type_vector(uint16_t);
168cumulleft_type_vector(int32_t);
169cumulleft_type_vector(uint32_t);
170cumulleft_type_vector(float);
171cumulleft_type_vector(double);
172
173#define cumulright_type_vector(t) \
174void short_name(t,cumulright_,vector)(t * S, int32_t nl, int32_t nh, int32_t * D)
175
176cumulright_type_vector(int8_t);
177cumulright_type_vector(uint8_t);
178cumulright_type_vector(int16_t);
179cumulright_type_vector(uint16_t);
180cumulright_type_vector(int32_t);
181cumulright_type_vector(uint32_t);
182cumulright_type_vector(float);
183cumulright_type_vector(double);
184
185
186#define mulfrac_type_vector(t) \
187void short_name(t,mulfrac_,vector)(t * S, int32_t nl, int32_t nh, int32_t a, int32_t b, t * D)
188
189mulfrac_type_vector(int8_t);
190mulfrac_type_vector(uint8_t);
191mulfrac_type_vector(int16_t);
192mulfrac_type_vector(uint16_t);
193mulfrac_type_vector(int32_t);
194mulfrac_type_vector(uint32_t);
195mulfrac_type_vector(float);
196mulfrac_type_vector(double);
197
198
199
200void beta_sum_rgb32vector    (rgb32 * S, int32_t nl, int32_t nh, rgb32 * D);
201void beta_average_rgb32vector(rgb32 * S, int32_t nl, int32_t nh, rgb32 * D);
202void cumulleft_rgb32vector   (rgb32 * S, int32_t nl, int32_t nh, rgb32 * D);
203void cumulright_rgb32vector  (rgb32 * S, int32_t nl, int32_t nh, rgb32 * D);
204void mulc_rgb32vector        (rgb32 * S, int32_t nl, int32_t nh, int32 c, rgb32 * D);
205void divc_rgb32vector        (rgb32 * S, int32_t nl, int32_t nh, int32 c, rgb32 * D);
206void mulfrac_rgb32vector     (rgb32 * S, int32_t nl, int32_t nh, int32 a, int32 b, rgb32 * D);
207
208
209#endif /* _NRARITH1_H_ */
210
211// Local Variables:
212// tab-width: 4
213// c-basic-offset: 4
214// c-file-offsets:((innamespace . 0)(inline-open . 0))
215// indent-tabs-mode: nil
216// End:
217
218// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
219
Note: See TracBrowser for help on using the repository browser.