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.
261 lines
3.0 KiB
261 lines
3.0 KiB
package mightypork.utils.math.num;
|
|
|
|
|
|
public abstract class NumMathStatic<N extends NumMathStatic<N>> extends NumMathBase<N> {
|
|
|
|
protected abstract N result(double a);
|
|
|
|
|
|
@Override
|
|
public N add(double addend)
|
|
{
|
|
return result(value() + addend);
|
|
}
|
|
|
|
|
|
@Override
|
|
public N sub(double subtrahend)
|
|
{
|
|
return add(-subtrahend);
|
|
}
|
|
|
|
|
|
@Override
|
|
public N mul(double factor)
|
|
{
|
|
return result(value() * factor);
|
|
}
|
|
|
|
|
|
@Override
|
|
public N div(double factor)
|
|
{
|
|
return mul(1 / factor);
|
|
}
|
|
|
|
|
|
@Override
|
|
public N perc(double percents)
|
|
{
|
|
return mul(percents / 100);
|
|
}
|
|
|
|
|
|
@Override
|
|
public N neg()
|
|
{
|
|
return mul(-1);
|
|
}
|
|
|
|
|
|
@Override
|
|
public N abs()
|
|
{
|
|
return result(Math.abs(value()));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N max(double other)
|
|
{
|
|
return result(Math.max(value(), other));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N min(double other)
|
|
{
|
|
return result(Math.min(value(), other));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N pow(double power)
|
|
{
|
|
return result(Math.pow(value(), power));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N square()
|
|
{
|
|
final double v = value();
|
|
return result(v * v);
|
|
}
|
|
|
|
|
|
@Override
|
|
public N cube()
|
|
{
|
|
final double v = value();
|
|
return result(v * v * v);
|
|
}
|
|
|
|
|
|
@Override
|
|
public N sqrt()
|
|
{
|
|
return result(Math.sqrt(value()));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N cbrt()
|
|
{
|
|
return result(Math.cbrt(value()));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N sin()
|
|
{
|
|
return result(Math.sin(value()));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N cos()
|
|
{
|
|
return result(Math.cos(value()));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N tan()
|
|
{
|
|
return result(Math.tan(value()));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N asin()
|
|
{
|
|
return result(Math.asin(value()));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N acos()
|
|
{
|
|
return result(Math.acos(value()));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N atan()
|
|
{
|
|
return result(Math.atan(value()));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N signum()
|
|
{
|
|
return result(Math.signum(value()));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N average(double other)
|
|
{
|
|
return result((value() + other) / 2);
|
|
}
|
|
|
|
|
|
@Override
|
|
public N round()
|
|
{
|
|
return result(Math.round(value()));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N ceil()
|
|
{
|
|
return result(Math.ceil(value()));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N floor()
|
|
{
|
|
return result(Math.floor(value()));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N half()
|
|
{
|
|
return mul(0.5);
|
|
}
|
|
|
|
|
|
@Override
|
|
public N add(final Num addend)
|
|
{
|
|
return add(eval(addend));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N sub(final Num subtrahend)
|
|
{
|
|
return sub(eval(subtrahend));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N mul(final Num factor)
|
|
{
|
|
return mul(eval(factor));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N div(final Num factor)
|
|
{
|
|
return div(eval(factor));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N perc(final Num percent)
|
|
{
|
|
return perc(eval(percent));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N max(final Num other)
|
|
{
|
|
return min(eval(other));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N min(final Num other)
|
|
{
|
|
return min(eval(other));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N pow(final Num power)
|
|
{
|
|
return pow(eval(power));
|
|
}
|
|
|
|
|
|
@Override
|
|
public N average(final Num other)
|
|
{
|
|
return average(eval(other));
|
|
}
|
|
|
|
|
|
@Override
|
|
public String toString()
|
|
{
|
|
return String.format("{%.1f}", value());
|
|
}
|
|
}
|
|
|