]> www.ginac.de Git - cln.git/blobdiff - src/float/transcendental/cl_LF_coshsinh_aux.cc
Get rid of CL_REQUIRE/CL_PROVIDE(cl_F_ln10_var).
[cln.git] / src / float / transcendental / cl_LF_coshsinh_aux.cc
index f7c9f57edde3fd960dd6398a7bc2fdcccb21adb7..fab71c5c24127025985dbe2667a0536845d688d4 100644 (file)
@@ -52,8 +52,8 @@ const cl_LF_cosh_sinh_t cl_coshsinh_aux (const cl_I& p, uintE lq, uintC len)
        //   a(n) = 1, b(n) = 1,
        //   p(0) = p, p(n) = p^2 for n>0,
        //   q(0) = 2^lq, q(n) = (2*n)*(2*n+1)*(2^lq)^2 for n>0.
-       var uintC actuallen = len+1; // 1 Schutz-Digit
-       // How many terms to we need for M bits of precision? N/2 terms suffice,
+       var uintC actuallen = len+1; // 1 guard digit
+       // How many terms do we need for M bits of precision? N/2 terms suffice,
        // provided that
        //   1/(2^(N*lp)*N!) < 2^-M
        // <==   N*(log(N)-1)+N*lp*log(2) > M*log(2)
@@ -73,7 +73,6 @@ const cl_LF_cosh_sinh_t cl_coshsinh_aux (const cl_I& p, uintE lq, uintC len)
        CL_ALLOCA_STACK;
        var cl_I* pv = (cl_I*) cl_alloca(N*sizeof(cl_I));
        var cl_I* qv = (cl_I*) cl_alloca(N*sizeof(cl_I));
-       var uintC* qsv = (uintC*) cl_alloca(N*sizeof(uintC));
        var uintC n;
        var cl_I p2 = square(p);
        var cl_LF sinhsum;
@@ -85,8 +84,8 @@ const cl_LF_cosh_sinh_t cl_coshsinh_aux (const cl_I& p, uintE lq, uintC len)
                        init1(cl_I, qv[n]) (((cl_I)n*(cl_I)(2*n+1)) << (2*lq+1));
                }
                var cl_pq_series series;
-               series.pv = pv; series.qv = qv; series.qsv = qsv;
-               sinhsum = eval_rational_series(N,series,actuallen);
+               series.pv = pv; series.qv = qv;
+               sinhsum = eval_rational_series<true>(N,series,actuallen);
                for (n = 0; n < N; n++) {
                        pv[n].~cl_I();
                        qv[n].~cl_I();
@@ -102,8 +101,8 @@ const cl_LF_cosh_sinh_t cl_coshsinh_aux (const cl_I& p, uintE lq, uintC len)
                        init1(cl_I, qv[n]) (((cl_I)n*(cl_I)(2*n-1)) << (2*lq+1));
                }
                var cl_pq_series series;
-               series.pv = pv; series.qv = qv; series.qsv = qsv;
-               coshsum = eval_rational_series(N,series,actuallen);
+               series.pv = pv; series.qv = qv;
+               coshsum = eval_rational_series<true>(N,series,actuallen);
                for (n = 0; n < N; n++) {
                        pv[n].~cl_I();
                        qv[n].~cl_I();
@@ -112,7 +111,7 @@ const cl_LF_cosh_sinh_t cl_coshsinh_aux (const cl_I& p, uintE lq, uintC len)
        #else // TRIVIAL_SPEEDUP
        var cl_LF coshsum = sqrt(cl_I_to_LF(1,actuallen) + square(sinhsum));
        #endif
-       return cl_LF_cosh_sinh_t(shorten(coshsum,len),shorten(sinhsum,len)); // verkürzen und fertig
+       return cl_LF_cosh_sinh_t(shorten(coshsum,len),shorten(sinhsum,len)); // verkürzen und fertig
 }}
 // Bit complexity (N = len, and if p has length O(log N) and ql = O(log N)):
 // O(log(N)*M(N)).