mmx::brnops Namespace Reference

Functions


Function Documentation

void mmx::brnops::decasteljau ( real_t *  r,
real_t *  l,
unsigned  sz,
int  str = 1,
int  stl = 1 
) [inline]

Definition at line 104 of file loops_brnops.hpp.

00105   {
00106     real_t * er, * p;
00107     er = r + (sz-1)*str;
00108     for ( er = r + (sz-1)*str; er != r; er -= str, l += stl )
00109       {
00110         *l = *r;
00111         for ( p = r; p != er; p += str )
00112           *p = (*p+*(p+str))/2.0;
00113         };
00114     *l = *r;
00115     };

void mmx::brnops::decasteljau ( real_t *  r,
real_t *  l,
unsigned  sz,
const real_t &  t,
int  str = 1,
int  stl = 1 
) [inline]

Definition at line 79 of file loops_brnops.hpp.

00080   {
00081     real_t * er, * p;
00082     for ( er = r + (sz-1)*str; er != r; er -= str, l += stl )
00083       {
00084         *l = *r;
00085         for ( p = r; p != er; p += str )
00086           *p = (1.0-t)**p+t**(p+str);
00087       };
00088     *l = *r;
00089   };

void mmx::brnops::decasteljau ( real_t *  r,
unsigned  sz,
int  str = 1 
) [inline]

Definition at line 37 of file loops_brnops.hpp.

00038   {
00039     real_t *er, *p;
00040     for ( er = r + (sz-1)*str; er != r; er -= str )
00041       for ( p = r; p != er; p += str )
00042         *p = (*p+*(p+str))/2.0;
00043   };

void mmx::brnops::decasteljau ( real_t *  r,
unsigned  sz,
const real_t &  t,
int  str = 1 
) [inline]

Definition at line 23 of file loops_brnops.hpp.

Referenced by eval(), eenv_base::eval(), lrestrict(), parallel< system >::process(), descartes_solver< real_t, local_method >::rockwoodcuts(), rrestrict(), and descartes_solver< real_t, local_method >::split().

00024   {
00025     real_t *er, *p;
00026       for ( er = r + (sz-1)*str; er != r; er -= str )
00027         for ( p = r; p != er; p += str )
00028           *p = (1.0-t)**p+t**(p+str);
00029   };

void mmx::brnops::diff ( real_t *  dst,
real_t const *const   src,
unsigned  sz,
int  sta = 1,
int  stout = 1 
) [inline]

Definition at line 145 of file loops_brnops.hpp.

Referenced by eenv::mdiff(), box_rep< C >::min_grad(), and solver_mv_fatarcs< C >::prepro().

00146     {
00147       int pa = 0;
00148       int po = 0;
00149       for ( unsigned i = 0; i < sz-1; i ++, pa += sta, po += stout )
00150         dst[po] = (sz-1)*(src[pa+sta]-src[pa]);
00151     }; 

real_t mmx::brnops::eval ( real_t const *const   src,
unsigned  sz,
int  st = 1 
) [inline]

Definition at line 57 of file loops_brnops.hpp.

References mmx::sparse::copy(), and decasteljau().

00058   {
00059     real_t tmp[sz];
00060     std::copy( src, src + sz, tmp );
00061     decasteljau( tmp, sz  );
00062     return tmp[0];
00063   };

real_t mmx::brnops::eval ( real_t const *const   src,
unsigned  sz,
const real_t &  t,
int  st = 1 
) [inline]

Definition at line 47 of file loops_brnops.hpp.

References mmx::sparse::copy(), and decasteljau().

Referenced by approx(), box_rep< C >::corner_event(), corner_values(), arc_rep< C >::critpt(), solver_mv_fatarcs< C >::prepro(), and bsearch_castel< real_t >::reach().

00048   {
00049     real_t tmp[sz];
00050     std::copy( src, src + sz, tmp );
00051     decasteljau( tmp, sz, t );
00052     return tmp[0];
00053   };

void mmx::brnops::hodograph ( real_t *  dst,
real_t const *const   src,
unsigned  sz,
int  st 
) [inline]

Definition at line 138 of file loops_brnops.hpp.

Referenced by eenv_base::hodograph().

00139   {
00140       int p = 0;
00141       for ( unsigned i = 0; i < sz-1; i ++, p += st ) dst[p] = src[p+st]-src[p];
00142     };

void mmx::brnops::lrestrict ( real_t *  data,
int  sz,
const real_t &  t,
int  st 
) [inline]

Definition at line 123 of file loops_brnops.hpp.

References decasteljau().

Referenced by eenv_base::lrestrict().

00124   { decasteljau(data,sz,t,st); };

bool mmx::brnops::rockwood_cut ( real_t &  t,
real_t const *  b,
unsigned  sz,
int  st = 1 
) [inline]

Definition at line 155 of file loops_brnops.hpp.

Referenced by descartes_solver< real_t, local_method >::rockwoodcuts().

00156     {
00157       for ( unsigned i = 0; i < sz-1; i ++ )
00158         {
00159           if ( b[i*st]*b[(i+1)*st] <= 0 )
00160             {
00161               real_t d = b[i*st]-b[(i+1)*st];
00162               t = (i*d+b[i])/(sz*d);
00163             return true;
00164             };
00165         };
00166       return false;
00167     };

void mmx::brnops::rrestrict ( real_t *  data,
int  sz,
const real_t &  t,
int  st 
) [inline]

Definition at line 132 of file loops_brnops.hpp.

References decasteljau().

Referenced by eenv_base::rrestrict().

00133   { decasteljau( data + (sz-1)*st, sz, (real_t)(real_t(1)-t), -st ); };


Generated on 6 Dec 2012 for realroot by  doxygen 1.6.1