Rational arithmetic

Pieter Koopman pieter@cs.kun.nl
Tue, 01 Dec 1998 14:33:18 +0100


--=====================_912515598==_
Content-Type: text/plain; charset="us-ascii"

At 07:08 PM 11/30/98 -0800, Clifford J. Nelson wrote:
> That sounds like work to me, not fun. A lot of work, because it is like
>reinventing the wheel. I guess I will have to wait for Clean 1.4 or 2.0.

For those who cannot wait: as attachment you will find a draft of a module
to handle rational numbers. The final version will probably use infinite
length arithmetic instead of integers for the nominator and the denominator.

Please report any problems encountered to me.

Hope this helps,

Pieter Koopman

--=====================_912515598==_
Content-Type: application/octet-stream; name="StdQ.dcl"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="StdQ.dcl"

ZGVmaW5pdGlvbiBtb2R1bGUgU3RkUQ0NLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Kg0vLwlDb25jdXJyZW50IENsZWFuIFN0YW5kYXJkIExpYnJhcnkgTW9kdWxlIFZlcnNpb24gMS4z
IERSQUZUDS8vCUNvcHlyaWdodCAxOTk4IFVuaXZlcnNpdHkgb2YgTmlqbWVnZW4NLy8gKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKg0NaW1wb3J0IFN0ZE92ZXJsb2FkZWQNDTo6IFENDW1r
USA6OiB4IHggLT4gUSB8IHRvSW50IHggLy8gIG51bWVyYXRvciwgZGVubWluYXRvcg0NY2xhc3Mg
dG9RIHQgOjogdCAtPiBRDQ1pbnN0YW5jZSB0b1EgSW50DWluc3RhbmNlIHRvUSBSZWFsDWluc3Rh
bmNlIHRvUSBRDQ1jbGFzcyBmcm9tUSBhIDo6IFEgLT4gYQ0NaW5zdGFuY2UgZnJvbVEgSW50DWlu
c3RhbmNlIGZyb21RIFJlYWwNaW5zdGFuY2UgZnJvbVEgeyNDaGFyfQ1pbnN0YW5jZSBmcm9tUSBR
DQ1pbnN0YW5jZSB0b1N0cmluZyBRDWluc3RhbmNlIHRvSW50IFENaW5zdGFuY2UgdG9SZWFsIFEN
DWluc3RhbmNlIGZyb21JbnQgUQ1pbnN0YW5jZSBmcm9tUmVhbCBRDQ1pbnN0YW5jZSAqIFENaW5z
dGFuY2UgLyBRDWluc3RhbmNlICsgUQ1pbnN0YW5jZSAtIFENDWluc3RhbmNlIDwgUQ1pbnN0YW5j
ZSA9PSBRDQ1pbnN0YW5jZSBhYnMgUQ1pbnN0YW5jZSBzaWduIFENaW5zdGFuY2UgfiBRDWluc3Rh
bmNlIG1vZCBRDWluc3RhbmNlIGdjZCBRDQ1pbnN0YW5jZSB6ZXJvIFENaW5zdGFuY2Ugb25lIFEN
--=====================_912515598==_
Content-Type: application/octet-stream; name="StdQ.icl"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="StdQ.icl"

