comparison src/luan/modules/MathLuan.java @ 168:ebe9db183eb7

rename *Lib.java to *Luan.java git-svn-id: https://luan-java.googlecode.com/svn/trunk@169 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Sun, 22 Jun 2014 04:42:07 +0000
parents src/luan/modules/MathLib.java@4c0131c2b650
children
comparison
equal deleted inserted replaced
167:4c0131c2b650 168:ebe9db183eb7
1 package luan.modules;
2
3 import luan.LuanState;
4 import luan.LuanTable;
5 import luan.LuanFunction;
6 import luan.LuanJavaFunction;
7 import luan.LuanException;
8
9
10 public final class MathLuan {
11
12 public static final LuanFunction LOADER = new LuanFunction() {
13 @Override public Object call(LuanState luan,Object[] args) {
14 LuanTable module = new LuanTable();
15 try {
16 add( module, "abs", Double.TYPE );
17 add( module, "acos", Double.TYPE );
18 add( module, "asin", Double.TYPE );
19 add( module, "atan", Double.TYPE );
20 add( module, "atan2", Double.TYPE, Double.TYPE );
21 add( module, "ceil", Double.TYPE );
22 add( module, "cos", Double.TYPE );
23 add( module, "cosh", Double.TYPE );
24 add( module, "deg", Double.TYPE );
25 add( module, "exp", Double.TYPE );
26 add( module, "floor", Double.TYPE );
27 add( module, "log", Double.TYPE );
28 add( module, "min", Double.TYPE, new double[0].getClass() );
29 add( module, "max", Double.TYPE, new double[0].getClass() );
30 add( module, "modf", Double.TYPE );
31 module.put("pi",Math.PI);
32 add( module, "pow", Double.TYPE, Double.TYPE );
33 add( module, "rad", Double.TYPE );
34 add( module, "random" );
35 add( module, "sin", Double.TYPE );
36 add( module, "sinh", Double.TYPE );
37 add( module, "sqrt", Double.TYPE );
38 add( module, "tan", Double.TYPE );
39 add( module, "tanh", Double.TYPE );
40 } catch(NoSuchMethodException e) {
41 throw new RuntimeException(e);
42 }
43 return module;
44 }
45 };
46
47 private static void add(LuanTable t,String method,Class<?>... parameterTypes) throws NoSuchMethodException {
48 t.put( method, new LuanJavaFunction(MathLuan.class.getMethod(method,parameterTypes),null) );
49 }
50
51 public static double abs(double x) {
52 return Math.abs(x);
53 }
54
55 public static double acos(double x) {
56 return Math.acos(x);
57 }
58
59 public static double asin(double x) {
60 return Math.asin(x);
61 }
62
63 public static double atan(double x) {
64 return Math.atan(x);
65 }
66
67 public static double atan2(double y,double x) {
68 return Math.atan2(y,x);
69 }
70
71 public static double ceil(double x) {
72 return Math.ceil(x);
73 }
74
75 public static double cos(double x) {
76 return Math.cos(x);
77 }
78
79 public static double cosh(double x) {
80 return Math.cosh(x);
81 }
82
83 public static double deg(double x) {
84 return Math.toDegrees(x);
85 }
86
87 public static double exp(double x) {
88 return Math.exp(x);
89 }
90
91 public static double floor(double x) {
92 return Math.floor(x);
93 }
94
95 public static double log(double x) {
96 return Math.log(x);
97 }
98
99 public static double min(double x,double... a) {
100 for( double d : a ) {
101 if( x > d )
102 x = d;
103 }
104 return x;
105 }
106
107 public static double max(double x,double... a) {
108 for( double d : a ) {
109 if( x < d )
110 x = d;
111 }
112 return x;
113 }
114
115 public static double[] modf(double x) {
116 double i = (int)x;
117 return new double[]{i,x-i};
118 }
119
120 public static double pow(double x,double y) {
121 return Math.pow(x,y);
122 }
123
124 public static double rad(double x) {
125 return Math.toRadians(x);
126 }
127
128 public static double random() {
129 return Math.random();
130 }
131
132 public static double sin(double x) {
133 return Math.sin(x);
134 }
135
136 public static double sinh(double x) {
137 return Math.sinh(x);
138 }
139
140 public static double sqrt(double x) {
141 return Math.sqrt(x);
142 }
143
144 public static double tan(double x) {
145 return Math.tan(x);
146 }
147
148 public static double tanh(double x) {
149 return Math.tanh(x);
150 }
151
152 }