Annotation of OpenXM/src/asir-doc/int-parts/datatype/ratnum.texi, Revision 1.1
1.1 ! noro 1: @comment $OpenXM$
! 2: @section $BM-M}?t(B
! 3:
! 4: @example
! 5: struct oN @{ $B<+A3?t(B
! 6: int p; $B7e?t(B
! 7: int b[1]; BASE-$B?JI=<($N3F7e(B
! 8: @};
! 9:
! 10: typedef struct oN *N;
! 11:
! 12: struct oQ @{ $BM-M}?t(B
! 13: short id; $B<1JL;R(B (= O_N)
! 14: char nid; $B?t<1JL;R(B (= N_Q)
! 15: char sgn; $BId9f(B (= 1 or -1)
! 16: N nm; $BJ,;R(B
! 17: N dn; $BJ,Jl(B ($B@0?t$rI=$9;~(B 0)
! 18: @};
! 19:
! 20: typedef struct oQ *Q;
! 21: @end example
! 22: @noindent
! 23: $BM-M}?t$O<+A3?t$rMQ$$$FDj5A$5$l$k$,(B, $B<+A3?t<+BN$O(B Risa object $B$G$O$J(B
! 24: $B$$(B. $B<+A3?t$O(B, @samp{include/base.h}$B$GDj5A$5$l$k?t(B @code{BASE} $B$K$h$j(B
! 25: @code{BASE}-$B?JI=<($5$l(B, $B$=$N7e?t$,(B @code{p}, $B3F7e$O(B, $B:G$b2<$N7e$+$i(B
! 26: @code{b[0]}, @code{b[1]}, @dots{} $B$KF~$k(B. $B8=:_(B BASE $B$O(B @code{2^32} $B$G$"(B
! 27: $B$k(B. $BDj5A$G$O(B, @code{b[]} $B$,0l7eJ,$7$+@k8@$5$l$F$$$J$$$,(B, $B<B:]$K$O7e?tJ,(B
! 28: $B$NO"B3NN0h$rMQ0U$9$k$3$H$K$J$k(B. $B<B:]$N1i;;$K$*$$$F$O(B, @code{oN} $B$G$O$J$/(B
! 29: @code{N}($BB($A%]%$%s%?(B)$B$NJ}$rJQ?t$"$k$$$O0z?t$H$7$FMQ$$$k(B. $B8=:_!"<+A3?t$O(B
! 30: parser $B$K$*$$$F0lC6(B @code{10^8} $B?J?t$H$7$F(B @code{oN}$B7?$KJQ49$5$l(B, $B<!$N(B
! 31: @code{bnton()} $B4X?t$K$h$j(B @code{2^32} $B?J?t$KJQ49$5$l$F$$$k(B.
! 32:
! 33: $BM-M}?t$O<+A3?t$rJ,JlJ,;R$H$7(B, $BId9f$r;}$D(B. $BM-M}?t$O>o$K4{LsJ,?t$G$"$k(B. $BJ,(B
! 34: $BJl$r(B 0 $B$H$9$k$3$H$K$h$j@0?t$rI=8=$9$k(B.
! 35:
! 36: @subsection $B<+A3?t$N@8@.(B
! 37: @example
! 38: #include "ca.h"
! 39:
! 40: bnton(int Base,N a,N *rp)
! 41: Base-$B?JI=<($5$l$?(B a $B$r(B BASE-$B?JI=<($KJQ49$9$k(B.
! 42: @end example
! 43: @noindent
! 44: $BJ8;zNs$GI=$5$l$?(B($BNc$($P(B 10$B?J$N(B)$BB?G\D9?t$rFbIt7A<0$KJQ49$9$k>l9g(B,
! 45: @code{Base} $B$H$7$F(B 10 $B$N$Y$-$r$H$l$PMF0W$K(B @code{Base} $BI=<($,$G$-$k(B. $B$3(B
! 46: $B$l$+$i(B @code{ntobn()} $B$K$h$j(B @code{BASE} $BI=<($N<+A3?t$,F@$i$l$k(B.
! 47:
! 48: @subsection $B<+A3?t$N;MB'(B
! 49: @example
! 50: #include "ca.h"
! 51:
! 52: addn(N a,N b,N *rp)
! 53: *rp = a + b
! 54:
! 55: int subn(N a,N b,N *rp)
! 56: *rp = |a - b| return sgn(a-b)
! 57:
! 58: muln(N a,N b,N *rp)
! 59: *rp = a * b
! 60:
! 61: divn(N a,N b,N *qp,N *rp)
! 62: *qp = a / b ($B>&(B) *rp = a mod b ($B>jM>(B)
! 63:
! 64: pwrn(N a,int e,N *rp)
! 65: *rp = a ^ e
! 66:
! 67: gcdn(N a,N b,N *rp)
! 68: *rp = gcd(a,b)
! 69:
! 70: int cmpn(N a,N b)
! 71: sgn(a-b)
! 72: @end example
! 73: @noindent
! 74: @code{sgn(a)} $B$O(B, @code{a} $B$N@5(B, @code{0}, $BIi$K1~$8$F(B @code{1},
! 75: @code{0}, @code{-1} $B$rI=$9(B. $B8F$S=P$7J}$O<!$N$h$&$K$J$k(B.
! 76: @example
! 77: @dots{}
! 78: N n1,n2,n3;
! 79: @dots{}
! 80: addn(n1,n2,&n3);
! 81: @dots{}
! 82: @end example
! 83:
! 84: @subsection $BM-M}?t$N@8@.(B
! 85: @example
! 86: #include "ca.h"
! 87:
! 88: NTOQ(n,s,q) (macro; N n; int s; Q q)
! 89: sgn = s, nm = n, dn = 0 $B$J$kM-M}?t(B($B@0?t(B) q $B$r@8@.$9$k(B.
! 90:
! 91: NDTOQ(n,d,s,q) (macro; N n,d; int s; Q q)
! 92: sgn = s, nm = n, dn = d $B$J$kM-M}?t(B q $B$r@8@.$9$k(B.
! 93:
! 94: STOQ(n,q) (macro; int n; Q q)
! 95: $BC1@0?t(B n $B$r(B $BM-M}?t(B ($B@0?t(B) $B$KJQ49$9$k(B.
! 96: @end example
! 97: @noindent
! 98: $B$$$:$l$N%^%/%m$bI,MW$JNN0h$O%^%/%mFb$G3NJ]$5$l$k(B.
! 99:
! 100: @subsection $BM-M}?t$N;MB'(B
! 101: @example
! 102: #include "ca.h"
! 103:
! 104: addq(Q a,Q b,Q *rp)
! 105: *rp = a + b
! 106:
! 107: subq(Q a,Q b,Q *rp)
! 108: *rp = a - b
! 109:
! 110: mulq(Q a,Q b,Q *rp)
! 111: *rp = a * b
! 112:
! 113: divq(Q a,Q b,Q *qp)
! 114: *qp = a / b
! 115:
! 116: invq(Q a,Q *rp)
! 117: *qp = 1 / a
! 118:
! 119: pwrq(Q a,Q e,Q *rp)
! 120: *rp = a ^ e
! 121:
! 122: int cmpq(Q a,Q b)
! 123: sgn(a-b)
! 124: @end example
! 125:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>