floating point

Matthew Fluet fluet@CS.Cornell.EDU
Tue, 12 Sep 2000 14:21:03 -0400 (EDT)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---559023410-630072926-968782863=:25347
Content-Type: TEXT/PLAIN; charset=US-ASCII


I've double checked all my code for floating point comparisions, looked at
the basis library spec and reread Intel's description of the floating
point comparision instructions, and I think I've got them all correct.  It
turns out that you can check for > and >= one instruction faster than <
and <= after the floating point comparision instruction.  So, for < and
<=, I reverse the order of the operands and then perform like > or >=. 
That should be o.k. with IEEE and the spec -- any nans that were in the
operands will still make the result false.  I'm including a better
regression test than I sent out yesterday;  this one checks all
comparisions on all combinations from {-inf,-f,-0.0,+0.0,+f,+inf,nan}. 


---559023410-630072926-968782863=:25347
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="realcomp.ok"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.SOL.3.95.1000912142103.25347Q@hoho.cs.cornell.edu>
Content-Description: 

UmVhbC48KG5hbixuYW4pID0gZmFsc2UNClJlYWwuPD0obmFuLG5hbikgPSBmYWxzZQ0KUmVhbC4+
KG5hbixuYW4pID0gZmFsc2UNClJlYWwuPj0obmFuLG5hbikgPSBmYWxzZQ0KUmVhbC49PShuYW4s
bmFuKSA9IGZhbHNlDQpSZWFsLiE9KG5hbixuYW4pID0gdHJ1ZQ0KUmVhbC4/PShuYW4sbmFuKSA9
IHRydWUNClJlYWwuPChuYW4sfmluZikgPSBmYWxzZQ0KUmVhbC48PShuYW4sfmluZikgPSBmYWxz
ZQ0KUmVhbC4+KG5hbix+aW5mKSA9IGZhbHNlDQpSZWFsLj49KG5hbix+aW5mKSA9IGZhbHNlDQpS
ZWFsLj09KG5hbix+aW5mKSA9IGZhbHNlDQpSZWFsLiE9KG5hbix+aW5mKSA9IHRydWUNClJlYWwu
Pz0obmFuLH5pbmYpID0gdHJ1ZQ0KUmVhbC48KG5hbix+MikgPSBmYWxzZQ0KUmVhbC48PShuYW4s
fjIpID0gZmFsc2UNClJlYWwuPihuYW4sfjIpID0gZmFsc2UNClJlYWwuPj0obmFuLH4yKSA9IGZh
bHNlDQpSZWFsLj09KG5hbix+MikgPSBmYWxzZQ0KUmVhbC4hPShuYW4sfjIpID0gdHJ1ZQ0KUmVh
bC4/PShuYW4sfjIpID0gdHJ1ZQ0KUmVhbC48KG5hbix+MSkgPSBmYWxzZQ0KUmVhbC48PShuYW4s
fjEpID0gZmFsc2UNClJlYWwuPihuYW4sfjEpID0gZmFsc2UNClJlYWwuPj0obmFuLH4xKSA9IGZh
bHNlDQpSZWFsLj09KG5hbix+MSkgPSBmYWxzZQ0KUmVhbC4hPShuYW4sfjEpID0gdHJ1ZQ0KUmVh
bC4/PShuYW4sfjEpID0gdHJ1ZQ0KUmVhbC48KG5hbiwwLjApID0gZmFsc2UNClJlYWwuPD0obmFu
LDAuMCkgPSBmYWxzZQ0KUmVhbC4+KG5hbiwwLjApID0gZmFsc2UNClJlYWwuPj0obmFuLDAuMCkg
PSBmYWxzZQ0KUmVhbC49PShuYW4sMC4wKSA9IGZhbHNlDQpSZWFsLiE9KG5hbiwwLjApID0gdHJ1
ZQ0KUmVhbC4/PShuYW4sMC4wKSA9IHRydWUNClJlYWwuPChuYW4sMC4wKSA9IGZhbHNlDQpSZWFs
Ljw9KG5hbiwwLjApID0gZmFsc2UNClJlYWwuPihuYW4sMC4wKSA9IGZhbHNlDQpSZWFsLj49KG5h
biwwLjApID0gZmFsc2UNClJlYWwuPT0obmFuLDAuMCkgPSBmYWxzZQ0KUmVhbC4hPShuYW4sMC4w
KSA9IHRydWUNClJlYWwuPz0obmFuLDAuMCkgPSB0cnVlDQpSZWFsLjwobmFuLDEpID0gZmFsc2UN
ClJlYWwuPD0obmFuLDEpID0gZmFsc2UNClJlYWwuPihuYW4sMSkgPSBmYWxzZQ0KUmVhbC4+PShu
YW4sMSkgPSBmYWxzZQ0KUmVhbC49PShuYW4sMSkgPSBmYWxzZQ0KUmVhbC4hPShuYW4sMSkgPSB0
cnVlDQpSZWFsLj89KG5hbiwxKSA9IHRydWUNClJlYWwuPChuYW4sMikgPSBmYWxzZQ0KUmVhbC48
PShuYW4sMikgPSBmYWxzZQ0KUmVhbC4+KG5hbiwyKSA9IGZhbHNlDQpSZWFsLj49KG5hbiwyKSA9
IGZhbHNlDQpSZWFsLj09KG5hbiwyKSA9IGZhbHNlDQpSZWFsLiE9KG5hbiwyKSA9IHRydWUNClJl
YWwuPz0obmFuLDIpID0gdHJ1ZQ0KUmVhbC48KG5hbixpbmYpID0gZmFsc2UNClJlYWwuPD0obmFu
LGluZikgPSBmYWxzZQ0KUmVhbC4+KG5hbixpbmYpID0gZmFsc2UNClJlYWwuPj0obmFuLGluZikg
PSBmYWxzZQ0KUmVhbC49PShuYW4saW5mKSA9IGZhbHNlDQpSZWFsLiE9KG5hbixpbmYpID0gdHJ1
ZQ0KUmVhbC4/PShuYW4saW5mKSA9IHRydWUNClJlYWwuPCh+aW5mLG5hbikgPSBmYWxzZQ0KUmVh
bC48PSh+aW5mLG5hbikgPSBmYWxzZQ0KUmVhbC4+KH5pbmYsbmFuKSA9IGZhbHNlDQpSZWFsLj49
KH5pbmYsbmFuKSA9IGZhbHNlDQpSZWFsLj09KH5pbmYsbmFuKSA9IGZhbHNlDQpSZWFsLiE9KH5p
bmYsbmFuKSA9IHRydWUNClJlYWwuPz0ofmluZixuYW4pID0gdHJ1ZQ0KUmVhbC48KH5pbmYsfmlu
ZikgPSBmYWxzZQ0KUmVhbC48PSh+aW5mLH5pbmYpID0gdHJ1ZQ0KUmVhbC4+KH5pbmYsfmluZikg
PSBmYWxzZQ0KUmVhbC4+PSh+aW5mLH5pbmYpID0gdHJ1ZQ0KUmVhbC49PSh+aW5mLH5pbmYpID0g
dHJ1ZQ0KUmVhbC4hPSh+aW5mLH5pbmYpID0gZmFsc2UNClJlYWwuPz0ofmluZix+aW5mKSA9IHRy
dWUNClJlYWwuPCh+aW5mLH4yKSA9IHRydWUNClJlYWwuPD0ofmluZix+MikgPSB0cnVlDQpSZWFs
Lj4ofmluZix+MikgPSBmYWxzZQ0KUmVhbC4+PSh+aW5mLH4yKSA9IGZhbHNlDQpSZWFsLj09KH5p
bmYsfjIpID0gZmFsc2UNClJlYWwuIT0ofmluZix+MikgPSB0cnVlDQpSZWFsLj89KH5pbmYsfjIp
ID0gZmFsc2UNClJlYWwuPCh+aW5mLH4xKSA9IHRydWUNClJlYWwuPD0ofmluZix+MSkgPSB0cnVl
DQpSZWFsLj4ofmluZix+MSkgPSBmYWxzZQ0KUmVhbC4+PSh+aW5mLH4xKSA9IGZhbHNlDQpSZWFs
Lj09KH5pbmYsfjEpID0gZmFsc2UNClJlYWwuIT0ofmluZix+MSkgPSB0cnVlDQpSZWFsLj89KH5p
bmYsfjEpID0gZmFsc2UNClJlYWwuPCh+aW5mLDAuMCkgPSB0cnVlDQpSZWFsLjw9KH5pbmYsMC4w
KSA9IHRydWUNClJlYWwuPih+aW5mLDAuMCkgPSBmYWxzZQ0KUmVhbC4+PSh+aW5mLDAuMCkgPSBm
YWxzZQ0KUmVhbC49PSh+aW5mLDAuMCkgPSBmYWxzZQ0KUmVhbC4hPSh+aW5mLDAuMCkgPSB0cnVl
DQpSZWFsLj89KH5pbmYsMC4wKSA9IGZhbHNlDQpSZWFsLjwofmluZiwwLjApID0gdHJ1ZQ0KUmVh
bC48PSh+aW5mLDAuMCkgPSB0cnVlDQpSZWFsLj4ofmluZiwwLjApID0gZmFsc2UNClJlYWwuPj0o
fmluZiwwLjApID0gZmFsc2UNClJlYWwuPT0ofmluZiwwLjApID0gZmFsc2UNClJlYWwuIT0ofmlu
ZiwwLjApID0gdHJ1ZQ0KUmVhbC4/PSh+aW5mLDAuMCkgPSBmYWxzZQ0KUmVhbC48KH5pbmYsMSkg
PSB0cnVlDQpSZWFsLjw9KH5pbmYsMSkgPSB0cnVlDQpSZWFsLj4ofmluZiwxKSA9IGZhbHNlDQpS
ZWFsLj49KH5pbmYsMSkgPSBmYWxzZQ0KUmVhbC49PSh+aW5mLDEpID0gZmFsc2UNClJlYWwuIT0o
fmluZiwxKSA9IHRydWUNClJlYWwuPz0ofmluZiwxKSA9IGZhbHNlDQpSZWFsLjwofmluZiwyKSA9
IHRydWUNClJlYWwuPD0ofmluZiwyKSA9IHRydWUNClJlYWwuPih+aW5mLDIpID0gZmFsc2UNClJl
YWwuPj0ofmluZiwyKSA9IGZhbHNlDQpSZWFsLj09KH5pbmYsMikgPSBmYWxzZQ0KUmVhbC4hPSh+
aW5mLDIpID0gdHJ1ZQ0KUmVhbC4/PSh+aW5mLDIpID0gZmFsc2UNClJlYWwuPCh+aW5mLGluZikg
PSB0cnVlDQpSZWFsLjw9KH5pbmYsaW5mKSA9IHRydWUNClJlYWwuPih+aW5mLGluZikgPSBmYWxz
ZQ0KUmVhbC4+PSh+aW5mLGluZikgPSBmYWxzZQ0KUmVhbC49PSh+aW5mLGluZikgPSBmYWxzZQ0K
UmVhbC4hPSh+aW5mLGluZikgPSB0cnVlDQpSZWFsLj89KH5pbmYsaW5mKSA9IGZhbHNlDQpSZWFs
LjwofjIsbmFuKSA9IGZhbHNlDQpSZWFsLjw9KH4yLG5hbikgPSBmYWxzZQ0KUmVhbC4+KH4yLG5h
bikgPSBmYWxzZQ0KUmVhbC4+PSh+MixuYW4pID0gZmFsc2UNClJlYWwuPT0ofjIsbmFuKSA9IGZh
bHNlDQpSZWFsLiE9KH4yLG5hbikgPSB0cnVlDQpSZWFsLj89KH4yLG5hbikgPSB0cnVlDQpSZWFs
LjwofjIsfmluZikgPSBmYWxzZQ0KUmVhbC48PSh+Mix+aW5mKSA9IGZhbHNlDQpSZWFsLj4ofjIs
fmluZikgPSB0cnVlDQpSZWFsLj49KH4yLH5pbmYpID0gdHJ1ZQ0KUmVhbC49PSh+Mix+aW5mKSA9
IGZhbHNlDQpSZWFsLiE9KH4yLH5pbmYpID0gdHJ1ZQ0KUmVhbC4/PSh+Mix+aW5mKSA9IGZhbHNl
DQpSZWFsLjwofjIsfjIpID0gZmFsc2UNClJlYWwuPD0ofjIsfjIpID0gdHJ1ZQ0KUmVhbC4+KH4y
LH4yKSA9IGZhbHNlDQpSZWFsLj49KH4yLH4yKSA9IHRydWUNClJlYWwuPT0ofjIsfjIpID0gdHJ1
ZQ0KUmVhbC4hPSh+Mix+MikgPSBmYWxzZQ0KUmVhbC4/PSh+Mix+MikgPSB0cnVlDQpSZWFsLjwo
fjIsfjEpID0gdHJ1ZQ0KUmVhbC48PSh+Mix+MSkgPSB0cnVlDQpSZWFsLj4ofjIsfjEpID0gZmFs
c2UNClJlYWwuPj0ofjIsfjEpID0gZmFsc2UNClJlYWwuPT0ofjIsfjEpID0gZmFsc2UNClJlYWwu
IT0ofjIsfjEpID0gdHJ1ZQ0KUmVhbC4/PSh+Mix+MSkgPSBmYWxzZQ0KUmVhbC48KH4yLDAuMCkg
PSB0cnVlDQpSZWFsLjw9KH4yLDAuMCkgPSB0cnVlDQpSZWFsLj4ofjIsMC4wKSA9IGZhbHNlDQpS
ZWFsLj49KH4yLDAuMCkgPSBmYWxzZQ0KUmVhbC49PSh+MiwwLjApID0gZmFsc2UNClJlYWwuIT0o
fjIsMC4wKSA9IHRydWUNClJlYWwuPz0ofjIsMC4wKSA9IGZhbHNlDQpSZWFsLjwofjIsMC4wKSA9
IHRydWUNClJlYWwuPD0ofjIsMC4wKSA9IHRydWUNClJlYWwuPih+MiwwLjApID0gZmFsc2UNClJl
YWwuPj0ofjIsMC4wKSA9IGZhbHNlDQpSZWFsLj09KH4yLDAuMCkgPSBmYWxzZQ0KUmVhbC4hPSh+
MiwwLjApID0gdHJ1ZQ0KUmVhbC4/PSh+MiwwLjApID0gZmFsc2UNClJlYWwuPCh+MiwxKSA9IHRy
dWUNClJlYWwuPD0ofjIsMSkgPSB0cnVlDQpSZWFsLj4ofjIsMSkgPSBmYWxzZQ0KUmVhbC4+PSh+
MiwxKSA9IGZhbHNlDQpSZWFsLj09KH4yLDEpID0gZmFsc2UNClJlYWwuIT0ofjIsMSkgPSB0cnVl
DQpSZWFsLj89KH4yLDEpID0gZmFsc2UNClJlYWwuPCh+MiwyKSA9IHRydWUNClJlYWwuPD0ofjIs
MikgPSB0cnVlDQpSZWFsLj4ofjIsMikgPSBmYWxzZQ0KUmVhbC4+PSh+MiwyKSA9IGZhbHNlDQpS
ZWFsLj09KH4yLDIpID0gZmFsc2UNClJlYWwuIT0ofjIsMikgPSB0cnVlDQpSZWFsLj89KH4yLDIp
ID0gZmFsc2UNClJlYWwuPCh+MixpbmYpID0gdHJ1ZQ0KUmVhbC48PSh+MixpbmYpID0gdHJ1ZQ0K
UmVhbC4+KH4yLGluZikgPSBmYWxzZQ0KUmVhbC4+PSh+MixpbmYpID0gZmFsc2UNClJlYWwuPT0o
fjIsaW5mKSA9IGZhbHNlDQpSZWFsLiE9KH4yLGluZikgPSB0cnVlDQpSZWFsLj89KH4yLGluZikg
PSBmYWxzZQ0KUmVhbC48KH4xLG5hbikgPSBmYWxzZQ0KUmVhbC48PSh+MSxuYW4pID0gZmFsc2UN
ClJlYWwuPih+MSxuYW4pID0gZmFsc2UNClJlYWwuPj0ofjEsbmFuKSA9IGZhbHNlDQpSZWFsLj09
KH4xLG5hbikgPSBmYWxzZQ0KUmVhbC4hPSh+MSxuYW4pID0gdHJ1ZQ0KUmVhbC4/PSh+MSxuYW4p
ID0gdHJ1ZQ0KUmVhbC48KH4xLH5pbmYpID0gZmFsc2UNClJlYWwuPD0ofjEsfmluZikgPSBmYWxz
ZQ0KUmVhbC4+KH4xLH5pbmYpID0gdHJ1ZQ0KUmVhbC4+PSh+MSx+aW5mKSA9IHRydWUNClJlYWwu
PT0ofjEsfmluZikgPSBmYWxzZQ0KUmVhbC4hPSh+MSx+aW5mKSA9IHRydWUNClJlYWwuPz0ofjEs
fmluZikgPSBmYWxzZQ0KUmVhbC48KH4xLH4yKSA9IGZhbHNlDQpSZWFsLjw9KH4xLH4yKSA9IGZh
bHNlDQpSZWFsLj4ofjEsfjIpID0gdHJ1ZQ0KUmVhbC4+PSh+MSx+MikgPSB0cnVlDQpSZWFsLj09
KH4xLH4yKSA9IGZhbHNlDQpSZWFsLiE9KH4xLH4yKSA9IHRydWUNClJlYWwuPz0ofjEsfjIpID0g
ZmFsc2UNClJlYWwuPCh+MSx+MSkgPSBmYWxzZQ0KUmVhbC48PSh+MSx+MSkgPSB0cnVlDQpSZWFs
Lj4ofjEsfjEpID0gZmFsc2UNClJlYWwuPj0ofjEsfjEpID0gdHJ1ZQ0KUmVhbC49PSh+MSx+MSkg
PSB0cnVlDQpSZWFsLiE9KH4xLH4xKSA9IGZhbHNlDQpSZWFsLj89KH4xLH4xKSA9IHRydWUNClJl
YWwuPCh+MSwwLjApID0gdHJ1ZQ0KUmVhbC48PSh+MSwwLjApID0gdHJ1ZQ0KUmVhbC4+KH4xLDAu
MCkgPSBmYWxzZQ0KUmVhbC4+PSh+MSwwLjApID0gZmFsc2UNClJlYWwuPT0ofjEsMC4wKSA9IGZh
bHNlDQpSZWFsLiE9KH4xLDAuMCkgPSB0cnVlDQpSZWFsLj89KH4xLDAuMCkgPSBmYWxzZQ0KUmVh
bC48KH4xLDAuMCkgPSB0cnVlDQpSZWFsLjw9KH4xLDAuMCkgPSB0cnVlDQpSZWFsLj4ofjEsMC4w
KSA9IGZhbHNlDQpSZWFsLj49KH4xLDAuMCkgPSBmYWxzZQ0KUmVhbC49PSh+MSwwLjApID0gZmFs
c2UNClJlYWwuIT0ofjEsMC4wKSA9IHRydWUNClJlYWwuPz0ofjEsMC4wKSA9IGZhbHNlDQpSZWFs
LjwofjEsMSkgPSB0cnVlDQpSZWFsLjw9KH4xLDEpID0gdHJ1ZQ0KUmVhbC4+KH4xLDEpID0gZmFs
c2UNClJlYWwuPj0ofjEsMSkgPSBmYWxzZQ0KUmVhbC49PSh+MSwxKSA9IGZhbHNlDQpSZWFsLiE9
KH4xLDEpID0gdHJ1ZQ0KUmVhbC4/PSh+MSwxKSA9IGZhbHNlDQpSZWFsLjwofjEsMikgPSB0cnVl
DQpSZWFsLjw9KH4xLDIpID0gdHJ1ZQ0KUmVhbC4+KH4xLDIpID0gZmFsc2UNClJlYWwuPj0ofjEs
MikgPSBmYWxzZQ0KUmVhbC49PSh+MSwyKSA9IGZhbHNlDQpSZWFsLiE9KH4xLDIpID0gdHJ1ZQ0K
UmVhbC4/PSh+MSwyKSA9IGZhbHNlDQpSZWFsLjwofjEsaW5mKSA9IHRydWUNClJlYWwuPD0ofjEs
aW5mKSA9IHRydWUNClJlYWwuPih+MSxpbmYpID0gZmFsc2UNClJlYWwuPj0ofjEsaW5mKSA9IGZh
bHNlDQpSZWFsLj09KH4xLGluZikgPSBmYWxzZQ0KUmVhbC4hPSh+MSxpbmYpID0gdHJ1ZQ0KUmVh
bC4/PSh+MSxpbmYpID0gZmFsc2UNClJlYWwuPCgwLjAsbmFuKSA9IGZhbHNlDQpSZWFsLjw9KDAu
MCxuYW4pID0gZmFsc2UNClJlYWwuPigwLjAsbmFuKSA9IGZhbHNlDQpSZWFsLj49KDAuMCxuYW4p
ID0gZmFsc2UNClJlYWwuPT0oMC4wLG5hbikgPSBmYWxzZQ0KUmVhbC4hPSgwLjAsbmFuKSA9IHRy
dWUNClJlYWwuPz0oMC4wLG5hbikgPSB0cnVlDQpSZWFsLjwoMC4wLH5pbmYpID0gZmFsc2UNClJl
YWwuPD0oMC4wLH5pbmYpID0gZmFsc2UNClJlYWwuPigwLjAsfmluZikgPSB0cnVlDQpSZWFsLj49
KDAuMCx+aW5mKSA9IHRydWUNClJlYWwuPT0oMC4wLH5pbmYpID0gZmFsc2UNClJlYWwuIT0oMC4w
LH5pbmYpID0gdHJ1ZQ0KUmVhbC4/PSgwLjAsfmluZikgPSBmYWxzZQ0KUmVhbC48KDAuMCx+Mikg
PSBmYWxzZQ0KUmVhbC48PSgwLjAsfjIpID0gZmFsc2UNClJlYWwuPigwLjAsfjIpID0gdHJ1ZQ0K
UmVhbC4+PSgwLjAsfjIpID0gdHJ1ZQ0KUmVhbC49PSgwLjAsfjIpID0gZmFsc2UNClJlYWwuIT0o
MC4wLH4yKSA9IHRydWUNClJlYWwuPz0oMC4wLH4yKSA9IGZhbHNlDQpSZWFsLjwoMC4wLH4xKSA9
IGZhbHNlDQpSZWFsLjw9KDAuMCx+MSkgPSBmYWxzZQ0KUmVhbC4+KDAuMCx+MSkgPSB0cnVlDQpS
ZWFsLj49KDAuMCx+MSkgPSB0cnVlDQpSZWFsLj09KDAuMCx+MSkgPSBmYWxzZQ0KUmVhbC4hPSgw
LjAsfjEpID0gdHJ1ZQ0KUmVhbC4/PSgwLjAsfjEpID0gZmFsc2UNClJlYWwuPCgwLjAsMC4wKSA9
IGZhbHNlDQpSZWFsLjw9KDAuMCwwLjApID0gdHJ1ZQ0KUmVhbC4+KDAuMCwwLjApID0gZmFsc2UN
ClJlYWwuPj0oMC4wLDAuMCkgPSB0cnVlDQpSZWFsLj09KDAuMCwwLjApID0gdHJ1ZQ0KUmVhbC4h
PSgwLjAsMC4wKSA9IGZhbHNlDQpSZWFsLj89KDAuMCwwLjApID0gdHJ1ZQ0KUmVhbC48KDAuMCww
LjApID0gZmFsc2UNClJlYWwuPD0oMC4wLDAuMCkgPSB0cnVlDQpSZWFsLj4oMC4wLDAuMCkgPSBm
YWxzZQ0KUmVhbC4+PSgwLjAsMC4wKSA9IHRydWUNClJlYWwuPT0oMC4wLDAuMCkgPSB0cnVlDQpS
ZWFsLiE9KDAuMCwwLjApID0gZmFsc2UNClJlYWwuPz0oMC4wLDAuMCkgPSB0cnVlDQpSZWFsLjwo
MC4wLDEpID0gdHJ1ZQ0KUmVhbC48PSgwLjAsMSkgPSB0cnVlDQpSZWFsLj4oMC4wLDEpID0gZmFs
c2UNClJlYWwuPj0oMC4wLDEpID0gZmFsc2UNClJlYWwuPT0oMC4wLDEpID0gZmFsc2UNClJlYWwu
IT0oMC4wLDEpID0gdHJ1ZQ0KUmVhbC4/PSgwLjAsMSkgPSBmYWxzZQ0KUmVhbC48KDAuMCwyKSA9
IHRydWUNClJlYWwuPD0oMC4wLDIpID0gdHJ1ZQ0KUmVhbC4+KDAuMCwyKSA9IGZhbHNlDQpSZWFs
Lj49KDAuMCwyKSA9IGZhbHNlDQpSZWFsLj09KDAuMCwyKSA9IGZhbHNlDQpSZWFsLiE9KDAuMCwy
KSA9IHRydWUNClJlYWwuPz0oMC4wLDIpID0gZmFsc2UNClJlYWwuPCgwLjAsaW5mKSA9IHRydWUN
ClJlYWwuPD0oMC4wLGluZikgPSB0cnVlDQpSZWFsLj4oMC4wLGluZikgPSBmYWxzZQ0KUmVhbC4+
PSgwLjAsaW5mKSA9IGZhbHNlDQpSZWFsLj09KDAuMCxpbmYpID0gZmFsc2UNClJlYWwuIT0oMC4w
LGluZikgPSB0cnVlDQpSZWFsLj89KDAuMCxpbmYpID0gZmFsc2UNClJlYWwuPCgwLjAsbmFuKSA9
IGZhbHNlDQpSZWFsLjw9KDAuMCxuYW4pID0gZmFsc2UNClJlYWwuPigwLjAsbmFuKSA9IGZhbHNl
DQpSZWFsLj49KDAuMCxuYW4pID0gZmFsc2UNClJlYWwuPT0oMC4wLG5hbikgPSBmYWxzZQ0KUmVh
bC4hPSgwLjAsbmFuKSA9IHRydWUNClJlYWwuPz0oMC4wLG5hbikgPSB0cnVlDQpSZWFsLjwoMC4w
LH5pbmYpID0gZmFsc2UNClJlYWwuPD0oMC4wLH5pbmYpID0gZmFsc2UNClJlYWwuPigwLjAsfmlu
ZikgPSB0cnVlDQpSZWFsLj49KDAuMCx+aW5mKSA9IHRydWUNClJlYWwuPT0oMC4wLH5pbmYpID0g
ZmFsc2UNClJlYWwuIT0oMC4wLH5pbmYpID0gdHJ1ZQ0KUmVhbC4/PSgwLjAsfmluZikgPSBmYWxz
ZQ0KUmVhbC48KDAuMCx+MikgPSBmYWxzZQ0KUmVhbC48PSgwLjAsfjIpID0gZmFsc2UNClJlYWwu
PigwLjAsfjIpID0gdHJ1ZQ0KUmVhbC4+PSgwLjAsfjIpID0gdHJ1ZQ0KUmVhbC49PSgwLjAsfjIp
ID0gZmFsc2UNClJlYWwuIT0oMC4wLH4yKSA9IHRydWUNClJlYWwuPz0oMC4wLH4yKSA9IGZhbHNl
DQpSZWFsLjwoMC4wLH4xKSA9IGZhbHNlDQpSZWFsLjw9KDAuMCx+MSkgPSBmYWxzZQ0KUmVhbC4+
KDAuMCx+MSkgPSB0cnVlDQpSZWFsLj49KDAuMCx+MSkgPSB0cnVlDQpSZWFsLj09KDAuMCx+MSkg
PSBmYWxzZQ0KUmVhbC4hPSgwLjAsfjEpID0gdHJ1ZQ0KUmVhbC4/PSgwLjAsfjEpID0gZmFsc2UN
ClJlYWwuPCgwLjAsMC4wKSA9IGZhbHNlDQpSZWFsLjw9KDAuMCwwLjApID0gdHJ1ZQ0KUmVhbC4+
KDAuMCwwLjApID0gZmFsc2UNClJlYWwuPj0oMC4wLDAuMCkgPSB0cnVlDQpSZWFsLj09KDAuMCww
LjApID0gdHJ1ZQ0KUmVhbC4hPSgwLjAsMC4wKSA9IGZhbHNlDQpSZWFsLj89KDAuMCwwLjApID0g
dHJ1ZQ0KUmVhbC48KDAuMCwwLjApID0gZmFsc2UNClJlYWwuPD0oMC4wLDAuMCkgPSB0cnVlDQpS
ZWFsLj4oMC4wLDAuMCkgPSBmYWxzZQ0KUmVhbC4+PSgwLjAsMC4wKSA9IHRydWUNClJlYWwuPT0o
MC4wLDAuMCkgPSB0cnVlDQpSZWFsLiE9KDAuMCwwLjApID0gZmFsc2UNClJlYWwuPz0oMC4wLDAu
MCkgPSB0cnVlDQpSZWFsLjwoMC4wLDEpID0gdHJ1ZQ0KUmVhbC48PSgwLjAsMSkgPSB0cnVlDQpS
ZWFsLj4oMC4wLDEpID0gZmFsc2UNClJlYWwuPj0oMC4wLDEpID0gZmFsc2UNClJlYWwuPT0oMC4w
LDEpID0gZmFsc2UNClJlYWwuIT0oMC4wLDEpID0gdHJ1ZQ0KUmVhbC4/PSgwLjAsMSkgPSBmYWxz
ZQ0KUmVhbC48KDAuMCwyKSA9IHRydWUNClJlYWwuPD0oMC4wLDIpID0gdHJ1ZQ0KUmVhbC4+KDAu
MCwyKSA9IGZhbHNlDQpSZWFsLj49KDAuMCwyKSA9IGZhbHNlDQpSZWFsLj09KDAuMCwyKSA9IGZh
bHNlDQpSZWFsLiE9KDAuMCwyKSA9IHRydWUNClJlYWwuPz0oMC4wLDIpID0gZmFsc2UNClJlYWwu
PCgwLjAsaW5mKSA9IHRydWUNClJlYWwuPD0oMC4wLGluZikgPSB0cnVlDQpSZWFsLj4oMC4wLGlu
ZikgPSBmYWxzZQ0KUmVhbC4+PSgwLjAsaW5mKSA9IGZhbHNlDQpSZWFsLj09KDAuMCxpbmYpID0g
ZmFsc2UNClJlYWwuIT0oMC4wLGluZikgPSB0cnVlDQpSZWFsLj89KDAuMCxpbmYpID0gZmFsc2UN
ClJlYWwuPCgxLG5hbikgPSBmYWxzZQ0KUmVhbC48PSgxLG5hbikgPSBmYWxzZQ0KUmVhbC4+KDEs
bmFuKSA9IGZhbHNlDQpSZWFsLj49KDEsbmFuKSA9IGZhbHNlDQpSZWFsLj09KDEsbmFuKSA9IGZh
bHNlDQpSZWFsLiE9KDEsbmFuKSA9IHRydWUNClJlYWwuPz0oMSxuYW4pID0gdHJ1ZQ0KUmVhbC48
KDEsfmluZikgPSBmYWxzZQ0KUmVhbC48PSgxLH5pbmYpID0gZmFsc2UNClJlYWwuPigxLH5pbmYp
ID0gdHJ1ZQ0KUmVhbC4+PSgxLH5pbmYpID0gdHJ1ZQ0KUmVhbC49PSgxLH5pbmYpID0gZmFsc2UN
ClJlYWwuIT0oMSx+aW5mKSA9IHRydWUNClJlYWwuPz0oMSx+aW5mKSA9IGZhbHNlDQpSZWFsLjwo
MSx+MikgPSBmYWxzZQ0KUmVhbC48PSgxLH4yKSA9IGZhbHNlDQpSZWFsLj4oMSx+MikgPSB0cnVl
DQpSZWFsLj49KDEsfjIpID0gdHJ1ZQ0KUmVhbC49PSgxLH4yKSA9IGZhbHNlDQpSZWFsLiE9KDEs
fjIpID0gdHJ1ZQ0KUmVhbC4/PSgxLH4yKSA9IGZhbHNlDQpSZWFsLjwoMSx+MSkgPSBmYWxzZQ0K
UmVhbC48PSgxLH4xKSA9IGZhbHNlDQpSZWFsLj4oMSx+MSkgPSB0cnVlDQpSZWFsLj49KDEsfjEp
ID0gdHJ1ZQ0KUmVhbC49PSgxLH4xKSA9IGZhbHNlDQpSZWFsLiE9KDEsfjEpID0gdHJ1ZQ0KUmVh
bC4/PSgxLH4xKSA9IGZhbHNlDQpSZWFsLjwoMSwwLjApID0gZmFsc2UNClJlYWwuPD0oMSwwLjAp
ID0gZmFsc2UNClJlYWwuPigxLDAuMCkgPSB0cnVlDQpSZWFsLj49KDEsMC4wKSA9IHRydWUNClJl
YWwuPT0oMSwwLjApID0gZmFsc2UNClJlYWwuIT0oMSwwLjApID0gdHJ1ZQ0KUmVhbC4/PSgxLDAu
MCkgPSBmYWxzZQ0KUmVhbC48KDEsMC4wKSA9IGZhbHNlDQpSZWFsLjw9KDEsMC4wKSA9IGZhbHNl
DQpSZWFsLj4oMSwwLjApID0gdHJ1ZQ0KUmVhbC4+PSgxLDAuMCkgPSB0cnVlDQpSZWFsLj09KDEs
MC4wKSA9IGZhbHNlDQpSZWFsLiE9KDEsMC4wKSA9IHRydWUNClJlYWwuPz0oMSwwLjApID0gZmFs
c2UNClJlYWwuPCgxLDEpID0gZmFsc2UNClJlYWwuPD0oMSwxKSA9IHRydWUNClJlYWwuPigxLDEp
ID0gZmFsc2UNClJlYWwuPj0oMSwxKSA9IHRydWUNClJlYWwuPT0oMSwxKSA9IHRydWUNClJlYWwu
IT0oMSwxKSA9IGZhbHNlDQpSZWFsLj89KDEsMSkgPSB0cnVlDQpSZWFsLjwoMSwyKSA9IHRydWUN
ClJlYWwuPD0oMSwyKSA9IHRydWUNClJlYWwuPigxLDIpID0gZmFsc2UNClJlYWwuPj0oMSwyKSA9
IGZhbHNlDQpSZWFsLj09KDEsMikgPSBmYWxzZQ0KUmVhbC4hPSgxLDIpID0gdHJ1ZQ0KUmVhbC4/
PSgxLDIpID0gZmFsc2UNClJlYWwuPCgxLGluZikgPSB0cnVlDQpSZWFsLjw9KDEsaW5mKSA9IHRy
dWUNClJlYWwuPigxLGluZikgPSBmYWxzZQ0KUmVhbC4+PSgxLGluZikgPSBmYWxzZQ0KUmVhbC49
PSgxLGluZikgPSBmYWxzZQ0KUmVhbC4hPSgxLGluZikgPSB0cnVlDQpSZWFsLj89KDEsaW5mKSA9
IGZhbHNlDQpSZWFsLjwoMixuYW4pID0gZmFsc2UNClJlYWwuPD0oMixuYW4pID0gZmFsc2UNClJl
YWwuPigyLG5hbikgPSBmYWxzZQ0KUmVhbC4+PSgyLG5hbikgPSBmYWxzZQ0KUmVhbC49PSgyLG5h
bikgPSBmYWxzZQ0KUmVhbC4hPSgyLG5hbikgPSB0cnVlDQpSZWFsLj89KDIsbmFuKSA9IHRydWUN
ClJlYWwuPCgyLH5pbmYpID0gZmFsc2UNClJlYWwuPD0oMix+aW5mKSA9IGZhbHNlDQpSZWFsLj4o
Mix+aW5mKSA9IHRydWUNClJlYWwuPj0oMix+aW5mKSA9IHRydWUNClJlYWwuPT0oMix+aW5mKSA9
IGZhbHNlDQpSZWFsLiE9KDIsfmluZikgPSB0cnVlDQpSZWFsLj89KDIsfmluZikgPSBmYWxzZQ0K
UmVhbC48KDIsfjIpID0gZmFsc2UNClJlYWwuPD0oMix+MikgPSBmYWxzZQ0KUmVhbC4+KDIsfjIp
ID0gdHJ1ZQ0KUmVhbC4+PSgyLH4yKSA9IHRydWUNClJlYWwuPT0oMix+MikgPSBmYWxzZQ0KUmVh
bC4hPSgyLH4yKSA9IHRydWUNClJlYWwuPz0oMix+MikgPSBmYWxzZQ0KUmVhbC48KDIsfjEpID0g
ZmFsc2UNClJlYWwuPD0oMix+MSkgPSBmYWxzZQ0KUmVhbC4+KDIsfjEpID0gdHJ1ZQ0KUmVhbC4+
PSgyLH4xKSA9IHRydWUNClJlYWwuPT0oMix+MSkgPSBmYWxzZQ0KUmVhbC4hPSgyLH4xKSA9IHRy
dWUNClJlYWwuPz0oMix+MSkgPSBmYWxzZQ0KUmVhbC48KDIsMC4wKSA9IGZhbHNlDQpSZWFsLjw9
KDIsMC4wKSA9IGZhbHNlDQpSZWFsLj4oMiwwLjApID0gdHJ1ZQ0KUmVhbC4+PSgyLDAuMCkgPSB0
cnVlDQpSZWFsLj09KDIsMC4wKSA9IGZhbHNlDQpSZWFsLiE9KDIsMC4wKSA9IHRydWUNClJlYWwu
Pz0oMiwwLjApID0gZmFsc2UNClJlYWwuPCgyLDAuMCkgPSBmYWxzZQ0KUmVhbC48PSgyLDAuMCkg
PSBmYWxzZQ0KUmVhbC4+KDIsMC4wKSA9IHRydWUNClJlYWwuPj0oMiwwLjApID0gdHJ1ZQ0KUmVh
bC49PSgyLDAuMCkgPSBmYWxzZQ0KUmVhbC4hPSgyLDAuMCkgPSB0cnVlDQpSZWFsLj89KDIsMC4w
KSA9IGZhbHNlDQpSZWFsLjwoMiwxKSA9IGZhbHNlDQpSZWFsLjw9KDIsMSkgPSBmYWxzZQ0KUmVh
bC4+KDIsMSkgPSB0cnVlDQpSZWFsLj49KDIsMSkgPSB0cnVlDQpSZWFsLj09KDIsMSkgPSBmYWxz
ZQ0KUmVhbC4hPSgyLDEpID0gdHJ1ZQ0KUmVhbC4/PSgyLDEpID0gZmFsc2UNClJlYWwuPCgyLDIp
ID0gZmFsc2UNClJlYWwuPD0oMiwyKSA9IHRydWUNClJlYWwuPigyLDIpID0gZmFsc2UNClJlYWwu
Pj0oMiwyKSA9IHRydWUNClJlYWwuPT0oMiwyKSA9IHRydWUNClJlYWwuIT0oMiwyKSA9IGZhbHNl
DQpSZWFsLj89KDIsMikgPSB0cnVlDQpSZWFsLjwoMixpbmYpID0gdHJ1ZQ0KUmVhbC48PSgyLGlu
ZikgPSB0cnVlDQpSZWFsLj4oMixpbmYpID0gZmFsc2UNClJlYWwuPj0oMixpbmYpID0gZmFsc2UN
ClJlYWwuPT0oMixpbmYpID0gZmFsc2UNClJlYWwuIT0oMixpbmYpID0gdHJ1ZQ0KUmVhbC4/PSgy
LGluZikgPSBmYWxzZQ0KUmVhbC48KGluZixuYW4pID0gZmFsc2UNClJlYWwuPD0oaW5mLG5hbikg
PSBmYWxzZQ0KUmVhbC4+KGluZixuYW4pID0gZmFsc2UNClJlYWwuPj0oaW5mLG5hbikgPSBmYWxz
ZQ0KUmVhbC49PShpbmYsbmFuKSA9IGZhbHNlDQpSZWFsLiE9KGluZixuYW4pID0gdHJ1ZQ0KUmVh
bC4/PShpbmYsbmFuKSA9IHRydWUNClJlYWwuPChpbmYsfmluZikgPSBmYWxzZQ0KUmVhbC48PShp
bmYsfmluZikgPSBmYWxzZQ0KUmVhbC4+KGluZix+aW5mKSA9IHRydWUNClJlYWwuPj0oaW5mLH5p
bmYpID0gdHJ1ZQ0KUmVhbC49PShpbmYsfmluZikgPSBmYWxzZQ0KUmVhbC4hPShpbmYsfmluZikg
PSB0cnVlDQpSZWFsLj89KGluZix+aW5mKSA9IGZhbHNlDQpSZWFsLjwoaW5mLH4yKSA9IGZhbHNl
DQpSZWFsLjw9KGluZix+MikgPSBmYWxzZQ0KUmVhbC4+KGluZix+MikgPSB0cnVlDQpSZWFsLj49
KGluZix+MikgPSB0cnVlDQpSZWFsLj09KGluZix+MikgPSBmYWxzZQ0KUmVhbC4hPShpbmYsfjIp
ID0gdHJ1ZQ0KUmVhbC4/PShpbmYsfjIpID0gZmFsc2UNClJlYWwuPChpbmYsfjEpID0gZmFsc2UN
ClJlYWwuPD0oaW5mLH4xKSA9IGZhbHNlDQpSZWFsLj4oaW5mLH4xKSA9IHRydWUNClJlYWwuPj0o
aW5mLH4xKSA9IHRydWUNClJlYWwuPT0oaW5mLH4xKSA9IGZhbHNlDQpSZWFsLiE9KGluZix+MSkg
PSB0cnVlDQpSZWFsLj89KGluZix+MSkgPSBmYWxzZQ0KUmVhbC48KGluZiwwLjApID0gZmFsc2UN
ClJlYWwuPD0oaW5mLDAuMCkgPSBmYWxzZQ0KUmVhbC4+KGluZiwwLjApID0gdHJ1ZQ0KUmVhbC4+
PShpbmYsMC4wKSA9IHRydWUNClJlYWwuPT0oaW5mLDAuMCkgPSBmYWxzZQ0KUmVhbC4hPShpbmYs
MC4wKSA9IHRydWUNClJlYWwuPz0oaW5mLDAuMCkgPSBmYWxzZQ0KUmVhbC48KGluZiwwLjApID0g
ZmFsc2UNClJlYWwuPD0oaW5mLDAuMCkgPSBmYWxzZQ0KUmVhbC4+KGluZiwwLjApID0gdHJ1ZQ0K
UmVhbC4+PShpbmYsMC4wKSA9IHRydWUNClJlYWwuPT0oaW5mLDAuMCkgPSBmYWxzZQ0KUmVhbC4h
PShpbmYsMC4wKSA9IHRydWUNClJlYWwuPz0oaW5mLDAuMCkgPSBmYWxzZQ0KUmVhbC48KGluZiwx
KSA9IGZhbHNlDQpSZWFsLjw9KGluZiwxKSA9IGZhbHNlDQpSZWFsLj4oaW5mLDEpID0gdHJ1ZQ0K
UmVhbC4+PShpbmYsMSkgPSB0cnVlDQpSZWFsLj09KGluZiwxKSA9IGZhbHNlDQpSZWFsLiE9KGlu
ZiwxKSA9IHRydWUNClJlYWwuPz0oaW5mLDEpID0gZmFsc2UNClJlYWwuPChpbmYsMikgPSBmYWxz
ZQ0KUmVhbC48PShpbmYsMikgPSBmYWxzZQ0KUmVhbC4+KGluZiwyKSA9IHRydWUNClJlYWwuPj0o
aW5mLDIpID0gdHJ1ZQ0KUmVhbC49PShpbmYsMikgPSBmYWxzZQ0KUmVhbC4hPShpbmYsMikgPSB0
cnVlDQpSZWFsLj89KGluZiwyKSA9IGZhbHNlDQpSZWFsLjwoaW5mLGluZikgPSBmYWxzZQ0KUmVh
bC48PShpbmYsaW5mKSA9IHRydWUNClJlYWwuPihpbmYsaW5mKSA9IGZhbHNlDQpSZWFsLj49KGlu
ZixpbmYpID0gdHJ1ZQ0KUmVhbC49PShpbmYsaW5mKSA9IHRydWUNClJlYWwuIT0oaW5mLGluZikg
PSBmYWxzZQ0KUmVhbC4/PShpbmYsaW5mKSA9IHRydWUNCg==

