package jscl.math.operator;
import jscl.math.Generic;
import jscl.math.NumericWrapper;
import jscl.math.TimeDependent;
import jscl.math.Variable;
import jscl.math.numeric.Real;
import javax.annotation.Nonnull;
/**
* User: serso
* Date: 12/26/11
* Time: 9:54 AM
*/
public class Rand extends Operator implements TimeDependent {
public static final String NAME = "rand";
public Rand() {
super(NAME, new Generic[0]);
}
@Nonnull
@Override
public Operator newInstance(@Nonnull Generic[] parameters) {
return new Rand();
}
@Override
public int getMinParameters() {
return 0;
}
@Override
public Generic selfExpand() {
return new NumericWrapper(Real.valueOf(Math.random()));
}
@Override
public Generic numeric() {
return selfExpand().numeric();
}
@Nonnull
@Override
public Variable newInstance() {
return new Rand();
}
@Override
public boolean equals(Object obj) {
return this == obj;
}
@Override
public int hashCode() {
return super.hashCode();
}
@Override
public int compareTo(Object that) {
if (this == that) return 0;
return -1;
}
@Override
public int compareTo(Variable that) {
if (this == that) return 0;
return -1;
}
}