xref: /netbsd-src/lib/libc/stdlib/nrand48.c (revision 9818090a902ee133b531c6f759a84ca4c1019904)
1*9818090aSmatt /*	$NetBSD: nrand48.c,v 1.10 2013/10/22 08:08:51 matt Exp $	*/
24e067afcSperry 
3933a7b3aSbrezak /*
4933a7b3aSbrezak  * Copyright (c) 1993 Martin Birgmeier
5933a7b3aSbrezak  * All rights reserved.
6933a7b3aSbrezak  *
7933a7b3aSbrezak  * You may redistribute unmodified or modified versions of this source
8933a7b3aSbrezak  * code provided that the above copyright notice and this and the
9933a7b3aSbrezak  * following conditions are retained.
10933a7b3aSbrezak  *
11933a7b3aSbrezak  * This software is provided ``as is'', and comes with no warranties
12933a7b3aSbrezak  * of any kind. I shall in no event be liable for anything that happens
13933a7b3aSbrezak  * to anyone/anything when using this software.
14933a7b3aSbrezak  */
15933a7b3aSbrezak 
1688c3eadbSlukem #include <sys/cdefs.h>
1788c3eadbSlukem #if defined(LIBC_SCCS) && !defined(lint)
18*9818090aSmatt __RCSID("$NetBSD: nrand48.c,v 1.10 2013/10/22 08:08:51 matt Exp $");
1988c3eadbSlukem #endif /* LIBC_SCCS and not lint */
2088c3eadbSlukem 
2143fa6fe3Sjtc #include "namespace.h"
22b48252f3Slukem 
23b48252f3Slukem #include <assert.h>
24b48252f3Slukem 
25933a7b3aSbrezak #include "rand48.h"
26933a7b3aSbrezak 
2743fa6fe3Sjtc #ifdef __weak_alias
__weak_alias(nrand48,_nrand48)2860549036Smycroft __weak_alias(nrand48,_nrand48)
2943fa6fe3Sjtc #endif
3043fa6fe3Sjtc 
31933a7b3aSbrezak long
32933a7b3aSbrezak nrand48(unsigned short xseed[3])
33933a7b3aSbrezak {
34b48252f3Slukem 	_DIAGASSERT(xseed != NULL);
35b48252f3Slukem 
36aa13ae60Sjtc 	__dorand48(xseed);
37*9818090aSmatt 	return xseed[2] * 32768 + (xseed[1] >> 1);
38933a7b3aSbrezak }
39