---559023410-630072926-968782863=:25347
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="realcomp.sml"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.SOL.3.95.1000912142103.25347R@hoho.cs.cornell.edu>
Content-Description: 

dmFsIHggPSAxLjAvMC4wICsgfjEuMC8wLjA7DQp2YWwgeSA9IH4xLjAvMC4wDQp2YWwgeiA9IDEu
MC8wLjANCnZhbCBsID0gW3gseSx+Mi4wLH4xLjAsfjAuMCwwLjAsMS4wLDIuMCx6XQ0KDQpmdW4g
Y3Jvc3MnIChbXSxsKSA9IFtdDQogIHwgY3Jvc3MnIChoOjp0LGwpID0gKG1hcCAoZm4geCA9PiAo
aCx4KSkgbCkgQCAoY3Jvc3MnICh0LGwpKQ0KZnVuIGNyb3NzIGwgPSBjcm9zcycobCxsKQ0KDQp2
YWwgXyA9IExpc3QuYXBwDQogICAgICAgIChmbiAocCBhcyAoeCx5KSkNCgkgID0+IGxldA0KCSAg
ICAgICB2YWwgeHN0ciA9IFJlYWwudG9TdHJpbmcgeA0KCSAgICAgICB2YWwgeXN0ciA9IFJlYWwu
dG9TdHJpbmcgeQ0KCSAgICAgICB2YWwgcHN0ciA9IGNvbmNhdFsiKCIsIHhzdHIsICIsIiwgeXN0
ciwgIikiXQ0KCSAgICAgaW4NCgkgICAgICAgTGlzdC5hcHANCgkgICAgICAgKGZuIChvcGVyLG9w
ZXJzdHIpDQoJCSA9PiBwcmludCAoY29uY2F0W29wZXJzdHIsDQoJCQkJICBwc3RyLA0KCQkJCSAg
IiA9ICIsDQoJCQkJICBCb29sLnRvU3RyaW5nIChvcGVyIHApLA0KCQkJCSAgIlxuIl0pKQ0KCSAg
ICAgICBbKFJlYWwuPCwiUmVhbC48IiksDQoJCShSZWFsLjw9LCJSZWFsLjw9IiksDQoJCShSZWFs
Lj4sIlJlYWwuPiIpLA0KCQkoUmVhbC4+PSwiUmVhbC4+PSIpLA0KCQkoUmVhbC49PSwiUmVhbC49
PSIpLA0KCQkoUmVhbC4hPSwiUmVhbC4hPSIpLA0KCQkoUmVhbC4/PSwiUmVhbC4/PSIpXQ0KCSAg
ICAgZW5kKQ0KCShjcm9zcyBsKQ0K

---559023410-630072926-968782863=:25347--