From unknown Sat Jun 14 19:06:10 2025 X-Loop: help-debbugs@gnu.org Subject: bug#35868: [PATCH] `memql' does not work for bignums Resent-From: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 23 May 2019 15:42:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 35868 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 35868@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.155862608227811 (code B ref -1); Thu, 23 May 2019 15:42:02 +0000 Received: (at submit) by debbugs.gnu.org; 23 May 2019 15:41:22 +0000 Received: from localhost ([127.0.0.1]:45067 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hTpqM-0007EV-3d for submit@debbugs.gnu.org; Thu, 23 May 2019 11:41:22 -0400 Received: from eggs.gnu.org ([209.51.188.92]:36960) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hTpqJ-0007EH-N7 for submit@debbugs.gnu.org; Thu, 23 May 2019 11:41:20 -0400 Received: from lists.gnu.org ([209.51.188.17]:60646) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hTpqE-0003NL-Hr for submit@debbugs.gnu.org; Thu, 23 May 2019 11:41:14 -0400 Received: from eggs.gnu.org ([209.51.188.92]:51332) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTpqD-0005iB-Mm for bug-gnu-emacs@gnu.org; Thu, 23 May 2019 11:41:14 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTpqC-0003MA-RE for bug-gnu-emacs@gnu.org; Thu, 23 May 2019 11:41:13 -0400 Received: from mail1425c50.megamailservers.eu ([91.136.14.25]:54710 helo=mail102c50.megamailservers.eu) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hTpqC-0003Je-9a for bug-gnu-emacs@gnu.org; Thu, 23 May 2019 11:41:12 -0400 X-Authenticated-User: mattiase@bredband.net DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=megamailservers.eu; s=maildub; t=1558624035; bh=xSyEpAkOabuf3x3OXzlNp/JMEKOBJ2q4o4uLLkladOw=; h=From:Subject:Date:To:From; b=c3o1opQhd/P9OFF7dCXW60m4YxgVcGT3fI49HHixqqaq36drmigCrnyKm0mAHs4Tc Bkb5yChpvLmS7OW5V448dMeOh35Bo/C1s7GioO4X9aowsfy7mmaNvB6H308ytOJFp4 J9T5N1U0sRKf+Uzxz8GuQjkjcHO/IY6TFSLi6AVc= Feedback-ID: mattiase@acm.or Received: from [192.168.0.4] ([188.150.171.71]) (authenticated bits=0) by mail102c50.megamailservers.eu (8.14.9/8.13.1) with ESMTP id x4NF7CgO031586 for ; Thu, 23 May 2019 15:07:14 +0000 From: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Content-Type: multipart/mixed; boundary="Apple-Mail=_5A78E11F-5E5E-4D38-BCB4-D57CC9A4D1A2" Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) Message-Id: <79AE2738-3B42-410A-AA9A-F0FDE7865162@acm.org> Date: Thu, 23 May 2019 17:07:11 +0200 X-Mailer: Apple Mail (2.3445.104.11) X-CTCH-RefID: str=0001.0A0B0213.5CE6B723.0001, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0 X-CTCH-VOD: Unknown X-CTCH-Spam: Unknown X-CTCH-Score: 0.000 X-CTCH-Rules: X-CTCH-Flags: 0 X-CTCH-ScoreCust: 0.000 X-CSC: 0 X-CHA: v=2.3 cv=F7x5iJpN c=1 sm=1 tr=0 a=SF+I6pRkHZhrawxbOkkvaA==:117 a=SF+I6pRkHZhrawxbOkkvaA==:17 a=xq1mYcpEdMbUi_Uk5wIA:9 a=CjuIK1q_8ugA:10 a=sCsws7hTipOt-NdtaxUA:9 a=B2y7HmGcmWMA:10 a=0aE9QUaO_QmmuWBIoxcA:9 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] X-Received-From: 91.136.14.25 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Spam-Score: -1.3 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --Apple-Mail=_5A78E11F-5E5E-4D38-BCB4-D57CC9A4D1A2 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii (memql (ash 1 100) (list (ash 1 100))) => nil Proposed patch attached. --Apple-Mail=_5A78E11F-5E5E-4D38-BCB4-D57CC9A4D1A2 Content-Disposition: attachment; filename=0001-Fix-memql-for-bignums.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0001-Fix-memql-for-bignums.patch" Content-Transfer-Encoding: quoted-printable =46rom=20afe2c459cff312e8c378e8381a36110f444dcb01=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20=3D?UTF-8?q?Mattias=3D20Engdeg=3DC3=3DA5rd?=3D=20= =0ADate:=20Thu,=2023=20May=202019=2017:01:27=20+0200=0A= Subject:=20[PATCH]=20Fix=20`memql'=20for=20bignums=0A=0A*=20src/fns.c=20= (Fmemql):=20Make=20`memql'=20work=20for=20bignums.=0A*=20= test/src/fns-tests.el=20(test-bignum-eql):=20Also=20test=20`memql'.=0A= ---=0A=20src/fns.c=20=20=20=20=20=20=20=20=20=20=20=20=20|=2034=20= ++++++++++++++++++++++++----------=0A=20test/src/fns-tests.el=20|=20=203=20= ++-=0A=202=20files=20changed,=2026=20insertions(+),=2011=20deletions(-)=0A= =0Adiff=20--git=20a/src/fns.c=20b/src/fns.c=0Aindex=20= 6b1f7331f5..da830a9000=20100644=0A---=20a/src/fns.c=0A+++=20b/src/fns.c=0A= @@=20-1567,18=20+1567,32=20@@=20DEFUN=20("memql",=20Fmemql,=20Smemql,=20= 2,=202,=200,=0A=20The=20value=20is=20actually=20the=20tail=20of=20LIST=20= whose=20car=20is=20ELT.=20=20*/)=0A=20=20=20(Lisp_Object=20elt,=20= Lisp_Object=20list)=0A=20{=0A-=20=20if=20(!FLOATP=20(elt))=0A-=20=20=20=20= return=20Fmemq=20(elt,=20list);=0A-=0A-=20=20Lisp_Object=20tail=20=3D=20= list;=0A-=20=20FOR_EACH_TAIL=20(tail)=0A+=20=20if=20(FLOATP=20(elt))=0A=20= =20=20=20=20{=0A-=20=20=20=20=20=20Lisp_Object=20tem=20=3D=20XCAR=20= (tail);=0A-=20=20=20=20=20=20if=20(FLOATP=20(tem)=20&&=20same_float=20= (elt,=20tem))=0A-=09return=20tail;=0A+=20=20=20=20=20=20Lisp_Object=20= tail=20=3D=20list;=0A+=20=20=20=20=20=20FOR_EACH_TAIL=20(tail)=0A+=20=20=20= =20=20=20=20=20{=0A+=20=20=20=20=20=20=20=20=20=20Lisp_Object=20tem=20=3D=20= XCAR=20(tail);=0A+=20=20=20=20=20=20=20=20=20=20if=20(FLOATP=20(tem)=20= &&=20same_float=20(elt,=20tem))=0A+=20=20=20=20=20=20=20=20=20=20=20=20= return=20tail;=0A+=20=20=20=20=20=20=20=20}=0A+=20=20=20=20=20=20= CHECK_LIST_END=20(tail,=20list);=0A+=20=20=20=20=20=20return=20Qnil;=0A=20= =20=20=20=20}=0A-=20=20CHECK_LIST_END=20(tail,=20list);=0A-=20=20return=20= Qnil;=0A+=20=20else=20if=20(BIGNUMP=20(elt))=0A+=20=20=20=20{=0A+=20=20=20= =20=20=20Lisp_Object=20tail=20=3D=20list;=0A+=20=20=20=20=20=20= FOR_EACH_TAIL=20(tail)=0A+=20=20=20=20=20=20=20=20{=0A+=20=20=20=20=20=20= =20=20=20=20Lisp_Object=20tem=20=3D=20XCAR=20(tail);=0A+=20=20=20=20=20=20= =20=20=20=20if=20(equal_no_quit=20(elt,=20tem))=0A+=20=20=20=20=20=20=20=20= =20=20=20=20return=20tail;=0A+=20=20=20=20=20=20=20=20}=0A+=20=20=20=20=20= =20CHECK_LIST_END=20(tail,=20list);=0A+=20=20=20=20=20=20return=20Qnil;=0A= +=20=20=20=20}=0A+=20=20else=0A+=20=20=20=20return=20Fmemq=20(elt,=20= list);=0A=20}=0A=20=0A=20DEFUN=20("assq",=20Fassq,=20Sassq,=202,=202,=20= 0,=0Adiff=20--git=20a/test/src/fns-tests.el=20b/test/src/fns-tests.el=0A= index=206ebab4287f..a9d4d11795=20100644=0A---=20a/test/src/fns-tests.el=0A= +++=20b/test/src/fns-tests.el=0A@@=20-614,7=20+614,8=20@@=20dot2=0A=20=20= =20=20=20(should=20(eq=20x=20x))=0A=20=20=20=20=20(should=20(eql=20x=20= y))=0A=20=20=20=20=20(should=20(equal=20x=20y))=0A-=20=20=20=20= (should-not=20(eql=20x=200.0e+NaN))))=0A+=20=20=20=20(should-not=20(eql=20= x=200.0e+NaN))=0A+=20=20=20=20(should=20(memql=20x=20(list=20y)))))=0A=20= =0A=20(ert-deftest=20test-bignum-hash=20()=0A=20=20=20"Test=20that=20= hash=20tables=20work=20for=20bignums."=0A--=20=0A2.20.1=20(Apple=20= Git-117)=0A=0A= --Apple-Mail=_5A78E11F-5E5E-4D38-BCB4-D57CC9A4D1A2 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii --Apple-Mail=_5A78E11F-5E5E-4D38-BCB4-D57CC9A4D1A2-- From unknown Sat Jun 14 19:06:10 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Subject: bug#35868: closed (Re: [PATCH] `memql' does not work for bignums) Message-ID: References: <615e1634-1167-abc2-0f16-2c84274d47ba@cs.ucla.edu> <79AE2738-3B42-410A-AA9A-F0FDE7865162@acm.org> X-Gnu-PR-Message: they-closed 35868 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 35868@debbugs.gnu.org Date: Thu, 30 May 2019 22:02:03 +0000 Content-Type: multipart/mixed; boundary="----------=_1559253723-19745-1" This is a multi-part message in MIME format... ------------=_1559253723-19745-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #35868: [PATCH] `memql' does not work for bignums which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 35868@debbugs.gnu.org. --=20 35868: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D35868 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1559253723-19745-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 35868-done) by debbugs.gnu.org; 30 May 2019 22:01:31 +0000 Received: from localhost ([127.0.0.1]:34212 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hWT74-00057b-HR for submit@debbugs.gnu.org; Thu, 30 May 2019 18:01:30 -0400 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:55400) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hWT70-00057J-Vl for 35868-done@debbugs.gnu.org; Thu, 30 May 2019 18:01:28 -0400 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 953AD160849; Thu, 30 May 2019 15:01:20 -0700 (PDT) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id WgvtIkitZ90U; Thu, 30 May 2019 15:01:19 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 7041216087F; Thu, 30 May 2019 15:01:19 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id KW8fKskc-TJJ; Thu, 30 May 2019 15:01:19 -0700 (PDT) Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 4AE4B160878; Thu, 30 May 2019 15:01:19 -0700 (PDT) To: =?UTF-8?Q?Mattias_Engdeg=c3=a5rd?= From: Paul Eggert Subject: Re: [PATCH] `memql' does not work for bignums Openpgp: preference=signencrypt Autocrypt: addr=eggert@cs.ucla.edu; prefer-encrypt=mutual; keydata= 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 uNcby4U= Organization: UCLA Computer Science Department Message-ID: <615e1634-1167-abc2-0f16-2c84274d47ba@cs.ucla.edu> Date: Thu, 30 May 2019 15:01:19 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------3FBF2ACCB28F47A5113A666B" Content-Language: en-US X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 35868-done Cc: 35868-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) This is a multi-part message in MIME format. --------------3FBF2ACCB28F47A5113A666B Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Thanks for the bug report and fix. I installed it into master, followed by the attached performance tweaks. --------------3FBF2ACCB28F47A5113A666B Content-Type: text/x-patch; name="0001-Improve-eq1-memql-performance.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0001-Improve-eq1-memql-performance.patch" >From 24a58620cb8ce4aa11e2428d86e58911e7975aeb Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 30 May 2019 14:57:21 -0700 Subject: [PATCH] Improve eq1/memql performance * src/fns.c (Fmemql, Feql): Inline to tweak performance. --- src/fns.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/fns.c b/src/fns.c index da830a9000..cb47b818f1 100644 --- a/src/fns.c +++ b/src/fns.c @@ -1521,7 +1521,7 @@ DEFUN ("elt", Felt, Selt, 2, 2, 0, EMACS_UINT word[WORDS_PER_DOUBLE]; }; -/* Return true if X and Y are the same floating-point value. +/* Return true if the floats X and Y have the same value. This looks at X's and Y's representation, since (unlike '==') it returns true if X and Y are the same NaN. */ static bool @@ -1567,32 +1567,32 @@ DEFUN ("memql", Fmemql, Smemql, 2, 2, 0, The value is actually the tail of LIST whose car is ELT. */) (Lisp_Object elt, Lisp_Object list) { + Lisp_Object tail = list; + if (FLOATP (elt)) { - Lisp_Object tail = list; FOR_EACH_TAIL (tail) { Lisp_Object tem = XCAR (tail); if (FLOATP (tem) && same_float (elt, tem)) return tail; } - CHECK_LIST_END (tail, list); - return Qnil; } else if (BIGNUMP (elt)) { - Lisp_Object tail = list; FOR_EACH_TAIL (tail) { Lisp_Object tem = XCAR (tail); - if (equal_no_quit (elt, tem)) + if (BIGNUMP (tem) + && mpz_cmp (XBIGNUM (elt)->value, XBIGNUM (tem)->value) == 0) return tail; } - CHECK_LIST_END (tail, list); - return Qnil; } else return Fmemq (elt, list); + + CHECK_LIST_END (tail, list); + return Qnil; } DEFUN ("assq", Fassq, Sassq, 2, 2, 0, @@ -2301,7 +2301,9 @@ DEFUN ("eql", Feql, Seql, 2, 2, 0, if (FLOATP (obj1)) return FLOATP (obj2) && same_float (obj1, obj2) ? Qt : Qnil; else if (BIGNUMP (obj1)) - return equal_no_quit (obj1, obj2) ? Qt : Qnil; + return ((BIGNUMP (obj2) + && mpz_cmp (XBIGNUM (obj1)->value, XBIGNUM (obj2)->value) == 0) + ? Qt : Qnil); else return EQ (obj1, obj2) ? Qt : Qnil; } -- 2.21.0 --------------3FBF2ACCB28F47A5113A666B-- ------------=_1559253723-19745-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 23 May 2019 15:41:22 +0000 Received: from localhost ([127.0.0.1]:45067 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hTpqM-0007EV-3d for submit@debbugs.gnu.org; Thu, 23 May 2019 11:41:22 -0400 Received: from eggs.gnu.org ([209.51.188.92]:36960) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hTpqJ-0007EH-N7 for submit@debbugs.gnu.org; Thu, 23 May 2019 11:41:20 -0400 Received: from lists.gnu.org ([209.51.188.17]:60646) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hTpqE-0003NL-Hr for submit@debbugs.gnu.org; Thu, 23 May 2019 11:41:14 -0400 Received: from eggs.gnu.org ([209.51.188.92]:51332) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTpqD-0005iB-Mm for bug-gnu-emacs@gnu.org; Thu, 23 May 2019 11:41:14 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTpqC-0003MA-RE for bug-gnu-emacs@gnu.org; Thu, 23 May 2019 11:41:13 -0400 Received: from mail1425c50.megamailservers.eu ([91.136.14.25]:54710 helo=mail102c50.megamailservers.eu) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hTpqC-0003Je-9a for bug-gnu-emacs@gnu.org; Thu, 23 May 2019 11:41:12 -0400 X-Authenticated-User: mattiase@bredband.net DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=megamailservers.eu; s=maildub; t=1558624035; bh=xSyEpAkOabuf3x3OXzlNp/JMEKOBJ2q4o4uLLkladOw=; h=From:Subject:Date:To:From; b=c3o1opQhd/P9OFF7dCXW60m4YxgVcGT3fI49HHixqqaq36drmigCrnyKm0mAHs4Tc Bkb5yChpvLmS7OW5V448dMeOh35Bo/C1s7GioO4X9aowsfy7mmaNvB6H308ytOJFp4 J9T5N1U0sRKf+Uzxz8GuQjkjcHO/IY6TFSLi6AVc= Feedback-ID: mattiase@acm.or Received: from [192.168.0.4] ([188.150.171.71]) (authenticated bits=0) by mail102c50.megamailservers.eu (8.14.9/8.13.1) with ESMTP id x4NF7CgO031586 for ; Thu, 23 May 2019 15:07:14 +0000 From: =?utf-8?Q?Mattias_Engdeg=C3=A5rd?= Content-Type: multipart/mixed; boundary="Apple-Mail=_5A78E11F-5E5E-4D38-BCB4-D57CC9A4D1A2" Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) Subject: [PATCH] `memql' does not work for bignums Message-Id: <79AE2738-3B42-410A-AA9A-F0FDE7865162@acm.org> Date: Thu, 23 May 2019 17:07:11 +0200 To: bug-gnu-emacs@gnu.org X-Mailer: Apple Mail (2.3445.104.11) X-CTCH-RefID: str=0001.0A0B0213.5CE6B723.0001, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0 X-CTCH-VOD: Unknown X-CTCH-Spam: Unknown X-CTCH-Score: 0.000 X-CTCH-Rules: X-CTCH-Flags: 0 X-CTCH-ScoreCust: 0.000 X-CSC: 0 X-CHA: v=2.3 cv=F7x5iJpN c=1 sm=1 tr=0 a=SF+I6pRkHZhrawxbOkkvaA==:117 a=SF+I6pRkHZhrawxbOkkvaA==:17 a=xq1mYcpEdMbUi_Uk5wIA:9 a=CjuIK1q_8ugA:10 a=sCsws7hTipOt-NdtaxUA:9 a=B2y7HmGcmWMA:10 a=0aE9QUaO_QmmuWBIoxcA:9 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] X-Received-From: 91.136.14.25 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --Apple-Mail=_5A78E11F-5E5E-4D38-BCB4-D57CC9A4D1A2 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii (memql (ash 1 100) (list (ash 1 100))) => nil Proposed patch attached. --Apple-Mail=_5A78E11F-5E5E-4D38-BCB4-D57CC9A4D1A2 Content-Disposition: attachment; filename=0001-Fix-memql-for-bignums.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0001-Fix-memql-for-bignums.patch" Content-Transfer-Encoding: quoted-printable =46rom=20afe2c459cff312e8c378e8381a36110f444dcb01=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20=3D?UTF-8?q?Mattias=3D20Engdeg=3DC3=3DA5rd?=3D=20= =0ADate:=20Thu,=2023=20May=202019=2017:01:27=20+0200=0A= Subject:=20[PATCH]=20Fix=20`memql'=20for=20bignums=0A=0A*=20src/fns.c=20= (Fmemql):=20Make=20`memql'=20work=20for=20bignums.=0A*=20= test/src/fns-tests.el=20(test-bignum-eql):=20Also=20test=20`memql'.=0A= ---=0A=20src/fns.c=20=20=20=20=20=20=20=20=20=20=20=20=20|=2034=20= ++++++++++++++++++++++++----------=0A=20test/src/fns-tests.el=20|=20=203=20= ++-=0A=202=20files=20changed,=2026=20insertions(+),=2011=20deletions(-)=0A= =0Adiff=20--git=20a/src/fns.c=20b/src/fns.c=0Aindex=20= 6b1f7331f5..da830a9000=20100644=0A---=20a/src/fns.c=0A+++=20b/src/fns.c=0A= @@=20-1567,18=20+1567,32=20@@=20DEFUN=20("memql",=20Fmemql,=20Smemql,=20= 2,=202,=200,=0A=20The=20value=20is=20actually=20the=20tail=20of=20LIST=20= whose=20car=20is=20ELT.=20=20*/)=0A=20=20=20(Lisp_Object=20elt,=20= Lisp_Object=20list)=0A=20{=0A-=20=20if=20(!FLOATP=20(elt))=0A-=20=20=20=20= return=20Fmemq=20(elt,=20list);=0A-=0A-=20=20Lisp_Object=20tail=20=3D=20= list;=0A-=20=20FOR_EACH_TAIL=20(tail)=0A+=20=20if=20(FLOATP=20(elt))=0A=20= =20=20=20=20{=0A-=20=20=20=20=20=20Lisp_Object=20tem=20=3D=20XCAR=20= (tail);=0A-=20=20=20=20=20=20if=20(FLOATP=20(tem)=20&&=20same_float=20= (elt,=20tem))=0A-=09return=20tail;=0A+=20=20=20=20=20=20Lisp_Object=20= tail=20=3D=20list;=0A+=20=20=20=20=20=20FOR_EACH_TAIL=20(tail)=0A+=20=20=20= =20=20=20=20=20{=0A+=20=20=20=20=20=20=20=20=20=20Lisp_Object=20tem=20=3D=20= XCAR=20(tail);=0A+=20=20=20=20=20=20=20=20=20=20if=20(FLOATP=20(tem)=20= &&=20same_float=20(elt,=20tem))=0A+=20=20=20=20=20=20=20=20=20=20=20=20= return=20tail;=0A+=20=20=20=20=20=20=20=20}=0A+=20=20=20=20=20=20= CHECK_LIST_END=20(tail,=20list);=0A+=20=20=20=20=20=20return=20Qnil;=0A=20= =20=20=20=20}=0A-=20=20CHECK_LIST_END=20(tail,=20list);=0A-=20=20return=20= Qnil;=0A+=20=20else=20if=20(BIGNUMP=20(elt))=0A+=20=20=20=20{=0A+=20=20=20= =20=20=20Lisp_Object=20tail=20=3D=20list;=0A+=20=20=20=20=20=20= FOR_EACH_TAIL=20(tail)=0A+=20=20=20=20=20=20=20=20{=0A+=20=20=20=20=20=20= =20=20=20=20Lisp_Object=20tem=20=3D=20XCAR=20(tail);=0A+=20=20=20=20=20=20= =20=20=20=20if=20(equal_no_quit=20(elt,=20tem))=0A+=20=20=20=20=20=20=20=20= =20=20=20=20return=20tail;=0A+=20=20=20=20=20=20=20=20}=0A+=20=20=20=20=20= =20CHECK_LIST_END=20(tail,=20list);=0A+=20=20=20=20=20=20return=20Qnil;=0A= +=20=20=20=20}=0A+=20=20else=0A+=20=20=20=20return=20Fmemq=20(elt,=20= list);=0A=20}=0A=20=0A=20DEFUN=20("assq",=20Fassq,=20Sassq,=202,=202,=20= 0,=0Adiff=20--git=20a/test/src/fns-tests.el=20b/test/src/fns-tests.el=0A= index=206ebab4287f..a9d4d11795=20100644=0A---=20a/test/src/fns-tests.el=0A= +++=20b/test/src/fns-tests.el=0A@@=20-614,7=20+614,8=20@@=20dot2=0A=20=20= =20=20=20(should=20(eq=20x=20x))=0A=20=20=20=20=20(should=20(eql=20x=20= y))=0A=20=20=20=20=20(should=20(equal=20x=20y))=0A-=20=20=20=20= (should-not=20(eql=20x=200.0e+NaN))))=0A+=20=20=20=20(should-not=20(eql=20= x=200.0e+NaN))=0A+=20=20=20=20(should=20(memql=20x=20(list=20y)))))=0A=20= =0A=20(ert-deftest=20test-bignum-hash=20()=0A=20=20=20"Test=20that=20= hash=20tables=20work=20for=20bignums."=0A--=20=0A2.20.1=20(Apple=20= Git-117)=0A=0A= --Apple-Mail=_5A78E11F-5E5E-4D38-BCB4-D57CC9A4D1A2 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii --Apple-Mail=_5A78E11F-5E5E-4D38-BCB4-D57CC9A4D1A2-- ------------=_1559253723-19745-1-- From unknown Sat Jun 14 19:06:10 2025 X-Loop: help-debbugs@gnu.org Subject: bug#35868: [PATCH] `memql' does not work for bignums Resent-From: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 02 Jun 2019 13:13:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 35868 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Paul Eggert Cc: 35868-done@debbugs.gnu.org Received: via spool by 35868-done@debbugs.gnu.org id=D35868.155948114427274 (code D ref 35868); Sun, 02 Jun 2019 13:13:02 +0000 Received: (at 35868-done) by debbugs.gnu.org; 2 Jun 2019 13:12:24 +0000 Received: from localhost ([127.0.0.1]:39693 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hXQHf-00075p-Kj for submit@debbugs.gnu.org; Sun, 02 Jun 2019 09:12:24 -0400 Received: from mail1424c50.megamailservers.eu ([91.136.14.24]:45642 helo=mail102c50.megamailservers.eu) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hXQHb-00075Z-Fz for 35868-done@debbugs.gnu.org; Sun, 02 Jun 2019 09:12:22 -0400 X-Authenticated-User: mattiase@bredband.net DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=megamailservers.eu; s=maildub; t=1559481122; bh=76aXYed1x5SC/rAqIujCCUZFpuqviTUQt/ND0oKkY5c=; h=Subject:From:In-Reply-To:Date:Cc:References:To:From; b=LJAgL8iU4g1LGLfoS2wdFzInaZjQkkC1pDw/3ufzBNhlbBv3JcOdNEDG6pS26ayvT SVP+RJM4Fnj7jDdRKtYXgwogHB1c1UQamfaQZ6sMRX+Lg+EsPo3p0UFBGbdl3hGCf6 GOxF0DVJRRxvCZEshgkpVujLzloKtxMEDF/TOM/s= Feedback-ID: mattiase@acm.or Received: from [192.168.1.65] (c-e636e253.032-75-73746f71.bbcust.telenor.se [83.226.54.230]) (authenticated bits=0) by mail102c50.megamailservers.eu (8.14.9/8.13.1) with ESMTP id x52DC01o017785; Sun, 2 Jun 2019 13:12:02 +0000 Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) From: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= In-Reply-To: <615e1634-1167-abc2-0f16-2c84274d47ba@cs.ucla.edu> Date: Sun, 2 Jun 2019 15:12:00 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: <2F2ED321-063E-4C64-B8C5-FEA0C159B389@acm.org> References: <615e1634-1167-abc2-0f16-2c84274d47ba@cs.ucla.edu> X-Mailer: Apple Mail (2.3445.104.11) X-CTCH-RefID: str=0001.0A0B020B.5CF3CB22.0048, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0 X-CTCH-VOD: Unknown X-CTCH-Spam: Unknown X-CTCH-Score: 0.000 X-CTCH-Rules: X-CTCH-Flags: 0 X-CTCH-ScoreCust: 0.000 X-CSC: 0 X-CHA: v=2.3 cv=F7x5iJpN c=1 sm=1 tr=0 a=M+GU/qJco4WXjv8D6jB2IA==:117 a=M+GU/qJco4WXjv8D6jB2IA==:17 a=jpOVt7BSZ2e4Z31A5e1TngXxSK0=:19 a=kj9zAlcOel0A:10 a=D_C-IDFzGXUC1hX83XMA:9 a=CjuIK1q_8ugA:10 X-Spam-Score: 1.0 (+) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) 31 maj 2019 kl. 00.01 skrev Paul Eggert : >=20 > Thanks for the bug report and fix. I installed it into master, = followed by the attached performance tweaks. Looks fine, thank you!