Mercurial > emacs
comparison src/floatfns.c @ 25645:a14111a2a100
Use XCAR, XCDR, XFLOAT_DATA instead of explicit member access.
author | Ken Raeburn <raeburn@raeburn.org> |
---|---|
date | Sun, 12 Sep 1999 05:07:01 +0000 |
parents | fa9ff387d260 |
children | b7aa6ac26872 |
comparison
equal
deleted
inserted
replaced
25644:2ae0f7963ccc | 25645:a14111a2a100 |
---|---|
220 Lisp_Object num; | 220 Lisp_Object num; |
221 { | 221 { |
222 CHECK_NUMBER_OR_FLOAT (num, 0); | 222 CHECK_NUMBER_OR_FLOAT (num, 0); |
223 | 223 |
224 if (FLOATP (num)) | 224 if (FLOATP (num)) |
225 return XFLOAT (num)->data; | 225 return XFLOAT_DATA (num); |
226 return (double) XINT (num); | 226 return (double) XINT (num); |
227 } | 227 } |
228 | 228 |
229 /* Trig functions. */ | 229 /* Trig functions. */ |
230 | 230 |
478 } | 478 } |
479 } | 479 } |
480 XSETINT (val, acc); | 480 XSETINT (val, acc); |
481 return val; | 481 return val; |
482 } | 482 } |
483 f1 = FLOATP (arg1) ? XFLOAT (arg1)->data : XINT (arg1); | 483 f1 = FLOATP (arg1) ? XFLOAT_DATA (arg1) : XINT (arg1); |
484 f2 = FLOATP (arg2) ? XFLOAT (arg2)->data : XINT (arg2); | 484 f2 = FLOATP (arg2) ? XFLOAT_DATA (arg2) : XINT (arg2); |
485 /* Really should check for overflow, too */ | 485 /* Really should check for overflow, too */ |
486 if (f1 == 0.0 && f2 == 0.0) | 486 if (f1 == 0.0 && f2 == 0.0) |
487 f1 = 1.0; | 487 f1 = 1.0; |
488 #ifdef FLOAT_CHECK_DOMAIN | 488 #ifdef FLOAT_CHECK_DOMAIN |
489 else if ((f1 == 0.0 && f2 < 0.0) || (f1 < 0 && f2 != floor(f2))) | 489 else if ((f1 == 0.0 && f2 < 0.0) || (f1 < 0 && f2 != floor(f2))) |
648 register Lisp_Object arg; | 648 register Lisp_Object arg; |
649 { | 649 { |
650 CHECK_NUMBER_OR_FLOAT (arg, 0); | 650 CHECK_NUMBER_OR_FLOAT (arg, 0); |
651 | 651 |
652 if (FLOATP (arg)) | 652 if (FLOATP (arg)) |
653 IN_FLOAT (arg = make_float (fabs (XFLOAT (arg)->data)), "abs", arg); | 653 IN_FLOAT (arg = make_float (fabs (XFLOAT_DATA (arg))), "abs", arg); |
654 else if (XINT (arg) < 0) | 654 else if (XINT (arg) < 0) |
655 XSETINT (arg, - XINT (arg)); | 655 XSETINT (arg, - XINT (arg)); |
656 | 656 |
657 return arg; | 657 return arg; |
658 } | 658 } |
741 #ifdef LISP_FLOAT_TYPE | 741 #ifdef LISP_FLOAT_TYPE |
742 if (FLOATP (arg) || FLOATP (divisor)) | 742 if (FLOATP (arg) || FLOATP (divisor)) |
743 { | 743 { |
744 double f1, f2; | 744 double f1, f2; |
745 | 745 |
746 f1 = FLOATP (arg) ? XFLOAT (arg)->data : XINT (arg); | 746 f1 = FLOATP (arg) ? XFLOAT_DATA (arg) : XINT (arg); |
747 f2 = (FLOATP (divisor) ? XFLOAT (divisor)->data : XINT (divisor)); | 747 f2 = (FLOATP (divisor) ? XFLOAT_DATA (divisor) : XINT (divisor)); |
748 if (! IEEE_FLOATING_POINT && f2 == 0) | 748 if (! IEEE_FLOATING_POINT && f2 == 0) |
749 Fsignal (Qarith_error, Qnil); | 749 Fsignal (Qarith_error, Qnil); |
750 | 750 |
751 IN_FLOAT2 (f1 = (*double_round) (f1 / f2), name, arg, divisor); | 751 IN_FLOAT2 (f1 = (*double_round) (f1 / f2), name, arg, divisor); |
752 FLOAT_TO_INT2 (f1, arg, name, arg, divisor); | 752 FLOAT_TO_INT2 (f1, arg, name, arg, divisor); |
767 #ifdef LISP_FLOAT_TYPE | 767 #ifdef LISP_FLOAT_TYPE |
768 if (FLOATP (arg)) | 768 if (FLOATP (arg)) |
769 { | 769 { |
770 double d; | 770 double d; |
771 | 771 |
772 IN_FLOAT (d = (*double_round) (XFLOAT (arg)->data), name, arg); | 772 IN_FLOAT (d = (*double_round) (XFLOAT_DATA (arg)), name, arg); |
773 FLOAT_TO_INT (d, arg, name, arg); | 773 FLOAT_TO_INT (d, arg, name, arg); |
774 } | 774 } |
775 #endif | 775 #endif |
776 | 776 |
777 return arg; | 777 return arg; |
888 fmod_float (x, y) | 888 fmod_float (x, y) |
889 register Lisp_Object x, y; | 889 register Lisp_Object x, y; |
890 { | 890 { |
891 double f1, f2; | 891 double f1, f2; |
892 | 892 |
893 f1 = FLOATP (x) ? XFLOAT (x)->data : XINT (x); | 893 f1 = FLOATP (x) ? XFLOAT_DATA (x) : XINT (x); |
894 f2 = FLOATP (y) ? XFLOAT (y)->data : XINT (y); | 894 f2 = FLOATP (y) ? XFLOAT_DATA (y) : XINT (y); |
895 | 895 |
896 if (! IEEE_FLOATING_POINT && f2 == 0) | 896 if (! IEEE_FLOATING_POINT && f2 == 0) |
897 Fsignal (Qarith_error, Qnil); | 897 Fsignal (Qarith_error, Qnil); |
898 | 898 |
899 /* If the "remainder" comes out with the wrong sign, fix it. */ | 899 /* If the "remainder" comes out with the wrong sign, fix it. */ |