heuristic_analytic_rep< C, V > Class Template Reference

#include <analytic_heuristic.hpp>

Inheritance diagram for heuristic_analytic_rep< C, V >:
analytic_rep

List of all members.

Public Member Functions

Public Attributes

Protected Member Functions

Protected Attributes


Detailed Description

template<typename C, typename V>
class mmx::heuristic_analytic_rep< C, V >

Definition at line 74 of file analytic_heuristic.hpp.


Constructor & Destructor Documentation

heuristic_analytic_rep ( const polynomial< C > &  p2  )  [inline]

Definition at line 115 of file analytic_heuristic.hpp.

References heuristic_analytic_rep< C, V >::initialize().

00115                                                :
00116     Analytic_rep (CF(p2)),
00117     previous (NULL),
00118     p (p2),
00119     phi (radial (Analytic ((Polynomial (promote (1, CF(p2)), (nat) 1))))),
00120     t (promote (0, CF(p2))),
00121     u (promote (0, CF(p2))) { initialize (); }
  heuristic_analytic_rep (const Heuristic_rep* previous2, const Polynomial& p2,

heuristic_analytic_rep ( const heuristic_analytic_rep< C, V > *  previous2,
const polynomial< C > &  p2,
const analytic< C, V > &  phi2,
const C t2,
const C u2 
) [inline]

Definition at line 122 of file analytic_heuristic.hpp.

References heuristic_analytic_rep< C, V >::initialize().

00123                                                                          :
00124     Analytic_rep (CF(p2)),
00125     previous (previous2),
00126     p (p2),
00127     phi (phi2),
00128     t (t2),
00129     u (u2) { initialize (); }
  syntactic expression (const syntactic& z) const {


Member Function Documentation

Abs_type ( C   )  const
Abs_type ( C   )  const [inline]

Definition at line 134 of file analytic_heuristic.hpp.

References mmx::R.

00134                                    {
00135     ERROR ("not yet implemented");
00136     return R (0); }

Abs_type ( C   )  [protected]
bool check ( const C z,
const Abs_type(C)&  alpha 
) const [inline, protected]
V Default_move ( const C z  )  const [inline]
nat depth (  )  const [inline, protected]

Definition at line 104 of file analytic_heuristic.hpp.

References heuristic_analytic_rep< C, V >::previous.

Referenced by heuristic_analytic_rep< C, V >::Move().

00104                      {
00105     if (previous == NULL) return 0;
00106     else return previous->depth () + 1;
00107   }

analytic<C,V> Derive (  )  const [inline]

Definition at line 167 of file analytic_heuristic.hpp.

References Analytic.

00167                            {
00168     ERROR ("not yet implemented");
00169     return Analytic (0, this->tfm ()); }

series<C> Expand (  )  const [inline]
syntactic expression ( const syntactic &  z  )  const [inline]

Definition at line 130 of file analytic_heuristic.hpp.

References heuristic_analytic_rep< C, V >::Expand(), and mmx::flatten().

00130                                                   {
00131     return apply ("heuristic", flatten (Expand (), z)); }

void initialize (  )  [inline, protected]

Definition at line 87 of file analytic_heuristic.hpp.

References Analytic, heuristic_analytic_rep< C, V >::fp, mmx::mmx_order_ratio, mmx::move(), heuristic_analytic_rep< C, V >::order, heuristic_analytic_rep< C, V >::p, heuristic_analytic_rep< C, V >::phi, heuristic_analytic_rep< C, V >::phi_at_u, heuristic_analytic_rep< C, V >::prev, heuristic_analytic_rep< C, V >::previous, mmx::radial_move(), heuristic_analytic_rep< C, V >::t, heuristic_analytic_rep< C, V >::u, and heuristic_analytic_rep< C, V >::u_path.

Referenced by heuristic_analytic_rep< C, V >::heuristic_analytic_rep().

00087                      {
00088     nat order= (nat) (mmx_order_ratio * ((double) precision ((double) 0.0)));
00089     fp= fast (p);
00090     r = heuristic_radius (p, order);
00091     if (previous == NULL) {
00092       u_path= vec<C> (u);
00093       phi_at_u= radial_move (phi, u);
00094     }
00095     else {
00096       prev= Analytic (previous, true); // keep reference counter up to date
00097       u_path= copy (previous->u_path);
00098       u_path[N(u_path) - 1]= t - previous->t;
00099       u_path << (u - t);
00100       phi_at_u= move (phi, u_path);
00101     }
00102   }

analytic<C,V> Move ( const C z  )  const [inline]

Definition at line 142 of file analytic_heuristic.hpp.

References Analytic, mmx::C, heuristic_analytic_rep< C, V >::check(), mmx::compose(), heuristic_analytic_rep< C, V >::Default_move(), heuristic_analytic_rep< C, V >::depth(), mmx::heuristic_change(), mmx::mmx_order_ratio, mmx::move(), heuristic_analytic_rep< C, V >::order, heuristic_analytic_rep< C, V >::p, heuristic_analytic_rep< C, V >::phi, heuristic_analytic_rep< C, V >::phi_at_u, Polynomial, heuristic_analytic_rep< C, V >::previous, mmx::R, mmx::radial_eval(), mmx::radial_move(), mmx::shrink(), heuristic_analytic_rep< C, V >::u, and heuristic_analytic_rep< C, V >::u_path.

00142                                    {
00143     C u2= u + z;
00144     //mmout << u_path << ", " << z << "\n";
00145     R rr= shrink (promote (1, as<R> (abs (u2))));
00146     if (previous != NULL && previous->check (u2, rr))
00147       return previous->Move (u2 - previous->u);
00148     if (depth () >= 3 || check (u2, rr))
00149       return Default_move (z);
00150     C v = phi_at_u[0];
00151     C v2= radial_eval (phi_at_u, z);
00152     Analytic phi_post, psi_post;
00153     Analytic phi2;
00154     heuristic_change (phi_post, psi_post, phi2, phi, v, v2, r);
00155     Polynomial p2= compose (p, psi_post);
00156     //Analytic phi2= compose (phi, phi_post);
00157     Analytic phi2_at_u = move (phi2, u_path);
00158     Analytic phi2_at_u2= radial_move (phi2_at_u, u2 - u);
00159     nat order= (nat) (mmx_order_ratio * ((double) precision ((double) 0.0)));
00160     C w2= phi2_at_u2[0];
00161     R r2= heuristic_radius (p2, order);
00162     if (abs (w2) >= r2) return Default_move (z);
00163     //R d1= radial_distance (phi_at_u , u2 - u, r);
00164     //R d2= radial_distance (phi2_at_u, u2 - u, r2);
00165     //if (d1 >= d2) return Default_move (z);
00166     return heuristic<C,V> (this, p2, phi2, u2, u2); }

C Radial_eval ( const C z  )  [inline]

Definition at line 170 of file analytic_heuristic.hpp.

References mmx::C, heuristic_analytic_rep< C, V >::check(), mmx::eval(), heuristic_analytic_rep< C, V >::fp, heuristic_analytic_rep< C, V >::phi_at_u, mmx::radial_eval(), and heuristic_analytic_rep< C, V >::u.

00170                              {
00171     if (!check (u+z, promote (1, as<R> (abs(z))))) return Nan (C);
00172     return slow<C> (eval (fp, fast (radial_eval (phi_at_u, z)))); }


Member Data Documentation

polynomial<Fast_type(C) > fp [protected]
nat order
polynomial<C> p [protected]
analytic<C,V> phi [protected]
analytic<C,V> phi_at_u [protected]
analytic<C,V> prev [protected]

Definition at line 77 of file analytic_heuristic.hpp.

Referenced by heuristic_analytic_rep< C, V >::initialize().

const heuristic_analytic_rep<C,V>* previous [protected]
C t [protected]
C u [protected]
vector<C> u_path [protected]

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

Generated on 6 Dec 2012 for continewz by  doxygen 1.6.1