1 // eval_rational_series().
7 #include "cl_LF_tran.h"
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.
20 const cl_LF eval_rational_series (uintL N, const cl_rational_series& args, uintC len)
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);
30 var cl_pqb_series series =
31 { args.pv, args.qv, args.bv, args.qsv };
32 return eval_rational_series(N,series,len);
36 var cl_pqa_series series =
37 { args.pv, args.qv, args.av, args.qsv };
38 return eval_rational_series(N,series,len);
40 var cl_pq_series series =
41 { args.pv, args.qv, args.qsv };
42 return eval_rational_series(N,series,len);
47 var cl_pab_series series =
48 { args.pv, args.av, args.bv };
49 return eval_rational_series(N,series,len);
51 var cl_pb_series series =
53 return eval_rational_series(N,series,len);
57 var cl_pa_series series =
59 return eval_rational_series(N,series,len);
61 var cl_p_series series =
63 return eval_rational_series(N,series,len);
69 var cl_qab_series series =
70 { args.qv, args.av, args.bv, args.qsv };
71 return eval_rational_series(N,series,len);
73 var cl_qb_series series =
74 { args.qv, args.bv, args.qsv };
75 return eval_rational_series(N,series,len);
79 var cl_qa_series series =
80 { args.qv, args.av, args.qsv };
81 return eval_rational_series(N,series,len);
83 var cl_q_series series =
84 { args.qv, args.qsv };
85 return eval_rational_series(N,series,len);
90 var cl_ab_series series =
92 return eval_rational_series(N,series,len);
94 var cl_b_series series =
96 return eval_rational_series(N,series,len);
100 var cl_a_series series =
102 return eval_rational_series(N,series,len);
104 var cl__series series =
106 return eval_rational_series(N,series,len);
109 // Bit complexity (if p(n), q(n), a(n), b(n) have length O(log(n))):