From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2081.outbound.protection.outlook.com [40.107.104.81]) by sourceware.org (Postfix) with ESMTPS id 5BE323858D37 for ; Mon, 3 Apr 2023 13:43:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5BE323858D37 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PdJLBO7E/43SEGJklgOJ96s2qXwm3RZytHSwvXFD9Gk=; b=Tw7J13LBExvNEsOvPGtB6j+DP39IXc6ug7RRp7V4L/kthApXmSjvKoXaMiRsHxQfaF5z5g8zPgu8pCZ0zp9IBuT+n52zN9CGXuJbEi09im1IEJyqxP96gFFFeiEdfxawBlIUvupQUmB4QcwskTDUQF0gH6mWI7yjtyJLGYE5Qtc= Received: from AS8PR04CA0156.eurprd04.prod.outlook.com (2603:10a6:20b:331::11) by DB9PR08MB7699.eurprd08.prod.outlook.com (2603:10a6:10:392::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.33; Mon, 3 Apr 2023 13:43:19 +0000 Received: from AM7EUR03FT038.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:331:cafe::c4) by AS8PR04CA0156.outlook.office365.com (2603:10a6:20b:331::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.21 via Frontend Transport; Mon, 3 Apr 2023 13:43:19 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM7EUR03FT038.mail.protection.outlook.com (100.127.140.120) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6277.16 via Frontend Transport; Mon, 3 Apr 2023 13:43:19 +0000 Received: ("Tessian outbound 5154e9d36775:v136"); Mon, 03 Apr 2023 13:43:18 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 7b24376da0cf66da X-CR-MTA-TID: 64aa7808 Received: from ae157ac4a9ce.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 6A341B1C-00DC-4043-9436-0FC0B615D1E8.1; Mon, 03 Apr 2023 13:43:12 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ae157ac4a9ce.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 03 Apr 2023 13:43:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Sp6AWTeKtfSj2AtwnYLl2RB2sE0V0kfBkGosLwggBu8N1A60jN5hhwnpLDi9ZmCF7PvSEWueu/BX7gcTt5CBUJP+hCxhmkqjitAIkCse1mYEG4QCxzgyqZFLmaG/9mQadEfgMc8zs6eHgoef1mETbyPqy+2ugUF7VAS1Q9BsSlkh1vMLhyZHODgI4wZyZ1smrw9EVLWadC4EmISOVJQLQGYvAnpxi6R6PeCY+BQkRHN0teospmiB7WVHa87DleZ9pV7EIJ8bEzQDobE5lYBHOQgrAAjUtDuuz05Rk2qoDSDoDJR/ri7GHHTxhidnveDBKh4IW1DN6RtuWtb1AY5bsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PdJLBO7E/43SEGJklgOJ96s2qXwm3RZytHSwvXFD9Gk=; b=PYY+CDhPf/w1Ife+KAZYUyEb93DJVEu6pRwRrxsbZyyS1XpaOg2J74P4aoZeYADxunJvsDorG47JoZeewTC881UIYSysB4NblyHlgRXz/tmU86CNJMO9w83jcAVkoddImD5Mu9BilGH8dKS8Ktw17XNpkVMMs/eaphLRgZGQj6Pk8GJJoxvb5tQlO2JMM5feyDo/8uEdQ8WOwPyyd77Qt2bAt3kKnCP2DI9LkxQKmyo9pEE8Mzj8xWEjVlbZkv0bhYl7eCwoa88apyCawdg4e5rAZqbxxcPh5o3AblKlo4bFvpf2CVCx5UznMRIlTJc2TKV0ZBgQJdH0PXm+7DaNZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PdJLBO7E/43SEGJklgOJ96s2qXwm3RZytHSwvXFD9Gk=; b=Tw7J13LBExvNEsOvPGtB6j+DP39IXc6ug7RRp7V4L/kthApXmSjvKoXaMiRsHxQfaF5z5g8zPgu8pCZ0zp9IBuT+n52zN9CGXuJbEi09im1IEJyqxP96gFFFeiEdfxawBlIUvupQUmB4QcwskTDUQF0gH6mWI7yjtyJLGYE5Qtc= Received: from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20) by AM8PR08MB5634.eurprd08.prod.outlook.com (2603:10a6:20b:1d1::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.33; Mon, 3 Apr 2023 13:43:08 +0000 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::13be:967d:6e80:432f]) by PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::13be:967d:6e80:432f%9]) with mapi id 15.20.6254.030; Mon, 3 Apr 2023 13:43:07 +0000 From: Wilco Dijkstra To: Adhemerval Zanella , "libc-alpha@sourceware.org" , "H . J . Lu" Subject: Re: [PATCH v4 5/5] math: Remove the error handling wrapper from fmod and fmodf Thread-Topic: [PATCH v4 5/5] math: Remove the error handling wrapper from fmod and fmodf Thread-Index: AQHZW0VFDZsa+N37NUCxYUShi+/IY68Zqy0b Date: Mon, 3 Apr 2023 13:43:07 +0000 Message-ID: References: <20230320160118.352206-1-adhemerval.zanella@linaro.org> <20230320160118.352206-6-adhemerval.zanella@linaro.org> In-Reply-To: <20230320160118.352206-6-adhemerval.zanella@linaro.org> Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAWPR08MB8982:EE_|AM8PR08MB5634:EE_|AM7EUR03FT038:EE_|DB9PR08MB7699:EE_ X-MS-Office365-Filtering-Correlation-Id: 51493f3b-72e3-4b10-d6fb-08db34496269 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: KzNjQYlHA3soLJw1yL/jz4lDWen5MitSD5+l0heVcSs9FnZ1cwb00+w88Oudcuc9a+wKmmN/f4fqLISXh1udDmpK756yb3vxv1otKLSeP04zIJSI8xec+20Zwprn8Kw4CK9QfFwhjfz/o91wgTlFZytXqcYNFXDjvx1DXSjtMgU/vQaf6v0Fy6/iwox7T8z0qnNAXrJfFAKfhuPpTZbQrBobg1jYK/cHm8AS/VZleH6kyPAdcyiKLHWKOY15Jga+6AoiXEbnavukLfzl0LdN7bXGTBm7cEKH6zH6vhzUbyu1szyyIvkA4890yzRLV+LKCys3zajnC6bo4i6xq0ybS1Ke8Wzgzms8RZ++wGj4lAGOcmw2oad1XHEQDb9NVK5tu/31CURRbU2JMtcJkmy9UaUBh1vE2DQekV549QK8HabYmY3OjqosgTCoN7CUXJYSiepK1We45i3T2dptBBNghrgJPTbXZkA/uyAcRqbl/FuubmOncALr5UljuWVmsLzG94AuQI+DAf09Gx30W9RKGEhhwnhpqV+l7XBapCMZ5nA5EEBEftQwRvhsntIFRvmYKlDni3Jw4TrQcQcj+OYWFYYIiVMhq5r8MrDui3YA6ow= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAWPR08MB8982.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(39860400002)(396003)(366004)(376002)(346002)(136003)(451199021)(86362001)(38070700005)(33656002)(2906002)(7696005)(55016003)(71200400001)(186003)(26005)(6506007)(9686003)(91956017)(8676002)(66476007)(76116006)(478600001)(66446008)(66556008)(66946007)(64756008)(41300700001)(38100700002)(122000001)(5660300002)(316002)(110136005)(8936002)(52536014);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB5634 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM7EUR03FT038.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: b542e892-0063-40c1-74af-08db34495b9f X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XGqdc88KpoFkg26h8Y7m230zIkGDhmvFIz8tVwEBS2QTCcDmdzz/mAcF1urACSw81Acy6K0bSzp0u7dpIxczTo4fBTRDQeiwn0paElLDNfZFFiMo3uobvz9niZib1CaPZLN85Hmh44NT75eg7ZT/H3V/jAJ9y6+8CPCj/0Mi8l00+rM/m9sbQhgxAGimtaoLSeKJIa4khKNC0csxv/q6Rm5/Y8m8en7w+UAZlnkO6JoM88ksmckv6U2Bl+qhhSZ50GmAoIJily/fmmOiMNwq+/6N2sf9iekiIG+WEMM4z2lBvUhLL14HGns9W8YaFvyjpJO1dwyeXTWdrOSLAy7Ei14RsgIsjjzUv8JhT7jd5UtepCMdvE0dhpJtK2Wa7G+t9VOwGpAiI3bFcF71n2eJOTcXy5ULdk5pOfrdVtgz5of8bU41dOKyJEsiAHMHI++CiAtDAXNRWQ2WMRc/r9YjCP5B/UcnRuYfVi08zvtl31w1Z8TrYywht5j6hJfWLg12ddF5qwaTvd07TFn2CwrT+eP0oPtat0mCcHCanEZD1rRwSVZkX6Gf9Lguyrv+Zsr7tgF7ggs/9jsGqzKMNJ8hiDQOAhROlVqaGNUvELe2TitGdwMK/OgjzvoUmtcj5RtWNLzpRnBOykIe/ssguXRjd21DIfCKfTDgc85ni0FWC19ccf8ujRAJOfGEQaPa2ZnT X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230028)(4636009)(136003)(396003)(346002)(39860400002)(376002)(451199021)(46966006)(40470700004)(36840700001)(55016003)(26005)(82310400005)(186003)(6506007)(52536014)(47076005)(41300700001)(336012)(8676002)(478600001)(70586007)(110136005)(316002)(70206006)(7696005)(40460700003)(82740400003)(356005)(81166007)(33656002)(2906002)(86362001)(8936002)(5660300002)(36860700001)(9686003)(40480700001);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2023 13:43:19.0636 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 51493f3b-72e3-4b10-d6fb-08db34496269 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM7EUR03FT038.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB7699 X-Spam-Status: No, score=-10.0 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,KAM_DMARC_NONE,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Hi Adhemerval,=0A= =0A= LGTM - one minor nit about the is_inf functions, are they actually needed?= =0A= I'm happy for this to go in either way.=0A= =0A= Reviewed-by: Wilco Dijkstra =0A= =0A= Cheers,=0A= Wilco=0A= =0A= =0A= diff --git a/sysdeps/ieee754/dbl-64/e_fmod.c b/sysdeps/ieee754/dbl-64/e_fmo= d.c=0A= index d20466fd5d..ff506c40b4 100644=0A= --- a/sysdeps/ieee754/dbl-64/e_fmod.c=0A= +++ b/sysdeps/ieee754/dbl-64/e_fmod.c=0A= @@ -16,7 +16,9 @@=0A= =A0=A0=A0 License along with the GNU C Library; if not, see=0A= =A0=A0=A0 .=A0 */=0A= =A0=0A= +#include =0A= =A0#include =0A= +#include =0A= =A0#include =0A= =A0#include "math_config.h"=0A= =A0=0A= @@ -44,7 +46,7 @@=0A= =A0=A0=A0=A0=A0 }=A0 */=0A= =A0=0A= =A0double=0A= -__ieee754_fmod (double x, double y)=0A= +__fmod (double x, double y)=0A= =A0{=0A= =A0=A0 uint64_t hx =3D asuint64 (x);=0A= =A0=A0 uint64_t hy =3D asuint64 (y);=0A= @@ -56,11 +58,16 @@ __ieee754_fmod (double x, double y)=0A= =A0=0A= =A0=A0 /* Special cases:=0A= =A0=A0=A0=A0=A0 - If x or y is a Nan, NaN is returned.=0A= -=A0=A0=A0=A0 - If x is an inifinity, a NaN is returned.=0A= +=A0=A0=A0=A0 - If x is an inifinity, a NaN is returned and EDOM is set.=0A= =A0=A0=A0=A0=A0 - If y is zero, Nan is returned.=0A= =A0=A0=A0=A0=A0 - If x is +0/-0, and y is not zero, +0/-0 is returned.=A0 *= /=0A= -=A0 if (__glibc_unlikely (hy =3D=3D 0=A0=A0=A0=A0=A0=A0=A0 || hx >=3D EXPO= NENT_MASK || hy > EXPONENT_MASK))=0A= -=A0=A0=A0 return (x * y) / (x * y);=0A= +=A0 if (__glibc_unlikely (hy =3D=3D 0=0A= +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 || hx >= =3D EXPONENT_MASK || hy > EXPONENT_MASK))=0A= +=A0=A0=A0 {=0A= +=A0=A0=A0=A0=A0 if (is_nan (hx) || is_nan (hy))=0A= +=A0=A0=A0=A0=A0=A0 return (x * y) / (x * y);=0A= +=A0=A0=A0=A0=A0 return __math_edom ((x * y) / (x * y));=0A= +=A0=A0=A0 }=0A= =0A= OK=0A= =0A= =A0=A0 if (__glibc_unlikely (hx <=3D hy))=0A= =A0=A0=A0=A0 {=0A= @@ -142,4 +149,11 @@ __ieee754_fmod (double x, double y)=0A= =A0=0A= =A0=A0 return make_double (mx, ey, sx);=0A= =A0}=0A= +strong_alias (__fmod, __ieee754_fmod)=0A= =A0libm_alias_finite (__ieee754_fmod, __fmod)=0A= +#if LIBM_SVID_COMPAT=0A= +versioned_symbol (libm, __fmod, fmod, GLIBC_2_38);=0A= +libm_alias_double_other (__fmod, fmod)=0A= +#else=0A= +libm_alias_double (__fmod, fmod)=0A= +#endif=0A= diff --git a/sysdeps/ieee754/dbl-64/math_config.h b/sysdeps/ieee754/dbl-64/= math_config.h=0A= index 2049cea3f7..5173b99e4a 100644=0A= --- a/sysdeps/ieee754/dbl-64/math_config.h=0A= +++ b/sysdeps/ieee754/dbl-64/math_config.h=0A= @@ -121,6 +121,12 @@ is_nan (uint64_t x)=0A= =A0=A0 return (x & EXP_MANT_MASK) > EXPONENT_MASK;=0A= =A0}=0A= =A0=0A= +static inline bool=0A= +is_inf (uint64_t x)=0A= +{=0A= +=A0 return (x & EXP_MANT_MASK) =3D=3D EXPONENT_MASK;=0A= +}=0A= =0A= Is this used?=0A= =0A= =A0static inline uint64_t=0A= =A0get_mantissa (uint64_t x)=0A= =A0{=0A= @@ -170,6 +176,9 @@ attribute_hidden double __math_invalid (double);=0A= =A0=0A= =A0/* Error handling using output checking, only for errno setting.=A0 */= =0A= =A0=0A= +/* Check if the result generated a demain error.=A0 */=0A= +attribute_hidden double __math_edom (double x);=0A= +=0A= =A0/* Check if the result overflowed to infinity.=A0 */=0A= =A0attribute_hidden double __math_check_oflow (double);=0A= =A0/* Check if the result underflowed to 0.=A0 */=0A= diff --git a/sysdeps/ieee754/dbl-64/math_err.c b/sysdeps/ieee754/dbl-64/mat= h_err.c=0A= index 5f5f965d3e..377a4caad2 100644=0A= --- a/sysdeps/ieee754/dbl-64/math_err.c=0A= +++ b/sysdeps/ieee754/dbl-64/math_err.c=0A= @@ -33,6 +33,12 @@ with_errno (double y, int e)=0A= =A0#define with_errno(x, e) (x)=0A= =A0#endif=0A= =A0=0A= +attribute_hidden double=0A= +__math_edom (double y)=0A= +{=0A= +=A0 return with_errno (y, EDOM);=0A= +}=0A= +=0A= =A0/* NOINLINE reduces code size.=A0 */=0A= =A0NOINLINE static double=0A= =A0xflow (uint32_t sign, double y)=0A= diff --git a/sysdeps/ieee754/dbl-64/w_fmod.c b/sysdeps/ieee754/dbl-64/w_fmo= d.c=0A= new file mode 100644=0A= index 0000000000..1cc8931700=0A= --- /dev/null=0A= +++ b/sysdeps/ieee754/dbl-64/w_fmod.c=0A= @@ -0,0 +1 @@=0A= +/* Not needed.=A0 */=0A= diff --git a/sysdeps/ieee754/flt-32/e_fmodf.c b/sysdeps/ieee754/flt-32/e_fm= odf.c=0A= index 53db32cbe2..c0b5dccc23 100644=0A= --- a/sysdeps/ieee754/flt-32/e_fmodf.c=0A= +++ b/sysdeps/ieee754/flt-32/e_fmodf.c=0A= @@ -17,6 +17,8 @@=0A= =A0=A0=A0 .=A0 */=0A= =A0=0A= =A0#include =0A= +#include =0A= +#include =0A= =A0#include =0A= =A0#include "math_config.h"=0A= =A0=0A= @@ -44,7 +46,7 @@=0A= =A0=A0=A0=A0=A0 }=A0 */=0A= =A0=0A= =A0float=0A= -__ieee754_fmodf (float x, float y)=0A= +__fmodf (float x, float y)=0A= =A0{=0A= =A0=A0 uint32_t hx =3D asuint (x);=0A= =A0=A0 uint32_t hy =3D asuint (y);=0A= @@ -59,8 +61,13 @@ __ieee754_fmodf (float x, float y)=0A= =A0=A0=A0=A0=A0 - If x is an inifinity, a NaN is returned.=0A= =A0=A0=A0=A0=A0 - If y is zero, Nan is returned.=0A= =A0=A0=A0=A0=A0 - If x is +0/-0, and y is not zero, +0/-0 is returned.=A0 *= /=0A= -=A0 if (__glibc_unlikely (hy =3D=3D 0=A0=A0=A0=A0=A0=A0=A0 || hx >=3D EXPO= NENT_MASK || hy > EXPONENT_MASK))=0A= -=A0=A0=A0 return (x * y) / (x * y);=0A= +=A0 if (__glibc_unlikely (hy =3D=3D 0=0A= +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 || hx >= =3D EXPONENT_MASK || hy > EXPONENT_MASK))=0A= +=A0=A0=A0 {=0A= +=A0=A0=A0=A0=A0 if (is_nan (hx) || is_nan (hy))=0A= +=A0=A0=A0=A0=A0=A0 return (x * y) / (x * y);=0A= +=A0=A0=A0=A0=A0 return __math_edomf ((x * y) / (x * y));=0A= +=A0=A0=A0 }=0A= =0A= OK=0A= =0A= =A0=A0 if (__glibc_unlikely (hx <=3D hy))=0A= =A0=A0=A0=A0 {=0A= @@ -141,4 +148,11 @@ __ieee754_fmodf (float x, float y)=0A= =A0=0A= =A0=A0 return make_float (mx, ey, sx);=0A= =A0}=0A= +strong_alias (__fmodf, __ieee754_fmodf)=0A= +#if LIBM_SVID_COMPAT=0A= +versioned_symbol (libm, __fmodf, fmodf, GLIBC_2_38);=0A= +libm_alias_float_other (__fmod, fmod)=0A= +#else=0A= +libm_alias_float (__fmod, fmod)=0A= +#endif=0A= =A0libm_alias_finite (__ieee754_fmodf, __fmodf)=0A= diff --git a/sysdeps/ieee754/flt-32/math_config.h b/sysdeps/ieee754/flt-32/= math_config.h=0A= index 829430ea28..f97cd39df1 100644=0A= --- a/sysdeps/ieee754/flt-32/math_config.h=0A= +++ b/sysdeps/ieee754/flt-32/math_config.h=0A= @@ -125,6 +125,12 @@ is_nan (uint32_t x)=0A= =A0=A0 return (x & EXP_MANT_MASK) > EXPONENT_MASK;=0A= =A0}=0A= =A0=0A= +static inline bool=0A= +is_inf (uint32_t x)=0A= +{=0A= +=A0 return (x & EXP_MANT_MASK) =3D=3D EXPONENT_MASK;=0A= +}=0A= =0A= Used?=0A=