Revision 4a29a79b8f1cd58a614af82c3bb5d40fdda85d48 authored by g3gg0 on 08 October 2016, 14:22:41 UTC, committed by g3gg0 on 08 October 2016, 14:22:41 UTC
2 parent s 45c9e2a + 2791dd8
Raw File
imath.c
/* integer math */

#include "dryos.h"
#include "math.h"

int powi(int base, int power)
{
    int result = 1;
    while (power)
    {
        if (power & 1)
            result *= base;
        power >>= 1;
        base *= base;
    }
    return result;
}

int log2i(int x)
{
    int result = 0;
    while (x >>= 1) result++;
    return result;
}

int log10i(int x)
{
    int result = 0;
    while(x /= 10) result++;
    return result;
}

/* todo: integer-only implementation? */
uint32_t log_length(int v)
{
    if (!v) return 0;
    return (unsigned int)(log2f(v) * 100);
}
back to top