#include <series_carry_naive.hpp>
Definition at line 391 of file series_carry_naive.hpp.
static S binpow_no_tangent | ( | const S & | me, | |
const I & | r | |||
) | [inline, static] |
Definition at line 395 of file series_carry_naive.hpp.
References binpow(), mmx::coefficients(), default_p_expansion, I, mmx::lshiftz(), M, mmx::rshiftz(), mmx::square(), and mmx::x.
00395 { 00396 typedef Scalar_type(S) M; 00397 // me^r - r * (me - me[0]) * me[0]^(r-1) - me[0]^r 00398 //M me0= me[0]; S me1= lshiftz (me,1); 00399 if (r <= 1) return S (0); 00400 if (r == 2) return lshiftz (square (rshiftz (me, 1)), 2); 00401 00402 I h= r >> 1; 00403 S s_h (coefficients (as<default_p_expansion (M)> (integer (h)))); 00404 M x= me[0]; 00405 S x_h_1= binpow (S(x), h-1); 00406 S y= me - me[0]; 00407 S z= rshiftz (binpow_no_tangent (me, h), 1); 00408 S t0= s_h * y; 00409 S t1= square (rshiftz (t0 * x_h_1, 1)); 00410 S t2= x_h_1 * z * (t0 + x); 00411 S w= lshiftz (square (z) + t1, 2) + lshiftz (t2 + t2, 1); 00412 if ((r & 1) == 1) { 00413 I h2= h << 1; 00414 S s_h2 (coefficients (as<default_p_expansion (M)> (integer (h2)))); 00415 w= lshiftz (me * rshiftz (w, 1), 1) 00416 + lshiftz (s_h2 * square (rshiftz (y * x_h_1, 1)) * x, 2); 00417 } 00418 return w; }
static S def | ( | const S & | me, | |
const S & | a, | |||
nat | r | |||
) | [inline, static] |
Definition at line 439 of file series_carry_naive.hpp.
References binpow(), mmx::coefficients(), default_p_expansion, and M.
00439 { 00440 typedef Scalar_type(S) M; 00441 if (r == 2) { 00442 return ((a - S (me[0]) * me[0] - binpow_no_tangent (me, r)) 00443 / M (r)) / me[0]; 00444 } 00445 S ser_r (coefficients (as<default_p_expansion (M)> (integer (r)))); 00446 S me_0_r_1= binpow (S (me[0]), r - 1); 00447 S me_0_r= me[0] * me_0_r_1; 00448 return (a - me_0_r - binpow_no_tangent (me, r)) 00449 / (ser_r * me_0_r_1); }
static generic name | ( | ) | [inline, static] |
Definition at line 420 of file series_carry_naive.hpp.
static nat nr_init | ( | ) | [inline, static] |
Definition at line 436 of file series_carry_naive.hpp.
static syntactic op | ( | const syntactic & | x, | |
const syntactic & | r | |||
) | [inline, static] |
Definition at line 426 of file series_carry_naive.hpp.
00426 { 00427 return apply ("separable_root", x, r); }
static S op | ( | const S & | x, | |
nat | r | |||
) | [inline, static] |
Definition at line 423 of file series_carry_naive.hpp.
References mmx::separable_root().
00423 { return separable_root (x, r); }
static S op_init | ( | const S & | x, | |
nat | r, | |||
const I & | i | |||
) | [inline, static] |
Definition at line 433 of file series_carry_naive.hpp.
References mmx::separable_root_init().
00433 { 00434 return separable_root_init (x, r, i); }
static void set_op | ( | R & | x, | |
const S & | y, | |||
nat | r | |||
) | [inline, static] |
Definition at line 430 of file series_carry_naive.hpp.
References mmx::separable_root().
00430 { x= separable_root (y, r); }