/*
 * lrand48.c
 */

#include <stdlib.h>
#include <stdint.h>

unsigned short __rand48_seed[3];

long jrand48(unsigned short xsubi[3])
{
    uint64_t x;

    /* The xsubi[] array is littleendian by spec */
    x = (uint64_t) xsubi[0] +
	((uint64_t) xsubi[1] << 16) + ((uint64_t) xsubi[2] << 32);

    x = (0x5deece66dULL * x) + 0xb;

    xsubi[0] = (unsigned short)x;
    xsubi[1] = (unsigned short)(x >> 16);
    xsubi[2] = (unsigned short)(x >> 32);

    return (long)(int32_t) (x >> 16);
}

long mrand48(void)
{
    return jrand48(__rand48_seed);
}

long nrand48(unsigned short xsubi[3])
{
    return (long)((uint32_t) jrand48(xsubi) >> 1);
}

long lrand48(void)
{
    return (long)((uint32_t) mrand48() >> 1);
}
