]> www.ginac.de Git - cln.git/blob - src/base/digitseq/cl_2DS.h
* All Files have been modified for inclusion of namespace cln;
[cln.git] / src / base / digitseq / cl_2DS.h
1 // Digit sequence 2-adic arithmetic
2
3 #ifndef _CL_2DS_H
4 #define _CL_2DS_H
5
6 namespace cln {
7
8 // div2adic(a_len,a_LSDptr,b_len,b_LSDptr,dest_LSDptr);
9 // dividiert die UDS a_LSDptr[-a_len..-1] mod 2^(intDsize*b_len)
10 // durch die ungerade UDS b_LSDptr[-b_len..-1] mod 2^(intDsize*b_len)
11 // (a_len >= b_len > 0) und liefert
12 // den Quotienten q als UDS dest_LSDptr[-b_len..-1] mod 2^(intDsize*b_len) und
13 // den "Rest" (a-b*q)/2^(intDsize*b_len) als UDS dest_LSDptr[-a_len..-b_len-1].
14 // Falls a_len > b_len, wird b implizit als durch Nullen fortgesetzt angenommen.
15   extern void div2adic (uintC a_len, const uintD* a_LSDptr, uintC b_len, const uintD* b_LSDptr, uintD* dest_LSDptr);
16
17 // div2adic(len,a_LSDptr,b_LSDptr,dest_LSDptr);
18 // dividiert die UDS a_LSDptr[-len..-1] mod 2^(intDsize*len)
19 // durch die ungerade UDS b_LSDptr[-len..-1] mod 2^(intDsize*len) (len>0) und
20 // liefert den Quotienten als UDS dest_LSDptr[-len..-1] mod 2^(intDsize*len).
21   inline void div2adic (uintC len, const uintD* a_LSDptr, const uintD* b_LSDptr, uintD* dest_LSDptr)
22   { div2adic(len,a_LSDptr,len,b_LSDptr,dest_LSDptr); }
23
24 // recip2adic(len,a_LSDptr,dest_LSDptr);
25 // bildet den Kehrwert der ungeraden UDS a_LSDptr[-len..-1] mod 2^(intDsize*len)
26 // (len>0) und liefert sie als UDS dest_LSDptr[-len..-1] mod 2^(intDsize*len).
27   extern void recip2adic (uintC len, const uintD* a_LSDptr, uintD* dest_LSDptr);
28
29 }  // namespace cln
30
31 #endif /* _CL_2DS_H */