From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.devel Subject: Re: Making 'eq' == 'eql' in bignum branch Date: Fri, 31 Aug 2018 09:41:54 -0700 Organization: UCLA Computer Science Department Message-ID: References: <29f933ac-a6bf-8742-66a7-0a9d6d3e5a88@disroot.org> <09153aed-361d-4f82-d9ac-b502314769ae@cs.ucla.edu> <83lg91dqd4.fsf@gnu.org> <0F8F6E54-176C-48EE-9E7C-7CAC424D0D55@raeburn.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: blaine.gmane.org 1535733715 15855 195.159.176.226 (31 Aug 2018 16:41:55 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Fri, 31 Aug 2018 16:41:55 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 To: Stefan Monnier , emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Aug 31 18:41:51 2018 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fvmUZ-0003z6-4y for ged-emacs-devel@m.gmane.org; Fri, 31 Aug 2018 18:41:51 +0200 Original-Received: from localhost ([::1]:55021 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fvmWf-0001gF-Bw for ged-emacs-devel@m.gmane.org; Fri, 31 Aug 2018 12:44:01 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:43495) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fvmUl-0007l0-PK for emacs-devel@gnu.org; Fri, 31 Aug 2018 12:42:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fvmUg-0000Oj-NN for emacs-devel@gnu.org; Fri, 31 Aug 2018 12:42:03 -0400 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:54014) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fvmUg-0000OP-DK for emacs-devel@gnu.org; Fri, 31 Aug 2018 12:41:58 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 674F0160806; Fri, 31 Aug 2018 09:41:56 -0700 (PDT) Original-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 CV2jwGDgCM6B; Fri, 31 Aug 2018 09:41:55 -0700 (PDT) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 96160160EBD; Fri, 31 Aug 2018 09:41:55 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Original-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 yjp7RLU5WnCX; Fri, 31 Aug 2018 09:41:55 -0700 (PDT) Original-Received: from [192.168.1.9] (cpe-23-242-74-103.socal.res.rr.com [23.242.74.103]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 73E51160806; Fri, 31 Aug 2018 09:41:55 -0700 (PDT) In-Reply-To: Content-Language: en-US X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:229140 Archived-At: Stefan Monnier wrote: > Same here, except rather than "I'm fine with" I'd say that I'm in favor > of it (for the same reason that I made `apply` work when called with > a single argument). I looked into implementing something along those lines and ran into a problem: the C standard does not require support for floating-point infinity, and a few mildly-plausible Emacs targets lack it. The most significant is IBM z/OS when compiled in default mode. There is also the Unisys Clearpath (formerly Burroughs) and Dorado (formerly Univac) lines. These environments are still supported, and help explain why the C standard does not require support for a working INFINITY macro in , and why Common Lisp does not require infinity constants. That being said, I now see that the Emacs source code has been using 's INFINITY macro since Emacs 25.1. Although this was just an oversight (and I just now fixed it on master), nobody has complained. With that in mind we could simply be upfront about it and explicitly require IEEE floating point, excluding old mainframe environments and some embedded platforms. Then we could change 'min' and 'max' to return infinity, and we can also simplify the C code a bit by assuming IEEE_FLOATING_POINT. On the other hand perhaps it's better to leave sleeping dogs lie, and not jump completely into the IEEE bed, and wait for the next C standard to revamp the floating point API again (which it looks like it will) before worrying about this. As for a named constant, I now see a problem with it: it wouldn't work in expressions like (let ((gamow '(1 2 3 infinity))) ...). So perhaps we should just ask people to remember to use 1e+INF instead, as it doesn't have this syntactic glitch.