mirror of
https://github.com/lcn2/calc.git
synced 2025-08-16 01:03:29 +03:00
Release calc version 2.12.2.2
This commit is contained in:
24
zrandom.c
24
zrandom.c
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: zrandom.c,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||
* @(#) $Revision: 30.2 $
|
||||
* @(#) $Id: zrandom.c,v 30.2 2007/09/21 01:47:34 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/zrandom.c,v $
|
||||
*
|
||||
* Under source code control: 1997/02/15 04:01:56
|
||||
@@ -133,9 +133,9 @@
|
||||
*
|
||||
* The Blum generator as the following calc interfaces:
|
||||
*
|
||||
* random(min, max) (where min < max)
|
||||
* random(min, beyond) (where min < beyond)
|
||||
*
|
||||
* Print a Blum generator random value over interval [min,max).
|
||||
* Print a Blum generator random value over interval [min,beyond).
|
||||
*
|
||||
* random()
|
||||
*
|
||||
@@ -2904,17 +2904,17 @@ zrandom(long cnt, ZVALUE *res)
|
||||
|
||||
|
||||
/*
|
||||
* zrandomrange - generate a Blum-Blum-Shub random value in [low, high)
|
||||
* zrandomrange - generate a Blum-Blum-Shub random value in [low, beyond)
|
||||
*
|
||||
* given:
|
||||
* low - low value of range
|
||||
* high - beyond end of range
|
||||
* beyond - beyond end of range
|
||||
* res - where to place the random bits as ZVALUE
|
||||
*/
|
||||
void
|
||||
zrandomrange(CONST ZVALUE low, CONST ZVALUE high, ZVALUE *res)
|
||||
zrandomrange(CONST ZVALUE low, CONST ZVALUE beyond, ZVALUE *res)
|
||||
{
|
||||
ZVALUE range; /* high-low */
|
||||
ZVALUE range; /* beyond-low */
|
||||
ZVALUE rval; /* random value [0, 2^bitlen) */
|
||||
ZVALUE rangem1; /* range - 1 */
|
||||
long bitlen; /* smallest power of 2 >= diff */
|
||||
@@ -2922,15 +2922,15 @@ zrandomrange(CONST ZVALUE low, CONST ZVALUE high, ZVALUE *res)
|
||||
/*
|
||||
* firewall
|
||||
*/
|
||||
if (zrel(low, high) >= 0) {
|
||||
math_error("srand low range >= high range");
|
||||
if (zrel(low, beyond) >= 0) {
|
||||
math_error("srand low range >= beyond range");
|
||||
/*NOTREACHED*/
|
||||
}
|
||||
|
||||
/*
|
||||
* determine the size of the random number needed
|
||||
*/
|
||||
zsub(high, low, &range);
|
||||
zsub(beyond, low, &range);
|
||||
if (zisone(range)) {
|
||||
zfree_random(range);
|
||||
zcopy(low, res);
|
||||
@@ -2959,7 +2959,7 @@ zrandomrange(CONST ZVALUE low, CONST ZVALUE high, ZVALUE *res)
|
||||
|
||||
/*
|
||||
* add in low value to produce the range [0+low, diff+low)
|
||||
* which is the range [low, high)
|
||||
* which is the range [low, beyond)
|
||||
*/
|
||||
zadd(rval, low, res);
|
||||
zfree_random(rval);
|
||||
|
Reference in New Issue
Block a user