]> www.ginac.de Git - cln.git/blob - src/base/digit/cl_2D.h
Initial revision
[cln.git] / src / base / digit / cl_2D.h
1 // Digit level 2-adic arithmetic
2
3 #ifndef _CL_2D_H
4 #define _CL_2D_H
5
6 #include "cl_types.h"
7 #include "cl_D.h"
8
9 // Multipliziert zwei Zahlen mod 2^intDsize.
10 // mul2adic(a,b)
11 // > uintD a,b: Zahlen mod 2^intDsize
12 // < ergebnis: Zahl c mod 2^intDsize mit c == a*b mod 2^intDsize
13   extern uintD mul2adic (uintD a, uintD b);
14 #if HAVE_DD
15   inline uintD mul2adic (uintD a, uintD b)
16   {
17         return lowD(muluD(a,b));
18   }
19 #else
20   inline uintD mul2adic (uintD a, uintD b)
21   {
22         muluD(a,b, ,return);
23   }
24 #endif
25
26 // Potenziert eine Zahl mod 2^intDsize.
27 // expt_pos(x,y)
28 // > uintD x: Zahl mod 2^intDsize
29 // > uintL y: Exponent >0
30 // < uintD ergebnis: x^y mod 2^intDsize
31   extern uintD expt_pos (uintD x, uintL y);
32
33 // Dividiert zwei Zahlen mod 2^intDsize.
34 // div2adic(a,b)
35 // > uintD a: Zahl mod 2^intDsize
36 // > uintD b: ungerade Zahl mod 2^intDsize
37 // < ergebnis: Zahl c mod 2^intDsize mit b*c == a mod 2^intDsize
38   extern uintD div2adic (uintD a, uintD b);
39
40 #endif /* _CL_2D_H */