Package mikera.vectorz.util

Source Code of mikera.vectorz.util.Testing

package mikera.vectorz.util;

import mikera.arrayz.INDArray;
import mikera.util.Rand;
import mikera.util.Random;
import mikera.vectorz.AVector;
import mikera.vectorz.Vector;
import mikera.vectorz.Vectorz;
import mikera.vectorz.impl.Vector0;

public class Testing {

  public static AVector createTestVector(int length) {
    return createTestVector(length,new Random());
  }
 
  public static AVector createTestVector(int length, Random r) {
    if (length<0) throw new IllegalArgumentException("Negative vector length!");
    if (length==0) {
      switch (r.nextInt(2)) {
        case 0: return Vector0.INSTANCE;
        case 1: return Vector.createLength(0);
        default: return Vector0.INSTANCE;
      }
    }
    if ((length<=5)&&r.nextInt(100)<50) {
      return Vectorz.newVector(length);
    }
    if (r.nextInt(100)<50) {
      int mid=r.nextInt(length+1);
      return createTestVector(mid,r).join(createTestVector(length-mid,r));
    }
    return Vector.createLength(length);
  }
 
  /**
   * Fills an array with random values in the [0..1) range. Returns the mutated array.
   * @param a
   * @param r
   * @return
   */
  public static INDArray fillRandom(INDArray a, Random r) {
    int dims=a.dimensionality();
    if (dims==0) {
      a.set(r.nextDouble());
    } else if (dims==1) {
      int len=a.getShape(0);
      for (int i=0; i<len; i++) {
        a.set(i,r.nextDouble());
      }
    } else {
      for (INDArray s:a.getSliceViews()) {
        fillRandom(s,r);
      }
    }
    return a;
  }
 
  public static boolean validateFullyMutable(INDArray m) {
    INDArray c=m.exactClone();
    AVector v=c.asVector();
    int n=v.length();

    if ((!c.isFullyMutable())) return false;
    if ((!c.isMutable())&&(n>0)) return false
   
    for (int i=0; i<n ; i++) {
      double t=v.unsafeGet(i);
      double x=10+Rand.nextDouble()*1000;
      if (t==x) {x=x+1;}
      v.set(i,x);
      if(x!=v.get(i)) return false;
      v.set(i,t);
    }
   
    return true;
  }
}
TOP

Related Classes of mikera.vectorz.util.Testing

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.