source: git/kernel/p_MemAdd.h @ 788529d

spielwiese
Last change on this file since 788529d was 35aab3, checked in by Hans Schönemann <hannes@…>, 20 years ago
This commit was generated by cvs2svn to compensate for changes in r6879, which included commits to RCS files with non-trunk default branches. git-svn-id: file:///usr/local/Singular/svn/trunk@6880 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 17.6 KB
Line 
1/****************************************
2*  Computer Algebra System SINGULAR     *
3****************************************/
4/***************************************************************
5 *  File:    p_MemAdd.h
6 *  Purpose: macros for memory addition
7 *  Author:  obachman (Olaf Bachmann)
8 *  Created: 8/00
9 *  Version: $Id: p_MemAdd.h,v 1.1.1.1 2003-10-06 12:15:59 Singular Exp $
10 *******************************************************************/
11#ifndef P_MEM_ADD_H
12#define P_MEM_ADD_H
13
14/***************************************************************
15 *
16 * MemSum
17 *
18 ***************************************************************/
19
20#define _p_MemSum(i, r, s1, s2) r[i] = s1[i] + s2[i]
21
22#define _p_MemSum_LengthOne(r, s1, s2) _p_MemSum(0, r, s1, s2)
23#define _p_MemSum_LengthTwo(r, s1, s2) do{_p_MemSum_LengthOne(r, s1, s2); _p_MemSum(1, r, s1, s2);} while(0)
24#define _p_MemSum_LengthThree(r, s1, s2) do{_p_MemSum_LengthTwo(r, s1, s2); _p_MemSum(2, r, s1, s2);} while(0)
25#define _p_MemSum_LengthFour(r, s1, s2) do{_p_MemSum_LengthThree(r, s1, s2); _p_MemSum(3, r, s1, s2);} while(0)
26#define _p_MemSum_LengthFive(r, s1, s2) do{_p_MemSum_LengthFour(r, s1, s2); _p_MemSum(4, r, s1, s2);} while(0)
27#define _p_MemSum_LengthSix(r, s1, s2) do{_p_MemSum_LengthFive(r, s1, s2); _p_MemSum(5, r, s1, s2);} while(0)
28#define _p_MemSum_LengthSeven(r, s1, s2) do{_p_MemSum_LengthSix(r, s1, s2); _p_MemSum(6, r, s1, s2);} while(0)
29#define _p_MemSum_LengthEight(r, s1, s2) do{_p_MemSum_LengthSeven(r, s1, s2); _p_MemSum(7, r, s1, s2);} while(0)
30
31#define _p_MemSum_Declare(r, s1, s2)                \
32  const unsigned long* _s1 = ((unsigned long*) s1); \
33  const unsigned long* _s2 = ((unsigned long*) s2); \
34  unsigned long* _r = ((unsigned long*) r)
35
36#define p_MemSum_LengthOne(r, s1, s2, length) _p_MemSum_LengthOne(r, s1, s2)
37#define p_MemSum_LengthTwo(r, s1, s2, length)   \
38do                                              \
39{                                               \
40  _p_MemSum_Declare(r,s1,s2);                    \
41  _p_MemSum_LengthTwo(_r, _s1, _s2);            \
42}                                               \
43while (0)
44#define p_MemSum_LengthThree(r, s1, s2, length) \
45do                                              \
46{                                               \
47  _p_MemSum_Declare(r,s1,s2);                    \
48  _p_MemSum_LengthThree(_r, _s1, _s2);          \
49}                                               \
50while (0)
51#define p_MemSum_LengthFour(r, s1, s2, length)  \
52do                                              \
53{                                               \
54  _p_MemSum_Declare(r,s1,s2);                    \
55  _p_MemSum_LengthFour(_r, _s1, _s2);           \
56}                                               \
57while (0)
58#define p_MemSum_LengthFive(r, s1, s2, length)  \
59do                                              \
60{                                               \
61  _p_MemSum_Declare(r,s1,s2);                    \
62  _p_MemSum_LengthFive(_r, _s1, _s2);           \
63}                                               \
64while (0)
65#define p_MemSum_LengthSix(r, s1, s2, length)   \
66do                                              \
67{                                               \
68  _p_MemSum_Declare(r,s1,s2);                    \
69  _p_MemSum_LengthSix(_r, _s1, _s2);            \
70}                                               \
71while (0)
72#define p_MemSum_LengthSeven(r, s1, s2, length) \
73do                                              \
74{                                               \
75  _p_MemSum_Declare(r,s1,s2);                    \
76  _p_MemSum_LengthSeven(_r, _s1, _s2);          \
77}                                               \
78while (0)
79#define p_MemSum_LengthEight(r, s1, s2, length) \
80do                                              \
81{                                               \
82  _p_MemSum_Declare(r,s1,s2);                    \
83  _p_MemSum_LengthEight(_r, _s1, _s2);          \
84}                                               \
85while (0)
86
87#define p_MemSum_LengthGeneral(r, s1, s2, length)   \
88do                                                  \
89{                                                   \
90  _p_MemSum_Declare(r,s1,s2);                       \
91  const unsigned long _l = (unsigned long) length;       \
92  unsigned long _i = 0;                             \
93                                                    \
94  do                                                \
95  {                                                 \
96    _r[_i] = _s1[_i] + _s2[_i];                     \
97    _i++;                                           \
98  }                                                 \
99  while (_i != _l);                                 \
100}                                                   \
101while (0)
102
103/***************************************************************
104 *
105 * MemAdd
106 *
107 ***************************************************************/
108#define _p_MemAdd(i, r, s) r[i] += s[i]
109
110#define _p_MemAdd_LengthOne(r, s) _p_MemAdd(0, r, s)
111#define _p_MemAdd_LengthTwo(r, s) do{_p_MemAdd_LengthOne(r, s); _p_MemAdd(1, r, s);} while(0)
112#define _p_MemAdd_LengthThree(r, s) do{_p_MemAdd_LengthTwo(r, s); _p_MemAdd(2, r, s);} while(0)
113#define _p_MemAdd_LengthFour(r, s) do{_p_MemAdd_LengthThree(r, s); _p_MemAdd(3, r, s);} while(0)
114#define _p_MemAdd_LengthFive(r, s) do{_p_MemAdd_LengthFour(r, s); _p_MemAdd(4, r, s);} while(0)
115#define _p_MemAdd_LengthSix(r, s) do{_p_MemAdd_LengthFive(r, s); _p_MemAdd(5, r, s);} while(0)
116#define _p_MemAdd_LengthSeven(r, s) do{_p_MemAdd_LengthSix(r, s); _p_MemAdd(6, r, s);} while(0)
117#define _p_MemAdd_LengthEight(r, s) do{_p_MemAdd_LengthSeven(r, s); _p_MemAdd(7, r, s);} while(0)
118
119#define _p_MemAdd_Declare(r, s)                \
120  const unsigned long* _s = ((unsigned long*) s); \
121  unsigned long* _r = ((unsigned long*) r)
122
123#define p_MemAdd_LengthOne(r, s, length) _p_MemAdd_LengthOne(r, s)
124#define p_MemAdd_LengthTwo(r, s, length)   \
125do                                              \
126{                                               \
127  _p_MemAdd_Declare(r,s);                    \
128  _p_MemAdd_LengthTwo(_r, _s);            \
129}                                               \
130while (0)
131#define p_MemAdd_LengthThree(r, s, length) \
132do                                              \
133{                                               \
134  _p_MemAdd_Declare(r,s);                    \
135  _p_MemAdd_LengthThree(_r, _s);          \
136}                                               \
137while (0)
138#define p_MemAdd_LengthFour(r, s, length)  \
139do                                              \
140{                                               \
141  _p_MemAdd_Declare(r,s);                    \
142  _p_MemAdd_LengthFour(_r, _s);           \
143}                                               \
144while (0)
145#define p_MemAdd_LengthFive(r, s, length)  \
146do                                              \
147{                                               \
148  _p_MemAdd_Declare(r,s);                    \
149  _p_MemAdd_LengthFive(_r, _s);           \
150}                                               \
151while (0)
152#define p_MemAdd_LengthSix(r, s, length)   \
153do                                              \
154{                                               \
155  _p_MemAdd_Declare(r,s);                    \
156  _p_MemAdd_LengthSix(_r, _s);            \
157}                                               \
158while (0)
159#define p_MemAdd_LengthSeven(r, s, length) \
160do                                              \
161{                                               \
162  _p_MemAdd_Declare(r,s);                    \
163  _p_MemAdd_LengthSeven(_r, _s);          \
164}                                               \
165while (0)
166#define p_MemAdd_LengthEight(r, s, length) \
167do                                              \
168{                                               \
169  _p_MemAdd_Declare(r,s);                    \
170  _p_MemAdd_LengthEight(_r, _s);          \
171}                                               \
172while (0)
173
174#define p_MemAdd_LengthGeneral(r, s, length)       \
175do                                                  \
176{                                                   \
177  _p_MemAdd_Declare(r,s);                          \
178  const unsigned long _l = (unsigned long) length;  \
179  unsigned long _i = 0;                             \
180                                                    \
181  do                                                \
182  {                                                 \
183    _r[_i] += _s[_i];                               \
184    _i++;                                           \
185  }                                                 \
186  while (_i != _l);                                 \
187}                                                   \
188while (0)
189
190
191/***************************************************************
192 *
193 * MemDiff
194 *
195 ***************************************************************/
196#define _p_MemDiff(i, r, s1, s2) r[i] = s1[i] - s2[i]
197
198#define _p_MemDiff_LengthOne(r, s1, s2) _p_MemDiff(0, r, s1, s2)
199#define _p_MemDiff_LengthTwo(r, s1, s2) do{_p_MemDiff_LengthOne(r, s1, s2); _p_MemDiff(1, r, s1, s2);} while(0)
200#define _p_MemDiff_LengthThree(r, s1, s2) do{_p_MemDiff_LengthTwo(r, s1, s2); _p_MemDiff(2, r, s1, s2);} while(0)
201#define _p_MemDiff_LengthFour(r, s1, s2) do{_p_MemDiff_LengthThree(r, s1, s2); _p_MemDiff(3, r, s1, s2);} while(0)
202#define _p_MemDiff_LengthFive(r, s1, s2) do{_p_MemDiff_LengthFour(r, s1, s2); _p_MemDiff(4, r, s1, s2);} while(0)
203#define _p_MemDiff_LengthSix(r, s1, s2) do{_p_MemDiff_LengthFive(r, s1, s2); _p_MemDiff(5, r, s1, s2);} while(0)
204#define _p_MemDiff_LengthSeven(r, s1, s2) do{_p_MemDiff_LengthSix(r, s1, s2); _p_MemDiff(6, r, s1, s2);} while(0)
205#define _p_MemDiff_LengthEight(r, s1, s2) do{_p_MemDiff_LengthSeven(r, s1, s2); _p_MemDiff(7, r, s1, s2);} while(0)
206
207#define _p_MemDiff_Declare(r, s1, s2)                \
208  const unsigned long* _s1 = ((unsigned long*) s1); \
209  const unsigned long* _s2 = ((unsigned long*) s2); \
210  unsigned long* _r = ((unsigned long*) r)
211
212#define p_MemDiff_LengthOne(r, s1, s2, length) _p_MemDiff_LengthOne(r, s1, s2)
213#define p_MemDiff_LengthTwo(r, s1, s2, length)   \
214do                                              \
215{                                               \
216  _p_MemDiff_Declare(r,s1,s2);                    \
217  _p_MemDiff_LengthTwo(_r, _s1, _s2);            \
218}                                               \
219while (0)
220#define p_MemDiff_LengthThree(r, s1, s2, length) \
221do                                              \
222{                                               \
223  _p_MemDiff_Declare(r,s1,s2);                    \
224  _p_MemDiff_LengthThree(_r, _s1, _s2);          \
225}                                               \
226while (0)
227#define p_MemDiff_LengthFour(r, s1, s2, length)  \
228do                                              \
229{                                               \
230  _p_MemDiff_Declare(r,s1,s2);                    \
231  _p_MemDiff_LengthFour(_r, _s1, _s2);           \
232}                                               \
233while (0)
234#define p_MemDiff_LengthFive(r, s1, s2, length)  \
235do                                              \
236{                                               \
237  _p_MemDiff_Declare(r,s1,s2);                    \
238  _p_MemDiff_LengthFive(_r, _s1, _s2);           \
239}                                               \
240while (0)
241#define p_MemDiff_LengthSix(r, s1, s2, length)   \
242do                                              \
243{                                               \
244  _p_MemDiff_Declare(r,s1,s2);                    \
245  _p_MemDiff_LengthSix(_r, _s1, _s2);            \
246}                                               \
247while (0)
248#define p_MemDiff_LengthSeven(r, s1, s2, length) \
249do                                              \
250{                                               \
251  _p_MemDiff_Declare(r,s1,s2);                    \
252  _p_MemDiff_LengthSeven(_r, _s1, _s2);          \
253}                                               \
254while (0)
255#define p_MemDiff_LengthEight(r, s1, s2, length) \
256do                                              \
257{                                               \
258  _p_MemDiff_Declare(r,s1,s2);                    \
259  _p_MemDiff_LengthEight(_r, _s1, _s2);          \
260}                                               \
261while (0)
262
263#define p_MemDiff_LengthGeneral(r, s1, s2, length)   \
264do                                                  \
265{                                                   \
266  _p_MemDiff_Declare(r,s1,s2);                       \
267  const unsigned long _l = (unsigned long) length;       \
268  unsigned long _i = 0;                             \
269                                                    \
270  do                                                \
271  {                                                 \
272    _r[_i] = _s1[_i] - _s2[_i];                     \
273    _i++;                                           \
274  }                                                 \
275  while (_i != _l);                                 \
276}                                                   \
277while (0)
278
279
280/***************************************************************
281 *
282 * MemSub
283 *
284 ***************************************************************/
285
286#define _p_MemSub(i, r, s) r[i] -= s[i]
287
288#define _p_MemSub_LengthOne(r, s) _p_MemSub(0, r, s)
289#define _p_MemSub_LengthTwo(r, s) do{_p_MemSub_LengthOne(r, s); _p_MemSub(1, r, s);} while(0)
290#define _p_MemSub_LengthThree(r, s) do{_p_MemSub_LengthTwo(r, s); _p_MemSub(2, r, s);} while(0)
291#define _p_MemSub_LengthFour(r, s) do{_p_MemSub_LengthThree(r, s); _p_MemSub(3, r, s);} while(0)
292#define _p_MemSub_LengthFive(r, s) do{_p_MemSub_LengthFour(r, s); _p_MemSub(4, r, s);} while(0)
293#define _p_MemSub_LengthSix(r, s) do{_p_MemSub_LengthFive(r, s); _p_MemSub(5, r, s);} while(0)
294#define _p_MemSub_LengthSeven(r, s) do{_p_MemSub_LengthSix(r, s); _p_MemSub(6, r, s);} while(0)
295#define _p_MemSub_LengthEight(r, s) do{_p_MemSub_LengthSeven(r, s); _p_MemSub(7, r, s);} while(0)
296
297#define _p_MemSub_Declare(r, s)                \
298  const unsigned long* _s = ((unsigned long*) s); \
299  unsigned long* _r = ((unsigned long*) r)
300
301#define p_MemSub_LengthOne(r, s, length) _p_MemSub_LengthOne(r, s)
302#define p_MemSub_LengthTwo(r, s, length)   \
303do                                              \
304{                                               \
305  _p_MemSub_Declare(r,s);                    \
306  _p_MemSub_LengthTwo(_r, _s);            \
307}                                               \
308while (0)
309#define p_MemSub_LengthThree(r, s, length) \
310do                                              \
311{                                               \
312  _p_MemSub_Declare(r,s);                    \
313  _p_MemSub_LengthThree(_r, _s);          \
314}                                               \
315while (0)
316#define p_MemSub_LengthFour(r, s, length)  \
317do                                              \
318{                                               \
319  _p_MemSub_Declare(r,s);                    \
320  _p_MemSub_LengthFour(_r, _s);           \
321}                                               \
322while (0)
323#define p_MemSub_LengthFive(r, s, length)  \
324do                                              \
325{                                               \
326  _p_MemSub_Declare(r,s);                    \
327  _p_MemSub_LengthFive(_r, _s);           \
328}                                               \
329while (0)
330#define p_MemSub_LengthSix(r, s, length)   \
331do                                              \
332{                                               \
333  _p_MemSub_Declare(r,s);                    \
334  _p_MemSub_LengthSix(_r, _s);            \
335}                                               \
336while (0)
337#define p_MemSub_LengthSeven(r, s, length) \
338do                                              \
339{                                               \
340  _p_MemSub_Declare(r,s);                    \
341  _p_MemSub_LengthSeven(_r, _s);          \
342}                                               \
343while (0)
344#define p_MemSub_LengthEight(r, s, length) \
345do                                              \
346{                                               \
347  _p_MemSub_Declare(r,s);                    \
348  _p_MemSub_LengthEight(_r, _s);          \
349}                                               \
350while (0)
351
352#define p_MemSub_LengthGeneral(r, s, length)       \
353do                                                  \
354{                                                   \
355  _p_MemSub_Declare(r,s);                          \
356  const unsigned long _l = (unsigned long) length;  \
357  unsigned long _i = 0;                             \
358                                                    \
359  do                                                \
360  {                                                 \
361    _r[_i] -= _s[_i];                               \
362    _i++;                                           \
363  }                                                 \
364  while (_i != _l);                                 \
365}                                                   \
366while (0)
367
368#define _p_MemAddSub_Declare(r, s, t)                \
369  const unsigned long* _s = ((unsigned long*) s); \
370  const unsigned long* _t = ((unsigned long*) t); \
371  unsigned long* _r = ((unsigned long*) r)
372
373#define p_MemAddSub_LengthGeneral(r, s, t, length)  \
374do                                                  \
375{                                                   \
376  _p_MemAddSub_Declare(r,s, t);                     \
377  const unsigned long _l = (unsigned long) length;  \
378  unsigned long _i = 0;                             \
379                                                    \
380  do                                                \
381  {                                                 \
382    _r[_i] += _s[_i] - _t[_i];                      \
383    _i++;                                           \
384  }                                                 \
385  while (_i != _l);                                 \
386}                                                   \
387while (0)
388
389#endif /* P_MEM_ADD_H */
Note: See TracBrowser for help on using the repository browser.