ser_carry_separable_root_op Struct Reference

#include <series_carry_naive.hpp>

List of all members.

Static Public Member Functions


Detailed Description

Definition at line 391 of file series_carry_naive.hpp.


Member Function Documentation

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.

00420 { return "separable_root"; }

static nat nr_init (  )  [inline, static]

Definition at line 436 of file series_carry_naive.hpp.

00436 { return 1; }

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); }


The documentation for this struct was generated from the following file:

Generated on 6 Dec 2012 for algebramix by  doxygen 1.6.1