]> www.ginac.de Git - cln.git/blob - src/float/transcendental/cl_LF_ratseries.cc
* All Files have been modified for inclusion of namespace cln;
[cln.git] / src / float / transcendental / cl_LF_ratseries.cc
1 // eval_rational_series().
2
3 // General includes.
4 #include "cl_sysdep.h"
5
6 // Specification.
7 #include "cl_LF_tran.h"
8
9
10 // Implementation.
11
12 namespace cln {
13
14 // Subroutine.
15 // Evaluates S = sum(N1 <= n < N2, a(n)/b(n) * (p(N1)...p(n))/(q(N1)...q(n)))
16 // and returns P = p(N1)...p(N2-1), Q = q(N1)...q(N2-1), B = B(N1)...B(N2-1)
17 // and T = B*Q*S (all integers). On entry N1 < N2.
18 // P will not be computed if a NULL pointer is passed.
19
20 const cl_LF eval_rational_series (uintL N, const cl_rational_series& args, uintC len)
21 {
22         if (args.pv)
23                 if (args.qv)
24                         if (args.bv)
25                                 if (args.av) {
26                                         var cl_pqab_series series =
27                                           { args.pv, args.qv, args.av, args.bv, args.qsv };
28                                         return eval_rational_series(N,series,len);
29                                 } else {
30                                         var cl_pqb_series series =
31                                           { args.pv, args.qv, args.bv, args.qsv };
32                                         return eval_rational_series(N,series,len);
33                                 }
34                         else
35                                 if (args.av) {
36                                         var cl_pqa_series series =
37                                           { args.pv, args.qv, args.av, args.qsv };
38                                         return eval_rational_series(N,series,len);
39                                 } else {
40                                         var cl_pq_series series =
41                                           { args.pv, args.qv, args.qsv };
42                                         return eval_rational_series(N,series,len);
43                                 }
44                 else
45                         if (args.bv)
46                                 if (args.av) {
47                                         var cl_pab_series series =
48                                           { args.pv, args.av, args.bv };
49                                         return eval_rational_series(N,series,len);
50                                 } else {
51                                         var cl_pb_series series =
52                                           { args.pv, args.bv };
53                                         return eval_rational_series(N,series,len);
54                                 }
55                         else
56                                 if (args.av) {
57                                         var cl_pa_series series =
58                                           { args.pv, args.av };
59                                         return eval_rational_series(N,series,len);
60                                 } else {
61                                         var cl_p_series series =
62                                           { args.pv };
63                                         return eval_rational_series(N,series,len);
64                                 }
65         else
66                 if (args.qv)
67                         if (args.bv)
68                                 if (args.av) {
69                                         var cl_qab_series series =
70                                           { args.qv, args.av, args.bv, args.qsv };
71                                         return eval_rational_series(N,series,len);
72                                 } else {
73                                         var cl_qb_series series =
74                                           { args.qv, args.bv, args.qsv };
75                                         return eval_rational_series(N,series,len);
76                                 }
77                         else
78                                 if (args.av) {
79                                         var cl_qa_series series =
80                                           { args.qv, args.av, args.qsv };
81                                         return eval_rational_series(N,series,len);
82                                 } else {
83                                         var cl_q_series series =
84                                           { args.qv, args.qsv };
85                                         return eval_rational_series(N,series,len);
86                                 }
87                 else
88                         if (args.bv)
89                                 if (args.av) {
90                                         var cl_ab_series series =
91                                           { args.av, args.bv };
92                                         return eval_rational_series(N,series,len);
93                                 } else {
94                                         var cl_b_series series =
95                                           { args.bv };
96                                         return eval_rational_series(N,series,len);
97                                 }
98                         else
99                                 if (args.av) {
100                                         var cl_a_series series =
101                                           { args.av };
102                                         return eval_rational_series(N,series,len);
103                                 } else {
104                                         var cl__series series =
105                                           { };
106                                         return eval_rational_series(N,series,len);
107                                 }
108 }
109 // Bit complexity (if p(n), q(n), a(n), b(n) have length O(log(n))):
110 // O(log(N)^2*M(N)).
111
112 }  // namespace cln