typedef enum { m1d_kind_POLY = 0, /* Polynomials. */ m1d_kind_TRIG = 1, /* Cosine and sine trigonometric series. */ m1d_kind_BSPL = 2, /* Minimal-degree B-spline-like. */ m1d_kind_HERM = 3, /* Hermite-style pulses. */ m1d_kind_UPAR = 4 /* Compact partition-of-unity pulses. */ } m1d_kind_t; char *brep_kind_tag(brep_kind_t bkind); /* Returns a fixed character string that identifies the basis kind {bkind}: "POLY", "TRIG", etc. */ typedef struct brep_family_t { brep_kind_t bkind; /* Basis kind. */ brep_degree_t g; /* Max degree or number of terms. */ brep_cont_t c; /* Continuity order. */ } brep_family_t; /* Describes a basis of mother functions with continuity {c}, whose domain is the whole real line. The parameter {g} is the maximum degree or order of the basis elements, depending on the {bkind}. */ void brep_family_print(FILE *wr, brep_family_t *fam); /* Prints out the description of mother basis {fam} to {wr}. */ brep_mother_num_t brep_family_num(brep_family_t *fam); /* Number {num} of elements in the mother basis {fam}. The elements are indexed {0..num-1}. */ typedef struct brep_basis_t { brep_family_t fam; /* Family of mother functions. */ int gsz; /* Number of intervals. */ interval_t dom; /* Argument domain. */ bool_t wrap; /* TRUE iff the domain is periodic. */ } brep_basis_t; /* Describes a basis of functions defined over the domain {dom}, whose elements are obtained by expanding and translating functions of mother basis {fam} over a regular grid. */ char *brep_basis_tag(brep_basis_t *bas); /* Creates a new char string that identifies the basis {bas}. */ brep_grid_size_t brep_element_supp_count ( brep_family_t *fam, brep_mother_index_t pix, brep_grid_size_t gsz, bool_t wrap ); /* Number of cells where a basis element with mother element {fam,pix} may be nonzero, assuming a grid with {gsz} cells with periodicity flag {wrap}. If {wrap} is FALSE, the result is simply the support count {msn} of the mother element. If {wrap} is TRUE, the result is the smallest of {gsz} and {msn}. */ typedef uint64_t brep_cell_index_t; /* Identifies a cell in some (multi)grid. */ /* MULTISCALE BASES */ typedef int32_t brep_rank_t; /* Identifies a layer in a multigrid, or the depth of a node in a binary tree, etc. It may also be a relative rank (i.e. difference of two ranks). */