3 * (C) Copyright Dec 20 1998, Edmond J. Breen.
5 * This code may be copied for personal, non-profit use only.
9 /* This file is broken into 2 parts
10 * the first part defines the interface routines
11 * and the 2nd part adds the interface routine
12 * to EiC's look up tables.
25 /* rem: the return type is a structure;
26 * therefore, the first slot is used for
31 static div_t d; /* create some memory */
33 /* skip argument -1 & start at -2 */
35 int num = arg(1,getargs(),int);
36 int dem = arg(2,getargs(),int);
39 d.rem = num - dem * d.quot;
40 if(d.quot < 0 && 0 < d.rem) {
47 v.p.ep = (char*)&d + sizeof(div_t);
55 static ldiv_t d; /* create some memory */
57 /* skip argument -1 & start at -2 */
59 long num = arg(1,getargs(),long);
60 long dem = arg(2,getargs(),long);
63 d.rem = num - dem * d.quot;
64 if(d.quot < 0 && 0 < d.rem) {
71 v.p.ep = (char*)&d + sizeof(ldiv_t);
79 v.dval = acos(arg(0,getargs(),double));
86 v.dval = asin(arg(0,getargs(),double));
92 v.dval = atan(arg(0,getargs(),double));
98 v.dval = atan2(arg(0,getargs(),double), arg(1,getargs(),double));
104 v.dval = cos(arg(0,getargs(),double));
110 v.dval = sin(arg(0,getargs(),double));
116 v.dval = tan(arg(0,getargs(),double));
122 v.dval = cosh(arg(0,getargs(),double));
128 v.dval = sinh(arg(0,getargs(),double));
134 v.dval = tanh(arg(0,getargs(),double));
140 v.dval = exp(arg(0,getargs(),double));
143 val_t eic_frexp(void)
146 v.dval = frexp(arg(0,getargs(),double), arg(1,getargs(),ptr_t).p);
149 val_t eic_ldexp(void)
152 v.dval = ldexp(arg(0,getargs(),double), arg(1,getargs(),int));
158 v.dval = log(arg(0,getargs(),double));
161 val_t eic_log10(void)
164 v.dval = log10(arg(0,getargs(),double));
170 v.dval = modf(arg(0,getargs(),double), arg(1,getargs(),ptr_t).p);
176 v.dval = pow(arg(0,getargs(),double), arg(1,getargs(),double));
182 v.dval = sqrt(arg(0,getargs(),double));
188 v.dval = ceil(arg(0,getargs(),double));
194 v.dval = fabs(arg(0,getargs(),double));
197 val_t eic_floor(void)
200 v.dval = floor(arg(0,getargs(),double));
206 v.dval = fmod(arg(0,getargs(),double), arg(1,getargs(),double));
211 /***********************************************************************************/
213 void module_math(void)
216 EiC_add_builtinfunc("div",eic_div);
217 EiC_add_builtinfunc("ldiv",eic_ldiv);
218 EiC_add_builtinfunc("acos",eic_acos);
219 EiC_add_builtinfunc("asin",eic_asin);
220 EiC_add_builtinfunc("atan",eic_atan);
221 EiC_add_builtinfunc("atan2",eic_atan2);
222 EiC_add_builtinfunc("cos",eic_cos);
223 EiC_add_builtinfunc("sin",eic_sin);
224 EiC_add_builtinfunc("tan",eic_tan);
225 EiC_add_builtinfunc("cosh",eic_cosh);
226 EiC_add_builtinfunc("sinh",eic_sinh);
227 EiC_add_builtinfunc("tanh",eic_tanh);
228 EiC_add_builtinfunc("exp",eic_exp);
229 EiC_add_builtinfunc("frexp",eic_frexp);
230 EiC_add_builtinfunc("ldexp",eic_ldexp);
231 EiC_add_builtinfunc("log",eic_log);
232 EiC_add_builtinfunc("log10",eic_log10);
233 EiC_add_builtinfunc("modf",eic_modf);
234 EiC_add_builtinfunc("pow",eic_pow);
235 EiC_add_builtinfunc("sqrt",eic_sqrt);
236 EiC_add_builtinfunc("ceil",eic_ceil);
237 EiC_add_builtinfunc("fabs",eic_fabs);
238 EiC_add_builtinfunc("floor",eic_floor);
239 EiC_add_builtinfunc("fmod",eic_fmod);