Rogue: Savage Rats, a retro-themed dungeon crawler
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
rogue-savage-rats/src/mightypork/utils/math/num/NumMathDynamic.java

558 lines
7.6 KiB

package mightypork.utils.math.num;
public abstract class NumMathDynamic extends NumMathBase<NumView>{
private NumView ceil;
private NumView floor;
private NumView sgn;
private NumView round;
private NumView atan;
private NumView acos;
private NumView asin;
private NumView tan;
private NumView cos;
private NumView sin;
private NumView cbrt;
private NumView sqrt;
private NumView cube;
private NumView square;
private NumView neg;
private NumView abs;
@Override
public NumView add(final double addend)
{
return new NumView() {
private Num t = NumMathDynamic.this;
@Override
public double value()
{
return t.value() + addend;
}
};
}
@Override
public NumView sub(final double subtrahend)
{
return add(-subtrahend);
}
@Override
public NumView mul(final double factor)
{
return new NumView() {
private Num t = NumMathDynamic.this;
@Override
public double value()
{
return t.value() + factor;
}
};
}
@Override
public NumView div(final double factor)
{
return mul(1/factor);
}
@Override
public NumView perc(final double percent)
{
return mul(percent/100);
}
@Override
public NumView neg()
{
if(neg==null) neg = new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return -1*t.value();
}
};
return neg;
}
@Override
public NumView abs()
{
if(abs==null) abs = new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.abs(t.value());
}
};
return abs;
}
@Override
public NumView max(final double other)
{
return new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.max(t.value(), other);
}
};
}
@Override
public NumView min(final double other)
{
return new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.min(t.value(), other);
}
};
}
@Override
public NumView pow(final double other)
{
return new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.pow(t.value(), other);
}
};
}
@Override
public NumView square()
{
if(square==null) square = new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
final double v = t.value();
return v*v;
}
};
return square;
}
@Override
public NumView cube()
{
if(cube==null) cube = new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
final double v = t.value();
return v*v*v;
}
};
return cube;
}
@Override
public NumView sqrt()
{
if(sqrt==null) sqrt = new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.sqrt(t.value());
}
};
return sqrt;
}
@Override
public NumView cbrt()
{
if(cbrt==null) cbrt = new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.cbrt(t.value());
}
};
return cbrt;
}
@Override
public NumView sin()
{
if(sin==null) sin = new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.sin(t.value());
}
};
return sin;
}
@Override
public NumView cos()
{
if(cos==null) cos = new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.cos(t.value());
}
};
return cos;
}
@Override
public NumView tan()
{
if(tan==null) tan = new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.tan(t.value());
}
};
return tan;
}
@Override
public NumView asin()
{
if(asin==null) asin = new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.asin(t.value());
}
};
return asin;
}
@Override
public NumView acos()
{
if(acos==null) acos = new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.acos(t.value());
}
};
return acos;
}
@Override
public NumView atan()
{
if(atan==null) atan = new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.atan(t.value());
}
};
return atan;
}
@Override
public NumView round()
{
if(round==null) round = new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.round(t.value());
}
};
return round;
}
@Override
public NumView floor()
{
if(floor==null) floor = new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.floor(t.value());
}
};
return floor;
}
@Override
public NumView ceil()
{
if(ceil==null) ceil = new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.round(t.value());
}
};
return ceil;
}
@Override
public NumView signum()
{
if(sgn==null) sgn = new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.signum(t.value());
}
};
return sgn;
}
@Override
public NumView average(final double other)
{
return null;
}
@Override
public NumView half()
{
return mul(0.5);
}
@Override
public NumView add(final Num addend)
{
return new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return t.value() + eval(addend);
}
};
}
@Override
public NumView sub(final Num subtrahend)
{
return new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return t.value() - eval(subtrahend);
}
};
}
@Override
public NumView mul(final Num factor)
{
return new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return t.value() * eval(factor);
}
};
}
@Override
public NumView div(final Num factor)
{
return new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return t.value() / eval(factor);
}
};
}
@Override
public NumView perc(final Num percent)
{
return new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return t.value() * (eval(percent) / 100);
}
};
}
@Override
public NumView max(final Num other)
{
return new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.max(t.value(), eval(other));
}
};
}
@Override
public NumView min(final Num other)
{
return new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.min(t.value(), eval(other));
}
};
}
@Override
public NumView pow(final Num power)
{
return new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return Math.pow(t.value(), eval(power));
}
};
}
@Override
public NumView average(final Num other)
{
return new NumView() {
final Num t = NumMathDynamic.this;
@Override
public double value()
{
return (t.value() + eval(other)) / 2;
}
};
}
}