#include "glulxe.h"
#include <stdlib.h>
#include <math.h>
void *glulx_malloc(glui32 len)
{
return malloc(len);
}
void *glulx_realloc(void *ptr, glui32 len)
{
return realloc(ptr, len);
}
void glulx_free(void *ptr)
{
free(ptr);
}
void glulx_sort(void *addr, int count, int size,
int (*comparefunc)(void *p1, void *p2))
{
qsort(addr, count, size, (int (*)(const void *, const void *))comparefunc);
}
gfloat32 glulx_powf(gfloat32 val1, gfloat32 val2)
{
if (val1 == 1.0f)
return 1.0f;
else if ((val2 == 0.0f) || (val2 == -0.0f))
return 1.0f;
else if ((val1 == -1.0f) && isinf(val2))
return 1.0f;
return powf(val1, val2);
}
extern gfloat64 glulx_pow(gfloat64 val1, gfloat64 val2)
{
if (val1 == 1.0)
return 1.0;
else if ((val2 == 0.0) || (val2 == -0.0))
return 1.0;
else if ((val1 == -1.0) && isinf(val2))
return 1.0;
return pow(val1, val2);
}