text: /* INCLUDE GUARDS */
  #ifndef HEAP_H
  #define HEAP_H
  
  
  #include <stdio.h>
  #include <stdint.h>
  #include <stdlib.h>
  #include <math.h>
  
  
  /* DEFINES */
  #define data_type_t float
  #define NOVALUE (data_type_t)INFINITY
  #define DEFAULT_CAPACITY 10u
  
  
  /* TYPEDEFS */
  typedef struct heap{
     uint32_t size;
     uint32_t capacitiy;
     data_type_t * data;
  }heap_t;
  
  /* Heap FUNCTIONS */
  
  heap_t * create_heap();
  
  void * free_heap(heap_t * heap);
  
  uint32_t parent_idx(uint32_t idx);
  
  uint32_t left_child_idx(uint32_t idx);
  
  uint32_t right_child_idx(uint32_t idx);
  
  void swap(data_type_t * a, data_type_t * b);
  
  void insert_value(heap_t * heap, data_type_t value);
  
  data_type_t remove_minimuim(heap_t * heap);
  
  void heapify(heap_t * heap, uint32_t idx);
  
  void print_heap(heap_t * heap);
  
  
  #endif //HEAP_H
  