rat.avm 5.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #
  2. # Here are some operations on rational numbers, represented as
  3. # (numerator,denominator) of types integer and natural,
  4. # respectively. The compiler recognizes rationals in this form as type
  5. # q, making them printable with %qP, among other things.
  6. #
  7. # Copyright (C) 2007-2009 Dennis Furey
  8. #
  9. # abs (38)
  10. # difference (3339)
  11. # inverse (140)
  12. # negation (54)
  13. # power (6091)
  14. # product (2520)
  15. # quotient (2657)
  16. # rleq (645)
  17. # simplified (2081)
  18. # sum (3276)
  19. # engineering (10353)
  20. # fixed (2892)
  21. # scientific (6756)
  22. #
  23. # compressed with granularity 67
  24. #
  25. #
  26. # This program is free software; you can redistribute it and/or modify
  27. # it under the terms of the GNU General Public License as published by
  28. # the Free Software Foundation; version 3.
  29. #
  30. # This program is distributed in the hope that it will be useful,
  31. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  32. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  33. # GNU General Public License for more details.
  34. #
  35. # You should have received a copy of the GNU General Public License
  36. # along with this program; if not, write to the Free Software Foundation,
  37. # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  38. #
  39. {kwkZpgiwuKH{evdw{IwKD_EFRg[ptGgFoFsf]nXpajgKxyVKdkKjoO{D[nZf\v[hjr`sn{_dqJ{Ecv
  40. gfvgixl]Lwdih_DHSdWgyJrgZDF^jN<vNB[fjgG<xqXoZ\?OFEfH[hodnVvjGioZe>iv=]znKocEvyg
  41. wgGsgn_x\mZnkLvJkzwPEZyKngZhnkHDEJnKhyCioyVnLezjonng[vqGKjozgINg=ddvxn<dw\SgxKA
  42. LwGoZhF_SIgd[hopvVdkhnfmnB[eXonjoxjh{gfgAaF<^Oh_npklD{Tfh\NHAwqdfXzfdnQgz{gtdgU
  43. Faz_QBBxDkHpiZpJ[eqngWKN>xr>gSEivkNzp^`^ZeOHgDoFdab^f<=JnGeoxGqHnKoO_f^ivkPho`_
  44. D[FRVhvFgb<>v{hwxdPdo^fpjB`bYHfyvo^kMhNEAgoDE<gs\^ldSgOKuIG?Eh\lx_ITvxhsfHbf@\D
  45. uGmf^ZC@Jfcy\_oyDhhnf]RhYongOFsfoGFt>gh\j<<Itp@vEJkHom<^nonglWv`pvx{f>GDKF{Fdd@
  46. ^{vooHgoE<nlJk?hgro_ojdiv\fhfKD>^<>]ZmJnkTfX^lv\CRnlVjgFprvkvf^^iNfFOdkERNGHnj^
  47. ggn?dfvkDFhhwSzgGGPfgKxOJE_R^Fx>klJcwGpk_PwWsFvkfnF\\fD][feELN^gf_n?dQoFzEiFevZ
  48. zGyJf{fo[f_cxpd<of{FqFJggLyvngQyJpwv_pr^EkvhfkGf<Ao>qFfKEiN\fC^fsqH_FinrzzoPoz@
  49. IF_GZqIHtgtche>fiNr>@aqiKz_FzqIVgqONfkphwxlhlsVgIIFHfvCM>FqGFxxriAqSdfXhgJxsGF]
  50. HlOTOOIO@jgGki?OHgH\ALf\\poGlYISQHhrnSISFt@h``FSPdF{QfokKiZpngFoFNgyDg>_nDtgOEN
  51. l<hpoh^njhoxdoTck[KpyWczphqKOEFhqNN<KHO\V<VWNGINP]ptAPhSPIvennkxjyI[KRppqFpnfdq
  52. NfHpOGGGP<\QG`yanOKjqHco`gsNAq_eyKkxoGN_FgJaFn>dX^eiLNinwQnvaQNqIdovhhYgaaItCt[
  53. s{wONpiHgHqNhpp?GQN[NxWaolUYF^_zoyN?syJyTyZEvU{c{osphfnhoOGIHoGfGPoqFoAKInwQmAw
  54. K{wHlH[quhpWiiuPbY<mZoAu[KkZhqPgFhoIFpfC^IPgcP_TjILkBuZOGNgpnXnX]LgNdfaAYOQRl?<
  55. >Sv>Se{]{ZyyOOPiH`nqNHopiQG{iFpILwHPxsecaXh@FPsHkFkx^UW^uU<Tc{sczM{hcz[skZgE>yF
  56. gHngGKQQHh{aRhZ?_VI^tqHoG@lJBH_n`sK{ZeXGWr{x@Shn>@S<d[y==ZpAz[S{[HqFiGOGNheJFiQ
  57. Dx{>ooIKAFi?PJx^nN[pmyA@oxnwHiPAPwQYZ_j[lbJZ<Aw\e[eawT[A{{ywPhoPfoIKf_EqOOJkHfH
  58. pVMOnZ?_WT<o=OiJ^DF?INc`hg\uh`WiYMt=AlR=]uxXR[{\cz]=jS[E{{sqQHiOOGHiGQHoQGPzoFi
  59. \qJFPPpxpaWHetPfLPd=Y<?Qqh_jAkZb^ewD@GAqdh[HqMcsnb>[SM]{yCyy[OGHpiOOQHh\_MHeKpf
  60. oaaGStb`PKGQPapP><XsSQqOCaUQQyf]^YF<a{<=Al`dLZoMZ`ZpTH[oJlSu[cyPqOQQMPqOQ<iQGoE
  61. NfLx]`oQJFP`vnXr<xCQWijp=NWzKO<L<`VN{_fLZDa>LoGKcv>CzvXEyn[p[{iOQOILpnlgPHmHd_N
  62. aoS<wGSt>q@xCLdyTiKINPaB{SRB?dxDPJ[q?]l\<Q?my=ZEncL[RHSG]z[yQGQNqOHqOQGFhdP@qNA
  63. HBOIFiLdt<x{bCMTseLANJQun<>d\Kg\x<iz`\cxlWHM[dU{\EzM[No?QQNQHiGPqPv\>mQiX?dYL<v
  64. G=VqRII{^S{ZXG`<>yRciaYsNmZKr\uYo=CSgCvcxXgPphaPhOGG>`pDBaNAKNd\qIucR>ABm{tgSOD
  65. XNmkFy=wRWlDEyZmz=qx<cAN<MZVCyfpqOI@PpqHo@@OARzA=KExxFPPPzA=[WQhyTKtmNmjU]Dh<mt
  66. ABoCfSr=W>at?AyLniHQQ??GI<FLbb{PXnq>eVvtQyScVaE={CcM\KiQCVT@V{>ENQr{@=uz>[jpEN^
  67. oPfhgDNoPqYdj<SOxYksJy[qQfKttP^xZZZiK[eel]vg[mqJ<hSUC{wQQQQMQIMFgxgFwkFrGFL<no{
  68. qfPyFvp`DPJkTtP`]rgJ{l\OEsXOEfH[V<c\`SnQMIHqQRhoL_IaN@GEhvsVEVjhxBRgfbiIt\fFYNZ
  69. kL@cMuHh]Jll<HpfysPHTuyDeQQMQQQQM@q?>DHiUQAuKKqQSOIIfrmgI<<J`vFXANAqGO`=cWFaUrz
  70. \><mZ?QNg@qlhakm`><W\@]FXV^UrrqPaP]LS]ufdJ]SI\=<Yugu[pcAYdEyNgQGNqOWAPrZq]<VPK>
  71. paDcIXzOYqe<Z<xC<{?nV<mfZZ_<B\YQOONpoOlUX=YKPagfa^tYlyoiASIxaq>_ch_?qiGxdlTC>hl
  72. oNiNoiSLB?jg=rAsK?h\wES?_lXmXr<KdocHSxqmg{yXhiKNpoKBuTFGO]<>qO?_R?REHs>_bK=nFdL
  73. XBHrzN^=[{lsqINhgOOHmOoTU]EfvLobjV?qT<{ldtL<{l_j\OKoIBn[_noFpnqF_TjINpAaP_b^b^c
  74. ?P_l\?]{>AEpCkm>vOzA[PhoHiPQGLq?s\CTB^`FOjt?D_dh]G@WSQ\w`<SyqoGFHfhhZ?_Up{PFPPz
  75. ?QJ>eKea<HWNKDo[YsqGPhqQOIKIG@Qk]M=P{e=<LVZgcNCoQYzs[uvnfiNhhVMLve^sP]xsQDCK?Dp
  76. _hrNffoozpqZaQQQNPQHtePLfJpVtXe^uHasEQOdbiQQcKFkkXyhPiEDhi[]^k=xyOiTXO_KE\=qcN^
  77. UmyINoPsI?VHpHqDUHqdO=PriY=QRL??rh@`@K>doR`_UUxE_HqNgS<wNHt@fpvw{=[_E\jfSek\amp
  78. pc<naGINAK^m`SmopktuxqEmrA{yvABJKN?ffOH@rou`]K?@B@DPKqT{?l<hkOJA^xIxpxQIP`VL@o<
  79. jnp>d`ksmUugG=?wQJjyvM[ONp@`B_mM\<?wGCcvI`?\YNNxBhmYcGmOLfno=pWD<DvZf<UvGMateDw
  80. lXyQPhFtrsKIpCxB]RtsntGnZNBiRo>@gPXwuZuAuNkEL=oqcVQOFh_L\CxJkIWHsJStdv=DVqsbNHM
  81. UNpotIp^Pe>S\EZDC`nfy{Qw\OHEl@kDHn<sqbuYHMVmwyIl=_ONLXnSADVF{xr\ONQKhJf@IFdu=nM
  82. l<]ZxCT]>oZeNO?<cCDQjSldxbVgxrLPdv_kDEZ<JBjRzwBdmxFQrNOdqWdoXzgKGq>^cI{]uZxfhgY
  83. @`IOcl_^FAxz=PuHf^hc<`Yp\H>`x=DztFzvuYjJPwKu<BWfBPF`ZnNN=l^AvBwhLN][Q@?^av=pt<N
  84. Sh<XvOdChVOrJ=KtJN@{k{K=z?wlSopyD==Z?\<cxyQFVcnS=zO^`PbmT<d[_EuL=`MAwHo\luz>INL
  85. ?BtMH<{x>]{zDcwqnf[kPl<<So^kctnUL<[hoLalDnutZ>MYDwd\KlKDqIN\]nD