KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > gnu > jemacs > lang > DivideOp


1 package gnu.jemacs.lang;
2 import gnu.math.*;
3 import gnu.mapping.*;
4
5 public class DivideOp extends ProcedureN
6 {
7   public DivideOp(String JavaDoc name)
8   {
9     setName(name);
10   }
11
12   public static final DivideOp $Sl = new DivideOp("/");
13
14   public static Object JavaDoc $Sl(Object JavaDoc arg1)
15   {
16     return $Sl(IntNum.one(), arg1);
17   }
18
19   public static Object JavaDoc $Sl(Object JavaDoc arg1, Object JavaDoc arg2)
20   {
21     Numeric num1 = ELisp.asNumber(arg1);
22     Numeric num2 = ELisp.asNumber(arg2);
23     if (num1 instanceof IntNum && num2 instanceof IntNum)
24       return IntNum.quotient((IntNum) num1, (IntNum) num2, Numeric.TRUNCATE);
25     return num1.div(num2);
26   }
27
28   public static Object JavaDoc $Sl$V (Object JavaDoc arg1, Object JavaDoc arg2,
29                   Object JavaDoc arg3, Object JavaDoc[] rest)
30   {
31     return applyN($Sl($Sl(arg1, arg2), arg3), rest);
32   }
33
34   public static Object JavaDoc applyN(Object JavaDoc init, Object JavaDoc[] args)
35   {
36     int len = args.length;
37     Object JavaDoc result = init;
38     for (int i = 0; i < len; i++)
39       result = $Sl(result, args[i]);
40     return result;
41   }
42
43   public Object JavaDoc applyN (Object JavaDoc[] args)
44   {
45     int len = args.length;
46     if (len <= 1)
47       return $Sl(args[0]);
48     Object JavaDoc result = args[0];
49     for (int i = 1; i < len; i++)
50       result = $Sl(result, args[i]);
51     return result;
52   }
53 }
54
Popular Tags