package org.jerlang.erts.erlang;
import org.jerlang.type.Integer;
import org.jerlang.type.List;
import org.jerlang.type.Term;
/**
* abs(Float) -> float()
* abs(Int) -> integer() >= 0
*
* Types:
* Float = float()
* Int = integer()
*
* Returns an integer or float which is the arithmetical absolute
* value of Float or Int.
*
* > abs(-3.33).
* 3.33
* > abs(-3).
* 3
*
* Allowed in guard tests.
*/
public class ErlangAbs {
private ErlangAbs() {
}
public static Term dispatch(List params) {
switch (params.length()) {
case 1:
return abs_1(params.head().toInteger());
default:
throw Error.badarg;
}
}
public static Integer abs_1(Integer integer) {
return new Integer(integer.toBigInteger().abs());
}
}