## Heap data structure

Among the tools routines of sec. 6, we have a number of sorting utilities; the heap sort is implemented in terms of heaps having the following signatures:

`psb_T_heap`
  : a heap containing elements of type T, where T can be `i,s,c,d,z` for integer, real and complex data;
`psb_T_idx_heap`
  : a heap containing elements of type T, as above, together with an integer index.

Given a heap object, the following methods are defined on it:

init
  Initialize memory; also choose ascending or descending order;
howmany
  Current heap occupancy;
insert
  Add an item (or an item and its index);
get_first
  Remove and return the first element;
dump
  Print on file;
free
  Release memory.

These objects are used in MLD2P4 to implement the factorization algorithms.