**Avoid FP math for an integer problem**

`floor(log2(max_heap->size))` is overkill and at some level risks incorrect results with less than ideal FP functions. A simply loop will suffice.

 assert(max_heap->size <= 0);
 log2 = -1;
 size = max_heap->size;
 while (size > 0) {
 size >>= 1;
 log2++;
 }
 return log2;

Certainly a fast hack exists.


**Name space**

Rather than names all over the place like 

 ...
 void increase_key()
 int* build_max_heap()
 void insert()
 ...

Move your "13 operations" into a nearby namespace.

 ...
 void mh_increase_key()
 int* mh_build_max_heap()
 void mh_insert()
 mh_...()
 ...