xref: /netbsd-src/lib/libc/stdlib/seed48.c (revision 88c3eadbfa9f9453071747a1798fe9363cb0265e)
1*88c3eadbSlukem /*	$NetBSD: seed48.c,v 1.8 2005/06/12 05:21:28 lukem 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 
16*88c3eadbSlukem #include <sys/cdefs.h>
17*88c3eadbSlukem #if defined(LIBC_SCCS) && !defined(lint)
18*88c3eadbSlukem __RCSID("$NetBSD: seed48.c,v 1.8 2005/06/12 05:21:28 lukem Exp $");
19*88c3eadbSlukem #endif /* LIBC_SCCS and not lint */
20*88c3eadbSlukem 
2143fa6fe3Sjtc #include "namespace.h"
22b48252f3Slukem 
23b48252f3Slukem #include <assert.h>
24b48252f3Slukem 
25933a7b3aSbrezak #include "rand48.h"
26933a7b3aSbrezak 
2743fa6fe3Sjtc #ifdef __weak_alias
__weak_alias(seed48,_seed48)2860549036Smycroft __weak_alias(seed48,_seed48)
2943fa6fe3Sjtc #endif
30933a7b3aSbrezak 
31933a7b3aSbrezak unsigned short *
32933a7b3aSbrezak seed48(unsigned short xseed[3])
33933a7b3aSbrezak {
34933a7b3aSbrezak 	static unsigned short sseed[3];
35933a7b3aSbrezak 
36b48252f3Slukem 	_DIAGASSERT(xseed != NULL);
37b48252f3Slukem 
38d2b1e8e4Sjtc 	sseed[0] = __rand48_seed[0];
39d2b1e8e4Sjtc 	sseed[1] = __rand48_seed[1];
40d2b1e8e4Sjtc 	sseed[2] = __rand48_seed[2];
41d2b1e8e4Sjtc 	__rand48_seed[0] = xseed[0];
42d2b1e8e4Sjtc 	__rand48_seed[1] = xseed[1];
43d2b1e8e4Sjtc 	__rand48_seed[2] = xseed[2];
44d2b1e8e4Sjtc 	__rand48_mult[0] = RAND48_MULT_0;
45d2b1e8e4Sjtc 	__rand48_mult[1] = RAND48_MULT_1;
46d2b1e8e4Sjtc 	__rand48_mult[2] = RAND48_MULT_2;
47d2b1e8e4Sjtc 	__rand48_add = RAND48_ADD;
48933a7b3aSbrezak 	return sseed;
49933a7b3aSbrezak }
50