package builtin.math; import builtin.BuiltinSub; import gui.Constants; import gui.MintException; import gui.Pointer; import gui.PointerTools; import gui.SmartList; /** * @author Oliver Chu */ public class Sign extends BuiltinSub { @Override public Pointer apply(SmartList<Pointer> args) throws MintException { Pointer arg0 = args.get(0); double d = 0.0; if (arg0.type == Constants.INT_TYPE) { d = (double) PointerTools.dereferenceInt(arg0); } else if (arg0.type == Constants.REAL_TYPE) { d = PointerTools.dereferenceReal(arg0); } if (d < 0.0) { return Constants.NEG_ONE; } else if (Math.abs(d) < 0.0001) { return Constants.ZERO; } else { return Constants.ONE; } } }