Fwd: FP using CL

Pascal Bourguignon <[email protected]> Thu, 6 May 2021 18:19:00 +0200
Newsgroups gmane.lisp.clisp.general
Message-ID <[email protected]>
CgoKLS0tLS0tLS0gTWVzc2FnZSB0cmFuc2bDqXLDqSAtLS0tLS0tLQpTdWJqZWN0OiBSZTogW2Ns
aXNwLWxpc3RdIEZQIHVzaW5nIENMClRvOiBEdWtlIE5vcm1hbmRpbiA8ZHVrZW9mcHVybEBnbXgu
Y29tPgpSZWZlcmVuY2VzOiA8MjAyMTA1MDExMjAwNTYuYmI2Mjk3NjUxNmY3ZWE5Zjk4NDc4Njk2
QGdteC5jb20+CkZyb206IFBhc2NhbCBCb3VyZ3VpZ25vbiA8cGpiQGluZm9ybWF0aW1hZ28uY29t
PgpNZXNzYWdlLUlEOiA8OTE3YzU3MzItZWRiYi1kODI5LTE2NjctNDI0NTY0YTIwMzk0QGluZm9y
bWF0aW1hZ28uY29tPgpEYXRlOiBTdW4sIDIgTWF5IDIwMjEgMDI6MDM6MTggKzAyMDAKVXNlci1B
Z2VudDogTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTAuMTU7IHJ2Ojc4
LjApIApHZWNrby8yMDEwMDEwMSBUaHVuZGVyYmlyZC83OC4xMC4wCk1JTUUtVmVyc2lvbjogMS4w
CkluLVJlcGx5LVRvOiA8MjAyMTA1MDExMjAwNTYuYmI2Mjk3NjUxNmY3ZWE5Zjk4NDc4Njk2QGdt
eC5jb20+CkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODsgZm9ybWF0PWZs
b3dlZApDb250ZW50LUxhbmd1YWdlOiBmcgpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0
CgpMZSAwMS8wNS8yMDIxIMOgIDIwOjAwLCBEdWtlIE5vcm1hbmRpbiBhIMOpY3JpdMKgOgo+IE5v
b2IgaGVyZSEKPiAKPiBBbGwgb2YgbXkgcHJldmlvdXMgbm9uLXBybywgaG9iYnlpc3QgaGFja2lu
ZyBleHBlcmllbmNlIGhhcyBiZWVuIGltcGVyYXRpdmUuCj4gSSB3YW50IHRvIGdpdmUgRlAgYSBz
aG90IHVzaW5nIENMLgo+IFByb2JsZW06IEkgZG9uJ3Qgc2VlbSB0byBncm9rIGhvdyB0byBzdGFy
dCB0aGUgcHJvY2VzcyBvZiBjcmVhdGluZyBhIENMIHByb2dyYW0gdXNpbmcgKipqdXN0KiogZnVu
Y3Rpb25zLgo+IAo+IEkgbWVhbiwgSSBjYW4gZmxvd2NoYXJ0IGFuIGltcGVyYXRpdmUtc3R5bGVk
IHByb2dyYW0gdy9vIHRvbyBtdWNoIGRpZmZpY3VsdHkuCj4gTmVlZCB0byBncm9rIGhvdyB0byBk
byBzYW1lIGluIEZQLXN0eWxlIHdpdGggQ0wuCj4gCj4gSSBjYW4gbGVhcm4gdGhlIENML1NjaGVt
ZS9ldCBhbCBzeW50YXgsIGJ1dCBpdCdzIHRoZSAiVGhpbmtpbmcgaW4gRlAiIHRoYXQncyBraWxs
aW5nIG1lLiA6KQo+IAo+IEFueSBsZWFkcyB0byByZWxldmFudCBvbmxpbmUgcmVzb3VyY2Uocyk/
IFRJQSAuLi4KCkkgd291bGQgYWR2aXNlIHRvIHN0YXJ0IHdpdGggQmFjaHVzJ3MgZnVuZGF0aW9u
YWwgcGFwZXIuCgpodHRwczovL2RsLmFjbS5vcmcvZG9pL3BkZi8xMC4xMTQ1LzM1OTU3Ni4zNTk1
NzkKaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1GeGNUNHZLMDEtdwpodHRwczovL3d3
dy55b3V0dWJlLmNvbS93YXRjaD92PU94dVBaWFhpd0trCgoKTm93LCB5b3UgZG9uJ3QgaGF2ZSB0
byB1c2UgKmp1c3QqIGZ1bmN0aW9ucywgYnV0IGluZGVlZCB0aGUgaWRlYSBpcyB0byAKYnVpbGQg
ZnVuY3Rpb25zIGZyb20gb3RoZXIgZnVuY3Rpb25zIHVzaW5nIGZ1bmN0aW9uIG9wZXJhdG9ycyAo
c3VjaCBhcyAKdGhlIGZ1bmN0aW9uIGNvbXBvc2l0aW9uIG9wZXJhdG9yIGZvciBleGFtcGxlKSwg
aW5zdGVhZCBvZiBkZWZpbml0aW5nIAp0aGUgZnVuY3Rpb25zIGRldGFpbGluZyBlYWNoIG9wZXJh
dGlvbiBlbGVtZW50IGJ5IGVsZW1lbnQuCgpBIGZ1bmN0aW9uIHRha2VzIGVsZW1lbnRzIGZyb20g
YSBzb3VyY2Ugc2V0LCBhbmQgcmV0dXJuIGVsZW1lbnRzIGluIGFuIAppbWFnZSBzZXQuICBUaGUg
dXN1YWwgcHJvZ3JhbW1pbmcgd2lsbCBnaXZlIGFuIGV4cHJlc3Npb24gb2YgdGhlIGltYWdlIApl
bGVtZW50ICJpbiBmdW5jdGlvbiBvZiIgdGhlIGVsZW1lbnQgb2YgdGhlIHNvdXJjZSBzZXQuCgoK
TGV0J3MgZGVmaW5lIGFuIGFmZmluZSBmdW5jdGlvbiBhOgoKYSA6IOKEpCDihpIg4oSkCiAgICAg
eCDihqYgMngrMQoKb3IgaW4gbGlzcDoKCiAgICAgKGRlZnVuIGEgKHgpCiAgICAgICAoKyAoKiAy
IHgpIDEpKQoKCkJ1dCBpZiB3ZSBkZWZpbmUgdGhlIGZ1bmN0aW9uIDIqIChvciBkb3VibGUpOgoK
MiogOiDihKQg4oaSIOKEpAogICAgICB4IOKGpiAyeAoKYW5kIHRoZSBmdW5jdGlvbiAxKyAob3Ig
c3VjY2Vzc29yKToKCjErIDog4oSkIOKGkiDihKQKICAgICAgeCDihqYgeCsxCgpUaGVuIGluc3Rl
YWQgb2YgZGVmaW5pbmcgYSBnaXZpbmcgYW4gZXhwcmVzc2lvbiBlbGVtZW50IGJ5IGVsZW1lbnQ6
CgphIDog4oSkIOKGkiDihKQKICAgICB4IOKGpiAyeCsxCgp3ZSBjYW4gd3JpdGUgYSBmdW5jdGlv
bmFsIGV4cHJlc3Npb246CgphID0gMSsg4oiYIDIqCgpVc2luZyB0aGUgY29tcG9zaXRpb24gb3Bl
cmF0aW9uIGJldHdlZW4gdHdvIGZ1bmN0aW9ucyBm4oiYZyh4KSA9IGYoZyh4KSkKClNvOiAgYSh4
KSA9IDErIOKImCAyKiAoeCkgPSAxKygyKih4KSkgPSAxKygyKngpID0gMSsyKnggPSAyKngrMQoK
Tm90ZSB0aGF0IENvbW1vbiBMaXNwIGFscmVhZHkgaGFzIGEgZnVuY3Rpb24gMSsgKGFuZCAxLSBm
b3IgeC0xKS4KV2Ugb25seSBuZWVkIHRvIGRlZmluZSBkb3VibGUgYW5kIGNvbXBvc2U6CgogICAg
IChkZWZ1biBjb21wb3NlIChmIGcpIChsYW1iZGEgKHgpIChmdW5jYWxsIGYgKGZ1bmNhbGwgZyB4
KSkpKQoKICAgICAoZGVmdW4gdGltZXMgKG4pIChsYW1iZGEgKHgpICgqIHggbikpKQoKICAgICAo
ZGVmbWFjcm8gZGVmaW5lIChmbmFtZSBmZXhwcmVzc2lvbikKICAgICAgICBgKHByb2duCiAgICAg
ICAgICAgKGRlY2xhaW0gKGZ0eXBlIChmdW5jdGlvbiAodCkgdCkgLGZuYW1lKSkKICAgICAgICAg
ICAoc2V0ZiAoc3ltYm9sLWZ1bmN0aW9uICcsZm5hbWUpICxmZXhwcmVzc2lvbikpKQoKICAgICAo
ZGVmaW5lIGRvdWJsZSAodGltZXMgMikpCiAgICAgKGRlZmluZSBhIChjb21wb3NlIChmdW5jdGlv
biAxKykgKGZ1bmN0aW9uIGRvdWJsZSkpKQoKICAgICAobWFwY2FyIChmdW5jdGlvbiBhKSAoaW90
YSAxMCkpCiAgICAgLS0+ICgxIDMgNSA3IDkgMTEgMTMgMTUgMTcgMTkpCgpOb3RlIGhvdyBJIHVz
ZWQgbWFwY2FyLCBhbmQgbm90IGEgcHJvY2VkdXJhbCBkb3RpbWVzLCBzbyBJIGdldCB0aGUKcmVz
dWx0cyBmb3IgYWxsIHRoZSBlbGVtZW50cyBvZiB0aGUgaW5wdXQgc2V0IChpb3RhIDEwKSBhdCBv
bmNlLAppbnN0ZWFkIG9mIGNvbXB1dGluZyBhbmQgZ2V0dGluZyB0aGUgcmVzdWx0IGVsZW1lbnQg
YnkgZWxlbWVudDoKCiAgICAgKGRvdGltZXMgKGkgMTApCiAgICAgICAocHJpbnQgKGEgaSkpKQoK
ICAgICAxCiAgICAgMwogICAgIDUKICAgICA3CiAgICAgOQogICAgIDExCiAgICAgMTMKICAgICAx
NQogICAgIDE3CiAgICAgMTkKCk5vdyB0aGUgcXVlc3Rpb24gaXMgdG8gY29sbGVjdCBhIGxpYnJh
cnkgb2YgZnVuY3Rpb25hbCBvcGVyYXRvcnMgdGhhdAp3aWxsIGhlbHAgdXMgd3JpdGluZyBzdWNo
IGZ1bmN0aW9uYWwgZXhwcmVzc2lvbnMgZWFzaWx5IGFuZApleHByZXNzaXZlbHkuICBBbmQgbm90
IGFsbCBmdW5jdGlvbnMgaW4gdGhlIENMIGxpYnJhcnkgYXJlIGNvbmR1Y3RpdmUKdG8gZWFzeSBi
dWlsZGluZyBmdW5jdGlvbmFsIGV4cHJlc3Npb25zIGZyb20gdGhlbS4gIFNvIHdlIG1heSBhbHNv
CmhhdmUgdG8gcmV3cml0ZSBzb21lIGxpYnJhcnkgZnVuY3Rpb25zLgoKClNvIGhlcmUgaXMgYW5v
dGhlciBleGFtcGxlOyB3ZSBjb3VsZCB3cml0ZToKCiAgICAgKGRlZnVuIG1pbnVzIChuKSAobGFt
YmRhICh4KSAoLSB4IG4pKSkKICAgICAoZGVmdW4gcGFydGlhbCAoZiB4KQogICAgICAgKGxhbWJk
YSAoeSkgKGZ1bmNhbGwgZiB4IHkpKSkKCiAgICAgKG1hcGNhcgogICAgICAoY29tcG9zZSAocGFy
dGlhbCAoZnVuY3Rpb24gcmVkdWNlKSAoZnVuY3Rpb24gKykpCiAgICAgICAgICAgICAgIChsYW1i
ZGEgKHgpCiAgICAgICAgICAgICAgICAgKG1hcGNhciAobGFtYmRhIChmKSAoZnVuY2FsbCBmIHgp
KQogICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGZ1bmN0aW9uIGlkZW50aXR5KQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbXBvc2UgKG1pbnVzIDEwKSAoZnVuY3Rpb24g
YSkpKSkpKQogICAgICAoaW90YSAxMCkpCiAgICAgLS0+ICgtOSAtNiAtMyAwIDMgNiA5IDEyIDE1
IDE4KQoKICAgICAobGlzdCAoZnVuY3Rpb24gaWRlbnRpdHkpCiAgICAgICAgICAgKGNvbXBvc2Ug
KG1pbnVzIDEwKSAoZnVuY3Rpb24gYSkpKQoKICAgICAtLT4gKCM8Q29tcGlsZWQtZnVuY3Rpb24g
aWRlbnRpdHkgI3gzMDAwMDAxMkQ1RkY+CiAgICAgICAgICM8Y2NsOmNvbXBpbGVkLWxleGljYWwt
Y2xvc3VyZSAoOmludGVybmFsIGNvbXBvc2UpICN4MzAyMDAyNzVFOTlGPikKCmJ1aWxkcyBhIGxp
c3Qgb2YgMiBmdW5jdGlvbnMsIGlkZW50aXR5ID0geCDihqYgeAphbmQgYS0xMCA9IHgg4oamICgy
KngpKzEtMTAgPSAyKngtOQoKCiAgICAgICAgICAgKGxhbWJkYSAoeCkKICAgICAgICAgICAgICht
YXBjYXIgKGxhbWJkYSAoZikgKGZ1bmNhbGwgZiB4KSkKICAgICAgICAgICAgICAgICAgICAgKGxp
c3QgKGZ1bmN0aW9uIGlkZW50aXR5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tcG9z
ZSAobWludXMgMTApIChmdW5jdGlvbiBhKSkpKSkKCgppcyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMg
YW4gYXJndW1lbnQgYW5kIGFwcGxpZXMgaXQgdG8gZWFjaCBmdW5jdGlvbgpvZiB0aGUgbGlzdCwg
cmV0dXJuaW5nIGEgbGlzdCBvZiByZXN1bHRzOgoKICAgICAgICAgICgobGFtYmRhICh4KQogICAg
ICAgICAgICAgKG1hcGNhciAobGFtYmRhIChmKSAoZnVuY2FsbCBmIHgpKQogICAgICAgICAgICAg
ICAgICAgICAobGlzdCAoZnVuY3Rpb24gaWRlbnRpdHkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChjb21wb3NlIChtaW51cyAxMCkgKGZ1bmN0aW9uIGEpKSkpKQogICAgICAgICAgIDUpCiAg
ICAgICAgIC0tPiAoNSAxKQoKcGFydGlhbCBpcyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBmdW5j
dGlvbiBhbmQgYW4gYXJndW1lbnQsIGFuZApyZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBh
IHNlY29uZCBhcmd1bWVudCBhbmQgY2FsbCB0aGUgZmlyc3QKZnVuY3Rpb24gd2l0aCB0aGUgdHdv
IGFyZ3VtZW50cy4gIEl0J3MgYSBwYXJ0aWFsIGFwcGxpY2F0aW9uIG9mIHRoZQpmdW5jdGlvbi4K
ClNvOiAgKGZ1bmNhbGwgKHBhcnRpYWwgZiB4KSB5KSAgPT0gKGZ1bmNhbGwgZiB4IHkpCgpUaGVy
ZWZvcmU6ICAgICAocGFydGlhbCAoZnVuY3Rpb24gcmVkdWNlKSAoZnVuY3Rpb24gKykpCnJldHVy
bnMgYSBmdW5jdGlvbiB0aGF0IHN1bXMgYSBsaXN0IG9mIG51bWJlcnM6CgogICAgIChmdW5jYWxs
IChwYXJ0aWFsIChmdW5jdGlvbiByZWR1Y2UpIChmdW5jdGlvbiArKSkgKGxpc3QgMSAyIDMgMTAw
KSkKICAgICAtLT4gMTA2CgpTbyB3ZSBjYW4gdXNlIGl0IHRvIGNvbXBvc2UgaXQgd2l0aCB0aGUg
cHJldmlvdXMgbGFtYmRhIHdoaWNoIHJldHVybnMKYSBsaXN0IG9mIDIgbnVtYmVyczoKCiAgICAg
KGZ1bmNhbGwgKGNvbXBvc2UgKHBhcnRpYWwgKGZ1bmN0aW9uIHJlZHVjZSkgKGZ1bmN0aW9uICsp
KQogICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKHgpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAobWFwY2FyIChsYW1iZGEgKGYpIChmdW5jYWxsIGYgeCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChsaXN0IChmdW5jdGlvbiBpZGVudGl0eSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGNvbXBvc2UgKG1pbnVzIDEwKSAoZnVuY3Rpb24gYSkp
KSkpKQogICAgICAgICAgICAgIDUpCiAgICAgLS0+IDYKCmFuZCB1c2UgdGhlIGNvbXBvc2l0aW9u
IGluIGEgbWFwIG9mIHRoZSBzZXQgb2YgaW50ZWdlcnMgZnJvbSAwIHRvIDk6CgogICAgIChtYXBj
YXIKICAgICAgKGNvbXBvc2UgKHBhcnRpYWwgKGZ1bmN0aW9uIHJlZHVjZSkgKGZ1bmN0aW9uICsp
KQogICAgICAgICAgICAgICAobGFtYmRhICh4KQogICAgICAgICAgICAgICAgIChtYXBjYXIgKGxh
bWJkYSAoZikgKGZ1bmNhbGwgZiB4KSkKICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IChm
dW5jdGlvbiBpZGVudGl0eSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21wb3Nl
IChtaW51cyAxMCkgKGZ1bmN0aW9uIGEpKSkpKSkKICAgICAgKGlvdGEgMTApKQogICAgIC0tPiAo
LTkgLTYgLTMgMCAzIDYgOSAxMiAxNSAxOCkKCgotLSAKX19QYXNjYWwgQm91cmd1aWdub25fXwoK
LS0gCl9fUGFzY2FsIEJvdXJndWlnbm9uX18KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpjbGlzcC1saXN0IG1haWxpbmcgbGlzdApjbGlzcC1saXN0QGxp
c3RzLnNvdXJjZWZvcmdlLm5ldApodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9s
aXN0aW5mby9jbGlzcC1saXN0Cg==