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