28 #define CODE_INTERNAL 0
30 #define CODE_NOT_FOUND 2
46 const uint byte = i/CHAR_BIT;
47 const unsigned bit = i%CHAR_BIT;
53 const uint byte = i/CHAR_BIT;
54 const unsigned bit = i%CHAR_BIT;
55 return p[byte]>>bit & 1u;
61 for(bit=0;bit<CHAR_BIT;++bit) sum += x>>bit & 1u;
192 #define ffindpts_setup FORTRAN_NAME(findpts_setup,FINDPTS_SETUP)
193 #define ffindpts_free FORTRAN_NAME(findpts_free ,FINDPTS_FREE )
194 #define ffindpts FORTRAN_NAME(findpts ,FINDPTS )
195 #define ffindpts_eval FORTRAN_NAME(findpts_eval ,FINDPTS_EVAL )
205 const double *
const xm,
const double *
const ym,
const double *
const zm,
207 const sint *
const nel,
209 const double *
const bbox_tol,
210 const sint *
const loc_hash_size,
const sint *
const gbl_hash_size,
211 const sint *
const npt_max,
212 const double *
const newt_tol)
221 struct findpts_data_2 *
const fd =
tmalloc(
struct findpts_data_2,1);
222 const double *
elx[2];
231 setup_aux_2(fd, elx,n,*nel,m,*bbox_tol,
232 *loc_hash_size,*gbl_hash_size, *npt_max, *newt_tol);
233 }
else if(h->
ndim==3) {
234 struct findpts_data_3 *
const fd =
tmalloc(
struct findpts_data_3,1);
235 const double *
elx[3];
237 elx[0]=xm,elx[1]=ym,elx[2]=zm;
238 n[0]=*
nr,n[1]=*
ns,n[2]=*nt;
239 m[0]=*
mr,m[1]=*ms,m[2]=*mt;
244 setup_aux_3(fd, elx,n,*nel,m,*bbox_tol,
245 *loc_hash_size,*gbl_hash_size, *npt_max, *newt_tol);
247 fail(1,__FILE__,__LINE__,
248 "findpts_setup: ndim must be 2 or 3; given ndim=%u",(
unsigned)h->
ndim);
252 #define CHECK_HANDLE(func) \
254 if(*handle<0 || *handle>=handle_n || !(h=&handle_array[*handle])->data) \
255 fail(1,__FILE__,__LINE__,func ": invalid handle")
268 sint *
const code_base,
const sint *
const code_stride,
269 sint *
const proc_base,
const sint *
const proc_stride,
270 sint *
const el_base,
const sint *
const el_stride,
271 double *
const r_base,
const sint *
const r_stride,
272 double *
const dist2_base,
const sint *
const dist2_stride,
273 const double *
const x_base,
const sint *
const x_stride,
274 const double *
const y_base,
const sint *
const y_stride,
275 const double *
const z_base,
const sint *
const z_stride,
276 const sint *
const npt)
280 const double *xv_base[2];
281 unsigned xv_stride[2];
282 xv_base[0]=x_base, xv_base[1]=y_base;
283 xv_stride[0] = *x_stride*
sizeof(double),
284 xv_stride[1] = *y_stride*
sizeof(
double);
286 (
uint*)code_base,(* code_stride)*
sizeof(
sint ),
287 (
uint*)proc_base,(* proc_stride)*
sizeof(
sint ),
288 (
uint*) el_base,(* el_stride)*
sizeof(
sint ),
289 r_base,(* r_stride)*
sizeof(double),
290 dist2_base,(*dist2_stride)*
sizeof(double),
294 const double *xv_base[3];
295 unsigned xv_stride[3];
296 xv_base[0]=x_base, xv_base[1]=y_base, xv_base[2]=z_base;
297 xv_stride[0] = *x_stride*
sizeof(double),
298 xv_stride[1] = *y_stride*
sizeof(
double),
299 xv_stride[2] = *z_stride*
sizeof(double);
301 (
uint*)code_base,(* code_stride)*
sizeof(
sint ),
302 (
uint*)proc_base,(* proc_stride)*
sizeof(
sint ),
303 (
uint*) el_base,(* el_stride)*
sizeof(
sint ),
304 r_base,(* r_stride)*
sizeof(double),
305 dist2_base,(*dist2_stride)*
sizeof(double),
312 double *
const out_base,
const sint *
const out_stride,
313 const sint *
const code_base,
const sint *
const code_stride,
314 const sint *
const proc_base,
const sint *
const proc_stride,
315 const sint *
const el_base,
const sint *
const el_stride,
316 const double *
const r_base,
const sint *
const r_stride,
317 const sint *
const npt,
const double *
const in)
322 out_base,(* out_stride)*
sizeof(double),
323 (
uint*)code_base,(*code_stride)*
sizeof(
sint ),
324 (
uint*)proc_base,(*proc_stride)*
sizeof(
sint ),
325 (
uint*) el_base,(* el_stride)*
sizeof(
sint ),
326 r_base,(* r_stride)*
sizeof(double),
330 out_base,(* out_stride)*
sizeof(double),
331 (
uint*)code_base,(*code_stride)*
sizeof(
sint ),
332 (
uint*)proc_base,(*proc_stride)*
sizeof(
sint ),
333 (
uint*) el_base,(* el_stride)*
sizeof(
sint ),
334 r_base,(* r_stride)*
sizeof(double),
static unsigned byte_bits(const unsigned char x)
static double sum(struct xxt *data, double v, uint n, uint tag)
static uint count_bits(unsigned char *p, uint n)
#define tmalloc(type, count)
static const unsigned mr[D]
static slong lfloor(double x)
void findpts_3(uint *const code_base, const unsigned code_stride, uint *const proc_base, const unsigned proc_stride, uint *const el_base, const unsigned el_stride, double *const r_base, const unsigned r_stride, double *const dist2_base, const unsigned dist2_stride, const double *const x_base[3], const unsigned x_stride[3], const uint npt, struct findpts_data_3 *const fd)
#define trealloc(type, ptr, count)
static void set_bit(unsigned char *const p, const uint i)
void findpts_2(uint *const code_base, const unsigned code_stride, uint *const proc_base, const unsigned proc_stride, uint *const el_base, const unsigned el_stride, double *const r_base, const unsigned r_stride, double *const dist2_base, const unsigned dist2_stride, const double *const x_base[2], const unsigned x_stride[2], const uint npt, struct findpts_data_2 *const fd)
#define comm_init_check(c, ce, np)
void findpts_free_2(struct findpts_data_2 *fd)
static unsigned get_bit(const unsigned char *const p, const uint i)
void findpts_eval_2(double *const out_base, const unsigned out_stride, const uint *const code_base, const unsigned code_stride, const uint *const proc_base, const unsigned proc_stride, const uint *const el_base, const unsigned el_stride, const double *const r_base, const unsigned r_stride, const uint npt, const double *const in, struct findpts_data_2 *const fd)
static double elx[NR *NS]
static ulong hash_index_aux(double low, double fac, ulong n, double x)
void findpts_eval_3(double *const out_base, const unsigned out_stride, const uint *const code_base, const unsigned code_stride, const uint *const proc_base, const unsigned proc_stride, const uint *const el_base, const unsigned el_stride, const double *const r_base, const unsigned r_stride, const uint npt, const double *const in, struct findpts_data_3 *const fd)
static struct handle * handle_array
#define buffer_init(b, max)
void findpts_free_3(struct findpts_data_3 *fd)
#define CHECK_HANDLE(func)
static const unsigned nr[3]
establishes some macros to establish naming conventions
static slong lceil(double x)
void fail(int status, const char *file, unsigned line, const char *fmt,...)