6 #ifndef realroot_SOLVE_SBDSLV_LOOPS_BRNOPS_H
7 #define realroot_SOLVE_SBDSLV_LOOPS_BRNOPS_H
22 template<
typename real_t>
23 void decasteljau( real_t * r,
unsigned sz,
const real_t& t,
int str = 1 )
26 for ( er = r + (sz-1)*str; er != r; er -= str )
27 for ( p = r; p != er; p += str )
28 *p = (1.0-t)**p+t**(p+str);
36 template<
typename real_t>
40 for ( er = r + (sz-1)*str; er != r; er -= str )
41 for ( p = r; p != er; p += str )
42 *p = (*p+*(p+str))/2.0;
46 template<
typename real_t>
47 real_t
eval( real_t
const *
const src,
unsigned sz,
const real_t& t,
int st = 1 )
56 template<
typename real_t>
57 real_t
eval( real_t
const *
const src,
unsigned sz,
int st = 1 )
78 template<
typename real_t>
79 void decasteljau( real_t * r, real_t * l,
unsigned sz,
const real_t& t,
int str = 1,
int stl = 1 )
82 for ( er = r + (sz-1)*str; er != r; er -= str, l += stl )
85 for ( p = r; p != er; p += str )
86 *p = (1.0-t)**p+t**(p+str);
103 template<
typename real_t>
104 void decasteljau( real_t * r, real_t * l,
unsigned sz,
int str = 1,
int stl = 1 )
108 for ( er = r + (sz-1)*str; er != r; er -= str, l += stl )
111 for ( p = r; p != er; p += str )
112 *p = (*p+*(p+str))/2.0;
122 template<
typename real_t>
123 void lrestrict( real_t * data,
int sz,
const real_t& t,
int st )
131 template<
typename real_t>
132 void rrestrict( real_t * data,
int sz,
const real_t& t,
int st )
133 {
decasteljau( data + (sz-1)*st, sz, (real_t)(real_t(1)-t), -st ); };
137 template<
typename real_t>
138 void hodograph( real_t * dst, real_t
const *
const src,
unsigned sz,
int st)
141 for (
unsigned i = 0; i < sz-1; i ++, p += st ) dst[p] = src[p+st]-src[p];
144 template<
typename real_t>
145 void diff( real_t * dst, real_t
const *
const src,
unsigned sz,
int sta = 1,
int stout = 1)
149 for (
unsigned i = 0; i < sz-1; i ++, pa += sta, po += stout )
150 dst[po] = (sz-1)*(src[pa+sta]-src[pa]);
154 template<
typename real_t>
157 for (
unsigned i = 0; i < sz-1; i ++ )
159 if ( b[i*st]*b[(i+1)*st] <= 0 )
161 real_t d = b[i*st]-b[(i+1)*st];
162 t = (i*d+b[i])/(sz*d);
void hodograph(real_t *dst, real_t const *const src, unsigned sz, int st)
Definition: loops_brnops.hpp:138
const C & b
Definition: Interval_glue.hpp:25
real_t eval(real_t const *const src, unsigned sz, const real_t &t, int st=1)
Definition: loops_brnops.hpp:47
void decasteljau(real_t *r, unsigned sz, const real_t &t, int str=1)
Definition: loops_brnops.hpp:23
void rrestrict(real_t *data, int sz, const real_t &t, int st)
Definition: loops_brnops.hpp:132
void lrestrict(real_t *data, int sz, const real_t &t, int st)
Definition: loops_brnops.hpp:123
void diff(real_t *dst, real_t const *const src, unsigned sz, int sta=1, int stout=1)
Definition: loops_brnops.hpp:145
TMPL void copy(Polynomial &r, const Polynomial &a)
Copy of a in r.
Definition: sparse_monomials.hpp:613
bool rockwood_cut(real_t &t, real_t const *b, unsigned sz, int st=1)
Definition: loops_brnops.hpp:155