Rocksolid Light

Welcome to RetroBBS

mail  files  register  newsreader  groups  login

Message-ID:  

Today is the first day of the rest of your lossage.


devel / comp.lang.prolog / Re: 50 Years of Prolog Nonsense

SubjectAuthor
* 50 Years of Prolog NonsenseMostowski Collapse
+* Re: 50 Years of Prolog NonsenseMostowski Collapse
|`* Re: 50 Years of Prolog NonsenseMostowski Collapse
| `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|  `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|   `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|    `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|     +* Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |`* Re: 50 Years of Prolog NonsenseMostowski Collapse
|     | `- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|      `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|       `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|        `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|         `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|          `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|           `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|            `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|             `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|              `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|               `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|                +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|                 `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|                  `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|                   `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|                    +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                    +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                    +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                    +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                    +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                    +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                    +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                    +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                    +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                    +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|                    `- Re: 50 Years of Prolog NonsenseMostowski Collapse
+* Re: 50 Years of Prolog NonsenseMostowski Collapse
|`* Re: 50 Years of Prolog NonsenseMostowski Collapse
| `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|  `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|   `- Re: 50 Years of Prolog NonsenseMostowski Collapse
+* Re: 50 Years of Prolog NonsenseMostowski Collapse
|`* Re: 50 Years of Prolog NonsenseMostowski Collapse
| `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|  `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|   `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|    `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|     +* Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |`* Re: 50 Years of Prolog NonsenseMostowski Collapse
|     | `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |  +* Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |  |`* Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |  | `- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |  `* Re: 50 Years of Prolog NonsenseMarkus Triska
|     |   `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |    `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |     `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |      `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |       `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |        `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |         `* Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +* Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          |`* Re: 50 Years of Prolog NonsenseMarkus Triska
|     |          | `* Re: 50 Years of Prolog NonsenseMild Shock
|     |          |  `* Re: 50 Years of Prolog NonsenseMild Shock
|     |          |   `- Re: 50 Years of Prolog NonsenseMild Shock
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          +- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     |          `- Re: 50 Years of Prolog NonsenseMostowski Collapse
|     `* Re: 50 Years of Prolog NonsenseMostowski Collapse
+* Re: 50 Years of Prolog NonsenseMostowski Collapse
+* Re: 50 Years of Prolog NonsenseMostowski Collapse
+* Re: 50 Years of Prolog NonsenseMostowski Collapse
+* Re: 50 Years of Prolog NonsenseMostowski Collapse
`* Re: 50 Years of Prolog NonsenseMild Shock

Pages:1234567
Re: 50 Years of Prolog Nonsense

<ff7f2bbc-eb9a-4351-9301-24e1e9ddaf0cn@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1706&group=comp.lang.prolog#1706

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:620a:1432:b0:6be:6c4a:b800 with SMTP id k18-20020a05620a143200b006be6c4ab800mr6035350qkj.578.1661724255363;
Sun, 28 Aug 2022 15:04:15 -0700 (PDT)
X-Received: by 2002:a81:a18d:0:b0:341:2437:f7c7 with SMTP id
y135-20020a81a18d000000b003412437f7c7mr1404254ywg.69.1661724255191; Sun, 28
Aug 2022 15:04:15 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border-2.nntp.ord.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Sun, 28 Aug 2022 15:04:14 -0700 (PDT)
In-Reply-To: <fe916f80-8888-4fbd-b466-654e1ded8163n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=80.218.40.218; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 80.218.40.218
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<c94e6149-d42c-481c-ace9-d81108d6f786n@googlegroups.com> <b852be37-8238-4ef0-9c96-3381c7f92487n@googlegroups.com>
<f0d280e5-5b2d-4170-aaad-39e1bd109939n@googlegroups.com> <5b00dab0-832f-4fbe-b319-3d459d856e53n@googlegroups.com>
<d5981258-7636-4545-9835-b428d67d4326n@googlegroups.com> <1acaa5f3-171d-4417-bd41-32a9578db900n@googlegroups.com>
<b5c64f15-9b88-4b90-9c2e-91055c7eb63fn@googlegroups.com> <3cafa634-538b-40a3-a4a9-2f68abf240f5n@googlegroups.com>
<a9db6e9e-f0e8-49e0-9126-d14b9073ec58n@googlegroups.com> <m2sfn6kzuc.fsf@logic.at>
<781b5836-4c51-4a7e-a074-85fa4ab490fbn@googlegroups.com> <242e2f19-536c-48a5-b878-25a5203784dfn@googlegroups.com>
<e3e3ff06-25e4-402d-aee2-9b6cc7a55c44n@googlegroups.com> <c06d38ce-e0bc-41cf-a047-31329c129a18n@googlegroups.com>
<922650d6-1ca0-4cd1-8792-e5a5a9382dd7n@googlegroups.com> <9eddc0c6-1e9e-4d89-8486-1a7b6c74db7cn@googlegroups.com>
<db4884ea-268d-4d4b-9e1c-ee8e23d9633cn@googlegroups.com> <776d1dff-fdbc-4f98-ac73-c7b987e66339n@googlegroups.com>
<98ad3212-8093-488e-998d-ebe8e5204c2en@googlegroups.com> <fb646080-0f83-4ea0-b102-3a0cf6d0012fn@googlegroups.com>
<6c22406d-adb5-4116-8b4d-8c406959741an@googlegroups.com> <06e0236a-4538-4b76-8206-c3041372d741n@googlegroups.com>
<ba2c670e-c040-49df-b98e-2d130488eeecn@googlegroups.com> <919fdcf2-9174-4373-9166-67ba8384dc53n@googlegroups.com>
<2d996885-ad17-4e96-a7fe-5cea9318ddc7n@googlegroups.com> <ca4834a1-9b0b-41ac-bc5d-30e9b45557bcn@googlegroups.com>
<bb556d4e-338d-4d7f-8391-ffe81a22c9e3n@googlegroups.com> <1cf6b9ff-fa76-45d0-9542-dc5324996f00n@googlegroups.com>
<e7f10ebb-535d-4db4-8567-f543ef30680an@googlegroups.com> <e4f301d9-83a5-481f-8aa1-f9a3010cc973n@googlegroups.com>
<2af0e494-7183-477a-a52f-b1c93047ac83n@googlegroups.com> <d9eb640c-2426-41c4-b947-b8872958d3c8n@googlegroups.com>
<939c840f-9b88-409f-a8e6-528fc9922009n@googlegroups.com> <b67fdde2-ffd1-4f2c-b44a-d3f70f5df859n@googlegroups.com>
<e936e68c-a771-4d67-a50a-2ef06b63ff7fn@googlegroups.com> <95e84dc6-1b21-483e-b141-b6b61e88f6c3n@googlegroups.com>
<c2833218-67db-4ed5-826b-daaf594b6ee2n@googlegroups.com> <7b63f961-5c34-45e4-82ea-2601c7d14958n@googlegroups.com>
<66881bae-7313-4434-9da9-e0e1f5cb2945n@googlegroups.com> <ba4e8676-e765-4533-91bf-968e17f1ec9cn@googlegroups.com>
<6aa75242-fd2d-426e-a225-928eaf6fba5dn@googlegroups.com> <c0d90f24-3694-44ab-9a5c-8322536628d0n@googlegroups.com>
<75b4e6a9-0018-42e4-81ea-3838c9254028n@googlegroups.com> <29e21fa1-8caa-47f8-971c-e9b4095238c5n@googlegroups.com>
<a0f8b4c9-932b-4c30-a2ce-ffca6657f15bn@googlegroups.com> <fe916f80-8888-4fbd-b466-654e1ded8163n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <ff7f2bbc-eb9a-4351-9301-24e1e9ddaf0cn@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Sun, 28 Aug 2022 22:04:15 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 27
 by: Mostowski Collapse - Sun, 28 Aug 2022 22:04 UTC

Wanna know whats the Cancer of Prolog?

Try this:

fizzbuzz :-
foreach(between(1, 100, X), print_item(X)).

print_item(X) :-
( 0 is X mod 15
-> print('FizzBuzz')
; 0 is X mod 3
-> print('Fizz')
; 0 is X mod 5
-> print('Buzz')
; print(X)
),
nl.

https://rosettacode.org/wiki/FizzBuzz#Prolog

And then try this in (Ciao Prolog Playground or search their documentation):

?- foreach(member(X, [1,2,3]), print(X)).
{ERROR: No handle found for thrown exception
error(existence_error(procedure,'user:foreach'/2),'user:foreach'/2)}

LoL

Re: 50 Years of Prolog Nonsense

<48ee1793-a18b-4108-98ef-e628d7b17527n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1763&group=comp.lang.prolog#1763

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:6214:c29:b0:4aa:b050:5ed7 with SMTP id a9-20020a0562140c2900b004aab0505ed7mr24345659qvd.15.1663782157352;
Wed, 21 Sep 2022 10:42:37 -0700 (PDT)
X-Received: by 2002:a05:6808:1648:b0:333:45ae:3777 with SMTP id
az8-20020a056808164800b0033345ae3777mr4721552oib.4.1663782157103; Wed, 21 Sep
2022 10:42:37 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Wed, 21 Sep 2022 10:42:36 -0700 (PDT)
In-Reply-To: <ff7f2bbc-eb9a-4351-9301-24e1e9ddaf0cn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=80.218.40.218; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 80.218.40.218
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<c94e6149-d42c-481c-ace9-d81108d6f786n@googlegroups.com> <b852be37-8238-4ef0-9c96-3381c7f92487n@googlegroups.com>
<f0d280e5-5b2d-4170-aaad-39e1bd109939n@googlegroups.com> <5b00dab0-832f-4fbe-b319-3d459d856e53n@googlegroups.com>
<d5981258-7636-4545-9835-b428d67d4326n@googlegroups.com> <1acaa5f3-171d-4417-bd41-32a9578db900n@googlegroups.com>
<b5c64f15-9b88-4b90-9c2e-91055c7eb63fn@googlegroups.com> <3cafa634-538b-40a3-a4a9-2f68abf240f5n@googlegroups.com>
<a9db6e9e-f0e8-49e0-9126-d14b9073ec58n@googlegroups.com> <m2sfn6kzuc.fsf@logic.at>
<781b5836-4c51-4a7e-a074-85fa4ab490fbn@googlegroups.com> <242e2f19-536c-48a5-b878-25a5203784dfn@googlegroups.com>
<e3e3ff06-25e4-402d-aee2-9b6cc7a55c44n@googlegroups.com> <c06d38ce-e0bc-41cf-a047-31329c129a18n@googlegroups.com>
<922650d6-1ca0-4cd1-8792-e5a5a9382dd7n@googlegroups.com> <9eddc0c6-1e9e-4d89-8486-1a7b6c74db7cn@googlegroups.com>
<db4884ea-268d-4d4b-9e1c-ee8e23d9633cn@googlegroups.com> <776d1dff-fdbc-4f98-ac73-c7b987e66339n@googlegroups.com>
<98ad3212-8093-488e-998d-ebe8e5204c2en@googlegroups.com> <fb646080-0f83-4ea0-b102-3a0cf6d0012fn@googlegroups.com>
<6c22406d-adb5-4116-8b4d-8c406959741an@googlegroups.com> <06e0236a-4538-4b76-8206-c3041372d741n@googlegroups.com>
<ba2c670e-c040-49df-b98e-2d130488eeecn@googlegroups.com> <919fdcf2-9174-4373-9166-67ba8384dc53n@googlegroups.com>
<2d996885-ad17-4e96-a7fe-5cea9318ddc7n@googlegroups.com> <ca4834a1-9b0b-41ac-bc5d-30e9b45557bcn@googlegroups.com>
<bb556d4e-338d-4d7f-8391-ffe81a22c9e3n@googlegroups.com> <1cf6b9ff-fa76-45d0-9542-dc5324996f00n@googlegroups.com>
<e7f10ebb-535d-4db4-8567-f543ef30680an@googlegroups.com> <e4f301d9-83a5-481f-8aa1-f9a3010cc973n@googlegroups.com>
<2af0e494-7183-477a-a52f-b1c93047ac83n@googlegroups.com> <d9eb640c-2426-41c4-b947-b8872958d3c8n@googlegroups.com>
<939c840f-9b88-409f-a8e6-528fc9922009n@googlegroups.com> <b67fdde2-ffd1-4f2c-b44a-d3f70f5df859n@googlegroups.com>
<e936e68c-a771-4d67-a50a-2ef06b63ff7fn@googlegroups.com> <95e84dc6-1b21-483e-b141-b6b61e88f6c3n@googlegroups.com>
<c2833218-67db-4ed5-826b-daaf594b6ee2n@googlegroups.com> <7b63f961-5c34-45e4-82ea-2601c7d14958n@googlegroups.com>
<66881bae-7313-4434-9da9-e0e1f5cb2945n@googlegroups.com> <ba4e8676-e765-4533-91bf-968e17f1ec9cn@googlegroups.com>
<6aa75242-fd2d-426e-a225-928eaf6fba5dn@googlegroups.com> <c0d90f24-3694-44ab-9a5c-8322536628d0n@googlegroups.com>
<75b4e6a9-0018-42e4-81ea-3838c9254028n@googlegroups.com> <29e21fa1-8caa-47f8-971c-e9b4095238c5n@googlegroups.com>
<a0f8b4c9-932b-4c30-a2ce-ffca6657f15bn@googlegroups.com> <fe916f80-8888-4fbd-b466-654e1ded8163n@googlegroups.com>
<ff7f2bbc-eb9a-4351-9301-24e1e9ddaf0cn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <48ee1793-a18b-4108-98ef-e628d7b17527n@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 21 Sep 2022 17:42:37 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 4552
 by: Mostowski Collapse - Wed, 21 Sep 2022 17:42 UTC

What does your Prolog float/1 and your Prolog (**)/2 do?
Does it do the right thing, or some nonsense?

Here are some results:

/* Jekejeke Prolog 1.5.4 */
?- aggregate_all(count, (between(1,1000000,N),
float(N)**10 =\= float(N^10)), C).
C = 551.

/* Trealla Prolog 2.2.5 */
?- aggregate_all(count, (between(1,1000000,N),
float(N)**10 =\= float(N^10)), C).
C = 12750.

/* Scryer Prolog 0.9.0 */
?- aggregate_all(count, (between(1,1000000,N),
float(N)**10 =\= float(N^10)), C).
C = 500254.

/* SWI-Prolog 8.5.17, doesn't have (^)/2, the (**)/2 behaves like it for integer arguments */
?- aggregate_all(count, (between(1,1000000,N),
float(N)**10.0 =\= float(N**10)), C).
C = 585342.

Re: 50 Years of Prolog Nonsense

<f095da54-9ac1-471e-abdc-19aaf1292c05n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1764&group=comp.lang.prolog#1764

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:ad4:5966:0:b0:4ad:7832:a8ec with SMTP id eq6-20020ad45966000000b004ad7832a8ecmr2440933qvb.82.1663852425892;
Thu, 22 Sep 2022 06:13:45 -0700 (PDT)
X-Received: by 2002:a9d:6957:0:b0:655:f174:9fc3 with SMTP id
p23-20020a9d6957000000b00655f1749fc3mr1556372oto.282.1663852425583; Thu, 22
Sep 2022 06:13:45 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Thu, 22 Sep 2022 06:13:45 -0700 (PDT)
In-Reply-To: <48ee1793-a18b-4108-98ef-e628d7b17527n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=80.218.40.218; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 80.218.40.218
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<c94e6149-d42c-481c-ace9-d81108d6f786n@googlegroups.com> <b852be37-8238-4ef0-9c96-3381c7f92487n@googlegroups.com>
<f0d280e5-5b2d-4170-aaad-39e1bd109939n@googlegroups.com> <5b00dab0-832f-4fbe-b319-3d459d856e53n@googlegroups.com>
<d5981258-7636-4545-9835-b428d67d4326n@googlegroups.com> <1acaa5f3-171d-4417-bd41-32a9578db900n@googlegroups.com>
<b5c64f15-9b88-4b90-9c2e-91055c7eb63fn@googlegroups.com> <3cafa634-538b-40a3-a4a9-2f68abf240f5n@googlegroups.com>
<a9db6e9e-f0e8-49e0-9126-d14b9073ec58n@googlegroups.com> <m2sfn6kzuc.fsf@logic.at>
<781b5836-4c51-4a7e-a074-85fa4ab490fbn@googlegroups.com> <242e2f19-536c-48a5-b878-25a5203784dfn@googlegroups.com>
<e3e3ff06-25e4-402d-aee2-9b6cc7a55c44n@googlegroups.com> <c06d38ce-e0bc-41cf-a047-31329c129a18n@googlegroups.com>
<922650d6-1ca0-4cd1-8792-e5a5a9382dd7n@googlegroups.com> <9eddc0c6-1e9e-4d89-8486-1a7b6c74db7cn@googlegroups.com>
<db4884ea-268d-4d4b-9e1c-ee8e23d9633cn@googlegroups.com> <776d1dff-fdbc-4f98-ac73-c7b987e66339n@googlegroups.com>
<98ad3212-8093-488e-998d-ebe8e5204c2en@googlegroups.com> <fb646080-0f83-4ea0-b102-3a0cf6d0012fn@googlegroups.com>
<6c22406d-adb5-4116-8b4d-8c406959741an@googlegroups.com> <06e0236a-4538-4b76-8206-c3041372d741n@googlegroups.com>
<ba2c670e-c040-49df-b98e-2d130488eeecn@googlegroups.com> <919fdcf2-9174-4373-9166-67ba8384dc53n@googlegroups.com>
<2d996885-ad17-4e96-a7fe-5cea9318ddc7n@googlegroups.com> <ca4834a1-9b0b-41ac-bc5d-30e9b45557bcn@googlegroups.com>
<bb556d4e-338d-4d7f-8391-ffe81a22c9e3n@googlegroups.com> <1cf6b9ff-fa76-45d0-9542-dc5324996f00n@googlegroups.com>
<e7f10ebb-535d-4db4-8567-f543ef30680an@googlegroups.com> <e4f301d9-83a5-481f-8aa1-f9a3010cc973n@googlegroups.com>
<2af0e494-7183-477a-a52f-b1c93047ac83n@googlegroups.com> <d9eb640c-2426-41c4-b947-b8872958d3c8n@googlegroups.com>
<939c840f-9b88-409f-a8e6-528fc9922009n@googlegroups.com> <b67fdde2-ffd1-4f2c-b44a-d3f70f5df859n@googlegroups.com>
<e936e68c-a771-4d67-a50a-2ef06b63ff7fn@googlegroups.com> <95e84dc6-1b21-483e-b141-b6b61e88f6c3n@googlegroups.com>
<c2833218-67db-4ed5-826b-daaf594b6ee2n@googlegroups.com> <7b63f961-5c34-45e4-82ea-2601c7d14958n@googlegroups.com>
<66881bae-7313-4434-9da9-e0e1f5cb2945n@googlegroups.com> <ba4e8676-e765-4533-91bf-968e17f1ec9cn@googlegroups.com>
<6aa75242-fd2d-426e-a225-928eaf6fba5dn@googlegroups.com> <c0d90f24-3694-44ab-9a5c-8322536628d0n@googlegroups.com>
<75b4e6a9-0018-42e4-81ea-3838c9254028n@googlegroups.com> <29e21fa1-8caa-47f8-971c-e9b4095238c5n@googlegroups.com>
<a0f8b4c9-932b-4c30-a2ce-ffca6657f15bn@googlegroups.com> <fe916f80-8888-4fbd-b466-654e1ded8163n@googlegroups.com>
<ff7f2bbc-eb9a-4351-9301-24e1e9ddaf0cn@googlegroups.com> <48ee1793-a18b-4108-98ef-e628d7b17527n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <f095da54-9ac1-471e-abdc-19aaf1292c05n@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Thu, 22 Sep 2022 13:13:45 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 5152
 by: Mostowski Collapse - Thu, 22 Sep 2022 13:13 UTC

Maybe one needs also look into float/1, not only (**)/2 ?
Especially float/1 of a bigint, I guess smallint could be ok.

I did more testing:

/* Jekejeke Prolog, JDK 19 */
C = 551.

/* Dogelog Player, Python (CPython and PyPy) */
C = 1991.

/* Dogelog Player, JavaScript (FireFox) */
C = 1991.

/* Jekejeke Prolog, JDK 1.8 */
C = 15586.

/* Dogelog Player, JavaScript (Chrome and NodeJS) */
C = 97722.

Mostowski Collapse schrieb am Mittwoch, 21. September 2022 um 19:42:38 UTC+2:
> What does your Prolog float/1 and your Prolog (**)/2 do?
> Does it do the right thing, or some nonsense?
>
> Here are some results:
>
> /* Jekejeke Prolog 1.5.4 */
> ?- aggregate_all(count, (between(1,1000000,N),
> float(N)**10 =\= float(N^10)), C).
> C = 551.
>
> /* Trealla Prolog 2.2.5 */
> ?- aggregate_all(count, (between(1,1000000,N),
> float(N)**10 =\= float(N^10)), C).
> C = 12750.
>
> /* Scryer Prolog 0.9.0 */
> ?- aggregate_all(count, (between(1,1000000,N),
> float(N)**10 =\= float(N^10)), C).
> C = 500254.
>
> /* SWI-Prolog 8.5.17, doesn't have (^)/2, the (**)/2 behaves like it for integer arguments */
> ?- aggregate_all(count, (between(1,1000000,N),
> float(N)**10.0 =\= float(N**10)), C).
> C = 585342.

Re: 50 Years of Prolog Nonsense

<cd5a9dcc-f487-44a7-b2d5-2aa4c6c6e0b4n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1765&group=comp.lang.prolog#1765

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:620a:1255:b0:6ce:59a0:f2ee with SMTP id a21-20020a05620a125500b006ce59a0f2eemr2077531qkl.111.1663853004311;
Thu, 22 Sep 2022 06:23:24 -0700 (PDT)
X-Received: by 2002:a05:6830:1e4c:b0:659:eca3:2c70 with SMTP id
e12-20020a0568301e4c00b00659eca32c70mr1580263otj.210.1663853004069; Thu, 22
Sep 2022 06:23:24 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Thu, 22 Sep 2022 06:23:23 -0700 (PDT)
In-Reply-To: <f095da54-9ac1-471e-abdc-19aaf1292c05n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=80.218.40.218; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 80.218.40.218
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<c94e6149-d42c-481c-ace9-d81108d6f786n@googlegroups.com> <b852be37-8238-4ef0-9c96-3381c7f92487n@googlegroups.com>
<f0d280e5-5b2d-4170-aaad-39e1bd109939n@googlegroups.com> <5b00dab0-832f-4fbe-b319-3d459d856e53n@googlegroups.com>
<d5981258-7636-4545-9835-b428d67d4326n@googlegroups.com> <1acaa5f3-171d-4417-bd41-32a9578db900n@googlegroups.com>
<b5c64f15-9b88-4b90-9c2e-91055c7eb63fn@googlegroups.com> <3cafa634-538b-40a3-a4a9-2f68abf240f5n@googlegroups.com>
<a9db6e9e-f0e8-49e0-9126-d14b9073ec58n@googlegroups.com> <m2sfn6kzuc.fsf@logic.at>
<781b5836-4c51-4a7e-a074-85fa4ab490fbn@googlegroups.com> <242e2f19-536c-48a5-b878-25a5203784dfn@googlegroups.com>
<e3e3ff06-25e4-402d-aee2-9b6cc7a55c44n@googlegroups.com> <c06d38ce-e0bc-41cf-a047-31329c129a18n@googlegroups.com>
<922650d6-1ca0-4cd1-8792-e5a5a9382dd7n@googlegroups.com> <9eddc0c6-1e9e-4d89-8486-1a7b6c74db7cn@googlegroups.com>
<db4884ea-268d-4d4b-9e1c-ee8e23d9633cn@googlegroups.com> <776d1dff-fdbc-4f98-ac73-c7b987e66339n@googlegroups.com>
<98ad3212-8093-488e-998d-ebe8e5204c2en@googlegroups.com> <fb646080-0f83-4ea0-b102-3a0cf6d0012fn@googlegroups.com>
<6c22406d-adb5-4116-8b4d-8c406959741an@googlegroups.com> <06e0236a-4538-4b76-8206-c3041372d741n@googlegroups.com>
<ba2c670e-c040-49df-b98e-2d130488eeecn@googlegroups.com> <919fdcf2-9174-4373-9166-67ba8384dc53n@googlegroups.com>
<2d996885-ad17-4e96-a7fe-5cea9318ddc7n@googlegroups.com> <ca4834a1-9b0b-41ac-bc5d-30e9b45557bcn@googlegroups.com>
<bb556d4e-338d-4d7f-8391-ffe81a22c9e3n@googlegroups.com> <1cf6b9ff-fa76-45d0-9542-dc5324996f00n@googlegroups.com>
<e7f10ebb-535d-4db4-8567-f543ef30680an@googlegroups.com> <e4f301d9-83a5-481f-8aa1-f9a3010cc973n@googlegroups.com>
<2af0e494-7183-477a-a52f-b1c93047ac83n@googlegroups.com> <d9eb640c-2426-41c4-b947-b8872958d3c8n@googlegroups.com>
<939c840f-9b88-409f-a8e6-528fc9922009n@googlegroups.com> <b67fdde2-ffd1-4f2c-b44a-d3f70f5df859n@googlegroups.com>
<e936e68c-a771-4d67-a50a-2ef06b63ff7fn@googlegroups.com> <95e84dc6-1b21-483e-b141-b6b61e88f6c3n@googlegroups.com>
<c2833218-67db-4ed5-826b-daaf594b6ee2n@googlegroups.com> <7b63f961-5c34-45e4-82ea-2601c7d14958n@googlegroups.com>
<66881bae-7313-4434-9da9-e0e1f5cb2945n@googlegroups.com> <ba4e8676-e765-4533-91bf-968e17f1ec9cn@googlegroups.com>
<6aa75242-fd2d-426e-a225-928eaf6fba5dn@googlegroups.com> <c0d90f24-3694-44ab-9a5c-8322536628d0n@googlegroups.com>
<75b4e6a9-0018-42e4-81ea-3838c9254028n@googlegroups.com> <29e21fa1-8caa-47f8-971c-e9b4095238c5n@googlegroups.com>
<a0f8b4c9-932b-4c30-a2ce-ffca6657f15bn@googlegroups.com> <fe916f80-8888-4fbd-b466-654e1ded8163n@googlegroups.com>
<ff7f2bbc-eb9a-4351-9301-24e1e9ddaf0cn@googlegroups.com> <48ee1793-a18b-4108-98ef-e628d7b17527n@googlegroups.com>
<f095da54-9ac1-471e-abdc-19aaf1292c05n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <cd5a9dcc-f487-44a7-b2d5-2aa4c6c6e0b4n@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Thu, 22 Sep 2022 13:23:24 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 5991
 by: Mostowski Collapse - Thu, 22 Sep 2022 13:23 UTC

The differences can be explained that the different host
languages have different runtime systems, with different
intrinsic Math.pow(double, double) implementations, that

is used for (**)/2 in Jekejeke Prolog and Dogelog Player, it
was all tested on the same hardware, so they possibly use
soft implementation of the pow intrinsic. Or maybe some

use hard implementation delegating to FPU, and I might
even see differences on different hardward. Will check with
a different hardware as welll. Give me some time. Since I

have Ryzen and Intel here, maybe will see a difference.

Mostowski Collapse schrieb am Donnerstag, 22. September 2022 um 15:13:46 UTC+2:
> Maybe one needs also look into float/1, not only (**)/2 ?
> Especially float/1 of a bigint, I guess smallint could be ok.
>
> I did more testing:
>
> /* Jekejeke Prolog, JDK 19 */
> C = 551.
>
> /* Dogelog Player, Python (CPython and PyPy) */
> C = 1991.
>
> /* Dogelog Player, JavaScript (FireFox) */
> C = 1991.
>
> /* Jekejeke Prolog, JDK 1.8 */
> C = 15586.
>
> /* Dogelog Player, JavaScript (Chrome and NodeJS) */
> C = 97722.
> Mostowski Collapse schrieb am Mittwoch, 21. September 2022 um 19:42:38 UTC+2:
> > What does your Prolog float/1 and your Prolog (**)/2 do?
> > Does it do the right thing, or some nonsense?
> >
> > Here are some results:
> >
> > /* Jekejeke Prolog 1.5.4 */
> > ?- aggregate_all(count, (between(1,1000000,N),
> > float(N)**10 =\= float(N^10)), C).
> > C = 551.
> >
> > /* Trealla Prolog 2.2.5 */
> > ?- aggregate_all(count, (between(1,1000000,N),
> > float(N)**10 =\= float(N^10)), C).
> > C = 12750.
> >
> > /* Scryer Prolog 0.9.0 */
> > ?- aggregate_all(count, (between(1,1000000,N),
> > float(N)**10 =\= float(N^10)), C).
> > C = 500254.
> >
> > /* SWI-Prolog 8.5.17, doesn't have (^)/2, the (**)/2 behaves like it for integer arguments */
> > ?- aggregate_all(count, (between(1,1000000,N),
> > float(N)**10.0 =\= float(N**10)), C).
> > C = 585342.

Re: 50 Years of Prolog Nonsense

<67637021-df00-45a4-9c80-46a0e3d3a6a9n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1766&group=comp.lang.prolog#1766

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:622a:83:b0:35c:ef68:5f46 with SMTP id o3-20020a05622a008300b0035cef685f46mr2831370qtw.594.1663854060746;
Thu, 22 Sep 2022 06:41:00 -0700 (PDT)
X-Received: by 2002:a9d:5f9b:0:b0:654:e87a:2aec with SMTP id
g27-20020a9d5f9b000000b00654e87a2aecmr1554038oti.354.1663854060440; Thu, 22
Sep 2022 06:41:00 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Thu, 22 Sep 2022 06:41:00 -0700 (PDT)
In-Reply-To: <cd5a9dcc-f487-44a7-b2d5-2aa4c6c6e0b4n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=80.218.40.218; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 80.218.40.218
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<c94e6149-d42c-481c-ace9-d81108d6f786n@googlegroups.com> <b852be37-8238-4ef0-9c96-3381c7f92487n@googlegroups.com>
<f0d280e5-5b2d-4170-aaad-39e1bd109939n@googlegroups.com> <5b00dab0-832f-4fbe-b319-3d459d856e53n@googlegroups.com>
<d5981258-7636-4545-9835-b428d67d4326n@googlegroups.com> <1acaa5f3-171d-4417-bd41-32a9578db900n@googlegroups.com>
<b5c64f15-9b88-4b90-9c2e-91055c7eb63fn@googlegroups.com> <3cafa634-538b-40a3-a4a9-2f68abf240f5n@googlegroups.com>
<a9db6e9e-f0e8-49e0-9126-d14b9073ec58n@googlegroups.com> <m2sfn6kzuc.fsf@logic.at>
<781b5836-4c51-4a7e-a074-85fa4ab490fbn@googlegroups.com> <242e2f19-536c-48a5-b878-25a5203784dfn@googlegroups.com>
<e3e3ff06-25e4-402d-aee2-9b6cc7a55c44n@googlegroups.com> <c06d38ce-e0bc-41cf-a047-31329c129a18n@googlegroups.com>
<922650d6-1ca0-4cd1-8792-e5a5a9382dd7n@googlegroups.com> <9eddc0c6-1e9e-4d89-8486-1a7b6c74db7cn@googlegroups.com>
<db4884ea-268d-4d4b-9e1c-ee8e23d9633cn@googlegroups.com> <776d1dff-fdbc-4f98-ac73-c7b987e66339n@googlegroups.com>
<98ad3212-8093-488e-998d-ebe8e5204c2en@googlegroups.com> <fb646080-0f83-4ea0-b102-3a0cf6d0012fn@googlegroups.com>
<6c22406d-adb5-4116-8b4d-8c406959741an@googlegroups.com> <06e0236a-4538-4b76-8206-c3041372d741n@googlegroups.com>
<ba2c670e-c040-49df-b98e-2d130488eeecn@googlegroups.com> <919fdcf2-9174-4373-9166-67ba8384dc53n@googlegroups.com>
<2d996885-ad17-4e96-a7fe-5cea9318ddc7n@googlegroups.com> <ca4834a1-9b0b-41ac-bc5d-30e9b45557bcn@googlegroups.com>
<bb556d4e-338d-4d7f-8391-ffe81a22c9e3n@googlegroups.com> <1cf6b9ff-fa76-45d0-9542-dc5324996f00n@googlegroups.com>
<e7f10ebb-535d-4db4-8567-f543ef30680an@googlegroups.com> <e4f301d9-83a5-481f-8aa1-f9a3010cc973n@googlegroups.com>
<2af0e494-7183-477a-a52f-b1c93047ac83n@googlegroups.com> <d9eb640c-2426-41c4-b947-b8872958d3c8n@googlegroups.com>
<939c840f-9b88-409f-a8e6-528fc9922009n@googlegroups.com> <b67fdde2-ffd1-4f2c-b44a-d3f70f5df859n@googlegroups.com>
<e936e68c-a771-4d67-a50a-2ef06b63ff7fn@googlegroups.com> <95e84dc6-1b21-483e-b141-b6b61e88f6c3n@googlegroups.com>
<c2833218-67db-4ed5-826b-daaf594b6ee2n@googlegroups.com> <7b63f961-5c34-45e4-82ea-2601c7d14958n@googlegroups.com>
<66881bae-7313-4434-9da9-e0e1f5cb2945n@googlegroups.com> <ba4e8676-e765-4533-91bf-968e17f1ec9cn@googlegroups.com>
<6aa75242-fd2d-426e-a225-928eaf6fba5dn@googlegroups.com> <c0d90f24-3694-44ab-9a5c-8322536628d0n@googlegroups.com>
<75b4e6a9-0018-42e4-81ea-3838c9254028n@googlegroups.com> <29e21fa1-8caa-47f8-971c-e9b4095238c5n@googlegroups.com>
<a0f8b4c9-932b-4c30-a2ce-ffca6657f15bn@googlegroups.com> <fe916f80-8888-4fbd-b466-654e1ded8163n@googlegroups.com>
<ff7f2bbc-eb9a-4351-9301-24e1e9ddaf0cn@googlegroups.com> <48ee1793-a18b-4108-98ef-e628d7b17527n@googlegroups.com>
<f095da54-9ac1-471e-abdc-19aaf1292c05n@googlegroups.com> <cd5a9dcc-f487-44a7-b2d5-2aa4c6c6e0b4n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <67637021-df00-45a4-9c80-46a0e3d3a6a9n@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Thu, 22 Sep 2022 13:41:00 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 6564
 by: Mostowski Collapse - Thu, 22 Sep 2022 13:41 UTC

Yes there is also a hardware dependency, and these figures
are no joke, i.e. that one figure is permutation of the other figure,
thats some random accident. I get the following result:

/* Jekejeke Prolog, JDK 1.8, Ryzen, 5 4500U */
C = 15586.

/* Jekejeke Prolog, JDK 1.8, Intel, i5-1135G7 */
C = 15856.

Mostowski Collapse schrieb am Donnerstag, 22. September 2022 um 15:23:25 UTC+2:
> The differences can be explained that the different host
> languages have different runtime systems, with different
> intrinsic Math.pow(double, double) implementations, that
>
> is used for (**)/2 in Jekejeke Prolog and Dogelog Player, it
> was all tested on the same hardware, so they possibly use
> soft implementation of the pow intrinsic. Or maybe some
>
> use hard implementation delegating to FPU, and I might
> even see differences on different hardward. Will check with
> a different hardware as welll. Give me some time. Since I
>
> have Ryzen and Intel here, maybe will see a difference.
> Mostowski Collapse schrieb am Donnerstag, 22. September 2022 um 15:13:46 UTC+2:
> > Maybe one needs also look into float/1, not only (**)/2 ?
> > Especially float/1 of a bigint, I guess smallint could be ok.
> >
> > I did more testing:
> >
> > /* Jekejeke Prolog, JDK 19 */
> > C = 551.
> >
> > /* Dogelog Player, Python (CPython and PyPy) */
> > C = 1991.
> >
> > /* Dogelog Player, JavaScript (FireFox) */
> > C = 1991.
> >
> > /* Jekejeke Prolog, JDK 1.8 */
> > C = 15586.
> >
> > /* Dogelog Player, JavaScript (Chrome and NodeJS) */
> > C = 97722.
> > Mostowski Collapse schrieb am Mittwoch, 21. September 2022 um 19:42:38 UTC+2:
> > > What does your Prolog float/1 and your Prolog (**)/2 do?
> > > Does it do the right thing, or some nonsense?
> > >
> > > Here are some results:
> > >
> > > /* Jekejeke Prolog 1.5.4 */
> > > ?- aggregate_all(count, (between(1,1000000,N),
> > > float(N)**10 =\= float(N^10)), C).
> > > C = 551.
> > >
> > > /* Trealla Prolog 2.2.5 */
> > > ?- aggregate_all(count, (between(1,1000000,N),
> > > float(N)**10 =\= float(N^10)), C).
> > > C = 12750.
> > >
> > > /* Scryer Prolog 0.9.0 */
> > > ?- aggregate_all(count, (between(1,1000000,N),
> > > float(N)**10 =\= float(N^10)), C).
> > > C = 500254.
> > >
> > > /* SWI-Prolog 8.5.17, doesn't have (^)/2, the (**)/2 behaves like it for integer arguments */
> > > ?- aggregate_all(count, (between(1,1000000,N),
> > > float(N)**10.0 =\= float(N**10)), C).
> > > C = 585342.

Re: 50 Years of Prolog Nonsense

<ca2d2ae7-b612-4a57-8e59-61694a180399n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1767&group=comp.lang.prolog#1767

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:6214:4118:b0:4ac:ae43:4074 with SMTP id kc24-20020a056214411800b004acae434074mr6897500qvb.13.1663944295336;
Fri, 23 Sep 2022 07:44:55 -0700 (PDT)
X-Received: by 2002:a4a:645:0:b0:475:e496:78f9 with SMTP id
66-20020a4a0645000000b00475e49678f9mr3611442ooj.13.1663944295027; Fri, 23 Sep
2022 07:44:55 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Fri, 23 Sep 2022 07:44:54 -0700 (PDT)
In-Reply-To: <67637021-df00-45a4-9c80-46a0e3d3a6a9n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=80.218.40.218; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 80.218.40.218
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<c94e6149-d42c-481c-ace9-d81108d6f786n@googlegroups.com> <b852be37-8238-4ef0-9c96-3381c7f92487n@googlegroups.com>
<f0d280e5-5b2d-4170-aaad-39e1bd109939n@googlegroups.com> <5b00dab0-832f-4fbe-b319-3d459d856e53n@googlegroups.com>
<d5981258-7636-4545-9835-b428d67d4326n@googlegroups.com> <1acaa5f3-171d-4417-bd41-32a9578db900n@googlegroups.com>
<b5c64f15-9b88-4b90-9c2e-91055c7eb63fn@googlegroups.com> <3cafa634-538b-40a3-a4a9-2f68abf240f5n@googlegroups.com>
<a9db6e9e-f0e8-49e0-9126-d14b9073ec58n@googlegroups.com> <m2sfn6kzuc.fsf@logic.at>
<781b5836-4c51-4a7e-a074-85fa4ab490fbn@googlegroups.com> <242e2f19-536c-48a5-b878-25a5203784dfn@googlegroups.com>
<e3e3ff06-25e4-402d-aee2-9b6cc7a55c44n@googlegroups.com> <c06d38ce-e0bc-41cf-a047-31329c129a18n@googlegroups.com>
<922650d6-1ca0-4cd1-8792-e5a5a9382dd7n@googlegroups.com> <9eddc0c6-1e9e-4d89-8486-1a7b6c74db7cn@googlegroups.com>
<db4884ea-268d-4d4b-9e1c-ee8e23d9633cn@googlegroups.com> <776d1dff-fdbc-4f98-ac73-c7b987e66339n@googlegroups.com>
<98ad3212-8093-488e-998d-ebe8e5204c2en@googlegroups.com> <fb646080-0f83-4ea0-b102-3a0cf6d0012fn@googlegroups.com>
<6c22406d-adb5-4116-8b4d-8c406959741an@googlegroups.com> <06e0236a-4538-4b76-8206-c3041372d741n@googlegroups.com>
<ba2c670e-c040-49df-b98e-2d130488eeecn@googlegroups.com> <919fdcf2-9174-4373-9166-67ba8384dc53n@googlegroups.com>
<2d996885-ad17-4e96-a7fe-5cea9318ddc7n@googlegroups.com> <ca4834a1-9b0b-41ac-bc5d-30e9b45557bcn@googlegroups.com>
<bb556d4e-338d-4d7f-8391-ffe81a22c9e3n@googlegroups.com> <1cf6b9ff-fa76-45d0-9542-dc5324996f00n@googlegroups.com>
<e7f10ebb-535d-4db4-8567-f543ef30680an@googlegroups.com> <e4f301d9-83a5-481f-8aa1-f9a3010cc973n@googlegroups.com>
<2af0e494-7183-477a-a52f-b1c93047ac83n@googlegroups.com> <d9eb640c-2426-41c4-b947-b8872958d3c8n@googlegroups.com>
<939c840f-9b88-409f-a8e6-528fc9922009n@googlegroups.com> <b67fdde2-ffd1-4f2c-b44a-d3f70f5df859n@googlegroups.com>
<e936e68c-a771-4d67-a50a-2ef06b63ff7fn@googlegroups.com> <95e84dc6-1b21-483e-b141-b6b61e88f6c3n@googlegroups.com>
<c2833218-67db-4ed5-826b-daaf594b6ee2n@googlegroups.com> <7b63f961-5c34-45e4-82ea-2601c7d14958n@googlegroups.com>
<66881bae-7313-4434-9da9-e0e1f5cb2945n@googlegroups.com> <ba4e8676-e765-4533-91bf-968e17f1ec9cn@googlegroups.com>
<6aa75242-fd2d-426e-a225-928eaf6fba5dn@googlegroups.com> <c0d90f24-3694-44ab-9a5c-8322536628d0n@googlegroups.com>
<75b4e6a9-0018-42e4-81ea-3838c9254028n@googlegroups.com> <29e21fa1-8caa-47f8-971c-e9b4095238c5n@googlegroups.com>
<a0f8b4c9-932b-4c30-a2ce-ffca6657f15bn@googlegroups.com> <fe916f80-8888-4fbd-b466-654e1ded8163n@googlegroups.com>
<ff7f2bbc-eb9a-4351-9301-24e1e9ddaf0cn@googlegroups.com> <48ee1793-a18b-4108-98ef-e628d7b17527n@googlegroups.com>
<f095da54-9ac1-471e-abdc-19aaf1292c05n@googlegroups.com> <cd5a9dcc-f487-44a7-b2d5-2aa4c6c6e0b4n@googlegroups.com>
<67637021-df00-45a4-9c80-46a0e3d3a6a9n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <ca2d2ae7-b612-4a57-8e59-61694a180399n@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Fri, 23 Sep 2022 14:44:55 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 7499
 by: Mostowski Collapse - Fri, 23 Sep 2022 14:44 UTC

Some progress was reported for SWI-Prolog:

/* Ubuntu AMD3950X, gcc-11 */
C = 807
/* Apple M1, AppleClang 13.1 */
C = 1225
/* Windows, MinGW 11.2 */
C = 508689

Maybe MinGW suffers from:

- Theory: You know something, but it doesn’t work.
- Practice: Something works, but you don’t know why.
- Programming: Combine theory and practice: Nothing works, and we don’t know why!

Mostowski Collapse schrieb am Donnerstag, 22. September 2022 um 15:41:01 UTC+2:
> Yes there is also a hardware dependency, and these figures
> are no joke, i.e. that one figure is permutation of the other figure,
> thats some random accident. I get the following result:
>
> /* Jekejeke Prolog, JDK 1.8, Ryzen, 5 4500U */
> C = 15586.
>
> /* Jekejeke Prolog, JDK 1.8, Intel, i5-1135G7 */
> C = 15856.
> Mostowski Collapse schrieb am Donnerstag, 22. September 2022 um 15:23:25 UTC+2:
> > The differences can be explained that the different host
> > languages have different runtime systems, with different
> > intrinsic Math.pow(double, double) implementations, that
> >
> > is used for (**)/2 in Jekejeke Prolog and Dogelog Player, it
> > was all tested on the same hardware, so they possibly use
> > soft implementation of the pow intrinsic. Or maybe some
> >
> > use hard implementation delegating to FPU, and I might
> > even see differences on different hardward. Will check with
> > a different hardware as welll. Give me some time. Since I
> >
> > have Ryzen and Intel here, maybe will see a difference.
> > Mostowski Collapse schrieb am Donnerstag, 22. September 2022 um 15:13:46 UTC+2:
> > > Maybe one needs also look into float/1, not only (**)/2 ?
> > > Especially float/1 of a bigint, I guess smallint could be ok.
> > >
> > > I did more testing:
> > >
> > > /* Jekejeke Prolog, JDK 19 */
> > > C = 551.
> > >
> > > /* Dogelog Player, Python (CPython and PyPy) */
> > > C = 1991.
> > >
> > > /* Dogelog Player, JavaScript (FireFox) */
> > > C = 1991.
> > >
> > > /* Jekejeke Prolog, JDK 1.8 */
> > > C = 15586.
> > >
> > > /* Dogelog Player, JavaScript (Chrome and NodeJS) */
> > > C = 97722.
> > > Mostowski Collapse schrieb am Mittwoch, 21. September 2022 um 19:42:38 UTC+2:
> > > > What does your Prolog float/1 and your Prolog (**)/2 do?
> > > > Does it do the right thing, or some nonsense?
> > > >
> > > > Here are some results:
> > > >
> > > > /* Jekejeke Prolog 1.5.4 */
> > > > ?- aggregate_all(count, (between(1,1000000,N),
> > > > float(N)**10 =\= float(N^10)), C).
> > > > C = 551.
> > > >
> > > > /* Trealla Prolog 2.2.5 */
> > > > ?- aggregate_all(count, (between(1,1000000,N),
> > > > float(N)**10 =\= float(N^10)), C).
> > > > C = 12750.
> > > >
> > > > /* Scryer Prolog 0.9.0 */
> > > > ?- aggregate_all(count, (between(1,1000000,N),
> > > > float(N)**10 =\= float(N^10)), C).
> > > > C = 500254.
> > > >
> > > > /* SWI-Prolog 8.5.17, doesn't have (^)/2, the (**)/2 behaves like it for integer arguments */
> > > > ?- aggregate_all(count, (between(1,1000000,N),
> > > > float(N)**10.0 =\= float(N**10)), C).
> > > > C = 585342.

Re: 50 Years of Prolog Nonsense

<784b7fec-6357-4667-82a8-69e682b613c6n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1768&group=comp.lang.prolog#1768

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:ac8:5a83:0:b0:35c:d945:6442 with SMTP id c3-20020ac85a83000000b0035cd9456442mr14198303qtc.57.1664115014111;
Sun, 25 Sep 2022 07:10:14 -0700 (PDT)
X-Received: by 2002:a05:6870:c69e:b0:126:cfe3:dd0d with SMTP id
cv30-20020a056870c69e00b00126cfe3dd0dmr17011558oab.4.1664115013806; Sun, 25
Sep 2022 07:10:13 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Sun, 25 Sep 2022 07:10:13 -0700 (PDT)
In-Reply-To: <ca2d2ae7-b612-4a57-8e59-61694a180399n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=80.218.40.218; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 80.218.40.218
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<c94e6149-d42c-481c-ace9-d81108d6f786n@googlegroups.com> <b852be37-8238-4ef0-9c96-3381c7f92487n@googlegroups.com>
<f0d280e5-5b2d-4170-aaad-39e1bd109939n@googlegroups.com> <5b00dab0-832f-4fbe-b319-3d459d856e53n@googlegroups.com>
<d5981258-7636-4545-9835-b428d67d4326n@googlegroups.com> <1acaa5f3-171d-4417-bd41-32a9578db900n@googlegroups.com>
<b5c64f15-9b88-4b90-9c2e-91055c7eb63fn@googlegroups.com> <3cafa634-538b-40a3-a4a9-2f68abf240f5n@googlegroups.com>
<a9db6e9e-f0e8-49e0-9126-d14b9073ec58n@googlegroups.com> <m2sfn6kzuc.fsf@logic.at>
<781b5836-4c51-4a7e-a074-85fa4ab490fbn@googlegroups.com> <242e2f19-536c-48a5-b878-25a5203784dfn@googlegroups.com>
<e3e3ff06-25e4-402d-aee2-9b6cc7a55c44n@googlegroups.com> <c06d38ce-e0bc-41cf-a047-31329c129a18n@googlegroups.com>
<922650d6-1ca0-4cd1-8792-e5a5a9382dd7n@googlegroups.com> <9eddc0c6-1e9e-4d89-8486-1a7b6c74db7cn@googlegroups.com>
<db4884ea-268d-4d4b-9e1c-ee8e23d9633cn@googlegroups.com> <776d1dff-fdbc-4f98-ac73-c7b987e66339n@googlegroups.com>
<98ad3212-8093-488e-998d-ebe8e5204c2en@googlegroups.com> <fb646080-0f83-4ea0-b102-3a0cf6d0012fn@googlegroups.com>
<6c22406d-adb5-4116-8b4d-8c406959741an@googlegroups.com> <06e0236a-4538-4b76-8206-c3041372d741n@googlegroups.com>
<ba2c670e-c040-49df-b98e-2d130488eeecn@googlegroups.com> <919fdcf2-9174-4373-9166-67ba8384dc53n@googlegroups.com>
<2d996885-ad17-4e96-a7fe-5cea9318ddc7n@googlegroups.com> <ca4834a1-9b0b-41ac-bc5d-30e9b45557bcn@googlegroups.com>
<bb556d4e-338d-4d7f-8391-ffe81a22c9e3n@googlegroups.com> <1cf6b9ff-fa76-45d0-9542-dc5324996f00n@googlegroups.com>
<e7f10ebb-535d-4db4-8567-f543ef30680an@googlegroups.com> <e4f301d9-83a5-481f-8aa1-f9a3010cc973n@googlegroups.com>
<2af0e494-7183-477a-a52f-b1c93047ac83n@googlegroups.com> <d9eb640c-2426-41c4-b947-b8872958d3c8n@googlegroups.com>
<939c840f-9b88-409f-a8e6-528fc9922009n@googlegroups.com> <b67fdde2-ffd1-4f2c-b44a-d3f70f5df859n@googlegroups.com>
<e936e68c-a771-4d67-a50a-2ef06b63ff7fn@googlegroups.com> <95e84dc6-1b21-483e-b141-b6b61e88f6c3n@googlegroups.com>
<c2833218-67db-4ed5-826b-daaf594b6ee2n@googlegroups.com> <7b63f961-5c34-45e4-82ea-2601c7d14958n@googlegroups.com>
<66881bae-7313-4434-9da9-e0e1f5cb2945n@googlegroups.com> <ba4e8676-e765-4533-91bf-968e17f1ec9cn@googlegroups.com>
<6aa75242-fd2d-426e-a225-928eaf6fba5dn@googlegroups.com> <c0d90f24-3694-44ab-9a5c-8322536628d0n@googlegroups.com>
<75b4e6a9-0018-42e4-81ea-3838c9254028n@googlegroups.com> <29e21fa1-8caa-47f8-971c-e9b4095238c5n@googlegroups.com>
<a0f8b4c9-932b-4c30-a2ce-ffca6657f15bn@googlegroups.com> <fe916f80-8888-4fbd-b466-654e1ded8163n@googlegroups.com>
<ff7f2bbc-eb9a-4351-9301-24e1e9ddaf0cn@googlegroups.com> <48ee1793-a18b-4108-98ef-e628d7b17527n@googlegroups.com>
<f095da54-9ac1-471e-abdc-19aaf1292c05n@googlegroups.com> <cd5a9dcc-f487-44a7-b2d5-2aa4c6c6e0b4n@googlegroups.com>
<67637021-df00-45a4-9c80-46a0e3d3a6a9n@googlegroups.com> <ca2d2ae7-b612-4a57-8e59-61694a180399n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <784b7fec-6357-4667-82a8-69e682b613c6n@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Sun, 25 Sep 2022 14:10:14 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 4682
 by: Mostowski Collapse - Sun, 25 Sep 2022 14:10 UTC

Will a change to float/1 also affect (/)/2. In the past I had high
regard of ECLiPSe Prolog (/)/2. Actually now I have the feeling
ECLiPSe Prolog has degraded. But there is now the issue, suppose

there is a new SWI-Prolog version with a new float/1 compatible
with (**)/2, do the results still hold?

?- aggregate_all(count, (between(1,1000000,N),
(123456789*123456789*N)/123456789 =\= float(123456789*N)), C).

/* SWI-Prolog 8.5.17 */
C = 0

/* Jekejeke Prolog 1.5.4, both JDK 1.8 and JDK 19 */
C = 72226

/* ECLiPSe Prolog 7.0.61 */
C = 494175

Re: 50 Years of Prolog Nonsense

<a9f6c759-bc62-42d6-8f89-8904201f653cn@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1769&group=comp.lang.prolog#1769

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:6214:f24:b0:4ac:a9fd:8b42 with SMTP id iw4-20020a0562140f2400b004aca9fd8b42mr14134010qvb.22.1664115094064;
Sun, 25 Sep 2022 07:11:34 -0700 (PDT)
X-Received: by 2002:a05:6820:1888:b0:476:1d00:9d8f with SMTP id
bm8-20020a056820188800b004761d009d8fmr7107762oob.98.1664115093833; Sun, 25
Sep 2022 07:11:33 -0700 (PDT)
Path: i2pn2.org!i2pn.org!news.niel.me!glou.org!news.glou.org!usenet-fr.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Sun, 25 Sep 2022 07:11:33 -0700 (PDT)
In-Reply-To: <784b7fec-6357-4667-82a8-69e682b613c6n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=80.218.40.218; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 80.218.40.218
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<c94e6149-d42c-481c-ace9-d81108d6f786n@googlegroups.com> <b852be37-8238-4ef0-9c96-3381c7f92487n@googlegroups.com>
<f0d280e5-5b2d-4170-aaad-39e1bd109939n@googlegroups.com> <5b00dab0-832f-4fbe-b319-3d459d856e53n@googlegroups.com>
<d5981258-7636-4545-9835-b428d67d4326n@googlegroups.com> <1acaa5f3-171d-4417-bd41-32a9578db900n@googlegroups.com>
<b5c64f15-9b88-4b90-9c2e-91055c7eb63fn@googlegroups.com> <3cafa634-538b-40a3-a4a9-2f68abf240f5n@googlegroups.com>
<a9db6e9e-f0e8-49e0-9126-d14b9073ec58n@googlegroups.com> <m2sfn6kzuc.fsf@logic.at>
<781b5836-4c51-4a7e-a074-85fa4ab490fbn@googlegroups.com> <242e2f19-536c-48a5-b878-25a5203784dfn@googlegroups.com>
<e3e3ff06-25e4-402d-aee2-9b6cc7a55c44n@googlegroups.com> <c06d38ce-e0bc-41cf-a047-31329c129a18n@googlegroups.com>
<922650d6-1ca0-4cd1-8792-e5a5a9382dd7n@googlegroups.com> <9eddc0c6-1e9e-4d89-8486-1a7b6c74db7cn@googlegroups.com>
<db4884ea-268d-4d4b-9e1c-ee8e23d9633cn@googlegroups.com> <776d1dff-fdbc-4f98-ac73-c7b987e66339n@googlegroups.com>
<98ad3212-8093-488e-998d-ebe8e5204c2en@googlegroups.com> <fb646080-0f83-4ea0-b102-3a0cf6d0012fn@googlegroups.com>
<6c22406d-adb5-4116-8b4d-8c406959741an@googlegroups.com> <06e0236a-4538-4b76-8206-c3041372d741n@googlegroups.com>
<ba2c670e-c040-49df-b98e-2d130488eeecn@googlegroups.com> <919fdcf2-9174-4373-9166-67ba8384dc53n@googlegroups.com>
<2d996885-ad17-4e96-a7fe-5cea9318ddc7n@googlegroups.com> <ca4834a1-9b0b-41ac-bc5d-30e9b45557bcn@googlegroups.com>
<bb556d4e-338d-4d7f-8391-ffe81a22c9e3n@googlegroups.com> <1cf6b9ff-fa76-45d0-9542-dc5324996f00n@googlegroups.com>
<e7f10ebb-535d-4db4-8567-f543ef30680an@googlegroups.com> <e4f301d9-83a5-481f-8aa1-f9a3010cc973n@googlegroups.com>
<2af0e494-7183-477a-a52f-b1c93047ac83n@googlegroups.com> <d9eb640c-2426-41c4-b947-b8872958d3c8n@googlegroups.com>
<939c840f-9b88-409f-a8e6-528fc9922009n@googlegroups.com> <b67fdde2-ffd1-4f2c-b44a-d3f70f5df859n@googlegroups.com>
<e936e68c-a771-4d67-a50a-2ef06b63ff7fn@googlegroups.com> <95e84dc6-1b21-483e-b141-b6b61e88f6c3n@googlegroups.com>
<c2833218-67db-4ed5-826b-daaf594b6ee2n@googlegroups.com> <7b63f961-5c34-45e4-82ea-2601c7d14958n@googlegroups.com>
<66881bae-7313-4434-9da9-e0e1f5cb2945n@googlegroups.com> <ba4e8676-e765-4533-91bf-968e17f1ec9cn@googlegroups.com>
<6aa75242-fd2d-426e-a225-928eaf6fba5dn@googlegroups.com> <c0d90f24-3694-44ab-9a5c-8322536628d0n@googlegroups.com>
<75b4e6a9-0018-42e4-81ea-3838c9254028n@googlegroups.com> <29e21fa1-8caa-47f8-971c-e9b4095238c5n@googlegroups.com>
<a0f8b4c9-932b-4c30-a2ce-ffca6657f15bn@googlegroups.com> <fe916f80-8888-4fbd-b466-654e1ded8163n@googlegroups.com>
<ff7f2bbc-eb9a-4351-9301-24e1e9ddaf0cn@googlegroups.com> <48ee1793-a18b-4108-98ef-e628d7b17527n@googlegroups.com>
<f095da54-9ac1-471e-abdc-19aaf1292c05n@googlegroups.com> <cd5a9dcc-f487-44a7-b2d5-2aa4c6c6e0b4n@googlegroups.com>
<67637021-df00-45a4-9c80-46a0e3d3a6a9n@googlegroups.com> <ca2d2ae7-b612-4a57-8e59-61694a180399n@googlegroups.com>
<784b7fec-6357-4667-82a8-69e682b613c6n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <a9f6c759-bc62-42d6-8f89-8904201f653cn@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Sun, 25 Sep 2022 14:11:34 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Mostowski Collapse - Sun, 25 Sep 2022 14:11 UTC

And of course there is the question of timing. SWI-Prolog, the
version 8.5.17 I have available, is rather behind, possibly rather
an issue of (/)/2, but could be an issue of both (/)/2

and float/1 in the future:

?- time((between(1,1000000,N), (123456789*123456789*N)/123456789
=\= float(123456789*N), fail; true)).

/* SWI-Prolog 8.5.17 */
% 2,000,002 inferences, 1.297 CPU in 1.285 seconds (101% CPU, 1542170 Lips)

/* Jekejeke Prolog 1.5.4, JDK 19 */
% Threads 328 ms, GC 3 ms, Up 333 ms (Current 09/25/22 16:01:26)

/* Jekejeke Prolog 1.5.4, JDK 1.8 */
% Threads 250 ms, GC 3 ms, Up 261 ms (Current 09/25/22 16:05:51)

Mostowski Collapse schrieb am Sonntag, 25. September 2022 um 16:10:14 UTC+2:
> Will a change to float/1 also affect (/)/2. In the past I had high
> regard of ECLiPSe Prolog (/)/2. Actually now I have the feeling
> ECLiPSe Prolog has degraded. But there is now the issue, suppose
>
> there is a new SWI-Prolog version with a new float/1 compatible
> with (**)/2, do the results still hold?
>
> ?- aggregate_all(count, (between(1,1000000,N),
> (123456789*123456789*N)/123456789 =\= float(123456789*N)), C).
>
> /* SWI-Prolog 8.5.17 */
> C = 0
>
> /* Jekejeke Prolog 1.5.4, both JDK 1.8 and JDK 19 */
> C = 72226
>
> /* ECLiPSe Prolog 7.0.61 */
> C = 494175

Re: 50 Years of Prolog Nonsense

<e1972fc0-52b5-4d82-a89d-a8c8157f873bn@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1770&group=comp.lang.prolog#1770

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a0c:a90a:0:b0:4ad:715:897 with SMTP id y10-20020a0ca90a000000b004ad07150897mr14093501qva.114.1664121322209;
Sun, 25 Sep 2022 08:55:22 -0700 (PDT)
X-Received: by 2002:a05:6870:9a26:b0:12d:7e1:e9c7 with SMTP id
fo38-20020a0568709a2600b0012d07e1e9c7mr10885100oab.257.1664121321944; Sun, 25
Sep 2022 08:55:21 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Sun, 25 Sep 2022 08:55:21 -0700 (PDT)
In-Reply-To: <a9f6c759-bc62-42d6-8f89-8904201f653cn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=80.218.40.218; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 80.218.40.218
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<c94e6149-d42c-481c-ace9-d81108d6f786n@googlegroups.com> <b852be37-8238-4ef0-9c96-3381c7f92487n@googlegroups.com>
<f0d280e5-5b2d-4170-aaad-39e1bd109939n@googlegroups.com> <5b00dab0-832f-4fbe-b319-3d459d856e53n@googlegroups.com>
<d5981258-7636-4545-9835-b428d67d4326n@googlegroups.com> <1acaa5f3-171d-4417-bd41-32a9578db900n@googlegroups.com>
<b5c64f15-9b88-4b90-9c2e-91055c7eb63fn@googlegroups.com> <3cafa634-538b-40a3-a4a9-2f68abf240f5n@googlegroups.com>
<a9db6e9e-f0e8-49e0-9126-d14b9073ec58n@googlegroups.com> <m2sfn6kzuc.fsf@logic.at>
<781b5836-4c51-4a7e-a074-85fa4ab490fbn@googlegroups.com> <242e2f19-536c-48a5-b878-25a5203784dfn@googlegroups.com>
<e3e3ff06-25e4-402d-aee2-9b6cc7a55c44n@googlegroups.com> <c06d38ce-e0bc-41cf-a047-31329c129a18n@googlegroups.com>
<922650d6-1ca0-4cd1-8792-e5a5a9382dd7n@googlegroups.com> <9eddc0c6-1e9e-4d89-8486-1a7b6c74db7cn@googlegroups.com>
<db4884ea-268d-4d4b-9e1c-ee8e23d9633cn@googlegroups.com> <776d1dff-fdbc-4f98-ac73-c7b987e66339n@googlegroups.com>
<98ad3212-8093-488e-998d-ebe8e5204c2en@googlegroups.com> <fb646080-0f83-4ea0-b102-3a0cf6d0012fn@googlegroups.com>
<6c22406d-adb5-4116-8b4d-8c406959741an@googlegroups.com> <06e0236a-4538-4b76-8206-c3041372d741n@googlegroups.com>
<ba2c670e-c040-49df-b98e-2d130488eeecn@googlegroups.com> <919fdcf2-9174-4373-9166-67ba8384dc53n@googlegroups.com>
<2d996885-ad17-4e96-a7fe-5cea9318ddc7n@googlegroups.com> <ca4834a1-9b0b-41ac-bc5d-30e9b45557bcn@googlegroups.com>
<bb556d4e-338d-4d7f-8391-ffe81a22c9e3n@googlegroups.com> <1cf6b9ff-fa76-45d0-9542-dc5324996f00n@googlegroups.com>
<e7f10ebb-535d-4db4-8567-f543ef30680an@googlegroups.com> <e4f301d9-83a5-481f-8aa1-f9a3010cc973n@googlegroups.com>
<2af0e494-7183-477a-a52f-b1c93047ac83n@googlegroups.com> <d9eb640c-2426-41c4-b947-b8872958d3c8n@googlegroups.com>
<939c840f-9b88-409f-a8e6-528fc9922009n@googlegroups.com> <b67fdde2-ffd1-4f2c-b44a-d3f70f5df859n@googlegroups.com>
<e936e68c-a771-4d67-a50a-2ef06b63ff7fn@googlegroups.com> <95e84dc6-1b21-483e-b141-b6b61e88f6c3n@googlegroups.com>
<c2833218-67db-4ed5-826b-daaf594b6ee2n@googlegroups.com> <7b63f961-5c34-45e4-82ea-2601c7d14958n@googlegroups.com>
<66881bae-7313-4434-9da9-e0e1f5cb2945n@googlegroups.com> <ba4e8676-e765-4533-91bf-968e17f1ec9cn@googlegroups.com>
<6aa75242-fd2d-426e-a225-928eaf6fba5dn@googlegroups.com> <c0d90f24-3694-44ab-9a5c-8322536628d0n@googlegroups.com>
<75b4e6a9-0018-42e4-81ea-3838c9254028n@googlegroups.com> <29e21fa1-8caa-47f8-971c-e9b4095238c5n@googlegroups.com>
<a0f8b4c9-932b-4c30-a2ce-ffca6657f15bn@googlegroups.com> <fe916f80-8888-4fbd-b466-654e1ded8163n@googlegroups.com>
<ff7f2bbc-eb9a-4351-9301-24e1e9ddaf0cn@googlegroups.com> <48ee1793-a18b-4108-98ef-e628d7b17527n@googlegroups.com>
<f095da54-9ac1-471e-abdc-19aaf1292c05n@googlegroups.com> <cd5a9dcc-f487-44a7-b2d5-2aa4c6c6e0b4n@googlegroups.com>
<67637021-df00-45a4-9c80-46a0e3d3a6a9n@googlegroups.com> <ca2d2ae7-b612-4a57-8e59-61694a180399n@googlegroups.com>
<784b7fec-6357-4667-82a8-69e682b613c6n@googlegroups.com> <a9f6c759-bc62-42d6-8f89-8904201f653cn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <e1972fc0-52b5-4d82-a89d-a8c8157f873bn@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Sun, 25 Sep 2022 15:55:22 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 6728
 by: Mostowski Collapse - Sun, 25 Sep 2022 15:55 UTC

Its also lacking behind on Unix, via WSL2 on the same machine,
but this is not yet a version with some new float/1:

/* SWI-Prolog 8.4.2 */
% 2,000,001 inferences, 0.543 CPU in 0.543 seconds (100% CPU, 3685380 Lips)
JDK 1.8 does it in 261 ms. But I use a different (/)/2 algorithm.
Actually one could also introduce two float division algorithms, similar
to two power raise functions (**)/2 and (^)/2:

- Fast but less precise (/)/2: Calling X is A/B will use a less precise algorithm,
like for example float(A)/float(B). The benefit would be more speedier,
disadvantage less precision. The error is not that bad, see above in the
example I get only 72226 faults. Same idea could be applied to (**)/2.

- Slow but more precise (rdiv)/2 and float/1 combo: Call X is float(A rdiv B) will
use a more precise algorithm, for example divmod/4 and extra shifting
based as in mpq_get_d_nearest . The benefit would be more precise,
disadvantage less speed. Same idea could be appled to (^)/2.

Mostowski Collapse schrieb am Sonntag, 25. September 2022 um 16:11:35 UTC+2:
> And of course there is the question of timing. SWI-Prolog, the
> version 8.5.17 I have available, is rather behind, possibly rather
> an issue of (/)/2, but could be an issue of both (/)/2
>
> and float/1 in the future:
>
> ?- time((between(1,1000000,N), (123456789*123456789*N)/123456789
> =\= float(123456789*N), fail; true)).
>
> /* SWI-Prolog 8.5.17 */
> % 2,000,002 inferences, 1.297 CPU in 1.285 seconds (101% CPU, 1542170 Lips)
>
> /* Jekejeke Prolog 1.5.4, JDK 19 */
> % Threads 328 ms, GC 3 ms, Up 333 ms (Current 09/25/22 16:01:26)
>
> /* Jekejeke Prolog 1.5.4, JDK 1.8 */
> % Threads 250 ms, GC 3 ms, Up 261 ms (Current 09/25/22 16:05:51)
> Mostowski Collapse schrieb am Sonntag, 25. September 2022 um 16:10:14 UTC+2:
> > Will a change to float/1 also affect (/)/2. In the past I had high
> > regard of ECLiPSe Prolog (/)/2. Actually now I have the feeling
> > ECLiPSe Prolog has degraded. But there is now the issue, suppose
> >
> > there is a new SWI-Prolog version with a new float/1 compatible
> > with (**)/2, do the results still hold?
> >
> > ?- aggregate_all(count, (between(1,1000000,N),
> > (123456789*123456789*N)/123456789 =\= float(123456789*N)), C).
> >
> > /* SWI-Prolog 8.5.17 */
> > C = 0
> >
> > /* Jekejeke Prolog 1.5.4, both JDK 1.8 and JDK 19 */
> > C = 72226
> >
> > /* ECLiPSe Prolog 7.0.61 */
> > C = 494175

Re: 50 Years of Prolog Nonsense

<258ecaf5-0e5c-4675-9e19-626d0bb33743n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1771&group=comp.lang.prolog#1771

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:6214:c29:b0:4aa:b050:5ed7 with SMTP id a9-20020a0562140c2900b004aab0505ed7mr14172707qvd.15.1664121385631;
Sun, 25 Sep 2022 08:56:25 -0700 (PDT)
X-Received: by 2002:a05:6808:1149:b0:350:edd9:d2e8 with SMTP id
u9-20020a056808114900b00350edd9d2e8mr10270113oiu.282.1664121385289; Sun, 25
Sep 2022 08:56:25 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Sun, 25 Sep 2022 08:56:25 -0700 (PDT)
In-Reply-To: <e1972fc0-52b5-4d82-a89d-a8c8157f873bn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=80.218.40.218; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 80.218.40.218
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<c94e6149-d42c-481c-ace9-d81108d6f786n@googlegroups.com> <b852be37-8238-4ef0-9c96-3381c7f92487n@googlegroups.com>
<f0d280e5-5b2d-4170-aaad-39e1bd109939n@googlegroups.com> <5b00dab0-832f-4fbe-b319-3d459d856e53n@googlegroups.com>
<d5981258-7636-4545-9835-b428d67d4326n@googlegroups.com> <1acaa5f3-171d-4417-bd41-32a9578db900n@googlegroups.com>
<b5c64f15-9b88-4b90-9c2e-91055c7eb63fn@googlegroups.com> <3cafa634-538b-40a3-a4a9-2f68abf240f5n@googlegroups.com>
<a9db6e9e-f0e8-49e0-9126-d14b9073ec58n@googlegroups.com> <m2sfn6kzuc.fsf@logic.at>
<781b5836-4c51-4a7e-a074-85fa4ab490fbn@googlegroups.com> <242e2f19-536c-48a5-b878-25a5203784dfn@googlegroups.com>
<e3e3ff06-25e4-402d-aee2-9b6cc7a55c44n@googlegroups.com> <c06d38ce-e0bc-41cf-a047-31329c129a18n@googlegroups.com>
<922650d6-1ca0-4cd1-8792-e5a5a9382dd7n@googlegroups.com> <9eddc0c6-1e9e-4d89-8486-1a7b6c74db7cn@googlegroups.com>
<db4884ea-268d-4d4b-9e1c-ee8e23d9633cn@googlegroups.com> <776d1dff-fdbc-4f98-ac73-c7b987e66339n@googlegroups.com>
<98ad3212-8093-488e-998d-ebe8e5204c2en@googlegroups.com> <fb646080-0f83-4ea0-b102-3a0cf6d0012fn@googlegroups.com>
<6c22406d-adb5-4116-8b4d-8c406959741an@googlegroups.com> <06e0236a-4538-4b76-8206-c3041372d741n@googlegroups.com>
<ba2c670e-c040-49df-b98e-2d130488eeecn@googlegroups.com> <919fdcf2-9174-4373-9166-67ba8384dc53n@googlegroups.com>
<2d996885-ad17-4e96-a7fe-5cea9318ddc7n@googlegroups.com> <ca4834a1-9b0b-41ac-bc5d-30e9b45557bcn@googlegroups.com>
<bb556d4e-338d-4d7f-8391-ffe81a22c9e3n@googlegroups.com> <1cf6b9ff-fa76-45d0-9542-dc5324996f00n@googlegroups.com>
<e7f10ebb-535d-4db4-8567-f543ef30680an@googlegroups.com> <e4f301d9-83a5-481f-8aa1-f9a3010cc973n@googlegroups.com>
<2af0e494-7183-477a-a52f-b1c93047ac83n@googlegroups.com> <d9eb640c-2426-41c4-b947-b8872958d3c8n@googlegroups.com>
<939c840f-9b88-409f-a8e6-528fc9922009n@googlegroups.com> <b67fdde2-ffd1-4f2c-b44a-d3f70f5df859n@googlegroups.com>
<e936e68c-a771-4d67-a50a-2ef06b63ff7fn@googlegroups.com> <95e84dc6-1b21-483e-b141-b6b61e88f6c3n@googlegroups.com>
<c2833218-67db-4ed5-826b-daaf594b6ee2n@googlegroups.com> <7b63f961-5c34-45e4-82ea-2601c7d14958n@googlegroups.com>
<66881bae-7313-4434-9da9-e0e1f5cb2945n@googlegroups.com> <ba4e8676-e765-4533-91bf-968e17f1ec9cn@googlegroups.com>
<6aa75242-fd2d-426e-a225-928eaf6fba5dn@googlegroups.com> <c0d90f24-3694-44ab-9a5c-8322536628d0n@googlegroups.com>
<75b4e6a9-0018-42e4-81ea-3838c9254028n@googlegroups.com> <29e21fa1-8caa-47f8-971c-e9b4095238c5n@googlegroups.com>
<a0f8b4c9-932b-4c30-a2ce-ffca6657f15bn@googlegroups.com> <fe916f80-8888-4fbd-b466-654e1ded8163n@googlegroups.com>
<ff7f2bbc-eb9a-4351-9301-24e1e9ddaf0cn@googlegroups.com> <48ee1793-a18b-4108-98ef-e628d7b17527n@googlegroups.com>
<f095da54-9ac1-471e-abdc-19aaf1292c05n@googlegroups.com> <cd5a9dcc-f487-44a7-b2d5-2aa4c6c6e0b4n@googlegroups.com>
<67637021-df00-45a4-9c80-46a0e3d3a6a9n@googlegroups.com> <ca2d2ae7-b612-4a57-8e59-61694a180399n@googlegroups.com>
<784b7fec-6357-4667-82a8-69e682b613c6n@googlegroups.com> <a9f6c759-bc62-42d6-8f89-8904201f653cn@googlegroups.com>
<e1972fc0-52b5-4d82-a89d-a8c8157f873bn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <258ecaf5-0e5c-4675-9e19-626d0bb33743n@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Sun, 25 Sep 2022 15:56:25 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 7318
 by: Mostowski Collapse - Sun, 25 Sep 2022 15:56 UTC

I also tested Trealla Prolog and Scryer Prolog, here precision:

/* Trealla Prolog 2.2.6 */
C = 72226

/* Scryer Prolog 0.9.0 */
C = 494423

Here the time measurements, Trealla Prolog nearly as fast as JDK 1.8:

/* Trealla Prolog 2.2.6 */
% Time elapsed 0.293s

/* Scryer Prolog 0.9.0 */
% % CPU time: 1.559s

Mostowski Collapse schrieb am Sonntag, 25. September 2022 um 17:55:23 UTC+2:
> Its also lacking behind on Unix, via WSL2 on the same machine,
> but this is not yet a version with some new float/1:
>
> /* SWI-Prolog 8.4.2 */
> % 2,000,001 inferences, 0.543 CPU in 0.543 seconds (100% CPU, 3685380 Lips)
> JDK 1.8 does it in 261 ms. But I use a different (/)/2 algorithm.
> Actually one could also introduce two float division algorithms, similar
> to two power raise functions (**)/2 and (^)/2:
>
> - Fast but less precise (/)/2: Calling X is A/B will use a less precise algorithm,
> like for example float(A)/float(B). The benefit would be more speedier,
> disadvantage less precision. The error is not that bad, see above in the
> example I get only 72226 faults. Same idea could be applied to (**)/2.
>
> - Slow but more precise (rdiv)/2 and float/1 combo: Call X is float(A rdiv B) will
> use a more precise algorithm, for example divmod/4 and extra shifting
> based as in mpq_get_d_nearest . The benefit would be more precise,
> disadvantage less speed. Same idea could be appled to (^)/2.
> Mostowski Collapse schrieb am Sonntag, 25. September 2022 um 16:11:35 UTC+2:
> > And of course there is the question of timing. SWI-Prolog, the
> > version 8.5.17 I have available, is rather behind, possibly rather
> > an issue of (/)/2, but could be an issue of both (/)/2
> >
> > and float/1 in the future:
> >
> > ?- time((between(1,1000000,N), (123456789*123456789*N)/123456789
> > =\= float(123456789*N), fail; true)).
> >
> > /* SWI-Prolog 8.5.17 */
> > % 2,000,002 inferences, 1.297 CPU in 1.285 seconds (101% CPU, 1542170 Lips)
> >
> > /* Jekejeke Prolog 1.5.4, JDK 19 */
> > % Threads 328 ms, GC 3 ms, Up 333 ms (Current 09/25/22 16:01:26)
> >
> > /* Jekejeke Prolog 1.5.4, JDK 1.8 */
> > % Threads 250 ms, GC 3 ms, Up 261 ms (Current 09/25/22 16:05:51)
> > Mostowski Collapse schrieb am Sonntag, 25. September 2022 um 16:10:14 UTC+2:
> > > Will a change to float/1 also affect (/)/2. In the past I had high
> > > regard of ECLiPSe Prolog (/)/2. Actually now I have the feeling
> > > ECLiPSe Prolog has degraded. But there is now the issue, suppose
> > >
> > > there is a new SWI-Prolog version with a new float/1 compatible
> > > with (**)/2, do the results still hold?
> > >
> > > ?- aggregate_all(count, (between(1,1000000,N),
> > > (123456789*123456789*N)/123456789 =\= float(123456789*N)), C).
> > >
> > > /* SWI-Prolog 8.5.17 */
> > > C = 0
> > >
> > > /* Jekejeke Prolog 1.5.4, both JDK 1.8 and JDK 19 */
> > > C = 72226
> > >
> > > /* ECLiPSe Prolog 7.0.61 */
> > > C = 494175

Re: 50 Years of Prolog Nonsense

<tgq9jr$3jvn$1@solani.org>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1772&group=comp.lang.prolog#1772

  copy link   Newsgroups: comp.lang.prolog
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail
From: janburse@fastmail.fm (Mostowski Collapse)
Newsgroups: comp.lang.prolog
Subject: Re: 50 Years of Prolog Nonsense
Date: Sun, 25 Sep 2022 21:19:23 +0200
Message-ID: <tgq9jr$3jvn$1@solani.org>
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 25 Sep 2022 19:19:23 -0000 (UTC)
Injection-Info: solani.org;
logging-data="118775"; mail-complaints-to="abuse@news.solani.org"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101
Firefox/68.0 SeaMonkey/2.53.13
Cancel-Lock: sha1:2Nx15E7eZmbzkRcj/fNL9k4KhiA=
In-Reply-To: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
X-User-ID: eJwFwQkBwDAIA0BL5UkAObQM/xJ2B6PwhRN0LJYJfQhrBZFZEkHXd7ecX9y2kRxSR4XHGUdzs21vTbFVfhu+FC4=
 by: Mostowski Collapse - Sun, 25 Sep 2022 19:19 UTC

One more question. Do SWI-Prolog have a smallint
fast path for A/B, or does it always detour over
some kind of mpq_get_d_nearest?

The advantage of float(A)/float(B) is, it is already
a smallint fastpath for A and B smallint. That
is a smallint fastpath, seen that this has count C=0:

?- between(1,1000000,N), (33*33*N)/33
=\= float(33*N).

Some results concerning timing:

/* SWI-Prolog 8.5.17, Windows */
% 2,000,003 inferences, 0.297 CPU in 0.290 seconds (102% CPU, 6736852 Lips)

/* SWI-Prolog 8.4.2, Unix WSL2 */
% 2,000,003 inferences, 0.337 CPU in 0.337 seconds (100% CPU, 5929587 Lips)

/* Jekejeke Prolog 1.5.4, JDK 19 */
% Threads 297 ms, GC 3 ms, Up 290 ms (Current 09/25/22 18:38:00)

/* Jekejeke Prolog 1.5.4, JDK 1.8 */
% Threads 188 ms, GC 2 ms, Up 186 ms (Current 09/25/22 18:39:33)

Re: 50 Years of Prolog Nonsense

<tgq9n9$3jvn$2@solani.org>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1773&group=comp.lang.prolog#1773

  copy link   Newsgroups: comp.lang.prolog
Path: i2pn2.org!i2pn.org!aioe.org!usenet.goja.nl.eu.org!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail
From: janburse@fastmail.fm (Mostowski Collapse)
Newsgroups: comp.lang.prolog
Subject: Re: 50 Years of Prolog Nonsense
Date: Sun, 25 Sep 2022 21:21:13 +0200
Message-ID: <tgq9n9$3jvn$2@solani.org>
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<tgq9jr$3jvn$1@solani.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 25 Sep 2022 19:21:13 -0000 (UTC)
Injection-Info: solani.org;
logging-data="118775"; mail-complaints-to="abuse@news.solani.org"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101
Firefox/68.0 SeaMonkey/2.53.13
Cancel-Lock: sha1:mXjQL0EKelX0tU+vRbxpRa14pbQ=
In-Reply-To: <tgq9jr$3jvn$1@solani.org>
X-User-ID: eJwFwYEBACAEBMCVwuONU8r+I3TnFhKdCA/4+OSSsWU4KZWXfZsT+irP8KVCEhu7o20R0DcsupfWQbEDHzzHFJ0=
 by: Mostowski Collapse - Sun, 25 Sep 2022 19:21 UTC

Smalint fastpath results for (/)/2 and for other Prolog
systems, only the timing, otherwise they all agree C=0:

/* Trealla Prolog 2.2.6 */
% Time elapsed 0.151s

/* ECLiPSe Prolog 7.0.61 */
% Yes (0.75s cpu)

/* Ciao Playground 1.21.0 */
% Wall time 784.0 ms

/* Scryer Prolog 0.9.0 */
% CPU time: 1.314s

The only good result is by Trealla Prolog.

Mostowski Collapse schrieb:
> One more question. Do SWI-Prolog have a smallint
> fast path for A/B, or does it always detour over
> some kind of mpq_get_d_nearest?
>
> The advantage of float(A)/float(B) is, it is already
> a smallint fastpath for A and B smallint. That
> is a smallint fastpath, seen that this has count C=0:
>
> ?- between(1,1000000,N), (33*33*N)/33
> =\= float(33*N).
>
> Some results concerning timing:
>
> /* SWI-Prolog 8.5.17, Windows */
> % 2,000,003 inferences, 0.297 CPU in 0.290 seconds (102% CPU, 6736852 Lips)
>
> /* SWI-Prolog 8.4.2, Unix WSL2 */
> % 2,000,003 inferences, 0.337 CPU in 0.337 seconds (100% CPU, 5929587 Lips)
>
> /* Jekejeke Prolog 1.5.4, JDK 19 */
> % Threads 297 ms, GC 3 ms, Up 290 ms (Current 09/25/22 18:38:00)
>
> /* Jekejeke Prolog 1.5.4, JDK 1.8 */
> % Threads 188 ms, GC 2 ms, Up 186 ms (Current 09/25/22 18:39:33)

Re: 50 Years of Prolog Nonsense

<a838c2e4-c0dd-4297-9eec-f96418aab309n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1775&group=comp.lang.prolog#1775

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:620a:17a8:b0:6ce:99f0:7626 with SMTP id ay40-20020a05620a17a800b006ce99f07626mr18696201qkb.194.1664298682498;
Tue, 27 Sep 2022 10:11:22 -0700 (PDT)
X-Received: by 2002:a05:6870:3398:b0:113:7f43:d0e9 with SMTP id
w24-20020a056870339800b001137f43d0e9mr2799739oae.33.1664298682239; Tue, 27
Sep 2022 10:11:22 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Tue, 27 Sep 2022 10:11:21 -0700 (PDT)
In-Reply-To: <tgq9n9$3jvn$2@solani.org>
Injection-Info: google-groups.googlegroups.com; posting-host=80.218.40.218; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 80.218.40.218
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<tgq9jr$3jvn$1@solani.org> <tgq9n9$3jvn$2@solani.org>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <a838c2e4-c0dd-4297-9eec-f96418aab309n@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Tue, 27 Sep 2022 17:11:22 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 1791
 by: Mostowski Collapse - Tue, 27 Sep 2022 17:11 UTC

Here is a 100% pure Prolog implementation of HALF_EVEN, without
any materialization, it assumes that the current float/1 does only mpz_get_d:

float_half_even(X,Y) :-
(getbit(X, msb(X)-53) =:= 0;
getbit(X, msb(X)-52) =:= 0, msb(X)-53 =:= lsb(X)), !, Y is float(X).
float_half_even(X,Y) :-
Y is nexttoward(float(X), 1E300).

Was using 1E300 for infinity, is there something else that would work?
float_half_even/2 is just a translation of the following into Prolog:

public double doubleValue() {
https://hg.openjdk.java.net/jdk8/jdk8/jdk/file/tip/src/share/classes/java/math/BigInteger.java#l3871

Re: 50 Years of Prolog Nonsense

<tgvb0b$68gl$1@solani.org>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1776&group=comp.lang.prolog#1776

  copy link   Newsgroups: comp.lang.prolog
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail
From: janburse@fastmail.fm (Mostowski Collapse)
Newsgroups: comp.lang.prolog
Subject: Re: 50 Years of Prolog Nonsense
Date: Tue, 27 Sep 2022 19:13:49 +0200
Message-ID: <tgvb0b$68gl$1@solani.org>
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<tgq9jr$3jvn$1@solani.org> <tgq9n9$3jvn$2@solani.org>
<a838c2e4-c0dd-4297-9eec-f96418aab309n@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Tue, 27 Sep 2022 17:13:47 -0000 (UTC)
Injection-Info: solani.org;
logging-data="205333"; mail-complaints-to="abuse@news.solani.org"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101
Firefox/68.0 SeaMonkey/2.53.14
Cancel-Lock: sha1:vpbKh74HLuQK44VHWbaB5Vs/zLg=
In-Reply-To: <a838c2e4-c0dd-4297-9eec-f96418aab309n@googlegroups.com>
X-User-ID: eJwNx0kBwDAIBEBLXEtADiHgX0I7v4E6ex9zuGGxJ/ORDvWShN1HgTr1/jBKrkbRBMSSUli8FcXbrEY9s8kfN40UvA==
 by: Mostowski Collapse - Tue, 27 Sep 2022 17:13 UTC

Here some test whether it agrees with BigInteger.
doubleValue(), first testing the old version of
SWI-Prolog, where float is mpz_get_d:

/* SWI-Prolog 8.5.17 */
?- between(1,10,N), X is 10^20+N*2^13,
float_half_even(X,Y), write(Y), nl, fail; true.
1.0e+20
1.0000000000000002e+20
1.0000000000000003e+20
1.0000000000000003e+20
1.0000000000000003e+20
1.0000000000000005e+20
1.0000000000000007e+20
1.0000000000000007e+20
1.0000000000000007e+20
1.0000000000000008e+20

Comparing with a Prolog system that calls
BigInteger.doubleValue():

/* Jekejeke Prolog 1.5.4 */
?- between(1,10,N), X is 10^20+N*2^13,
Y is float(X), write(Y), nl, fail; true.
1.0E20
1.0000000000000002E20
1.0000000000000003E20
1.0000000000000003E20
1.0000000000000003E20
1.0000000000000005E20
1.0000000000000007E20
1.0000000000000007E20
1.0000000000000007E20
1.0000000000000008E20

Yeah, they agree! Riddle solved, the misterious
veil of the secret souce behind an ultrafast
float/1 for bigint has been lifted.

Mostowski Collapse wrote:
> Here is a 100% pure Prolog implementation of HALF_EVEN, without
> any materialization, it assumes that the current float/1 does only mpz_get_d:
>
> float_half_even(X,Y) :-
> (getbit(X, msb(X)-53) =:= 0;
> getbit(X, msb(X)-52) =:= 0, msb(X)-53 =:= lsb(X)), !, Y is float(X).
> float_half_even(X,Y) :-
> Y is nexttoward(float(X), 1E300).
>
> Was using 1E300 for infinity, is there something else that would work?
> float_half_even/2 is just a translation of the following into Prolog:
>
> public double doubleValue() {
> https://hg.openjdk.java.net/jdk8/jdk8/jdk/file/tip/src/share/classes/java/math/BigInteger.java#l3871
>

Re: 50 Years of Prolog Nonsense

<0aa4b385-4fcd-4624-a888-32619eb2c8e1n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1777&group=comp.lang.prolog#1777

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:ad4:5caa:0:b0:4af:9655:5214 with SMTP id q10-20020ad45caa000000b004af96555214mr2770631qvh.122.1664361201320;
Wed, 28 Sep 2022 03:33:21 -0700 (PDT)
X-Received: by 2002:a9d:24c4:0:b0:658:c487:e9a3 with SMTP id
z62-20020a9d24c4000000b00658c487e9a3mr14172443ota.38.1664361201044; Wed, 28
Sep 2022 03:33:21 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Wed, 28 Sep 2022 03:33:20 -0700 (PDT)
In-Reply-To: <tgvb0b$68gl$1@solani.org>
Injection-Info: google-groups.googlegroups.com; posting-host=80.218.40.218; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 80.218.40.218
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<tgq9jr$3jvn$1@solani.org> <tgq9n9$3jvn$2@solani.org> <a838c2e4-c0dd-4297-9eec-f96418aab309n@googlegroups.com>
<tgvb0b$68gl$1@solani.org>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <0aa4b385-4fcd-4624-a888-32619eb2c8e1n@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 28 Sep 2022 10:33:21 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 1483
 by: Mostowski Collapse - Wed, 28 Sep 2022 10:33 UTC

Quite some disagreement concerning (**)/2:

/* Ciao Playground 1.21.0 */
?- Z is 51**10.
Z = 119042423827613000.0 ?

/* ECLiPSe Prolog 7.0.61 */
?- X is 51**10.
X = 1.1904242382761301e+17

Guess which one corresponds to HALF_EVEN ?

Re: 50 Years of Prolog Nonsense

<4f47fb19-4cf2-4891-b611-ba63ccc02bbcn@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1778&group=comp.lang.prolog#1778

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:ac8:7d10:0:b0:35c:d519:545 with SMTP id g16-20020ac87d10000000b0035cd5190545mr25593624qtb.537.1664361283599;
Wed, 28 Sep 2022 03:34:43 -0700 (PDT)
X-Received: by 2002:a05:6871:783:b0:12d:4b84:352d with SMTP id
o3-20020a056871078300b0012d4b84352dmr4822818oap.179.1664361283308; Wed, 28
Sep 2022 03:34:43 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Wed, 28 Sep 2022 03:34:43 -0700 (PDT)
In-Reply-To: <0aa4b385-4fcd-4624-a888-32619eb2c8e1n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=80.218.40.218; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 80.218.40.218
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<tgq9jr$3jvn$1@solani.org> <tgq9n9$3jvn$2@solani.org> <a838c2e4-c0dd-4297-9eec-f96418aab309n@googlegroups.com>
<tgvb0b$68gl$1@solani.org> <0aa4b385-4fcd-4624-a888-32619eb2c8e1n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <4f47fb19-4cf2-4891-b611-ba63ccc02bbcn@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 28 Sep 2022 10:34:43 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 2084
 by: Mostowski Collapse - Wed, 28 Sep 2022 10:34 UTC

Whats also funny when a Prolog system disagrees internally:

/* SWI-Prolog 8.5.17, Windows 10 */
?- X is 51^10, Z is float(X), Y is nexttoward(Z, 1E300).
X = 119042423827613001,
Z = 1.1904242382761301e+17,
Y = 1.1904242382761302e+17.

?- Z is float(51^10), Y is nexttoward(Z, 1E300).
Z = 1.19042423827613e+17,
Y = 1.1904242382761301e+17.

The above "bug" makes it hard for me to test float_half_even/2.

Mostowski Collapse schrieb am Mittwoch, 28. September 2022 um 12:33:22 UTC+2:
> Quite some disagreement concerning (**)/2:
> /* Ciao Playground 1.21.0 */
> ?- Z is 51**10.
> Z = 119042423827613000.0 ?
> /* ECLiPSe Prolog 7.0.61 */
> ?- X is 51**10.
> X = 1.1904242382761301e+17
>
> Guess which one corresponds to HALF_EVEN ?

Re: 50 Years of Prolog Nonsense

<fdab5060-0438-433d-b827-98f1239a7477n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1779&group=comp.lang.prolog#1779

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:6214:c29:b0:4aa:b050:5ed7 with SMTP id a9-20020a0562140c2900b004aab0505ed7mr24812018qvd.15.1664361443748;
Wed, 28 Sep 2022 03:37:23 -0700 (PDT)
X-Received: by 2002:a05:6808:30a0:b0:34f:656c:1909 with SMTP id
bl32-20020a05680830a000b0034f656c1909mr3850565oib.115.1664361443494; Wed, 28
Sep 2022 03:37:23 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Wed, 28 Sep 2022 03:37:23 -0700 (PDT)
In-Reply-To: <4f47fb19-4cf2-4891-b611-ba63ccc02bbcn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=80.218.40.218; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 80.218.40.218
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<tgq9jr$3jvn$1@solani.org> <tgq9n9$3jvn$2@solani.org> <a838c2e4-c0dd-4297-9eec-f96418aab309n@googlegroups.com>
<tgvb0b$68gl$1@solani.org> <0aa4b385-4fcd-4624-a888-32619eb2c8e1n@googlegroups.com>
<4f47fb19-4cf2-4891-b611-ba63ccc02bbcn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <fdab5060-0438-433d-b827-98f1239a7477n@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 28 Sep 2022 10:37:23 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 3146
 by: Mostowski Collapse - Wed, 28 Sep 2022 10:37 UTC

If I do nothing, I cannot make mistakes. Could be
the motto that Ciao Prolog doesn't support (^)/2
as an evaluable predicate.

But among those Prolog systems that take the
risk (clap clap!!) and support (^)/2 the situation
is a little immature, I find:

Scryer Prolog and Trealla Prolog, they both do wrong
float/1 rounding (1.19042423827613e+17
instead 1.1904242382761301E17):

/* Scryer Prolog 0.9.0 */
?- X is 51^10, Z is float(X).
X = 119042423827613001, Z = 1.19042423827613e17.
?- Z is float(51^10).
Z = 1.19042423827613e17.

But Trealla Prolog has a problem with (^)/2, wrong
result of bigint pow() (i.e. 119042423827613008 instead
119042423827613001):

/* Trealla Prolog 2.2.10 */
?- X is 51^10, Z is float(X).
X = 119042423827613008, Z = 1.19042423827613e+17.
?- Z is float(51^10).
Z = 1.19042423827613e+17.

Mostowski Collapse schrieb am Mittwoch, 28. September 2022 um 12:34:44 UTC+2:
> Whats also funny when a Prolog system disagrees internally:
>
> /* SWI-Prolog 8.5.17, Windows 10 */
> ?- X is 51^10, Z is float(X), Y is nexttoward(Z, 1E300).
> X = 119042423827613001,
> Z = 1.1904242382761301e+17,
> Y = 1.1904242382761302e+17.
>
> ?- Z is float(51^10), Y is nexttoward(Z, 1E300).
> Z = 1.19042423827613e+17,
> Y = 1.1904242382761301e+17.
>
> The above "bug" makes it hard for me to test float_half_even/2.
> Mostowski Collapse schrieb am Mittwoch, 28. September 2022 um 12:33:22 UTC+2:
> > Quite some disagreement concerning (**)/2:
> > /* Ciao Playground 1.21.0 */
> > ?- Z is 51**10.
> > Z = 119042423827613000.0 ?
> > /* ECLiPSe Prolog 7.0.61 */
> > ?- X is 51**10.
> > X = 1.1904242382761301e+17
> >
> > Guess which one corresponds to HALF_EVEN ?

Re: 50 Years of Prolog Nonsense

<f934efb4-69f4-4c27-8b33-0d0b4c31d97dn@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1780&group=comp.lang.prolog#1780

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:622a:1441:b0:35c:da34:d5dc with SMTP id v1-20020a05622a144100b0035cda34d5dcmr26660915qtx.338.1664362589743;
Wed, 28 Sep 2022 03:56:29 -0700 (PDT)
X-Received: by 2002:a05:6871:201:b0:10d:ef43:a205 with SMTP id
t1-20020a056871020100b0010def43a205mr4773161oad.115.1664362588644; Wed, 28
Sep 2022 03:56:28 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Wed, 28 Sep 2022 03:56:28 -0700 (PDT)
In-Reply-To: <0aa4b385-4fcd-4624-a888-32619eb2c8e1n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=80.218.40.218; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 80.218.40.218
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<tgq9jr$3jvn$1@solani.org> <tgq9n9$3jvn$2@solani.org> <a838c2e4-c0dd-4297-9eec-f96418aab309n@googlegroups.com>
<tgvb0b$68gl$1@solani.org> <0aa4b385-4fcd-4624-a888-32619eb2c8e1n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <f934efb4-69f4-4c27-8b33-0d0b4c31d97dn@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 28 Sep 2022 10:56:29 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 2142
 by: Mostowski Collapse - Wed, 28 Sep 2022 10:56 UTC

To judge that ECLiPSe Prolog is correct, one
needs to think in binary representation. We find,
using a precise float to bigint conversion:

?- X is integer(1.1904242382761301E17).
X = 119042423827613008.

?- X is integer(1.19042423827613E17).
X = 119042423827612992.

Now which one is closer?

?- X is 119042423827613001-119042423827613008.
X = -7.

?- X is 119042423827613001-119042423827612992.
X = 9.

So 1.1904242382761301E17 is the correct float.

Mostowski Collapse schrieb am Mittwoch, 28. September 2022 um 12:33:22 UTC+2:
> Quite some disagreement concerning (**)/2:
> /* Ciao Playground 1.21.0 */
> ?- Z is 51**10.
> Z = 119042423827613000.0 ?
> /* ECLiPSe Prolog 7.0.61 */
> ?- X is 51**10.
> X = 1.1904242382761301e+17
>
> Guess which one corresponds to HALF_EVEN ?

Re: 50 Years of Prolog Nonsense

<e4880877-e92a-4945-9ebd-9be5c9628baan@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1781&group=comp.lang.prolog#1781

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:ac8:5851:0:b0:35b:ab32:3bbe with SMTP id h17-20020ac85851000000b0035bab323bbemr27076418qth.175.1664366502065;
Wed, 28 Sep 2022 05:01:42 -0700 (PDT)
X-Received: by 2002:a05:6808:1a29:b0:34f:face:c73c with SMTP id
bk41-20020a0568081a2900b0034ffacec73cmr4322100oib.122.1664366501283; Wed, 28
Sep 2022 05:01:41 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Wed, 28 Sep 2022 05:01:41 -0700 (PDT)
In-Reply-To: <f934efb4-69f4-4c27-8b33-0d0b4c31d97dn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=80.218.40.218; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 80.218.40.218
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<tgq9jr$3jvn$1@solani.org> <tgq9n9$3jvn$2@solani.org> <a838c2e4-c0dd-4297-9eec-f96418aab309n@googlegroups.com>
<tgvb0b$68gl$1@solani.org> <0aa4b385-4fcd-4624-a888-32619eb2c8e1n@googlegroups.com>
<f934efb4-69f4-4c27-8b33-0d0b4c31d97dn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <e4880877-e92a-4945-9ebd-9be5c9628baan@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 28 Sep 2022 12:01:42 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 2906
 by: Mostowski Collapse - Wed, 28 Sep 2022 12:01 UTC

Be careful, integer/1 isn't in the ISO core standard, thats
my take in one system to make it a precise conversion from
float to bigint. Maybe not reproducable in other Prolog systems.

It works also in Dogelog player:

/* Dogelog Player, JavaScript */
?- X is integer(1.1904242382761301E17).
X = 119042423827613008.
?- X is integer(1.19042423827613E17).
X = 119042423827612992.

/* Dogelog Player, Python */
?- X is integer(1.1904242382761301E17).
X = 119042423827613008.
?- X is integer(1.19042423827613E17).
X = 119042423827612992.

Mostowski Collapse schrieb am Mittwoch, 28. September 2022 um 12:56:30 UTC+2:
> To judge that ECLiPSe Prolog is correct, one
> needs to think in binary representation. We find,
> using a precise float to bigint conversion:
>
> ?- X is integer(1.1904242382761301E17).
> X = 119042423827613008.
>
> ?- X is integer(1.19042423827613E17).
> X = 119042423827612992.
>
> Now which one is closer?
>
> ?- X is 119042423827613001-119042423827613008.
> X = -7.
>
> ?- X is 119042423827613001-119042423827612992.
> X = 9.
>
> So 1.1904242382761301E17 is the correct float.
> Mostowski Collapse schrieb am Mittwoch, 28. September 2022 um 12:33:22 UTC+2:
> > Quite some disagreement concerning (**)/2:
> > /* Ciao Playground 1.21.0 */
> > ?- Z is 51**10.
> > Z = 119042423827613000.0 ?
> > /* ECLiPSe Prolog 7.0.61 */
> > ?- X is 51**10.
> > X = 1.1904242382761301e+17
> >
> > Guess which one corresponds to HALF_EVEN ?

Re: 50 Years of Prolog Nonsense

<d50b1ba9-2937-48ac-a14f-bf8923a0553dn@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1782&group=comp.lang.prolog#1782

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:620a:b88:b0:6ce:ec98:e7f8 with SMTP id k8-20020a05620a0b8800b006ceec98e7f8mr22025669qkh.338.1664372667679;
Wed, 28 Sep 2022 06:44:27 -0700 (PDT)
X-Received: by 2002:a05:6830:1e4c:b0:659:eca3:2c70 with SMTP id
e12-20020a0568301e4c00b00659eca32c70mr14451589otj.210.1664372667414; Wed, 28
Sep 2022 06:44:27 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Wed, 28 Sep 2022 06:44:27 -0700 (PDT)
In-Reply-To: <0aa4b385-4fcd-4624-a888-32619eb2c8e1n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=80.218.40.218; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 80.218.40.218
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<tgq9jr$3jvn$1@solani.org> <tgq9n9$3jvn$2@solani.org> <a838c2e4-c0dd-4297-9eec-f96418aab309n@googlegroups.com>
<tgvb0b$68gl$1@solani.org> <0aa4b385-4fcd-4624-a888-32619eb2c8e1n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <d50b1ba9-2937-48ac-a14f-bf8923a0553dn@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 28 Sep 2022 13:44:27 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 2417
 by: Mostowski Collapse - Wed, 28 Sep 2022 13:44 UTC

Warning, possibly this ticket can be closed. Its not necessarily
a display problem. For example many Math.pow(double,double)
implementations cannot do the problem correctly.

They cannot or do not round to the theoretical optimum, they
have inherently a higher error than only one Unit in the last place (ULP).
So a certain error is to expect. You see this here:

/* Dogelog Player, JavaScript */
?- X is 51**10.
X = 1.19042423827613E17.

?- X is float(51^10).
X = 119042423827613010.0.

In the above the (**)/2 is Math.pow(double,double) and the
(^)/2 is exact bigint exponentiation. I took the pair (51,10)
from a list of pairs where (**)/2 and (^)/2 often disagree

based on Math.pow(double,double) typically being weak.

Mostowski Collapse schrieb am Mittwoch, 28. September 2022 um 12:33:22 UTC+2:
> Quite some disagreement concerning (**)/2:
> /* Ciao Playground 1.21.0 */
> ?- Z is 51**10.
> Z = 119042423827613000.0 ?
> /* ECLiPSe Prolog 7.0.61 */
> ?- X is 51**10.
> X = 1.1904242382761301e+17
>
> Guess which one corresponds to HALF_EVEN ?

Re: 50 Years of Prolog Nonsense

<a1f872c5-8914-4d93-a9c6-161484ef8294n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1877&group=comp.lang.prolog#1877

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:620a:1013:b0:6fe:fb09:ec2e with SMTP id z19-20020a05620a101300b006fefb09ec2emr1388063qkj.214.1672809452702;
Tue, 03 Jan 2023 21:17:32 -0800 (PST)
X-Received: by 2002:a05:6870:1f05:b0:143:fca2:e031 with SMTP id
pd5-20020a0568701f0500b00143fca2e031mr3542517oab.282.1672809452242; Tue, 03
Jan 2023 21:17:32 -0800 (PST)
Path: i2pn2.org!rocksolid2!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Tue, 3 Jan 2023 21:17:32 -0800 (PST)
In-Reply-To: <d3664324-bb27-4af8-b5e8-1f9c58e3b5a1n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.44; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.44
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<cf0ec1cc-b735-4dca-9418-e3e2794f4d4cn@googlegroups.com> <ebb9dd2b-7ffa-4b20-90f7-a451ad572f4en@googlegroups.com>
<e275aa49-1835-4e43-a436-dd485d8cc787n@googlegroups.com> <b01aa28d-80e6-4c1e-9e12-0265ac67730dn@googlegroups.com>
<2d9ae42a-ba6c-48da-982a-53c9276ebdcen@googlegroups.com> <29ef3ce4-cdd8-492d-8d92-26022543a187n@googlegroups.com>
<d3664324-bb27-4af8-b5e8-1f9c58e3b5a1n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <a1f872c5-8914-4d93-a9c6-161484ef8294n@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 04 Jan 2023 05:17:32 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 4064
 by: Mostowski Collapse - Wed, 4 Jan 2023 05:17 UTC

Even SWI-Prolog has still some brakes somewhere in its
bigint/smallint implementation, or its a problem of the
ZIP compilation, its WAM architecture? At least on the

Windows platform I find this astonishing result:

/* Jekejeke Prolog 1.5.5, JDK 1.8 */
?- time((between(1,100000,_), rat_rationalize(3.141592653589793,
(7074237752028440,2251799813685248), _), fail; true)).
% Threads 1,172 ms, GC 15 ms, Up 1,201 ms (Current 01/04/23 06:10:28)
true.

/* SWI-Prolog 9.1.0 */
܀?- time((between(1,100000,_), rat_rationalize(3.141592653589793,
(7074237752028440,2251799813685248), _), fail; true)).
% 7,000,000 inferences, 1.813 CPU in 1.816 seconds (100% CPU, 3862069 Lips)
true.

SWI-Prolog is 50% slower. What was the Prolog code
of the test cases? Its my latest rat_rationalize/3, written
such that there is no dependency on rational numbers,

working with pairs and avoiding a call to rational/1.
So its a test case that any ISO core standard Prolog should
be able to run. Will possibly test more Prolog systems.

% rat_rationalize(+Number, +Pair, -Pair)
:- public rat_rationalize/3.
rat_rationalize(F, (V,W), T) :-
divmod(V, W, D, U),
rat_iter((W,U), (D,1), (1,0), F, T).

% rat_iter(+Pair, +Pair, +Pair, +Number, -Pair)
:- private rat_iter/5.
rat_iter(_, (M,N), _, Y, X) :- M/N =:= Y, !, X = (M,N).
rat_iter((_,0), X, _, _, X) :- !.
rat_iter((V,W), (M,N), (P,Q), Y, X) :-
divmod(V, W, D, U),
R is D*M+P,
S is D*N+Q,
rat_iter((W,U), (R,S), (M,N), Y, X).

Mostowski Collapse schrieb am Montag, 2. Januar 2023 um 19:51:51 UTC+1:
> Never trust a paper, that you didn't fake yourself.
>
> Example:
>
> Table 3. SWOT Analysis
> Strengths (Section 4.1)
> sophisticated tools: analyzers, partial evaluators, parallelizers, ...
> https://arxiv.org/pdf/2201.10816.pdf
>
> Looking at SWI-Prolog and how rationalize/1 is
> wiggled into C code, we are probably still
> in the stone age of Prolog, and the above SWOT
>
> analysis is incorrect or too optimistic. This wont
> probably improve in 2023, even Scryer Prolog
> doesn't have a partial evaluator of some sort.
>
> It also begs the question, if your pure Prolog
> executes quickly in your Prolog system, why
> go into C code? Isn't this a sign that your Prolog
>
> system is weak? Better have a faster Prolog system
> and don't rely on tooling and or foreign code.

Re: 50 Years of Prolog Nonsense

<f532a556-5f96-4625-ba8d-57bfd553f6b3n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1878&group=comp.lang.prolog#1878

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:ae9:e204:0:b0:6ff:a7f1:ff4e with SMTP id c4-20020ae9e204000000b006ffa7f1ff4emr1542502qkc.292.1672810620103;
Tue, 03 Jan 2023 21:37:00 -0800 (PST)
X-Received: by 2002:a05:6870:9a8d:b0:150:c89a:1709 with SMTP id
hp13-20020a0568709a8d00b00150c89a1709mr528111oab.4.1672810619526; Tue, 03 Jan
2023 21:36:59 -0800 (PST)
Path: i2pn2.org!rocksolid2!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Tue, 3 Jan 2023 21:36:59 -0800 (PST)
In-Reply-To: <a1f872c5-8914-4d93-a9c6-161484ef8294n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.44; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.44
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<cf0ec1cc-b735-4dca-9418-e3e2794f4d4cn@googlegroups.com> <ebb9dd2b-7ffa-4b20-90f7-a451ad572f4en@googlegroups.com>
<e275aa49-1835-4e43-a436-dd485d8cc787n@googlegroups.com> <b01aa28d-80e6-4c1e-9e12-0265ac67730dn@googlegroups.com>
<2d9ae42a-ba6c-48da-982a-53c9276ebdcen@googlegroups.com> <29ef3ce4-cdd8-492d-8d92-26022543a187n@googlegroups.com>
<d3664324-bb27-4af8-b5e8-1f9c58e3b5a1n@googlegroups.com> <a1f872c5-8914-4d93-a9c6-161484ef8294n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <f532a556-5f96-4625-ba8d-57bfd553f6b3n@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 04 Jan 2023 05:37:00 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
 by: Mostowski Collapse - Wed, 4 Jan 2023 05:36 UTC

Woa! Jekejeke Prolog JDK 1.8 Windows still beats by
an itch Trealla Prolog and also Scryer Prolog. And
Jekejeke Prolog 1.5.5 has evolved, it has now also a

quadruple precision data type. But this doesn't seem
to slow down the core and its arithmetical unit of
Jekejeke Prolog. But I have streamlined a little bit

divmod/4 and friends. In previous version I also
supported float arguments, but I reverted it back
to only accept integer. On the WSL2 Platform I get:

/* Trealla Prolog 2.7.15 */
?- time((between(1,100000,_), rat_rationalize(3.141592653589793,
(7074237752028440,2251799813685248), _), fail; true)).
% Time elapsed 1.29s
rue.

/* Scryer Prolog 0.9.1 */
?- time((between(1,100000,_), rat_rationalize(3.141592653589793,
(7074237752028440,2251799813685248), _), fail; true)).
% CPU time: 1.365s
true.

Scryer Prolog would be possibly faster if it had divmod/4.
I needed to bootstrap it as follows. The bootstrapping was
not necessary for Trealla Prolog, since it has adopted divmod/4.

/* Needed for Scryer Prolog */
divmod(A, B, D, M) :-
D is A div B,
M is A - D*B.

Mostowski Collapse schrieb am Mittwoch, 4. Januar 2023 um 06:17:33 UTC+1:
> Even SWI-Prolog has still some brakes somewhere in its
> bigint/smallint implementation, or its a problem of the
> ZIP compilation, its WAM architecture? At least on the
>
> Windows platform I find this astonishing result:
>
> /* Jekejeke Prolog 1.5.5, JDK 1.8 */
> ?- time((between(1,100000,_), rat_rationalize(3.141592653589793,
> (7074237752028440,2251799813685248), _), fail; true)).
> % Threads 1,172 ms, GC 15 ms, Up 1,201 ms (Current 01/04/23 06:10:28)
> true.
>
> /* SWI-Prolog 9.1.0 */
> ܀?- time((between(1,100000,_), rat_rationalize(3.141592653589793,
> (7074237752028440,2251799813685248), _), fail; true)).
> % 7,000,000 inferences, 1.813 CPU in 1.816 seconds (100% CPU, 3862069 Lips)
> true.
>
> SWI-Prolog is 50% slower. What was the Prolog code
> of the test cases? Its my latest rat_rationalize/3, written
> such that there is no dependency on rational numbers,
>
> working with pairs and avoiding a call to rational/1.
> So its a test case that any ISO core standard Prolog should
> be able to run. Will possibly test more Prolog systems.
>
> % rat_rationalize(+Number, +Pair, -Pair)
> :- public rat_rationalize/3.
> rat_rationalize(F, (V,W), T) :-
> divmod(V, W, D, U),
> rat_iter((W,U), (D,1), (1,0), F, T).
>
> % rat_iter(+Pair, +Pair, +Pair, +Number, -Pair)
> :- private rat_iter/5.
> rat_iter(_, (M,N), _, Y, X) :- M/N =:= Y, !, X = (M,N).
> rat_iter((_,0), X, _, _, X) :- !.
> rat_iter((V,W), (M,N), (P,Q), Y, X) :-
> divmod(V, W, D, U),
> R is D*M+P,
> S is D*N+Q,
> rat_iter((W,U), (R,S), (M,N), Y, X).
> Mostowski Collapse schrieb am Montag, 2. Januar 2023 um 19:51:51 UTC+1:
> > Never trust a paper, that you didn't fake yourself.
> >
> > Example:
> >
> > Table 3. SWOT Analysis
> > Strengths (Section 4.1)
> > sophisticated tools: analyzers, partial evaluators, parallelizers, ...
> > https://arxiv.org/pdf/2201.10816.pdf
> >
> > Looking at SWI-Prolog and how rationalize/1 is
> > wiggled into C code, we are probably still
> > in the stone age of Prolog, and the above SWOT
> >
> > analysis is incorrect or too optimistic. This wont
> > probably improve in 2023, even Scryer Prolog
> > doesn't have a partial evaluator of some sort.
> >
> > It also begs the question, if your pure Prolog
> > executes quickly in your Prolog system, why
> > go into C code? Isn't this a sign that your Prolog
> >
> > system is weak? Better have a faster Prolog system
> > and don't rely on tooling and or foreign code.

Re: 50 Years of Prolog Nonsense

<0fc0fc25-1e6b-4256-8cea-b1370eb83177n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1879&group=comp.lang.prolog#1879

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:ad4:5909:0:b0:4c7:343d:2a60 with SMTP id ez9-20020ad45909000000b004c7343d2a60mr2446071qvb.42.1672811415859;
Tue, 03 Jan 2023 21:50:15 -0800 (PST)
X-Received: by 2002:a05:6870:9d13:b0:150:a906:1531 with SMTP id
pp19-20020a0568709d1300b00150a9061531mr893441oab.257.1672811415564; Tue, 03
Jan 2023 21:50:15 -0800 (PST)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Tue, 3 Jan 2023 21:50:15 -0800 (PST)
In-Reply-To: <f532a556-5f96-4625-ba8d-57bfd553f6b3n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.44; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.44
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<cf0ec1cc-b735-4dca-9418-e3e2794f4d4cn@googlegroups.com> <ebb9dd2b-7ffa-4b20-90f7-a451ad572f4en@googlegroups.com>
<e275aa49-1835-4e43-a436-dd485d8cc787n@googlegroups.com> <b01aa28d-80e6-4c1e-9e12-0265ac67730dn@googlegroups.com>
<2d9ae42a-ba6c-48da-982a-53c9276ebdcen@googlegroups.com> <29ef3ce4-cdd8-492d-8d92-26022543a187n@googlegroups.com>
<d3664324-bb27-4af8-b5e8-1f9c58e3b5a1n@googlegroups.com> <a1f872c5-8914-4d93-a9c6-161484ef8294n@googlegroups.com>
<f532a556-5f96-4625-ba8d-57bfd553f6b3n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <0fc0fc25-1e6b-4256-8cea-b1370eb83177n@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 04 Jan 2023 05:50:15 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 6397
 by: Mostowski Collapse - Wed, 4 Jan 2023 05:50 UTC

And here the speedy ones. ca. 5 times speedier than
Jekejeke Prolog! Amazing Prolog systems indeed:

/* Ciao Prolog 1.22.0 */
?- time((between(1,100000,_), rat_rationalize(3.141592653589793,
(7074237752028440,2251799813685248), _), fail; true)).
% 0.250524 seconds

/* ECLiPSe Prolog 7.1.12 */
?- time((between(1,100000,_), rat_rationalize(3.141592653589793,
(7074237752028440,2251799813685248), _), fail; true)).
0.224643099994864 sec

Mostowski Collapse schrieb am Mittwoch, 4. Januar 2023 um 06:37:01 UTC+1:
> Woa! Jekejeke Prolog JDK 1.8 Windows still beats by
> an itch Trealla Prolog and also Scryer Prolog. And
> Jekejeke Prolog 1.5.5 has evolved, it has now also a
>
> quadruple precision data type. But this doesn't seem
> to slow down the core and its arithmetical unit of
> Jekejeke Prolog. But I have streamlined a little bit
>
> divmod/4 and friends. In previous version I also
> supported float arguments, but I reverted it back
> to only accept integer. On the WSL2 Platform I get:
>
> /* Trealla Prolog 2.7.15 */
> ?- time((between(1,100000,_), rat_rationalize(3.141592653589793,
> (7074237752028440,2251799813685248), _), fail; true)).
> % Time elapsed 1.29s
> rue.
>
> /* Scryer Prolog 0.9.1 */
> ?- time((between(1,100000,_), rat_rationalize(3.141592653589793,
> (7074237752028440,2251799813685248), _), fail; true)).
> % CPU time: 1.365s
> true.
>
> Scryer Prolog would be possibly faster if it had divmod/4.
> I needed to bootstrap it as follows. The bootstrapping was
> not necessary for Trealla Prolog, since it has adopted divmod/4.
>
> /* Needed for Scryer Prolog */
> divmod(A, B, D, M) :-
> D is A div B,
> M is A - D*B.
> Mostowski Collapse schrieb am Mittwoch, 4. Januar 2023 um 06:17:33 UTC+1:
> > Even SWI-Prolog has still some brakes somewhere in its
> > bigint/smallint implementation, or its a problem of the
> > ZIP compilation, its WAM architecture? At least on the
> >
> > Windows platform I find this astonishing result:
> >
> > /* Jekejeke Prolog 1.5.5, JDK 1.8 */
> > ?- time((between(1,100000,_), rat_rationalize(3.141592653589793,
> > (7074237752028440,2251799813685248), _), fail; true)).
> > % Threads 1,172 ms, GC 15 ms, Up 1,201 ms (Current 01/04/23 06:10:28)
> > true.
> >
> > /* SWI-Prolog 9.1.0 */
> > ܀?- time((between(1,100000,_), rat_rationalize(3.141592653589793,
> > (7074237752028440,2251799813685248), _), fail; true)).
> > % 7,000,000 inferences, 1.813 CPU in 1.816 seconds (100% CPU, 3862069 Lips)
> > true.
> >
> > SWI-Prolog is 50% slower. What was the Prolog code
> > of the test cases? Its my latest rat_rationalize/3, written
> > such that there is no dependency on rational numbers,
> >
> > working with pairs and avoiding a call to rational/1.
> > So its a test case that any ISO core standard Prolog should
> > be able to run. Will possibly test more Prolog systems.
> >
> > % rat_rationalize(+Number, +Pair, -Pair)
> > :- public rat_rationalize/3.
> > rat_rationalize(F, (V,W), T) :-
> > divmod(V, W, D, U),
> > rat_iter((W,U), (D,1), (1,0), F, T).
> >
> > % rat_iter(+Pair, +Pair, +Pair, +Number, -Pair)
> > :- private rat_iter/5.
> > rat_iter(_, (M,N), _, Y, X) :- M/N =:= Y, !, X = (M,N).
> > rat_iter((_,0), X, _, _, X) :- !.
> > rat_iter((V,W), (M,N), (P,Q), Y, X) :-
> > divmod(V, W, D, U),
> > R is D*M+P,
> > S is D*N+Q,
> > rat_iter((W,U), (R,S), (M,N), Y, X).
> > Mostowski Collapse schrieb am Montag, 2. Januar 2023 um 19:51:51 UTC+1:
> > > Never trust a paper, that you didn't fake yourself.
> > >
> > > Example:
> > >
> > > Table 3. SWOT Analysis
> > > Strengths (Section 4.1)
> > > sophisticated tools: analyzers, partial evaluators, parallelizers, ....
> > > https://arxiv.org/pdf/2201.10816.pdf
> > >
> > > Looking at SWI-Prolog and how rationalize/1 is
> > > wiggled into C code, we are probably still
> > > in the stone age of Prolog, and the above SWOT
> > >
> > > analysis is incorrect or too optimistic. This wont
> > > probably improve in 2023, even Scryer Prolog
> > > doesn't have a partial evaluator of some sort.
> > >
> > > It also begs the question, if your pure Prolog
> > > executes quickly in your Prolog system, why
> > > go into C code? Isn't this a sign that your Prolog
> > >
> > > system is weak? Better have a faster Prolog system
> > > and don't rely on tooling and or foreign code.

Re: 50 Years of Prolog Nonsense

<b57250f2-55b5-4dba-8f85-e8dfcf1afd42n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1881&group=comp.lang.prolog#1881

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:ac8:7398:0:b0:3a8:15e1:757 with SMTP id t24-20020ac87398000000b003a815e10757mr1747231qtp.194.1673105725405;
Sat, 07 Jan 2023 07:35:25 -0800 (PST)
X-Received: by 2002:a05:6830:1147:b0:66e:c864:fcb1 with SMTP id
x7-20020a056830114700b0066ec864fcb1mr3141301otq.31.1673105725122; Sat, 07 Jan
2023 07:35:25 -0800 (PST)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Sat, 7 Jan 2023 07:35:24 -0800 (PST)
In-Reply-To: <0fc0fc25-1e6b-4256-8cea-b1370eb83177n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.44; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.44
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<cf0ec1cc-b735-4dca-9418-e3e2794f4d4cn@googlegroups.com> <ebb9dd2b-7ffa-4b20-90f7-a451ad572f4en@googlegroups.com>
<e275aa49-1835-4e43-a436-dd485d8cc787n@googlegroups.com> <b01aa28d-80e6-4c1e-9e12-0265ac67730dn@googlegroups.com>
<2d9ae42a-ba6c-48da-982a-53c9276ebdcen@googlegroups.com> <29ef3ce4-cdd8-492d-8d92-26022543a187n@googlegroups.com>
<d3664324-bb27-4af8-b5e8-1f9c58e3b5a1n@googlegroups.com> <a1f872c5-8914-4d93-a9c6-161484ef8294n@googlegroups.com>
<f532a556-5f96-4625-ba8d-57bfd553f6b3n@googlegroups.com> <0fc0fc25-1e6b-4256-8cea-b1370eb83177n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b57250f2-55b5-4dba-8f85-e8dfcf1afd42n@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Sat, 07 Jan 2023 15:35:25 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 2461
 by: Mostowski Collapse - Sat, 7 Jan 2023 15:35 UTC

How many lines of codes are they, Ciao and ECLiPSe?
Any papers about that? Are they giants? See also

Weird Landscape of Compilers - Graydon, 2019
http://venge.net/graydon/talks/CompilerTalk-2019.pdf

Mostowski Collapse schrieb am Mittwoch, 4. Januar 2023 um 06:50:16 UTC+1:
> And here the speedy ones. ca. 5 times speedier than
> Jekejeke Prolog! Amazing Prolog systems indeed:
>
> /* Ciao Prolog 1.22.0 */
> ?- time((between(1,100000,_), rat_rationalize(3.141592653589793,
> (7074237752028440,2251799813685248), _), fail; true)).
> % 0.250524 seconds
>
> /* ECLiPSe Prolog 7.1.12 */
> ?- time((between(1,100000,_), rat_rationalize(3.141592653589793,
> (7074237752028440,2251799813685248), _), fail; true)).
> 0.224643099994864 sec

Re: 50 Years of Prolog Nonsense

<4de7c23c-60d0-4ba8-ae58-697f8b2c3961n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1894&group=comp.lang.prolog#1894

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:6214:71a:b0:532:fc7:f39c with SMTP id c26-20020a056214071a00b005320fc7f39cmr1437169qvz.35.1673711625633;
Sat, 14 Jan 2023 07:53:45 -0800 (PST)
X-Received: by 2002:aca:2206:0:b0:35b:7dc4:86d0 with SMTP id
b6-20020aca2206000000b0035b7dc486d0mr5616063oic.282.1673711625219; Sat, 14
Jan 2023 07:53:45 -0800 (PST)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Sat, 14 Jan 2023 07:53:44 -0800 (PST)
In-Reply-To: <b57250f2-55b5-4dba-8f85-e8dfcf1afd42n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.44; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.44
References: <db903ba2-8ccd-418e-bd18-a9eb381cd222n@googlegroups.com>
<cf0ec1cc-b735-4dca-9418-e3e2794f4d4cn@googlegroups.com> <ebb9dd2b-7ffa-4b20-90f7-a451ad572f4en@googlegroups.com>
<e275aa49-1835-4e43-a436-dd485d8cc787n@googlegroups.com> <b01aa28d-80e6-4c1e-9e12-0265ac67730dn@googlegroups.com>
<2d9ae42a-ba6c-48da-982a-53c9276ebdcen@googlegroups.com> <29ef3ce4-cdd8-492d-8d92-26022543a187n@googlegroups.com>
<d3664324-bb27-4af8-b5e8-1f9c58e3b5a1n@googlegroups.com> <a1f872c5-8914-4d93-a9c6-161484ef8294n@googlegroups.com>
<f532a556-5f96-4625-ba8d-57bfd553f6b3n@googlegroups.com> <0fc0fc25-1e6b-4256-8cea-b1370eb83177n@googlegroups.com>
<b57250f2-55b5-4dba-8f85-e8dfcf1afd42n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <4de7c23c-60d0-4ba8-ae58-697f8b2c3961n@googlegroups.com>
Subject: Re: 50 Years of Prolog Nonsense
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Sat, 14 Jan 2023 15:53:45 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 2426
 by: Mostowski Collapse - Sat, 14 Jan 2023 15:53 UTC

Now I found a nice test case for format/[2,3]:

/* SWI-Prolog 9.1.2 */
?- E = sin(pi/6), R is E, format(
'Evaluating ~w gives ~4f rounded to 4 digits', [E,R]), nl.
Evaluating sin(pi/6) gives 0.5000 rounded to 4 digits
E = sin(pi/6),
R = 0.49999999999999994.

Which Scryer Prolog fails:

/* Scryer Prolog v0.9.1-61-g84583da5 */
?- E = sin(pi/6), R is E, format(
"Evaluating ~w gives ~4f rounded to 4 digits", [E,R]), nl.
Evaluating sin(pi/6) gives 0.4999 rounded to 4 digits
E = sin(pi/6), R = 0.49999999999999994.

See also this Tau Prolog ticket:

format/2 doesn't work as expected
https://github.com/tau-prolog/tau-prolog/issues/341


devel / comp.lang.prolog / Re: 50 Years of Prolog Nonsense

Pages:1234567
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor