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. */