2 changed files with 2 additions and 113 deletions
			
			
		| @ -1,112 +0,0 @@ | |||
| // eval_rational_series().
 | |||
| 
 | |||
| // General includes.
 | |||
| #include "cl_sysdep.h"
 | |||
| 
 | |||
| // Specification.
 | |||
| #include "cl_LF_tran.h"
 | |||
| 
 | |||
| 
 | |||
| // Implementation.
 | |||
| 
 | |||
| namespace cln { | |||
| 
 | |||
| // Subroutine.
 | |||
| // Evaluates S = sum(N1 <= n < N2, a(n)/b(n) * (p(N1)...p(n))/(q(N1)...q(n)))
 | |||
| // and returns P = p(N1)...p(N2-1), Q = q(N1)...q(N2-1), B = B(N1)...B(N2-1)
 | |||
| // and T = B*Q*S (all integers). On entry N1 < N2.
 | |||
| // P will not be computed if a NULL pointer is passed.
 | |||
| 
 | |||
| const cl_LF eval_rational_series (uintC N, const cl_rational_series& args, uintC len) | |||
| { | |||
| 	if (args.pv) | |||
| 		if (args.qv) | |||
| 			if (args.bv) | |||
| 				if (args.av) { | |||
| 					var cl_pqab_series series = | |||
| 					  { args.pv, args.qv, args.av, args.bv, args.qsv }; | |||
| 					return eval_rational_series(N,series,len); | |||
| 				} else { | |||
| 					var cl_pqb_series series = | |||
| 					  { args.pv, args.qv, args.bv, args.qsv }; | |||
| 					return eval_rational_series(N,series,len); | |||
| 				} | |||
| 			else | |||
| 				if (args.av) { | |||
| 					var cl_pqa_series series = | |||
| 					  { args.pv, args.qv, args.av, args.qsv }; | |||
| 					return eval_rational_series(N,series,len); | |||
| 				} else { | |||
| 					var cl_pq_series series = | |||
| 					  { args.pv, args.qv, args.qsv }; | |||
| 					return eval_rational_series(N,series,len); | |||
| 				} | |||
| 		else | |||
| 			if (args.bv) | |||
| 				if (args.av) { | |||
| 					var cl_pab_series series = | |||
| 					  { args.pv, args.av, args.bv }; | |||
| 					return eval_rational_series(N,series,len); | |||
| 				} else { | |||
| 					var cl_pb_series series = | |||
| 					  { args.pv, args.bv }; | |||
| 					return eval_rational_series(N,series,len); | |||
| 				} | |||
| 			else | |||
| 				if (args.av) { | |||
| 					var cl_pa_series series = | |||
| 					  { args.pv, args.av }; | |||
| 					return eval_rational_series(N,series,len); | |||
| 				} else { | |||
| 					var cl_p_series series = | |||
| 					  { args.pv }; | |||
| 					return eval_rational_series(N,series,len); | |||
| 				} | |||
| 	else | |||
| 		if (args.qv) | |||
| 			if (args.bv) | |||
| 				if (args.av) { | |||
| 					var cl_qab_series series = | |||
| 					  { args.qv, args.av, args.bv, args.qsv }; | |||
| 					return eval_rational_series(N,series,len); | |||
| 				} else { | |||
| 					var cl_qb_series series = | |||
| 					  { args.qv, args.bv, args.qsv }; | |||
| 					return eval_rational_series(N,series,len); | |||
| 				} | |||
| 			else | |||
| 				if (args.av) { | |||
| 					var cl_qa_series series = | |||
| 					  { args.qv, args.av, args.qsv }; | |||
| 					return eval_rational_series(N,series,len); | |||
| 				} else { | |||
| 					var cl_q_series series = | |||
| 					  { args.qv, args.qsv }; | |||
| 					return eval_rational_series(N,series,len); | |||
| 				} | |||
| 		else | |||
| 			if (args.bv) | |||
| 				if (args.av) { | |||
| 					var cl_ab_series series = | |||
| 					  { args.av, args.bv }; | |||
| 					return eval_rational_series(N,series,len); | |||
| 				} else { | |||
| 					var cl_b_series series = | |||
| 					  { args.bv }; | |||
| 					return eval_rational_series(N,series,len); | |||
| 				} | |||
| 			else | |||
| 				if (args.av) { | |||
| 					var cl_a_series series = | |||
| 					  { args.av }; | |||
| 					return eval_rational_series(N,series,len); | |||
| 				} else { | |||
| 					var cl__series series = | |||
| 					  { }; | |||
| 					return eval_rational_series(N,series,len); | |||
| 				} | |||
| } | |||
| // Bit complexity (if p(n), q(n), a(n), b(n) have length O(log(n))):
 | |||
| // O(log(N)^2*M(N)).
 | |||
| 
 | |||
| }  // namespace cln
 | |||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue