AcouSTO  version 2.0

◆ heap_push()

static int heap_push ( heap h,
heap_item  hi 
)
static
809 {
810  int insert;
811  unsigned i, fdim = h->fdim;
812 
813  for (i = 0; i < fdim; ++i) {
814  h->ee[i].val += hi.ee[i].val;
815  h->ee[i].err += hi.ee[i].err;
816  }
817  insert = h->n;
818  if (++(h->n) > h->nalloc) {
819  heap_resize(h, h->n * 2);
820  if (!h->items) return FAILURE;
821  }
822 
823  while (insert) {
824  int parent = (insert - 1) / 2;
825  if (KEY(hi) <= KEY(h->items[parent]))
826  break;
827  h->items[insert] = h->items[parent];
828  insert = parent;
829  }
830  h->items[insert] = hi;
831  return SUCCESS;
832 }
#define SUCCESS
Definition: cubature.c:109
static void heap_resize(heap *h, unsigned nalloc)
Definition: cubature.c:777
esterr * ee
Definition: cubature.c:774
#define KEY(hi)
Definition: cubature.c:768
unsigned nalloc
Definition: cubature.c:771
double err
Definition: cubature.c:116
unsigned n
Definition: cubature.c:771
double val
Definition: cubature.c:116
unsigned fdim
Definition: cubature.c:773
#define FAILURE
Definition: cubature.c:110
heap_item * items
Definition: cubature.c:772
esterr * ee
Definition: cubature.c:189