Lines Matching refs:real
58 /* real part from number */
59 #define NREAL(num) &((num)->real)
60 #define NRTYPE(num) (num)->real.type
61 #define NRFI(num) (num)->real.data.fixnum
62 #define NRBI(num) (num)->real.data.bignum
63 #define NRFF(num) (num)->real.data.flonum
64 #define NRFRN(Num) (Num)->real.data.fixratio.num
65 #define NRFRD(num) (num)->real.data.fixratio.den
66 #define NRBR(num) (num)->real.data.bigratio
85 /* real number fields */
86 #define RTYPE(real) (real)->type
87 #define RFI(real) (real)->data.fixnum
88 #define RBI(real) (real)->data.bignum
89 #define RFF(real) (real)->data.flonum
90 #define RFRN(real) (real)->data.fixratio.num
91 #define RFRD(real) (real)->data.fixratio.den
92 #define RBR(real) (real)->data.bigratio
93 #define RBRN(real) mpr_num(RBR(real))
94 #define RBRD(real) mpr_den(RBR(real))
96 #define RINTEGERP(real) \
97 (RTYPE(real) == N_FIXNUM || RTYPE(real) == N_BIGNUM)
99 #define RCLEAR_BI(real) mpi_clear(RBI(real)); XFREE(RBI(real))
100 #define RCLEAR_BR(real) mpr_clear(RBR(real)); XFREE(RBR(real))
112 #define OCXR(object) (object)->data.complex.real
138 n_real real;
275 /* real complex */
281 /* complex real */
452 "is not a real number",
523 set_real_real(n_real *real, n_real *val)
525 switch (RTYPE(real) = RTYPE(val)) {
527 RFI(real) = RFI(val);
530 RBI(real) = XALLOC(mpi);
531 mpi_init(RBI(real));
532 mpi_set(RBI(real), RBI(val));
535 RFF(real) = RFF(val);
538 RFRN(real) = RFRN(val);
539 RFRD(real) = RFRD(val);
542 RBR(real) = XALLOC(mpr);
543 mpr_init(RBR(real));
544 mpr_set(RBR(real), RBR(val));
550 set_real_object(n_real *real, LispObj *obj)
554 RTYPE(real) = N_FIXNUM;
555 RFI(real) = OFI(obj);
558 RTYPE(real) = N_FIXNUM;
559 RFI(real) = OII(obj);
562 RTYPE(real) = N_BIGNUM;
563 RBI(real) = XALLOC(mpi);
564 mpi_init(RBI(real));
565 mpi_set(RBI(real), OBI(obj));
568 RTYPE(real) = N_FLONUM;
569 RFF(real) = ODF(obj);
572 RTYPE(real) = N_FIXRATIO;
573 RFRN(real) = OFRN(obj);
574 RFRD(real) = OFRD(obj);
577 RTYPE(real) = N_BIGRATIO;
578 RBR(real) = XALLOC(mpr);
579 mpr_init(RBR(real));
580 mpr_set(RBR(real), OBR(obj));
639 clear_real(n_real *real)
641 if (RTYPE(real) == N_BIGNUM) {
642 mpi_clear(RBI(real));
643 XFREE(RBI(real));
645 else if (RTYPE(real) == N_BIGRATIO) {
646 mpr_clear(RBR(real));
647 XFREE(RBR(real));
660 make_real_object(n_real *real)
664 switch (RTYPE(real)) {
666 if (RFI(real) > MOST_POSITIVE_FIXNUM ||
667 RFI(real) < MOST_NEGATIVE_FIXNUM) {
670 OII(obj) = RFI(real);
673 obj = FIXNUM(RFI(real));
676 obj = BIGNUM(RBI(real));
679 obj = DFLOAT(RFF(real));
684 OFRN(obj) = RFRN(real);
685 OFRD(obj) = RFRD(real);
688 obj = BIGRATIO(RBR(real));
751 OP##_real_real(n_real *real, n_real *val) \
753 switch (RTYPE(real)) { \
757 r##OP##_fi_fi(real, RFI(val)); \
760 r##OP##_fi_bi(real, RBI(val)); \
763 r##OP##_flonum(real, (double)RFI(real), RFF(val)); \
766 r##OP##_fi_fr(real, RFRN(val), RFRD(val)); \
769 r##OP##_fi_br(real, RBR(val)); \
776 r##OP##_bi_fi(real, RFI(val)); \
779 r##OP##_bi_bi(real, RBI(val)); \
782 r##OP##_flonum(real, bi_getd(RBI(real)), RFF(val)); \
785 r##OP##_bi_fr(real, RFRN(val), RFRD(val)); \
788 r##OP##_bi_br(real, RBR(val)); \
795 r##OP##_flonum(real, RFF(real), (double)RFI(val)); \
798 r##OP##_flonum(real, RFF(real), bi_getd(RBI(val))); \
801 r##OP##_flonum(real, RFF(real), RFF(val)); \
804 r##OP##_flonum(real, RFF(real), \
808 r##OP##_flonum(real, RFF(real), br_getd(RBR(val))); \
815 r##OP##_fr_fi(real, RFI(val)); \
818 r##OP##_fr_bi(real, RBI(val)); \
821 r##OP##_flonum(real, \
822 (double)RFRN(real) / (double)RFRD(real),\
826 r##OP##_fr_fr(real, RFRN(val), RFRD(val)); \
829 r##OP##_fr_br(real, RBR(val)); \
836 r##OP##_br_fi(real, RFI(val)); \
839 r##OP##_br_bi(real, RBI(val)); \
842 r##OP##_flonum(real, br_getd(RBR(real)), RFF(val)); \
845 r##OP##_br_fr(real, RFRN(val), RFRD(val)); \
848 r##OP##_br_br(real, RBR(val)); \
869 OP##_real_object(n_real *real, LispObj *obj) \
873 switch (RTYPE(real)) { \
875 r##OP##_fi_fi(real, OFI(obj)); \
878 r##OP##_bi_fi(real, OFI(obj)); \
881 r##OP##_flonum(real, RFF(real), (double)OFI(obj)); \
884 r##OP##_fr_fi(real, OFI(obj)); \
887 r##OP##_br_fi(real, OFI(obj)); \
892 switch (RTYPE(real)) { \
894 r##OP##_fi_fi(real, OII(obj)); \
897 r##OP##_bi_fi(real, OII(obj)); \
900 r##OP##_flonum(real, RFF(real), (double)OII(obj)); \
903 r##OP##_fr_fi(real, OII(obj)); \
906 r##OP##_br_fi(real, OII(obj)); \
911 switch (RTYPE(real)) { \
913 r##OP##_fi_bi(real, OBI(obj)); \
916 r##OP##_bi_bi(real, OBI(obj)); \
919 r##OP##_flonum(real, RFF(real), bi_getd(OBI(obj))); \
922 r##OP##_fr_bi(real, OBI(obj)); \
925 r##OP##_br_bi(real, OBI(obj)); \
930 switch (RTYPE(real)) { \
932 r##OP##_flonum(real, (double)RFI(real), ODF(obj)); \
935 r##OP##_flonum(real, bi_getd(RBI(real)), ODF(obj)); \
938 r##OP##_flonum(real, RFF(real), ODF(obj)); \
941 r##OP##_flonum(real, \
942 (double)RFRN(real) / (double)RFRD(real),\
946 r##OP##_flonum(real, br_getd(RBR(real)), ODF(obj)); \
951 switch (RTYPE(real)) { \
953 r##OP##_fi_fr(real, OFRN(obj), OFRD(obj)); \
956 r##OP##_bi_fr(real, OFRN(obj), OFRD(obj)); \
959 r##OP##_flonum(real, RFF(real), \
963 r##OP##_fr_fr(real, OFRN(obj), OFRD(obj)); \
966 r##OP##_br_fr(real, OFRN(obj), OFRD(obj)); \
971 switch (RTYPE(real)) { \
973 r##OP##_fi_br(real, OBR(obj)); \
976 r##OP##_bi_br(real, OBR(obj)); \
979 r##OP##_flonum(real, RFF(real), br_getd(OBR(obj))); \
982 r##OP##_fr_br(real, OBR(obj)); \
985 r##OP##_br_br(real, OBR(obj)); \
1184 abs_real(n_real *real)
1186 switch (RTYPE(real)) {
1187 case N_FIXNUM: rabs_fi(real); break;
1188 case N_BIGNUM: rabs_bi(real); break;
1189 case N_FLONUM: rabs_ff(real); break;
1190 case N_FIXRATIO: rabs_fr(real); break;
1191 case N_BIGRATIO: rabs_br(real); break;
1253 rabs_fi(n_real *real)
1255 if (RFI(real) < 0)
1256 rneg_fi(real);
1260 rabs_bi(n_real *real)
1262 if (mpi_cmpi(RBI(real), 0) < 0)
1263 mpi_neg(RBI(real), RBI(real));
1267 rabs_ff(n_real *real)
1269 if (RFF(real) < 0.0)
1270 RFF(real) = -RFF(real);
1274 rabs_fr(n_real *real)
1276 if (RFRN(real) < 0)
1277 rneg_fr(real);
1281 rabs_br(n_real *real)
1283 if (mpi_cmpi(RBRN(real), 0) < 0)
1284 mpi_neg(RBRN(real), RBRN(real));
1292 neg_real(n_real *real)
1294 switch (RTYPE(real)) {
1295 case N_FIXNUM: rneg_fi(real); break;
1296 case N_BIGNUM: rneg_bi(real); break;
1297 case N_FLONUM: rneg_ff(real); break;
1298 case N_FIXRATIO: rneg_fr(real); break;
1299 case N_BIGRATIO: rneg_br(real); break;
1322 rneg_fi(n_real *real)
1324 if (RFI(real) == MINSLONG) {
1328 mpi_seti(bigi, RFI(real));
1330 RTYPE(real) = N_BIGNUM;
1331 RBI(real) = bigi;
1334 RFI(real) = -RFI(real);
1338 rneg_bi(n_real *real)
1340 mpi_neg(RBI(real), RBI(real));
1344 rneg_ff(n_real *real)
1346 RFF(real) = -RFF(real);
1350 rneg_fr(n_real *real)
1352 if (RFRN(real) == MINSLONG) {
1356 mpr_seti(bigr, RFRN(real), RFRD(real));
1358 RTYPE(real) = N_BIGRATIO;
1359 RBR(real) = bigr;
1362 RFRN(real) = -RFRN(real);
1366 rneg_br(n_real *real)
1368 mpi_neg(RBRN(real), RBRN(real));
1376 sqrt_real(n_real *real)
1378 switch (RTYPE(real)) {
1381 rsqrt_xi(real);
1384 rsqrt_ff(real);
1388 rsqrt_xr(real);
1416 rsqrt_xi(n_real *real)
1421 if (cmp_real_real(real, &zero) < 0)
1425 if (RTYPE(real) == N_BIGNUM)
1426 exact = mpi_sqrt(&bignum, RBI(real));
1431 mpi_seti(&tmp, RFI(real));
1436 if (RTYPE(real) == N_BIGNUM) {
1437 mpi_set(RBI(real), &bignum);
1438 rbi_canonicalize(real);
1441 RFI(real) = mpi_geti(&bignum);
1446 if (RTYPE(real) == N_BIGNUM) {
1447 value = bi_getd(RBI(real));
1448 RCLEAR_BI(real);
1451 value = (double)RFI(real);
1454 RTYPE(real) = N_FLONUM;
1455 RFF(real) = value;
1461 rsqrt_xr(n_real *real)
1465 if (cmp_real_real(real, &zero) < 0)
1468 if (RTYPE(real) == N_FIXRATIO) {
1470 num.data.fixnum = RFRN(real);
1471 den.data.fixnum = RFRD(real);
1476 if (mpi_fiti(RBRN(real))) {
1478 num.data.fixnum = mpi_geti(RBRN(real));
1483 mpi_set(bignum, RBRN(real));
1488 if (mpi_fiti(RBRD(real))) {
1490 den.data.fixnum = mpi_geti(RBRD(real));
1495 mpi_set(bignum, RBRD(real));
1504 clear_real(real);
1505 memcpy(real, &num, sizeof(n_real));
1506 div_real_real(real, &den);
1511 rsqrt_ff(n_real *real)
1513 if (RFF(real) < 0.0)
1515 RFF(real) = sqrt(RFF(real));
1523 n_real *real, *imag;
1525 real = &(mag.real);
1527 set_real_real(real, NREAL(num));
1532 if (cmp_real_real(real, &zero) == 0) {
1534 memcpy(NREAL(num), real, sizeof(n_real));
1535 clear_real(real);
1541 add_real_real(NREAL(num), real);
1542 clear_real(real);
1555 memcpy(NIMAG(num), real, sizeof(n_real));
1628 mod_real_real(n_real *real, n_real *val)
1631 switch (RTYPE(real)) {
1635 rmod_fi_fi(real, RFI(val));
1638 rmod_fi_bi(real, RBI(val));
1645 rmod_bi_fi(real, RFI(val));
1648 rmod_bi_bi(real, RBI(val));
1656 mod_real_object(n_real *real, LispObj *obj)
1658 switch (RTYPE(real)) {
1662 rmod_fi_fi(real, OFI(obj));
1665 rmod_fi_fi(real, OII(obj));
1668 rmod_fi_bi(real, OBI(obj));
1677 rmod_bi_fi(real, OFI(obj));
1680 rmod_bi_fi(real, OII(obj));
1683 rmod_bi_bi(real, OBI(obj));
1695 rmod_fi_fi(n_real *real, long fi)
1700 if ((RFI(real) < 0) ^ (fi < 0))
1701 RFI(real) = (RFI(real) % fi) + fi;
1702 else if (RFI(real) == MINSLONG || fi == MINSLONG) {
1706 mpi_seti(&bignum, RFI(real));
1707 RFI(real) = mpi_modi(&bignum, fi);
1711 RFI(real) = RFI(real) % fi;
1715 rmod_fi_bi(n_real *real, mpi *bignum)
1724 mpi_seti(bigi, RFI(real));
1726 RTYPE(real) = N_BIGNUM;
1727 RBI(real) = bigi;
1728 rbi_canonicalize(real);
1732 rmod_bi_fi(n_real *real, long fi)
1741 mpi_mod(RBI(real), RBI(real), &iop);
1743 rbi_canonicalize(real);
1747 rmod_bi_bi(n_real *real, mpi *bignum)
1752 mpi_mod(RBI(real), RBI(real), bignum);
1753 rbi_canonicalize(real);
1760 rem_real_object(n_real *real, LispObj *obj)
1762 switch (RTYPE(real)) {
1766 rrem_fi_fi(real, OFI(obj));
1769 rrem_fi_fi(real, OII(obj));
1772 rrem_fi_bi(real, OBI(obj));
1781 rrem_bi_fi(real, OFI(obj));
1784 rrem_bi_fi(real, OII(obj));
1787 rrem_bi_bi(real, OBI(obj));
1799 rrem_fi_fi(n_real *real, long fi)
1804 if (RFI(real) == MINSLONG || fi == MINSLONG) {
1808 mpi_seti(&bignum, RFI(real));
1809 RFI(real) = mpi_remi(&bignum, fi);
1813 RFI(real) = RFI(real) % fi;
1817 rrem_fi_bi(n_real *real, mpi *bignum)
1826 mpi_seti(bigi, RFI(real));
1828 RTYPE(real) = N_BIGNUM;
1829 RBI(real) = bigi;
1830 rbi_canonicalize(real);
1834 rrem_bi_fi(n_real *real, long fi)
1843 mpi_rem(RBI(real), RBI(real), &iop);
1845 rbi_canonicalize(real);
1849 rrem_bi_bi(n_real *real, mpi *bignum)
1854 mpi_rem(RBI(real), RBI(real), bignum);
1855 rbi_canonicalize(real);
1863 gcd_real_object(n_real *real, LispObj *obj)
1869 if (cmp_real_real(real, &zero) == 0)
1870 set_real_object(real, obj);
1876 mod_real_real(&rest, real);
1879 memcpy(&temp, real, sizeof(n_real));
1880 memcpy(real, &rest, sizeof(n_real));
1891 and_real_object(n_real *real, LispObj *obj)
1897 switch (RTYPE(real)) {
1899 RFI(real) &= OFI(obj);
1904 mpi_and(RBI(real), RBI(real), &iop);
1906 rbi_canonicalize(real);
1911 switch (RTYPE(real)) {
1913 RFI(real) &= OII(obj);
1918 mpi_and(RBI(real), RBI(real), &iop);
1920 rbi_canonicalize(real);
1925 switch (RTYPE(real)) {
1929 mpi_seti(bigi, RFI(real));
1931 RTYPE(real) = N_BIGNUM;
1932 RBI(real) = bigi;
1933 rbi_canonicalize(real);
1936 mpi_and(RBI(real), RBI(real), OBI(obj));
1937 rbi_canonicalize(real);
1952 eqv_real_object(n_real *real, LispObj *obj)
1958 switch (RTYPE(real)) {
1960 RFI(real) ^= ~OFI(obj);
1966 mpi_xor(RBI(real), RBI(real), &iop);
1968 rbi_canonicalize(real);
1973 switch (RTYPE(real)) {
1975 RFI(real) ^= ~OII(obj);
1981 mpi_xor(RBI(real), RBI(real), &iop);
1983 rbi_canonicalize(real);
1988 switch (RTYPE(real)) {
1992 mpi_seti(bigi, RFI(real));
1995 RTYPE(real) = N_BIGNUM;
1996 RBI(real) = bigi;
1997 rbi_canonicalize(real);
2000 mpi_com(RBI(real), RBI(real));
2001 mpi_xor(RBI(real), RBI(real), OBI(obj));
2002 rbi_canonicalize(real);
2017 ior_real_object(n_real *real, LispObj *obj)
2023 switch (RTYPE(real)) {
2025 RFI(real) |= OFI(obj);
2030 mpi_ior(RBI(real), RBI(real), &iop);
2032 rbi_canonicalize(real);
2037 switch (RTYPE(real)) {
2039 RFI(real) |= OII(obj);
2044 mpi_ior(RBI(real), RBI(real), &iop);
2046 rbi_canonicalize(real);
2051 switch (RTYPE(real)) {
2055 mpi_seti(bigi, RFI(real));
2057 RTYPE(real) = N_BIGNUM;
2058 RBI(real) = bigi;
2059 rbi_canonicalize(real);
2062 mpi_ior(RBI(real), RBI(real), OBI(obj));
2063 rbi_canonicalize(real);
2078 not_real(n_real *real)
2080 if (RTYPE(real) == N_FIXNUM)
2081 RFI(real) = ~RFI(real);
2083 mpi_com(RBI(real), RBI(real));
2084 rbi_canonicalize(real);
2092 xor_real_object(n_real *real, LispObj *obj)
2098 switch (RTYPE(real)) {
2100 RFI(real) ^= OFI(obj);
2105 mpi_xor(RBI(real), RBI(real), &iop);
2107 rbi_canonicalize(real);
2112 switch (RTYPE(real)) {
2114 RFI(real) ^= OII(obj);
2119 mpi_xor(RBI(real), RBI(real), &iop);
2121 rbi_canonicalize(real);
2126 switch (RTYPE(real)) {
2130 mpi_seti(bigi, RFI(real));
2132 RTYPE(real) = N_BIGNUM;
2133 RBI(real) = bigi;
2134 rbi_canonicalize(real);
2137 mpi_xor(RBI(real), RBI(real), OBI(obj));
2138 rbi_canonicalize(real);
2573 cmp_object_object(LispObj *op1, LispObj *op2, int real)
2576 if (real)
2581 return (cmp_object_object(OCXR(op1), op2, real));
2585 if (real)
2588 return (cmp_object_object(op1, OCXR(op2), real));
2768 rbi_canonicalize(n_real *real)
2770 if (mpi_fiti(RBI(real))) {
2771 long fi = mpi_geti(RBI(real));
2773 RTYPE(real) = N_FIXNUM;
2774 mpi_clear(RBI(real));
2775 XFREE(RBI(real));
2776 RFI(real) = fi;
2785 rfr_canonicalize(n_real *real)
2789 num = numerator = RFRN(real);
2790 den = denominator = RFRD(real);
2799 RTYPE(real) = N_BIGRATIO;
2800 RBR(real) = bigratio;
2801 rbr_canonicalize(real);
2808 RFI(real) = 0;
2809 RTYPE(real) = N_FIXNUM;
2827 RTYPE(real) = N_FIXNUM;
2828 RFI(real) = numerator;
2831 RFRN(real) = numerator;
2832 RFRD(real) = denominator;
2837 rbr_canonicalize(n_real *real)
2842 mpr_canonicalize(RBR(real));
2843 fitnum = mpi_fiti(RBRN(real));
2844 fitden = mpi_fiti(RBRD(real));
2846 numerator = mpi_geti(RBRN(real));
2847 denominator = mpi_geti(RBRD(real));
2848 mpr_clear(RBR(real));
2849 XFREE(RBR(real));
2851 RFI(real) = 0;
2852 RTYPE(real) = N_FIXNUM;
2855 RTYPE(real) = N_FIXNUM;
2856 RFI(real) = numerator;
2859 RTYPE(real) = N_FIXRATIO;
2860 RFRN(real) = numerator;
2861 RFRD(real) = denominator;
2865 denominator = mpi_geti(RBRD(real));
2870 mpi_set(bigi, RBRN(real));
2871 mpr_clear(RBR(real));
2872 XFREE(RBR(real));
2873 RTYPE(real) = N_BIGNUM;
2874 RBI(real) = bigi;
3828 radd_flonum(n_real *real, double op1, double op2)
3834 switch (RTYPE(real)) {
3837 RTYPE(real) = N_FLONUM;
3840 RCLEAR_BI(real);
3841 RTYPE(real) = N_FLONUM;
3844 RCLEAR_BR(real);
3845 RTYPE(real) = N_FLONUM;
3848 RFF(real) = value;
3852 rsub_flonum(n_real *real, double op1, double op2)
3858 switch (RTYPE(real)) {
3861 RTYPE(real) = N_FLONUM;
3864 RCLEAR_BI(real);
3865 RTYPE(real) = N_FLONUM;
3868 RCLEAR_BR(real);
3869 RTYPE(real) = N_FLONUM;
3872 RFF(real) = value;
3876 rmul_flonum(n_real *real, double op1, double op2)
3882 switch (RTYPE(real)) {
3885 RTYPE(real) = N_FLONUM;
3888 RCLEAR_BI(real);
3889 RTYPE(real) = N_FLONUM;
3892 RCLEAR_BR(real);
3893 RTYPE(real) = N_FLONUM;
3896 RFF(real) = value;
3900 rdiv_flonum(n_real *real, double op1, double op2)
3909 switch (RTYPE(real)) {
3912 RTYPE(real) = N_FLONUM;
3915 RCLEAR_BI(real);
3916 RTYPE(real) = N_FLONUM;
3919 RCLEAR_BR(real);
3920 RTYPE(real) = N_FLONUM;
3923 RFF(real) = value;
3942 rop_fi_fi_bi(n_real *real, long fi, int op)
3947 mpi_seti(bigi, RFI(real));
3954 RBI(real) = bigi;
3955 RTYPE(real) = N_BIGNUM;
3959 radd_fi_fi(n_real *real, long fi)
3961 if (!fi_fi_add_overflow(RFI(real), fi))
3962 RFI(real) += fi;
3964 rop_fi_fi_bi(real, fi, NOP_ADD);
3968 rsub_fi_fi(n_real *real, long fi)
3970 if (!fi_fi_sub_overflow(RFI(real), fi))
3971 RFI(real) -= fi;
3973 rop_fi_fi_bi(real, fi, NOP_SUB);
3977 rmul_fi_fi(n_real *real, long fi)
3979 if (!fi_fi_mul_overflow(RFI(real), fi))
3980 RFI(real) *= fi;
3982 rop_fi_fi_bi(real, fi, NOP_MUL);
3986 rdiv_fi_fi(n_real *real, long fi)
3988 RTYPE(real) = N_FIXRATIO;
3989 RFRN(real) = RFI(real);
3990 RFRD(real) = fi;
3991 rfr_canonicalize(real);
4010 rop_fi_bi_xi(n_real *real, mpi *bi, int nop)
4015 mpi_seti(bigi, RFI(real));
4024 RFI(real) = mpi_geti(bigi);
4029 RBI(real) = bigi;
4030 RTYPE(real) = N_BIGNUM;
4035 radd_fi_bi(n_real *real, mpi *bi)
4037 rop_fi_bi_xi(real, bi, NOP_ADD);
4041 rsub_fi_bi(n_real *real, mpi *bi)
4043 rop_fi_bi_xi(real, bi, NOP_SUB);
4047 rmul_fi_bi(n_real *real, mpi *bi)
4049 rop_fi_bi_xi(real, bi, NOP_MUL);
4053 rdiv_fi_bi(n_real *real, mpi *bi)
4062 mpi_seti(mpr_num(bigr), RFI(real));
4064 RBR(real) = bigr;
4065 RTYPE(real) = N_BIGRATIO;
4066 rbr_canonicalize(real);
4080 rop_fi_fr_as_xr(n_real *real, long num, long den, int nop)
4083 long value = 0, op = RFI(real);
4095 RFRN(real) = value + num;
4097 RFRN(real) = value - num;
4098 RFRD(real) = den;
4099 RTYPE(real) = N_FIXRATIO;
4100 rfr_canonicalize(real);
4117 RBR(real) = bigr;
4118 RTYPE(real) = N_BIGRATIO;
4119 rbr_canonicalize(real);
4124 rop_fi_fr_md_xr(n_real *real, long num, long den, int nop)
4127 long op = RFI(real);
4135 RFRN(real) = op * num;
4136 RFRD(real) = den;
4139 RFRN(real) = op * den;
4140 RFRD(real) = num;
4142 RTYPE(real) = N_FIXRATIO;
4143 rfr_canonicalize(real);
4159 RBR(real) = bigr;
4160 RTYPE(real) = N_BIGRATIO;
4161 rbr_canonicalize(real);
4166 radd_fi_fr(n_real *real, long num, long den)
4168 rop_fi_fr_as_xr(real, num, den, NOP_ADD);
4172 rsub_fi_fr(n_real *real, long num, long den)
4174 rop_fi_fr_as_xr(real, num, den, NOP_SUB);
4178 rmul_fi_fr(n_real *real, long num, long den)
4180 rop_fi_fr_md_xr(real, num, den, NOP_MUL);
4184 rdiv_fi_fr(n_real *real, long num, long den)
4186 rop_fi_fr_md_xr(real, num, den, NOP_DIV);
4200 rop_fi_br_as_xr(n_real *real, mpr *ratio, int nop)
4206 mpi_seti(&iop, RFI(real));
4218 RBR(real) = bigr;
4219 RTYPE(real) = N_BIGRATIO;
4220 rbr_canonicalize(real);
4224 rop_fi_br_md_xr(n_real *real, mpr *ratio, int nop)
4230 mpi_seti(&iop, RFI(real));
4241 RBR(real) = bigr;
4242 RTYPE(real) = N_BIGRATIO;
4243 rbr_canonicalize(real);
4247 radd_fi_br(n_real *real, mpr *ratio)
4249 rop_fi_br_as_xr(real, ratio, NOP_ADD);
4253 rsub_fi_br(n_real *real, mpr *ratio)
4255 rop_fi_br_as_xr(real, ratio, NOP_SUB);
4259 rmul_fi_br(n_real *real, mpr *ratio)
4261 rop_fi_br_md_xr(real, ratio, NOP_MUL);
4265 rdiv_fi_br(n_real *real, mpr *ratio)
4267 rop_fi_br_md_xr(real, ratio, NOP_DIV);
4281 radd_bi_fi(n_real *real, long fi)
4283 mpi_addi(RBI(real), RBI(real), fi);
4284 rbi_canonicalize(real);
4288 rsub_bi_fi(n_real *real, long fi)
4290 mpi_subi(RBI(real), RBI(real), fi);
4291 rbi_canonicalize(real);
4295 rmul_bi_fi(n_real *real, long fi)
4297 mpi_muli(RBI(real), RBI(real), fi);
4298 rbi_canonicalize(real);
4302 rdiv_bi_fi(n_real *real, long fi)
4306 if (RFI(real) == 0)
4311 mpi_set(mpr_num(bigr), RBI(real));
4313 RCLEAR_BI(real);
4314 RBR(real) = bigr;
4315 RTYPE(real) = N_BIGRATIO;
4316 rbr_canonicalize(real);
4330 radd_bi_bi(n_real *real, mpi *bignum)
4332 mpi_add(RBI(real), RBI(real), bignum);
4333 rbi_canonicalize(real);
4337 rsub_bi_bi(n_real *real, mpi *bignum)
4339 mpi_sub(RBI(real), RBI(real), bignum);
4340 rbi_canonicalize(real);
4344 rmul_bi_bi(n_real *real, mpi *bignum)
4346 mpi_mul(RBI(real), RBI(real), bignum);
4347 rbi_canonicalize(real);
4351 rdiv_bi_bi(n_real *real, mpi *bignum)
4360 mpi_set(mpr_num(bigr), RBI(real));
4362 RCLEAR_BI(real);
4363 RBR(real) = bigr;
4364 RTYPE(real) = N_BIGRATIO;
4365 rbr_canonicalize(real);
4379 rop_bi_fr_as_xr(n_real *real, long num, long den, int nop)
4385 mpi_set(&iop, RBI(real));
4397 RCLEAR_BI(real);
4398 RBR(real) = bigr;
4399 RTYPE(real) = N_BIGRATIO;
4400 rbr_canonicalize(real);
4404 rop_bi_fr_md_xr(n_real *real, long num, long den, int nop)
4413 mpi_mul(mpr_num(bigr), RBI(real), mpr_num(bigr));
4415 mpi_mul(mpr_den(bigr), RBI(real), mpr_den(bigr));
4419 RCLEAR_BI(real);
4420 RBR(real) = bigr;
4421 RTYPE(real) = N_BIGRATIO;
4422 rbr_canonicalize(real);
4426 radd_bi_fr(n_real *real, long num, long den)
4428 rop_bi_fr_as_xr(real, num, den, NOP_ADD);
4432 rsub_bi_fr(n_real *real, long num, long den)
4434 rop_bi_fr_as_xr(real, num, den, NOP_SUB);
4438 rmul_bi_fr(n_real *real, long num, long den)
4440 rop_bi_fr_md_xr(real, num, den, NOP_MUL);
4444 rdiv_bi_fr(n_real *real, long num, long den)
4446 rop_bi_fr_md_xr(real, num, den, NOP_DIV);
4474 rop_bi_br_as_xr(n_real *real, mpr *bigratio, int nop)
4480 mpi_set(&iop, RBI(real));
4492 RCLEAR_BI(real);
4493 RBR(real) = bigr;
4494 RTYPE(real) = N_BIGRATIO;
4495 rbr_canonicalize(real);
4499 rop_bi_br_md_xr(n_real *real, mpr *bigratio, int nop)
4509 mpi_mul(mpr_num(bigr), RBI(real), mpr_num(bigr));
4511 RCLEAR_BI(real);
4512 RBR(real) = bigr;
4513 RTYPE(real) = N_BIGRATIO;
4514 rbr_canonicalize(real);
4518 radd_bi_br(n_real *real, mpr *bigratio)
4520 rop_bi_br_as_xr(real, bigratio, NOP_ADD);
4524 rsub_bi_br(n_real *real, mpr *bigratio)
4526 rop_bi_br_as_xr(real, bigratio, NOP_SUB);
4530 rmul_bi_br(n_real *real, mpr *bigratio)
4532 rop_bi_br_md_xr(real, bigratio, NOP_MUL);
4536 rdiv_bi_br(n_real *real, mpr *bigratio)
4538 rop_bi_br_md_xr(real, bigratio, NOP_DIV);
4562 rop_fr_fi_as_xr(n_real *real, long op, int nop)
4565 long value = 0, num = RFRN(real), den = RFRD(real);
4578 RFRN(real) = num + value;
4580 RFRN(real) = num - value;
4581 rfr_canonicalize(real);
4597 RBR(real) = bigr;
4598 RTYPE(real) = N_BIGRATIO;
4599 rbr_canonicalize(real);
4604 rop_fr_fi_md_xr(n_real *real, long op, int nop)
4606 long num = RFRN(real), den = RFRD(real);
4610 RFRN(real) = op * num;
4611 rfr_canonicalize(real);
4616 RFRD(real) = op * den;
4617 rfr_canonicalize(real);
4630 RBR(real) = bigr;
4631 RTYPE(real) = N_BIGRATIO;
4632 rbr_canonicalize(real);
4637 radd_fr_fi(n_real *real, long op)
4639 rop_fr_fi_as_xr(real, op, NOP_ADD);
4643 rsub_fr_fi(n_real *real, long op)
4645 rop_fr_fi_as_xr(real, op, NOP_SUB);
4649 rmul_fr_fi(n_real *real, long op)
4651 rop_fr_fi_md_xr(real, op, NOP_MUL);
4655 rdiv_fr_fi(n_real *real, long op)
4657 rop_fr_fi_md_xr(real, op, NOP_DIV);
4671 rop_fr_bi_as_xr(n_real *real, mpi *bignum, int nop)
4677 mpr_seti(bigr, RFRN(real), RFRD(real));
4681 mpi_muli(&iop, &iop, RFRD(real));
4689 RBR(real) = bigr;
4690 RTYPE(real) = N_BIGRATIO;
4691 rbr_canonicalize(real);
4695 rop_fr_bi_md_xr(n_real *real, mpi *bignum, int nop)
4700 mpr_seti(bigr, RFRN(real), RFRD(real));
4707 RBR(real) = bigr;
4708 RTYPE(real) = N_BIGRATIO;
4709 rbr_canonicalize(real);
4713 radd_fr_bi(n_real *real, mpi *bignum)
4715 rop_fr_bi_as_xr(real, bignum, NOP_ADD);
4719 rsub_fr_bi(n_real *real, mpi *bignum)
4721 rop_fr_bi_as_xr(real, bignum, NOP_SUB);
4725 rmul_fr_bi(n_real *real, mpi *bignum)
4727 rop_fr_bi_md_xr(real, bignum, NOP_MUL);
4731 rdiv_fr_bi(n_real *real, mpi *bignum)
4733 rop_fr_bi_md_xr(real, bignum, NOP_DIV);
4761 rop_fr_fr_as_xr(n_real *real, long num2, long den2, int nop)
4764 long num1 = RFRN(real), den1 = RFRD(real), num = 0, den = 0;
4786 RFRN(real) = num;
4787 RFRD(real) = den;
4788 rfr_canonicalize(real);
4806 RBR(real) = bigr;
4807 RTYPE(real) = N_BIGRATIO;
4808 rbr_canonicalize(real);
4813 rop_fr_fr_md_xr(n_real *real, long num2, long den2, int nop)
4816 long num1 = RFRN(real), den1 = RFRD(real), num = 0, den = 0;
4834 RFRN(real) = num;
4835 RFRD(real) = den;
4836 rfr_canonicalize(real);
4854 RBR(real) = bigr;
4855 RTYPE(real) = N_BIGRATIO;
4856 rbr_canonicalize(real);
4861 radd_fr_fr(n_real *real, long num, long den)
4863 rop_fr_fr_as_xr(real, num, den, NOP_ADD);
4867 rsub_fr_fr(n_real *real, long num, long den)
4869 rop_fr_fr_as_xr(real, num, den, NOP_SUB);
4873 rmul_fr_fr(n_real *real, long num, long den)
4875 rop_fr_fr_md_xr(real, num, den, NOP_MUL);
4879 rdiv_fr_fr(n_real *real, long num, long den)
4881 rop_fr_fr_md_xr(real, num, den, NOP_DIV);
4896 rop_fr_br_asmd_xr(n_real *real, mpr *bigratio, int nop)
4901 mpr_seti(bigr, RFRN(real), RFRD(real));
4918 RBR(real) = bigr;
4919 RTYPE(real) = N_BIGRATIO;
4920 rbr_canonicalize(real);
4924 radd_fr_br(n_real *real, mpr *bigratio)
4926 rop_fr_br_asmd_xr(real, bigratio, NOP_ADD);
4930 rsub_fr_br(n_real *real, mpr *bigratio)
4932 rop_fr_br_asmd_xr(real, bigratio, NOP_SUB);
4936 rmul_fr_br(n_real *real, mpr *bigratio)
4938 rop_fr_br_asmd_xr(real, bigratio, NOP_MUL);
4942 rdiv_fr_br(n_real *real, mpr *bigratio)
4944 rop_fr_br_asmd_xr(real, bigratio, NOP_DIV);
4967 rop_br_fi_asmd_xr(n_real *real, long fixnum, int nop)
4969 mpr *bigratio = RBR(real);
4987 rbr_canonicalize(real);
4991 radd_br_fi(n_real *real, long fixnum)
4993 rop_br_fi_asmd_xr(real, fixnum, NOP_ADD);
4997 rsub_br_fi(n_real *real, long fixnum)
4999 rop_br_fi_asmd_xr(real, fixnum, NOP_SUB);
5003 rmul_br_fi(n_real *real, long fixnum)
5005 rop_br_fi_asmd_xr(real, fixnum, NOP_MUL);
5009 rdiv_br_fi(n_real *real, long fixnum)
5011 rop_br_fi_asmd_xr(real, fixnum, NOP_DIV);
5033 rop_br_bi_as_xr(n_real *real, mpi *bignum, int nop)
5040 mpi_mul(&iop, &iop, RBRD(real));
5042 mpi_add(RBRN(real), RBRN(real), &iop);
5044 mpi_sub(RBRN(real), RBRN(real), &iop);
5046 rbr_canonicalize(real);
5050 radd_br_bi(n_real *real, mpi *bignum)
5052 rop_br_bi_as_xr(real, bignum, NOP_ADD);
5056 rsub_br_bi(n_real *real, mpi *bignum)
5058 rop_br_bi_as_xr(real, bignum, NOP_SUB);
5062 rmul_br_bi(n_real *real, mpi *bignum)
5064 mpi_mul(RBRN(real), RBRN(real), bignum);
5065 rbr_canonicalize(real);
5069 rdiv_br_bi(n_real *real, mpi *bignum)
5071 mpi_mul(RBRD(real), RBRD(real), bignum);
5072 rbr_canonicalize(real);
5096 rop_br_fr_asmd_xr(n_real *real, long num, long den, int nop)
5098 mpr *bigratio = RBR(real), rop;
5117 rbr_canonicalize(real);
5121 radd_br_fr(n_real *real, long num, long den)
5123 rop_br_fr_asmd_xr(real, num, den, NOP_ADD);
5127 rsub_br_fr(n_real *real, long num, long den)
5129 rop_br_fr_asmd_xr(real, num, den, NOP_SUB);
5133 rmul_br_fr(n_real *real, long num, long den)
5135 rop_br_fr_asmd_xr(real, num, den, NOP_MUL);
5139 rdiv_br_fr(n_real *real, long num, long den)
5141 rop_br_fr_asmd_xr(real, num, den, NOP_DIV);
5163 radd_br_br(n_real *real, mpr *bigratio)
5165 mpr_add(RBR(real), RBR(real), bigratio);
5166 rbr_canonicalize(real);
5170 rsub_br_br(n_real *real, mpr *bigratio)
5172 mpr_sub(RBR(real), RBR(real), bigratio);
5173 rbr_canonicalize(real);
5177 rmul_br_br(n_real *real, mpr *bigratio)
5179 mpr_mul(RBR(real), RBR(real), bigratio);
5180 rbr_canonicalize(real);
5184 rdiv_br_br(n_real *real, mpr *bigratio)
5186 mpr_div(RBR(real), RBR(real), bigratio);
5187 rbr_canonicalize(real);