[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Dotgnu-libs-commits] CVS: GMP-Sharp Random.cs,NONE,1.1
From: |
Marcus Urban <address@hidden> |
Subject: |
[Dotgnu-libs-commits] CVS: GMP-Sharp Random.cs,NONE,1.1 |
Date: |
Sun, 15 Dec 2002 02:55:49 -0500 |
Update of /cvsroot/dotgnu-libs/GMP-Sharp
In directory subversions:/tmp/cvs-serv16991
Added Files:
Random.cs
Log Message:
Initial checkout (moved class from gmp-z.cs)
--- NEW FILE ---
using System;
using System.Runtime.InteropServices;
using GMP;
using mpz_t = System.IntPtr;
using Culong = System.UInt32;
using Clong = System.Int32;
namespace GMP
{
public class Random
{
// Random number functions in Integer, Rational, and Float
// will need access to the rawObject
internal IntPtr rawObject;
public Random()
{
rawObject = create_gmp_randstate_struct();
__gmp_randinit_default( rawObject );
}
public Random( Integer a, Culong c, Culong m2exp )
{
rawObject = create_gmp_randstate_struct();
__gmp_randinit_lc_2exp( rawObject, a.rawObject, c, m2exp );
}
public Random( Culong size )
{
rawObject = create_gmp_randstate_struct();
__gmp_randinit_lc_2exp_size( rawObject, size );
}
~Random()
{
__gmp_randclear( rawObject );
free( rawObject );
}
public void Seed( Integer value )
{
__gmp_randseed( rawObject, value.rawObject );
}
public void Seed ( Culong value )
{
__gmp_randseed_ui( rawObject, value );
}
public Integer IntegerUBits( Culong n )
{
Integer number = new Integer();
__gmpz_urandomb( number.rawObject, this.rawObject, n );
return number;
}
public Integer IntegerURange( Integer n )
{
Integer number = new Integer();
__gmpz_urandomm( number.rawObject, this.rawObject, n.rawObject
);
return number;
}
public Integer IntegerRBits( Culong n )
{
Integer number = new Integer();
__gmpz_rrandomb( number.rawObject, this.rawObject, n );
return number;
}
public Float FloatUBits( Culong nbits )
{
Float number = new Float();
__gmpf_urandomb( number.rawObject, rawObject, nbits );
return number;
}
// P/Invoke functions
// Create the C structure for random number state
[DllImport("libgmp_support", CharSet=CharSet.Ansi)]
private static extern IntPtr create_gmp_randstate_struct();
[DllImport("libgmp", CharSet=CharSet.Ansi)]
private static extern void __gmp_randclear( IntPtr state );
[DllImport("libc", CharSet=CharSet.Ansi)]
private static extern void free( IntPtr rawObject );
[DllImport("libgmp", CharSet=CharSet.Ansi)]
private static extern void __gmp_randinit_default( IntPtr state );
[DllImport("libgmp", CharSet=CharSet.Ansi)]
private static extern void __gmp_randinit_lc_2exp( IntPtr state,
mpz_t a, Culong c, Culong m2exp );
[DllImport("libgmp", CharSet=CharSet.Ansi)]
private static extern void __gmp_randinit_lc_2exp_size(
IntPtr state, Culong size );
[DllImport("libgmp", CharSet=CharSet.Ansi)]
private static extern void __gmp_randseed( IntPtr state,
mpz_t seed );
[DllImport("libgmp", CharSet=CharSet.Ansi)]
private static extern void __gmp_randseed_ui( IntPtr state,
Culong seed );
[DllImport("libgmp", CharSet=CharSet.Ansi)]
private static extern void __gmpz_urandomb
( IntPtr result, IntPtr state, Culong n );
[DllImport("libgmp", CharSet=CharSet.Ansi)]
private static extern void __gmpz_urandomm
( IntPtr result, IntPtr state, IntPtr n );
[DllImport("libgmp", CharSet=CharSet.Ansi)]
private static extern void __gmpz_rrandomb
( IntPtr result, IntPtr state, Culong n );
[DllImport("libgmp", CharSet=CharSet.Ansi)]
private static extern void __gmpf_urandomb
( IntPtr result, IntPtr state, Culong n );
} // Class Random
} // namespace GMP
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Dotgnu-libs-commits] CVS: GMP-Sharp Random.cs,NONE,1.1,
Marcus Urban <address@hidden> <=