cache_last_analytic_rep< C, V > Class Template Reference

#include <analytic_meta.hpp>

Inheritance diagram for cache_last_analytic_rep< C, V >:
analytic_rep

List of all members.

Public Member Functions

Protected Member Functions

Protected Attributes


Detailed Description

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

Definition at line 101 of file analytic_meta.hpp.


Constructor & Destructor Documentation

cache_last_analytic_rep ( const analytic< C, V > &  f2  )  [inline]

Definition at line 118 of file analytic_meta.hpp.

00118                                                      :
00119     Analytic_rep (CF(f2)), f (f2), next (NULL) {}
  inline ~cache_last_analytic_rep () {

~cache_last_analytic_rep (  )  [inline]

Definition at line 120 of file analytic_meta.hpp.

References cache_last_analytic_rep< C, V >::next.

00120                                      {
00121     if (next != NULL) mmx_delete_one (next); }


Member Function Documentation

Abs_type ( C   )  const [inline]

Definition at line 131 of file analytic_meta.hpp.

References cache_last_analytic_rep< C, V >::f.

00131                                                              {
00132     return tail_bound (f, r, order, a); }

Abs_type ( typename unvectorize< C >::val   )  const [inline]

Definition at line 129 of file analytic_meta.hpp.

References cache_last_analytic_rep< C, V >::f.

00129                                         {
00130     return radius_bound (f, order); }

void Clear_cache ( nat  which  )  const [inline]

Definition at line 122 of file analytic_meta.hpp.

References mmx::clear_cache(), and cache_last_analytic_rep< C, V >::f.

00122                                      {
00123     Analytic_rep::Clear_cache (which);
00124     clear_cache (f, which); }

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

Definition at line 174 of file analytic_meta.hpp.

References mmx::cache_last(), mmx::derive(), and cache_last_analytic_rep< C, V >::f.

00174                            {
00175     return cache_last (derive (f)); }

C Eval ( const list< typename unvectorize< C >::val > &  l2  )  const [inline]

Definition at line 158 of file analytic_meta.hpp.

References mmx::eval(), cache_last_analytic_rep< C, V >::f, mmx::me, cache_last_analytic_rep< C, V >::next, Radius, Scalar, cache_last_analytic_rep< C, V >::Set_next(), mmx::shrink(), and mmx::simplify().

00158                                          {
00159     if (is_nil (l2)) return this->me () [0];
00160     Radius r1= shrink (radius_bound (f));
00161     list<Scalar > l= simplify (l2, r1);
00162     Scalar z1= car (l);
00163     if (is_nil (cdr (l))) return eval (f, z1);
00164     if (next == NULL) Set_next (z1);
00165     if (hard_eq (z1, next->next_point))
00166       return eval (next->next_function, cdr (l));
00167     Scalar z2= next->next_point;
00168     Radius r2= shrink (next->next_radius);
00169     if (is_nil (cdr (l)) || abs (z2 - z1) >= r2) {
00170       Set_next (z1);
00171       return eval (next->next_function, cdr (l));
00172     }
00173     else return eval (next->next_function, cons (z1 - z2, cdr (l))); }

C Eval ( const typename unvectorize< C >::val &  z  )  const [inline]

Definition at line 135 of file analytic_meta.hpp.

References mmx::eval(), and cache_last_analytic_rep< C, V >::f.

00135                                  {
00136     return eval (f, z); }

series<C> Expand (  )  const [inline]

Definition at line 127 of file analytic_meta.hpp.

References mmx::expand(), and cache_last_analytic_rep< C, V >::f.

00127                          {
00128     return expand (f); }

syntactic expression ( const syntactic &  z  )  const [inline]

Definition at line 125 of file analytic_meta.hpp.

References cache_last_analytic_rep< C, V >::f, and mmx::flatten().

00125                                                   {
00126     return apply ("cache_last", flatten (f, z)); }

analytic<C,V> Move ( const list< typename unvectorize< C >::val > &  l2  )  const [inline]

Definition at line 137 of file analytic_meta.hpp.

References cache_last_analytic_rep< C, V >::f, mmx::me, mmx::move(), cache_last_analytic_rep< C, V >::next, Radius, Scalar, cache_last_analytic_rep< C, V >::Set_next(), mmx::shrink(), and mmx::simplify().

00137                                                 {
00138     //mmout << "l2= " << l2 << "\n";
00139     if (is_nil (l2)) return this->me ();
00140     Radius r1= shrink (radius_bound (f));
00141     list<Scalar > l= simplify (l2, r1);
00142     //mmout << "l = " << l << "\n";
00143     Scalar z1= car (l);
00144     if (next == NULL) Set_next (z1);
00145     if (hard_eq (z1, next->next_point))
00146       return move (next->next_function, cdr (l));
00147     Scalar z2= next->next_point;
00148     Radius r2= shrink (next->next_radius);
00149     if (is_nil (cdr (l)) || abs (z2 - z1) >= r2) {
00150       //mmout << "z1= " << z1 << "\n";
00151       //mmout << "z2= " << z2 << "\n";
00152       //mmout << "r1= " << r1 << "\n";
00153       //mmout << "r2= " << r2 << "\n";
00154       Set_next (z1);
00155       return move (next->next_function, cdr (l));
00156     }
00157     else return move (next->next_function, cons (z1 - z2, cdr (l))); }

analytic<C,V> Move ( const typename unvectorize< C >::val &  z  )  const [inline]

Definition at line 133 of file analytic_meta.hpp.

References mmx::cache_last(), cache_last_analytic_rep< C, V >::f, and mmx::move().

00133                                         {
00134     return cache_last (move (f, z)); }

void Set_next ( const typename unvectorize< C >::val &  z1  )  const [inline, protected]

Definition at line 107 of file analytic_meta.hpp.

References mmx::cache_last(), cache_last_analytic_rep< C, V >::f, mmx::me, mmx::move(), and cache_last_analytic_rep< C, V >::next.

Referenced by cache_last_analytic_rep< C, V >::Eval(), and cache_last_analytic_rep< C, V >::Move().

00107                                          {
00108     //mmout << "    next -> " << z1 << "\n";
00109     typedef cache_last_analytic_rep<C,V> Me;
00110     Me* me= const_cast<Me* > (this);
00111     if (next == NULL) me->next= mmx_new_one<analytic_next<C,V> > ();
00112     me->next->next_point   = z1;
00113     me->next->next_function= cache_last (move (f, z1));
00114     me->next->next_radius  = radius_bound (next->next_function);
00115   }


Member Data Documentation

analytic<C,V> f [protected]
analytic_next<C,V>* next [protected]

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

Generated on 6 Dec 2012 for continewz by  doxygen 1.6.1