aW1wbGVtZW50YXRpb24gbW9kdWxlIFN0ZFENDS8vICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioNLy8JQ29uY3VycmVudCBDbGVhbiBTdGFuZGFyZCBMaWJyYXJ5IE1vZHVsZSBWZXJzaW9u
IDEuMyBEUkFGVA0vLwlDb3B5cmlnaHQgMTk5OCBVbml2ZXJzaXR5IG9mIE5pam1lZ2VuDS8vICoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNDWltcG9ydCBTdGRPdmVybG9hZGVkLCBTdGRJ
bnQsIFN0ZFJlYWwsIFN0ZEJvb2wsIFN0ZENsYXNzLCBTdGRNaXNjLCBTdGRTdHJpbmcNDTo6IFEg
PQl7IG51bSA6OiBJbnQNCQksIGRlbiA6OiBJbnQNCQl9DQ1ta1EgOjogeCB4IC0+IFEgfCB0b0lu
dCB4DW1rUSBuIGQgPSBzaW1wbGlmeSB7bnVtID0gdG9JbnQgbiwgZGVuID0gdG9JbnQgZH0NDWNs
YXNzIHRvUSB0IDo6IHQgLT4gUQ0NaW5zdGFuY2UgdG9RIEludA13aGVyZSB0b1EgaSA9IG1rUSBp
IDENDWluc3RhbmNlIHRvUSBSZWFsDXdoZXJlIHRvUSByDQkJfCByIDwgemVybwkJCQkJPSB+KHRv
USAofnIpKQ0JCXwgciA+IGxpbWl0UmVhbAkJCQk9IHRvUSAodG9JbnQgcikNCQl8IGZyYWN0aW9u
IHIgPT0gemVybwkJPSBta1EgKHRvSW50ICByICAgICApIDENCQl8IGZyYWN0aW9uICgyLjAqcikg
PT0gemVybwk9IG1rUSAodG9JbnQgKHIqMi4wKSkgMg0JCXwgZnJhY3Rpb24gKDMuMCpyKSA9PSB6
ZXJvCT0gbWtRICh0b0ludCAociozLjApKSAzDQkJfCBmcmFjdGlvbiAoNC4wKnIpID09IHplcm8J
PSBta1EgKHRvSW50IChyKjQuMCkpIDQNCQl8IGZyYWN0aW9uICg1LjAqcikgPT0gemVybwk9IG1r
USAodG9JbnQgKHIqNS4wKSkgNQ0JCXwgZnJhY3Rpb24gKDYuMCpyKSA9PSB6ZXJvCT0gbWtRICh0
b0ludCAocio2LjApKSA2DQkJfCBmcmFjdGlvbiAoNy4wKnIpID09IHplcm8JPSBta1EgKHRvSW50
IChyKjcuMCkpIDcNCQl8IGZyYWN0aW9uICg4LjAqcikgPT0gemVybwk9IG1rUSAodG9JbnQgKHIq
OC4wKSkgOA0JCXwgZnJhY3Rpb24gKDkuMCpyKSA9PSB6ZXJvCT0gbWtRICh0b0ludCAocio5LjAp
KSA5DQkJfCBmcmFjdGlvbiAoMTAuMCpyKSA9PSB6ZXJvCT0gbWtRICh0b0ludCAocioxMC4wKSkg
MTANCQl8IGZyYWN0aW9uICgxMDAuMCpyKSA9PSB6ZXJvCT0gbWtRICh0b0ludCAocioxMDAuMCkp
IDEwMA0JCT0gbWtRIGxpbWl0SW50ICh0b0ludCAobGltaXRSZWFsL3IpKQ0NbGltaXRJbnQJOj09
IDk2OTk2OTAgLy8gMiozKjUqNyoxMSoxMyoxNyoxOSB0aGUgZmlyc3QgOCBwcmltZSBudW1iZXJz
DWxpbWl0UmVhbAk6PT0JOTY5OTY5MC4wDQ1pbnN0YW5jZSBtb2QgUQ13aGVyZQ0JKG1vZCkgeCB5
DQl8IHkgPT0gemVybyA9IGFib3J0ICJuIG1vZCB6ZXJvOiB1bmRlZmluZWQgZm9yIG51bWJlcnMi
DQl8IHggPCB6ZXJvICA9IChhYnMgeCkgbW9kIHkNCXwgeSA8IHplcm8gID0geCBtb2QgKGFicyB5
KQ0JfCB4IDwgeSAgICAgPSB4DQl8IG90aGVyd2lzZSA9ICh4IC0geSkgbW9kIHkNDWluc3RhbmNl
IGdjZCBRDXdoZXJlCQ0JZ2NkIHggeSAgICA9IGdjZHBvcyAoYWJzIHgpIChhYnMgeSkNCXdoZXJl
DQkJZ2NkcG9zIHggeQ0JCXwgeSA9PSB6ZXJvID0geA0JCXwgb3RoZXJ3aXNlID0gZ2NkcG9zIHkg
KHggbW9kIHkpDQ1mcmFjdGlvbiA6OiBSZWFsIC0+IFJlYWwNZnJhY3Rpb24gciA9IHIgLSB0b1Jl
YWwgKGVudGllciByKQ0NaW5zdGFuY2UgdG9RIFENd2hlcmUgdG9RIHEgPSBxDQ1pbnN0YW5jZSBm
cm9tSW50IFENd2hlcmUgZnJvbUludCBpID0gbWtRIGkgMQ0NaW5zdGFuY2UgZnJvbVJlYWwgUQ13
aGVyZSBmcm9tUmVhbCByID0gdG9RIHINDWluc3RhbmNlIHRvSW50IFENd2hlcmUgdG9JbnQgcSA9
IHEubnVtIC8gcS5kZW4NDWluc3RhbmNlIHRvUmVhbCBRDXdoZXJlIHRvUmVhbCBxID0gdG9SZWFs
IHEubnVtIC8gdG9SZWFsIHEuZGVuDQ1zaW1wbGlmeSA6OiBRIC0+IFENc2ltcGxpZnkgcT06e251
bT1uLGRlbj1kfQ0JfCBkID09IDAgICAgID0gYWJvcnQgImRlbm9taW5hdG9yIG9mIFEgaXMgMCEi
DQl8IGQgPCAwICAgICAgPSB7bnVtID0gfm4gLyBnLCBkZW4gPSB+ZCAvIGd9DQl8IG90aGVyd2lz
ZSAgPSB7bnVtID0gbiAvIGcsIGRlbiA9IGQgLyBnfQ13aGVyZQ0JZyA9IGdjZCBuIGQNDWluc3Rh
bmNlICogUQ13aGVyZSAoKikgcTEgcTIgPSBta1EgKHExLm51bSpxMi5udW0pIChxMS5kZW4qcTIu
ZGVuKQ0NaW5zdGFuY2UgLyBRDXdoZXJlICgvKSBxMSBxMiA9IG1rUSAocTEubnVtKnEyLmRlbikg
KHExLmRlbipxMi5udW0pDQ1pbnN0YW5jZSArIFENd2hlcmUgKCspIHExIHEyID0gbWtRIChxMS5u
dW0gKiBxMi5kZW4gKyBxMS5kZW4gKiBxMi5udW0pIChxMS5kZW4gKiBxMi5kZW4pDQ1pbnN0YW5j
ZSAtIFENd2hlcmUgKC0pIHExIHEyID0gbWtRIChxMS5udW0gKiBxMi5kZW4gLSBxMS5kZW4gKiBx
Mi5udW0pIChxMS5kZW4gKiBxMi5kZW4pDQ1pbnN0YW5jZSA8IFENd2hlcmUgKDwpIHExIHEyID0g
cTEubnVtICogcTIuZGVuIDwgcTEuZGVuICogcTIubnVtDQ1pbnN0YW5jZSA9PSBRDXdoZXJlICg9
PSkgcTEgcTIgPSBxMS5udW0gPT0gcTIubnVtICYmIHExLmRlbiA9PSBxMi5kZW4NDWluc3RhbmNl
IHRvU3RyaW5nIFENd2hlcmUgdG9TdHJpbmcgcQ0JCXwgc3EuZGVuPT0xCT0gdG9TdHJpbmcgc3Eu
bnVtDQkJfCBvdGhlcndpc2UJPSB0b1N0cmluZyBzcS5udW0gKysrICIvIiArKysgdG9TdHJpbmcg
c3EuZGVuDQkgIHdoZXJlDQkJc3EgPSBzaW1wbGlmeSBxDQ1pbnN0YW5jZSB6ZXJvIFENd2hlcmUg
emVybyA9IHtudW0gPSAwLCBkZW4gPSAxfQ0NaW5zdGFuY2Ugb25lIFENd2hlcmUgb25lID0ge251
bSA9IDEsIGRlbiA9IDF9DQ1pbnN0YW5jZSBhYnMgUQ13aGVyZSBhYnMgcSA9IHsgcSAmIG51bSA9
IGFicyBxLm51bSB9DQ1pbnN0YW5jZSBzaWduIFENd2hlcmUgc2lnbiBxID0gc2lnbiBxLm51bQ0N
aW5zdGFuY2UgfiBRDXdoZXJlIH4gcSA9IHsgcSAmIG51bSA9IH4gcS5udW0gfQ0NY2xhc3MgZnJv
bVEgYSA6OiBRIC0+IGENDWluc3RhbmNlIGZyb21RIEludAkJd2hlcmUgZnJvbVEgcSA9IHRvSW50
IHENaW5zdGFuY2UgZnJvbVEgUmVhbAkJd2hlcmUgZnJvbVEgcSA9IHRvUmVhbCBxDWluc3RhbmNl
IGZyb21RIHsjQ2hhcn0Jd2hlcmUgZnJvbVEgcSA9IHRvU3RyaW5nIHENaW5zdGFuY2UgZnJvbVEg
UQkJd2hlcmUgZnJvbVEgcSA9IHENDQ==
--=====================_912515598==_
Content-Type: text/plain; charset="us-ascii"



--=====================_912515598==_--