realroot_doc 0.1.1
|
void mmx::brnops::decasteljau | ( | real_t * | r, |
unsigned | sz, | ||
const real_t & | t, | ||
int | str = 1 |
||
) |
Definition at line 23 of file loops_brnops.hpp.
Referenced by eval(), lrestrict(), parallel< system >::process(), descartes_solver< real_t, local_method >::rockwoodcuts(), rrestrict(), descartes_solver< real_t, local_method >::split(), and eenv::vmap().
{ real_t *er, *p; for ( er = r + (sz-1)*str; er != r; er -= str ) for ( p = r; p != er; p += str ) *p = (1.0-t)**p+t**(p+str); };
void mmx::brnops::decasteljau | ( | real_t * | r, |
unsigned | sz, | ||
int | str = 1 |
||
) |
Definition at line 37 of file loops_brnops.hpp.
{ real_t *er, *p; for ( er = r + (sz-1)*str; er != r; er -= str ) for ( p = r; p != er; p += str ) *p = (*p+*(p+str))/2.0; };
void mmx::brnops::decasteljau | ( | real_t * | r, |
real_t * | l, | ||
unsigned | sz, | ||
const real_t & | t, | ||
int | str = 1 , |
||
int | stl = 1 |
||
) |
Definition at line 79 of file loops_brnops.hpp.
{ real_t * er, * p; for ( er = r + (sz-1)*str; er != r; er -= str, l += stl ) { *l = *r; for ( p = r; p != er; p += str ) *p = (1.0-t)**p+t**(p+str); }; *l = *r; };
void mmx::brnops::decasteljau | ( | real_t * | r, |
real_t * | l, | ||
unsigned | sz, | ||
int | str = 1 , |
||
int | stl = 1 |
||
) |
Definition at line 104 of file loops_brnops.hpp.
{ real_t * er, * p; er = r + (sz-1)*str; for ( er = r + (sz-1)*str; er != r; er -= str, l += stl ) { *l = *r; for ( p = r; p != er; p += str ) *p = (*p+*(p+str))/2.0; }; *l = *r; };
void mmx::brnops::diff | ( | real_t * | dst, |
real_t const *const | src, | ||
unsigned | sz, | ||
int | sta = 1 , |
||
int | stout = 1 |
||
) |
Definition at line 145 of file loops_brnops.hpp.
Referenced by eenv::mdiff().
{ int pa = 0; int po = 0; for ( unsigned i = 0; i < sz-1; i ++, pa += sta, po += stout ) dst[po] = (sz-1)*(src[pa+sta]-src[pa]); };
real_t mmx::brnops::eval | ( | real_t const *const | src, |
unsigned | sz, | ||
int | st = 1 |
||
) |
Definition at line 57 of file loops_brnops.hpp.
References mmx::sparse::copy(), and decasteljau().
{ real_t tmp[sz]; std::copy( src, src + sz, tmp ); decasteljau( tmp, sz ); return tmp[0]; };
real_t mmx::brnops::eval | ( | real_t const *const | src, |
unsigned | sz, | ||
const real_t & | t, | ||
int | st = 1 |
||
) |
Definition at line 47 of file loops_brnops.hpp.
References mmx::sparse::copy(), and decasteljau().
Referenced by bsearch_castel< real_t >::reach().
{ real_t tmp[sz]; std::copy( src, src + sz, tmp ); decasteljau( tmp, sz, t ); return tmp[0]; };
void mmx::brnops::hodograph | ( | real_t * | dst, |
real_t const *const | src, | ||
unsigned | sz, | ||
int | st | ||
) |
Definition at line 138 of file loops_brnops.hpp.
Referenced by eenv_base::hodograph().
{ int p = 0; for ( unsigned i = 0; i < sz-1; i ++, p += st ) dst[p] = src[p+st]-src[p]; };
void mmx::brnops::lrestrict | ( | real_t * | data, |
int | sz, | ||
const real_t & | t, | ||
int | st | ||
) |
Definition at line 123 of file loops_brnops.hpp.
References decasteljau().
Referenced by eenv_base::lrestrict().
{ decasteljau(data,sz,t,st); };
bool mmx::brnops::rockwood_cut | ( | real_t & | t, |
real_t const * | b, | ||
unsigned | sz, | ||
int | st = 1 |
||
) |
Definition at line 155 of file loops_brnops.hpp.
Referenced by descartes_solver< real_t, local_method >::rockwoodcuts().
{ for ( unsigned i = 0; i < sz-1; i ++ ) { if ( b[i*st]*b[(i+1)*st] <= 0 ) { real_t d = b[i*st]-b[(i+1)*st]; t = (i*d+b[i])/(sz*d); return true; }; }; return false; };
void mmx::brnops::rrestrict | ( | real_t * | data, |
int | sz, | ||
const real_t & | t, | ||
int | st | ||
) |
Definition at line 132 of file loops_brnops.hpp.
References decasteljau().
Referenced by eenv_base::rrestrict().
{ decasteljau( data + (sz-1)*st, sz, (real_t)(real_t(1)-t), -st ); };