From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2071.outbound.protection.outlook.com [40.107.22.71]) by sourceware.org (Postfix) with ESMTPS id 8FE3F3858D38 for ; Mon, 3 Oct 2022 22:28:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8FE3F3858D38 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=jXGFRdAqozeRhf5EQ22csi8irwpi9QDkhsxn7/YvkYlQAwbgQ+zE+iwhph9e70FuUYqomSApDQdIhDHWZ1x+G3UlTbDmygH+SIFkK0MP/NSRE4qEvEPv/QNY3RocYdsGNCOtKFUM+OD/LWvLVw9OigqCSQG7B2enJ6p0f4iHClYRydkYpGfCdVUNc5qQ4oyBqyVil1w4nNpUYCx5SU3eimXbtlD/oG/Ddg5SS73daPjEEHl9MNAE9d6eYw2OS80PA/d9+M6z2Kx1WimsfonZg85Oi/foCvb8uwT5aWteTIXuhvBVJSp0YSyF7EvOU11dc/CB4QAkJb+cCrB9erEZTg== ARC-Message-Signature: i=2; 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=mmGTO9KlVd4/YqTmOYPYw1HY228zkEBS9lZc/DRQoeQ=; b=RpOIyWpNgS1sChfPuTWmzvjEg4jATdMYWm4Qs0uK45myfY601FfwK37uLjwYm3HN+EYTKomvgdjfeF+ZimG58dp8Yozexlk+MET2+Z/WqY4Z84u0Vqg3QS7FvTDTncmItRvH6HWx8qAv0LrvV1z5rx5YCZkLMPbQLDWnJ3FxG5gqy+34oaBw0D/Lz3HYqCeJ/U/4VXDolDixFfxf76X/KDoC6uOGsrPn7hfFq26MFmN4mMTDOAHXvezyyuNnd3Er1Yl2ytGZIdOZsNc/rx5MZOYH387fffjt54hINL8/XwKEqgNz4xn/xoMxpCJTqOnXStIg2sSvOpOjUccdSCEAVA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=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=mmGTO9KlVd4/YqTmOYPYw1HY228zkEBS9lZc/DRQoeQ=; b=o+aJLtE9xssPNWovhcpUnYDtr/KbbJNxuJtInuhGsoLZFUOS3yeZiFaUJJK82jP6XGN95Uo9Pu2DRilX84gCwt/e6Lw11sO8XrpfEPT/2k16rM6zNsiqu/pcGFQh2+7f1SOcir0iHk7TpGwj2CNAKjoyjD9KquN+ENO3/CRgAng= Received: from AS9PR06CA0222.eurprd06.prod.outlook.com (2603:10a6:20b:45e::32) by GV1PR08MB8084.eurprd08.prod.outlook.com (2603:10a6:150:94::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.28; Mon, 3 Oct 2022 22:28:12 +0000 Received: from VE1EUR03FT046.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:45e:cafe::7c) by AS9PR06CA0222.outlook.office365.com (2603:10a6:20b:45e::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Mon, 3 Oct 2022 22:28:12 +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 VE1EUR03FT046.mail.protection.outlook.com (10.152.19.226) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.17 via Frontend Transport; Mon, 3 Oct 2022 22:28:11 +0000 Received: ("Tessian outbound 7761be2ecf00:v128"); Mon, 03 Oct 2022 22:28:11 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: eab5331c0691e523 X-CR-MTA-TID: 64aa7808 Received: from ef561db0b422.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id CB9A50A8-BF5F-4CF5-ADB8-266A49EC451B.1; Mon, 03 Oct 2022 22:28:04 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ef561db0b422.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 03 Oct 2022 22:28:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QD06yI38/1RBnwxQyCSWC/mNwtZtNx5andQlTZWb8e/udlVhOlY+kPQFIovNaHEeIt/qFZ42AthVzs7dc3ym87TPoL5UukD4mfDfQ0yGBrcnUhOxs6h4Es3HyGqVqikMzl7AnGOcFPORC2iGChRh9j2wghkshX8qITK+hlRSiKmNXabQva1kVAp5dx1nUS3fJXGh9jd9at5zalPbr4acOdk86eow4uUujil9+8dInprS/A+tp/O98dbNLSbtoUi8wliWtVbcyRKJcFJ84egKF3C3F6og0lQFMRYeh+YFMyZIgt8RLBivzgA+8JtlzkrFh0Ni5kiV2PNBYZ9bMBnWng== 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=mmGTO9KlVd4/YqTmOYPYw1HY228zkEBS9lZc/DRQoeQ=; b=dTlPAPHNtg8wboOU8RjySuCsx9fD5+Vva4F4/eMuSlQ7CcV+4O/tFzjGIUZjqkH03SKzydmiiIcLRfTD/RRvNf7VGLQWFgzfCwe08IcfDwlOZM7qn0rLJOdbN1Wg3BXgr2IWDg7DBGVMpJUQWez3kMnpeUmvV2hDb6ggUAnx+X5EgpEk+i14Z2SFryL3H+K3foDAHT53UzEeIkw1IAgia5xL6d30HrpcI+mNJ89KEphttEYClpA9LII7nXkpyPzqe17eJCZlrsjs7f50VDUooNhXYRJDrLioPgx9fG0ls0hngE2eXz/K4pKjLZ54HWb5wZUKVLO4a6kBp+yhTWsFPg== 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=mmGTO9KlVd4/YqTmOYPYw1HY228zkEBS9lZc/DRQoeQ=; b=o+aJLtE9xssPNWovhcpUnYDtr/KbbJNxuJtInuhGsoLZFUOS3yeZiFaUJJK82jP6XGN95Uo9Pu2DRilX84gCwt/e6Lw11sO8XrpfEPT/2k16rM6zNsiqu/pcGFQh2+7f1SOcir0iHk7TpGwj2CNAKjoyjD9KquN+ENO3/CRgAng= Received: from AS4PR08MB7901.eurprd08.prod.outlook.com (2603:10a6:20b:51c::16) by GV2PR08MB8320.eurprd08.prod.outlook.com (2603:10a6:150:b5::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.23; Mon, 3 Oct 2022 22:28:02 +0000 Received: from AS4PR08MB7901.eurprd08.prod.outlook.com ([fe80::4d64:ef01:4d4c:6ba1]) by AS4PR08MB7901.eurprd08.prod.outlook.com ([fe80::4d64:ef01:4d4c:6ba1%8]) with mapi id 15.20.5676.030; Mon, 3 Oct 2022 22:28:02 +0000 From: Wilco Dijkstra To: "oliver.schaedlich@gmail.com" , Adhemerval Zanella CC: 'GNU C Library' Subject: More efficient fmod() Thread-Topic: More efficient fmod() Thread-Index: AQHY125YaGbjMlFtp0WyOjcy4G8quQ== Date: Mon, 3 Oct 2022 22:28:02 +0000 Message-ID: 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: AS4PR08MB7901:EE_|GV2PR08MB8320:EE_|VE1EUR03FT046:EE_|GV1PR08MB8084:EE_ X-MS-Office365-Filtering-Correlation-Id: 30d5739d-5804-4cf4-b5ff-08daa58e8e3c 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: +P7xk3zqPURwZnRM7oN5x1t1iY6wIIV1z1zKRXx5CLK56JoVwT7W+SR/wd7tvabP4OOqqBICpsQxzC/oRrrZpwe3JqGK1xoI5eZ9gwgi5WBWo+oAdOq8LzuIdyyMdfYFg0o9apZuQDWdKccrZaJLs4bFApn2g2sNjX88pv4o9o9tKHXvYMf3kBThjVXvACp2PQ5euJHsXCeUgvwbwiu/nTAKkp02oOoRunEpZ5GWCBeMT/APFyIKnsJsQjL/nPbpg+OvDTzHcKJcXj+agNU8mvwbrxYf0KDAe/DgwktD/LNHx8NP9QzCCyGXTuA4s+EUNNsbefIXcC4X/RY/VgZSUQ3nhjcwuWpmQKi6zfK9ro3+alocJqt5EdYSesfKLmnl+y57Q8zjwsfWeX6NIg9aYHf9K+hnMn/M6d2Fvy+vErHbCdCjAtArlx6b4janlRYzkFXiHyUyp54SB1GnWOuRQ0MDlZ90beAM4LSOytkkQIM05mMemLE+MgxZbYjAAHrje/Ye4l6Ya3GHxYlvcp+AtmrmO4r7iuRKLgppiw3GtRrJBaSUgLLatto4fnCFIooJERONIXMh5gKK7N3ez/5bWkGYIfDZRbXAbhx8v3OMCcvWpb2jfzvDd0WYdPQo5TM9PMOxRD0Ttfi0UzV53y0YDcEPWSGzLPSxNB0ucHbwY7bkhHIazR0hbq8fNNlRm+oqNhmzsxb8bVXp7jMfUsJnBxtLG0Yz+H0GaRE1IFn+pBeZ9Zr91Zr9gHX0NbHjzRPNXy/g8rNDlbws5bT73io+Iw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS4PR08MB7901.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(396003)(366004)(346002)(136003)(39860400002)(376002)(451199015)(2906002)(76116006)(33656002)(7696005)(7116003)(4326008)(8676002)(6506007)(66476007)(41300700001)(5660300002)(38100700002)(26005)(38070700005)(86362001)(55016003)(64756008)(122000001)(52536014)(3480700007)(186003)(110136005)(8936002)(316002)(91956017)(66446008)(478600001)(71200400001)(66556008)(66946007)(9686003);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: GV2PR08MB8320 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: VE1EUR03FT046.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 2548e4d4-6834-4915-16cb-08daa58e88c1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: coYrlEMtCkvHCMb+4UX1L8PvBRxP1TE1FIRIh7aviIMAmcmmdjCD/LDpLimaDmWPgfyWe+yUgNuyKI6UvoLa8TuakUSytzMgf4+NzSmSPjzDX9BOb872YhIr9dzscIVmN4puCdCSv6Ctlg/+JK1HVmvoxD2GlTQ/6uXu4Jk0QAnRPIcoPr7cvL3LdXRsgWsmhnsVPGx3C91DXvuK+LMDVzu/+EdtA3u1HJobuqhEZ8UT6fvid6dSz9HiYQHu7l5OTPtCE07caA+G0dBazLXvEq2Q5ErcXNfg86glpK4k6lhLTo6cIBEGWd5EsGgstEetLH2jLwJ5BqQo7wGeFUdKF9iqBeFioHDbgdZ57jjrOxIPuRiTT8vekjWLXyGtsgsU2nAOKeFXa/2WitpM2um6qS+Mlm3QayBwcN2IN1Rwwi+za/sFGWlsC1Lb8e2WxJRubZdz5ZT37iDBC0+qU5vVnNnWZSg9e7/v3shnlAOHB8UlfhWvNh9j3QGcrWLAEiwFJ3DDnH6ajfGe9KUwhV66xazduJbVe5n4iOGlFk5NQtRRt8tKO74MABOXS0cnN7VGKSSp8F4h0nVFK3kBFX504lIPiJUVq9ey+MC+vzKQyN5UCALyhQUwElQ9Voz2bnVkU+vOSvv+1H7bah23UKIeqLOd/XTYorsVNx4SPa6w+m9E/5WO4BMHw2oFEVSQiTCFYd3HofKWAY2R2omy5y4SQ1W5cwBGYoDuGQ0cEiNIBaBy2pnb51FDeaXJdsoASJ0I0p6Hn+pZ9E/mK1+alZx4hA== 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:(13230022)(4636009)(346002)(136003)(39860400002)(376002)(396003)(451199015)(46966006)(36840700001)(40470700004)(70206006)(40460700003)(82740400003)(6506007)(110136005)(5660300002)(356005)(7696005)(2906002)(86362001)(33656002)(81166007)(478600001)(316002)(41300700001)(7116003)(36860700001)(52536014)(3480700007)(55016003)(40480700001)(26005)(186003)(9686003)(70586007)(82310400005)(47076005)(8936002)(336012)(8676002)(4326008);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2022 22:28:11.5570 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 30d5739d-5804-4cf4-b5ff-08daa58e8e3c 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: VE1EUR03FT046.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8084 X-Spam-Status: No, score=-5.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,KAM_DMARC_NONE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,UNPARSEABLE_RELAY autolearn=no 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 Oliver,=0A= =0A= > I've benchmarkey my code against e_fmod.c and=0A= > the difference in the performance is still the same:=0A= =0A= That looks like a random test over the full range - this tests 2 cases:=0A= x < y and x > y with a large average exponent difference.=0A= The first case is common and should have an early exit returning x.=0A= The other is rare, and while it is worth reducing the worst-case timing,=0A= this requires an algorithm which processes many bits at a time.=0A= What is missing is the common case where the exponent difference is=0A= small - here you can also have an early exit after doing a division.=0A= =0A= For benchmarking it is best to test each case separately. When possible=0A= we extract a representative trace from a benchmark and replay that so=0A= we optimize for real-world inputs.=0A= =0A= To add to Adhemerval's comments, the code needs to work efficiently on=0A= 32-bit targets as well as targets that don't have a count leading zeroes=0A= instruction. Since there are many uses of both, the overhead of emulating= =0A= them is likely going to be expensive, so that might require an alternative= =0A= approach to make sure the new version is always faster.=0A= =0A= Cheers,=0A= Wilco=