Changeset 5267


Ignore:
Timestamp:
12/27/03 07:47:21 (17 years ago)
Author:
piso
Message:

Moved RANDOM and MAKE-RANDOM-STATE to RandomState?.java.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/Primitives.java

    r5263 r5267  
    33 *
    44 * Copyright (C) 2002-2003 Peter Graves
    5  * $Id: Primitives.java,v 1.543 2003-12-27 05:37:10 piso Exp $
     5 * $Id: Primitives.java,v 1.544 2003-12-27 07:47:21 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    37183718    }
    37193719
    3720     // ### random
    3721     // random limit &optional random-state => random-number
    3722     private static final Primitive RANDOM =
    3723         new Primitive("random", "limit &optional random-state")
    3724     {
    3725         public LispObject execute(LispObject[] args) throws ConditionThrowable
    3726         {
    3727             int length = args.length;
    3728             if (length < 1 || length > 2) {
    3729                 signal(new WrongNumberOfArgumentsException(this));
    3730                 return NIL;
    3731             }
    3732             Random random;
    3733             if (length == 2)
    3734                 random = (Random) JavaObject.getObject(args[1]);
    3735             else
    3736                 random = (Random) JavaObject.getObject(_RANDOM_STATE_.symbolValueNoThrow());
    3737             if (args[0] instanceof Fixnum) {
    3738                 int limit = ((Fixnum)args[0]).getValue();
    3739                 if (limit > 0) {
    3740                     int n = random.nextInt((int)limit);
    3741                     return new Fixnum(n);
    3742                 }
    3743             } else if (args[0] instanceof Bignum) {
    3744                 BigInteger limit = ((Bignum)args[0]).getValue();
    3745                 if (limit.signum() > 0) {
    3746                     int bitLength = limit.bitLength();
    3747                     BigInteger rand = new BigInteger(bitLength + 1, random);
    3748                     BigInteger remainder = rand.remainder(limit);
    3749                     return number(remainder);
    3750                 }
    3751             } else if (args[0] instanceof LispFloat) {
    3752                 double limit = ((LispFloat)args[0]).getValue();
    3753                 if (limit > 0) {
    3754                     double rand = random.nextDouble();
    3755                     return new LispFloat(rand * limit);
    3756                 }
    3757             }
    3758             signal(new TypeError(args[0], "positive integer or positive float"));
    3759             return NIL;
    3760         }
    3761     };
    3762 
    3763     // ### make-random-state
    3764     private static final Primitive MAKE_RANDOM_STATE =
    3765         new Primitive("make-random-state","&optional state") {
    3766         public LispObject execute(LispObject[] args) throws ConditionThrowable
    3767         {
    3768             // FIXME Ignore arguments (or lack thereof).
    3769             return new JavaObject(new Random());
    3770         }
    3771     };
    3772 
    37733720    // ### truncate
    37743721    private static final Primitive TRUNCATE = new Primitive("truncate","number &optional divisor") {
Note: See TracChangeset for help on using the changeset viewer.