]> www.ginac.de Git - cln.git/blobdiff - src/float/transcendental/cl_LF_ratseries_qab.cc
Fix linking problems on some platforms caused by inline/non-inline versions
[cln.git] / src / float / transcendental / cl_LF_ratseries_qab.cc
index e862ac526a3750def68454be91ee4311bc1f5650..8d4e1a12397e8b7c6aa662dedffcc3f4bd646aa8 100644 (file)
@@ -1,4 +1,4 @@
-// eval_rational_series().
+// eval_rational_series<bool>().
 
 // General includes.
 #include "cl_sysdep.h"
@@ -9,24 +9,26 @@
 
 // Implementation.
 
-#include "cl_lfloat.h"
-#include "cl_integer.h"
-#include "cl_abort.h"
+#include "cln/lfloat.h"
+#include "cln/integer.h"
+#include "cln/exception.h"
 #include "cl_LF.h"
 
+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.
 
-static void eval_qab_series_aux (uintL N1, uintL N2,
+static void eval_qab_series_aux (uintC N1, uintC N2,
                                  const cl_qab_series& args,
                                  cl_I* Q, cl_I* B, cl_I* T)
 {
        switch (N2 - N1) {
        case 0:
-               cl_abort(); break;
+               throw runtime_exception(); break;
        case 1:
                *Q = args.qv[N1];
                *B = args.bv[N1];
@@ -63,7 +65,7 @@ static void eval_qab_series_aux (uintL N1, uintL N2,
                break;
                }
        default: {
-               var uintL Nm = (N1+N2)/2; // midpoint
+               var uintC Nm = (N1+N2)/2; // midpoint
                // Compute left part.
                var cl_I LQ, LB, LT;
                eval_qab_series_aux(N1,Nm,args,&LQ,&LB,&LT);
@@ -80,7 +82,8 @@ static void eval_qab_series_aux (uintL N1, uintL N2,
        }
 }
 
-const cl_LF eval_rational_series (uintL N, const cl_qab_series& args, uintC len)
+template<>
+const cl_LF eval_rational_series<false> (uintC N, const cl_qab_series& args, uintC len)
 {
        if (N==0)
                return cl_I_to_LF(0,len);
@@ -90,3 +93,5 @@ const cl_LF eval_rational_series (uintL N, const cl_qab_series& args, uintC 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