]> www.ginac.de Git - cln.git/blob - src/base/digit/cl_2D.h
Use paths relative the `src' directory in the #include directives.
[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 "cln/types.h"
7 #include "base/digit/cl_D.h"
8
9 namespace cln {
10
11 // Multipliziert zwei Zahlen mod 2^intDsize.
12 // mul2adic(a,b)
13 // > uintD a,b: Zahlen mod 2^intDsize
14 // < ergebnis: Zahl c mod 2^intDsize mit c == a*b mod 2^intDsize
15   extern uintD mul2adic (uintD a, uintD b);
16 #if HAVE_DD
17   inline uintD mul2adic (uintD a, uintD b)
18   {
19         return lowD(muluD(a,b));
20   }
21 #else
22   inline uintD mul2adic (uintD a, uintD b)
23   {
24         muluD(a,b, ,return);
25   }
26 #endif
27
28 // Potenziert eine Zahl mod 2^intDsize.
29 // expt_pos(x,y)
30 // > uintD x: Zahl mod 2^intDsize
31 // > uintL y: Exponent >0
32 // < uintD ergebnis: x^y mod 2^intDsize
33   extern uintD expt_pos (uintD x, uintL y);
34
35 // Dividiert zwei Zahlen mod 2^intDsize.
36 // div2adic(a,b)
37 // > uintD a: Zahl mod 2^intDsize
38 // > uintD b: ungerade Zahl mod 2^intDsize
39 // < ergebnis: Zahl c mod 2^intDsize mit b*c == a mod 2^intDsize
40   extern uintD div2adic (uintD a, uintD b);
41
42 }  // namespace cln
43
44 #endif /* _CL_2D_H */