comparison src/floatfns.c @ 683:7f4d77d29804

*** empty log message ***
author Richard M. Stallman <rms@gnu.org>
date Thu, 04 Jun 1992 04:22:08 +0000
parents 40b255f55df3
children 714b8017cc6b
comparison
equal deleted inserted replaced
682:71f59bd24996 683:7f4d77d29804
75 75
76 if (XTYPE (num) == Lisp_Float) 76 if (XTYPE (num) == Lisp_Float)
77 return XFLOAT (num)->data; 77 return XFLOAT (num)->data;
78 return (double) XINT (num); 78 return (double) XINT (num);
79 } 79 }
80
81 /* Trig functions. */
80 82
81 DEFUN ("acos", Facos, Sacos, 1, 1, 0, 83 DEFUN ("acos", Facos, Sacos, 1, 1, 0,
82 "Return the inverse cosine of ARG.") 84 "Return the inverse cosine of ARG.")
83 (num) 85 (num)
84 register Lisp_Object num; 86 register Lisp_Object num;
86 double d = extract_float (num); 88 double d = extract_float (num);
87 IN_FLOAT (d = acos (d), num); 89 IN_FLOAT (d = acos (d), num);
88 return make_float (d); 90 return make_float (d);
89 } 91 }
90 92
91 DEFUN ("acosh", Facosh, Sacosh, 1, 1, 0,
92 "Return the inverse hyperbolic cosine of ARG.")
93 (num)
94 register Lisp_Object num;
95 {
96 double d = extract_float (num);
97 IN_FLOAT (d = acosh (d), num);
98 return make_float (d);
99 }
100
101 DEFUN ("asin", Fasin, Sasin, 1, 1, 0, 93 DEFUN ("asin", Fasin, Sasin, 1, 1, 0,
102 "Return the inverse sine of ARG.") 94 "Return the inverse sine of ARG.")
103 (num) 95 (num)
104 register Lisp_Object num; 96 register Lisp_Object num;
105 { 97 {
106 double d = extract_float (num); 98 double d = extract_float (num);
107 IN_FLOAT (d = asin (d), num); 99 IN_FLOAT (d = asin (d), num);
108 return make_float (d); 100 return make_float (d);
109 } 101 }
110 102
111 DEFUN ("asinh", Fasinh, Sasinh, 1, 1, 0,
112 "Return the inverse hyperbolic sine of ARG.")
113 (num)
114 register Lisp_Object num;
115 {
116 double d = extract_float (num);
117 IN_FLOAT (d = asinh (d), num);
118 return make_float (d);
119 }
120
121 DEFUN ("atan", Fatan, Satan, 1, 1, 0, 103 DEFUN ("atan", Fatan, Satan, 1, 1, 0,
122 "Return the inverse tangent of ARG.") 104 "Return the inverse tangent of ARG.")
123 (num) 105 (num)
124 register Lisp_Object num; 106 register Lisp_Object num;
125 { 107 {
126 double d = extract_float (num); 108 double d = extract_float (num);
127 IN_FLOAT (d = atan (d), num); 109 IN_FLOAT (d = atan (d), num);
128 return make_float (d); 110 return make_float (d);
129 } 111 }
130 112
131 DEFUN ("atanh", Fatanh, Satanh, 1, 1, 0, 113 DEFUN ("cos", Fcos, Scos, 1, 1, 0,
132 "Return the inverse hyperbolic tangent of ARG.") 114 "Return the cosine of ARG.")
133 (num) 115 (num)
134 register Lisp_Object num; 116 register Lisp_Object num;
135 { 117 {
136 double d = extract_float (num); 118 double d = extract_float (num);
137 IN_FLOAT (d = atanh (d), num); 119 IN_FLOAT (d = cos (d), num);
138 return make_float (d); 120 return make_float (d);
139 } 121 }
140 122
123 DEFUN ("sin", Fsin, Ssin, 1, 1, 0,
124 "Return the sine of ARG.")
125 (num)
126 register Lisp_Object num;
127 {
128 double d = extract_float (num);
129 IN_FLOAT (d = sin (d), num);
130 return make_float (d);
131 }
132
133 DEFUN ("tan", Ftan, Stan, 1, 1, 0,
134 "Return the tangent of ARG.")
135 (num)
136 register Lisp_Object num;
137 {
138 double d = extract_float (num);
139 IN_FLOAT (d = tan (d), num);
140 return make_float (d);
141 }
142
143 #if 0 /* Leave these out unless we find there's a reason for them. */
144
141 DEFUN ("bessel-j0", Fbessel_j0, Sbessel_j0, 1, 1, 0, 145 DEFUN ("bessel-j0", Fbessel_j0, Sbessel_j0, 1, 1, 0,
142 "Return the bessel function j0 of ARG.") 146 "Return the bessel function j0 of ARG.")
143 (num) 147 (num)
144 register Lisp_Object num; 148 register Lisp_Object num;
145 { 149 {
201 double f2 = extract_float (num2); 205 double f2 = extract_float (num2);
202 206
203 IN_FLOAT (f2 = yn (i1, f2), num1); 207 IN_FLOAT (f2 = yn (i1, f2), num1);
204 return make_float (f2); 208 return make_float (f2);
205 } 209 }
210
211 #endif
212
213 #if 0 /* Leave these out unless we see they are worth having. */
214
215 DEFUN ("erf", Ferf, Serf, 1, 1, 0,
216 "Return the mathematical error function of ARG.")
217 (num)
218 register Lisp_Object num;
219 {
220 double d = extract_float (num);
221 IN_FLOAT (d = erf (d), num);
222 return make_float (d);
223 }
224
225 DEFUN ("erfc", Ferfc, Serfc, 1, 1, 0,
226 "Return the complementary error function of ARG.")
227 (num)
228 register Lisp_Object num;
229 {
230 double d = extract_float (num);
231 IN_FLOAT (d = erfc (d), num);
232 return make_float (d);
233 }
234
235 DEFUN ("log-gamma", Flog_gamma, Slog_gamma, 1, 1, 0,
236 "Return the log gamma of ARG.")
237 (num)
238 register Lisp_Object num;
239 {
240 double d = extract_float (num);
241 IN_FLOAT (d = lgamma (d), num);
242 return make_float (d);
243 }
244
245 #endif
206 246
207 DEFUN ("cube-root", Fcube_root, Scube_root, 1, 1, 0, 247 DEFUN ("cube-root", Fcube_root, Scube_root, 1, 1, 0,
208 "Return the cube root of ARG.") 248 "Return the cube root of ARG.")
209 (num) 249 (num)
210 register Lisp_Object num; 250 register Lisp_Object num;
212 double d = extract_float (num); 252 double d = extract_float (num);
213 IN_FLOAT (d = cbrt (d), num); 253 IN_FLOAT (d = cbrt (d), num);
214 return make_float (d); 254 return make_float (d);
215 } 255 }
216 256
217 DEFUN ("cos", Fcos, Scos, 1, 1, 0,
218 "Return the cosine of ARG.")
219 (num)
220 register Lisp_Object num;
221 {
222 double d = extract_float (num);
223 IN_FLOAT (d = cos (d), num);
224 return make_float (d);
225 }
226
227 DEFUN ("cosh", Fcosh, Scosh, 1, 1, 0,
228 "Return the hyperbolic cosine of ARG.")
229 (num)
230 register Lisp_Object num;
231 {
232 double d = extract_float (num);
233 IN_FLOAT (d = cosh (d), num);
234 return make_float (d);
235 }
236
237 DEFUN ("erf", Ferf, Serf, 1, 1, 0,
238 "Return the mathematical error function of ARG.")
239 (num)
240 register Lisp_Object num;
241 {
242 double d = extract_float (num);
243 IN_FLOAT (d = erf (d), num);
244 return make_float (d);
245 }
246
247 DEFUN ("erfc", Ferfc, Serfc, 1, 1, 0,
248 "Return the complementary error function of ARG.")
249 (num)
250 register Lisp_Object num;
251 {
252 double d = extract_float (num);
253 IN_FLOAT (d = erfc (d), num);
254 return make_float (d);
255 }
256
257 DEFUN ("exp", Fexp, Sexp, 1, 1, 0, 257 DEFUN ("exp", Fexp, Sexp, 1, 1, 0,
258 "Return the exponential base e of ARG.") 258 "Return the exponential base e of ARG.")
259 (num) 259 (num)
260 register Lisp_Object num; 260 register Lisp_Object num;
261 { 261 {
271 { 271 {
272 double d = extract_float (num); 272 double d = extract_float (num);
273 IN_FLOAT (d = expm1 (d), num); 273 IN_FLOAT (d = expm1 (d), num);
274 return make_float (d); 274 return make_float (d);
275 } 275 }
276
277 DEFUN ("log-gamma", Flog_gamma, Slog_gamma, 1, 1, 0,
278 "Return the log gamma of ARG.")
279 (num)
280 register Lisp_Object num;
281 {
282 double d = extract_float (num);
283 IN_FLOAT (d = lgamma (d), num);
284 return make_float (d);
285 }
286
287 DEFUN ("log", Flog, Slog, 1, 1, 0,
288 "Return the natural logarithm of ARG.")
289 (num)
290 register Lisp_Object num;
291 {
292 double d = extract_float (num);
293 IN_FLOAT (d = log (d), num);
294 return make_float (d);
295 }
296
297 DEFUN ("log10", Flog10, Slog10, 1, 1, 0,
298 "Return the logarithm base 10 of ARG.")
299 (num)
300 register Lisp_Object num;
301 {
302 double d = extract_float (num);
303 IN_FLOAT (d = log10 (d), num);
304 return make_float (d);
305 }
306
307 DEFUN ("log1p", Flog1p, Slog1p, 1, 1, 0,
308 "Return the log (1+x) of ARG.")
309 (num)
310 register Lisp_Object num;
311 {
312 double d = extract_float (num);
313 IN_FLOAT (d = log1p (d), num);
314 return make_float (d);
315 }
316 276
317 DEFUN ("expt", Fexpt, Sexpt, 2, 2, 0, 277 DEFUN ("expt", Fexpt, Sexpt, 2, 2, 0,
318 "Return the exponential x ** y.") 278 "Return the exponential X ** Y.")
319 (num1, num2) 279 (num1, num2)
320 register Lisp_Object num1, num2; 280 register Lisp_Object num1, num2;
321 { 281 {
322 double f1, f2; 282 double f1, f2;
323 283
347 f1 = (XTYPE (num1) == Lisp_Float) ? XFLOAT (num1)->data : XINT (num1); 307 f1 = (XTYPE (num1) == Lisp_Float) ? XFLOAT (num1)->data : XINT (num1);
348 f2 = (XTYPE (num2) == Lisp_Float) ? XFLOAT (num2)->data : XINT (num2); 308 f2 = (XTYPE (num2) == Lisp_Float) ? XFLOAT (num2)->data : XINT (num2);
349 IN_FLOAT (f1 = pow (f1, f2), num1); 309 IN_FLOAT (f1 = pow (f1, f2), num1);
350 return make_float (f1); 310 return make_float (f1);
351 } 311 }
352 312
353 DEFUN ("sin", Fsin, Ssin, 1, 1, 0, 313 DEFUN ("log", Flog, Slog, 1, 1, 0,
354 "Return the sine of ARG.") 314 "Return the natural logarithm of ARG.")
355 (num) 315 (num)
356 register Lisp_Object num; 316 register Lisp_Object num;
357 { 317 {
358 double d = extract_float (num); 318 double d = extract_float (num);
359 IN_FLOAT (d = sin (d), num); 319 IN_FLOAT (d = log (d), num);
320 return make_float (d);
321 }
322
323 DEFUN ("log10", Flog10, Slog10, 1, 1, 0,
324 "Return the logarithm base 10 of ARG.")
325 (num)
326 register Lisp_Object num;
327 {
328 double d = extract_float (num);
329 IN_FLOAT (d = log10 (d), num);
330 return make_float (d);
331 }
332
333 DEFUN ("log1p", Flog1p, Slog1p, 1, 1, 0,
334 "Return the log (1+x) of ARG.")
335 (num)
336 register Lisp_Object num;
337 {
338 double d = extract_float (num);
339 IN_FLOAT (d = log1p (d), num);
340 return make_float (d);
341 }
342
343 DEFUN ("sqrt", Fsqrt, Ssqrt, 1, 1, 0,
344 "Return the square root of ARG.")
345 (num)
346 register Lisp_Object num;
347 {
348 double d = extract_float (num);
349 IN_FLOAT (d = sqrt (d), num);
350 return make_float (d);
351 }
352
353 #ifndef /* Not clearly worth adding. */
354
355 DEFUN ("acosh", Facosh, Sacosh, 1, 1, 0,
356 "Return the inverse hyperbolic cosine of ARG.")
357 (num)
358 register Lisp_Object num;
359 {
360 double d = extract_float (num);
361 IN_FLOAT (d = acosh (d), num);
362 return make_float (d);
363 }
364
365 DEFUN ("asinh", Fasinh, Sasinh, 1, 1, 0,
366 "Return the inverse hyperbolic sine of ARG.")
367 (num)
368 register Lisp_Object num;
369 {
370 double d = extract_float (num);
371 IN_FLOAT (d = asinh (d), num);
372 return make_float (d);
373 }
374
375 DEFUN ("atanh", Fatanh, Satanh, 1, 1, 0,
376 "Return the inverse hyperbolic tangent of ARG.")
377 (num)
378 register Lisp_Object num;
379 {
380 double d = extract_float (num);
381 IN_FLOAT (d = atanh (d), num);
382 return make_float (d);
383 }
384
385 DEFUN ("cosh", Fcosh, Scosh, 1, 1, 0,
386 "Return the hyperbolic cosine of ARG.")
387 (num)
388 register Lisp_Object num;
389 {
390 double d = extract_float (num);
391 IN_FLOAT (d = cosh (d), num);
360 return make_float (d); 392 return make_float (d);
361 } 393 }
362 394
363 DEFUN ("sinh", Fsinh, Ssinh, 1, 1, 0, 395 DEFUN ("sinh", Fsinh, Ssinh, 1, 1, 0,
364 "Return the hyperbolic sine of ARG.") 396 "Return the hyperbolic sine of ARG.")
368 double d = extract_float (num); 400 double d = extract_float (num);
369 IN_FLOAT (d = sinh (d), num); 401 IN_FLOAT (d = sinh (d), num);
370 return make_float (d); 402 return make_float (d);
371 } 403 }
372 404
373 DEFUN ("sqrt", Fsqrt, Ssqrt, 1, 1, 0,
374 "Return the square root of ARG.")
375 (num)
376 register Lisp_Object num;
377 {
378 double d = extract_float (num);
379 IN_FLOAT (d = sqrt (d), num);
380 return make_float (d);
381 }
382
383 DEFUN ("tan", Ftan, Stan, 1, 1, 0,
384 "Return the tangent of ARG.")
385 (num)
386 register Lisp_Object num;
387 {
388 double d = extract_float (num);
389 IN_FLOAT (d = tan (d), num);
390 return make_float (d);
391 }
392
393 DEFUN ("tanh", Ftanh, Stanh, 1, 1, 0, 405 DEFUN ("tanh", Ftanh, Stanh, 1, 1, 0,
394 "Return the hyperbolic tangent of ARG.") 406 "Return the hyperbolic tangent of ARG.")
395 (num) 407 (num)
396 register Lisp_Object num; 408 register Lisp_Object num;
397 { 409 {
398 double d = extract_float (num); 410 double d = extract_float (num);
399 IN_FLOAT (d = tanh (d), num); 411 IN_FLOAT (d = tanh (d), num);
400 return make_float (d); 412 return make_float (d);
401 } 413 }
414 #endif
402 415
403 DEFUN ("abs", Fabs, Sabs, 1, 1, 0, 416 DEFUN ("abs", Fabs, Sabs, 1, 1, 0,
404 "Return the absolute value of ARG.") 417 "Return the absolute value of ARG.")
405 (num) 418 (num)
406 register Lisp_Object num; 419 register Lisp_Object num;
529 } 542 }
530 543
531 syms_of_floatfns () 544 syms_of_floatfns ()
532 { 545 {
533 defsubr (&Sacos); 546 defsubr (&Sacos);
547 defsubr (&Sasin);
548 defsubr (&Satan);
549 defsubr (&Scos);
550 defsubr (&Ssin);
551 defsubr (&Stan);
552 #if 0
534 defsubr (&Sacosh); 553 defsubr (&Sacosh);
535 defsubr (&Sasin);
536 defsubr (&Sasinh); 554 defsubr (&Sasinh);
537 defsubr (&Satan);
538 defsubr (&Satanh); 555 defsubr (&Satanh);
556 defsubr (&Scosh);
557 defsubr (&Ssinh);
558 defsubr (&Stanh);
539 defsubr (&Sbessel_y0); 559 defsubr (&Sbessel_y0);
540 defsubr (&Sbessel_y1); 560 defsubr (&Sbessel_y1);
541 defsubr (&Sbessel_yn); 561 defsubr (&Sbessel_yn);
542 defsubr (&Sbessel_j0); 562 defsubr (&Sbessel_j0);
543 defsubr (&Sbessel_j1); 563 defsubr (&Sbessel_j1);
544 defsubr (&Sbessel_jn); 564 defsubr (&Sbessel_jn);
545 defsubr (&Scube_root);
546 defsubr (&Scos);
547 defsubr (&Scosh);
548 defsubr (&Serf); 565 defsubr (&Serf);
549 defsubr (&Serfc); 566 defsubr (&Serfc);
567 defsubr (&Slog_gamma);
568 #endif
569 defsubr (&Scube_root);
550 defsubr (&Sexp); 570 defsubr (&Sexp);
551 defsubr (&Sexpm1); 571 defsubr (&Sexpm1);
552 defsubr (&Slog_gamma); 572 defsubr (&Sexpt);
553 defsubr (&Slog); 573 defsubr (&Slog);
554 defsubr (&Slog10); 574 defsubr (&Slog10);
555 defsubr (&Slog1p); 575 defsubr (&Slog1p);
556 defsubr (&Sexpt);
557 defsubr (&Ssin);
558 defsubr (&Ssinh);
559 defsubr (&Ssqrt); 576 defsubr (&Ssqrt);
560 defsubr (&Stan);
561 defsubr (&Stanh);
562 577
563 defsubr (&Sabs); 578 defsubr (&Sabs);
564 defsubr (&Sfloat); 579 defsubr (&Sfloat);
565 defsubr (&Slogb); 580 defsubr (&Slogb);
566 defsubr (&Sceiling); 581 defsubr (&Sceiling);