1/* mpz_random2 -- Generate a positive random mpz_t of specified size, with
2   long runs of consecutive ones and zeros in the binary representation.
3   Meant for testing of other MP routines.
4
5Copyright 1991, 1993, 1994, 1996, 2001 Free Software Foundation, Inc.
6
7This file is part of the GNU MP Library.
8
9The GNU MP Library is free software; you can redistribute it and/or modify
10it under the terms of the GNU Lesser General Public License as published by
11the Free Software Foundation; either version 3 of the License, or (at your
12option) any later version.
13
14The GNU MP Library is distributed in the hope that it will be useful, but
15WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
17License for more details.
18
19You should have received a copy of the GNU Lesser General Public License
20along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.  */
21
22#include "gmp.h"
23#include "gmp-impl.h"
24
25void
26mpz_random2 (mpz_ptr x, mp_size_t size)
27{
28  mp_size_t abs_size;
29
30  abs_size = ABS (size);
31  if (abs_size != 0)
32    {
33      if (x->_mp_alloc < abs_size)
34	_mpz_realloc (x, abs_size);
35
36      mpn_random2 (x->_mp_d, abs_size);
37    }
38
39  x->_mp_size = size;
40}
41