From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: from second.openwall.net (second.openwall.net [193.110.157.125]) by inbox.vuxu.org (Postfix) with SMTP id 4E6F62B78D for ; Thu, 13 Jun 2024 17:35:02 +0200 (CEST) Received: (qmail 8162 invoked by uid 550); 13 Jun 2024 15:34:58 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 8130 invoked from network); 13 Jun 2024 15:34:58 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1718292889; x=1718897689; i=nullplan@gmx.net; bh=2R4VKstrux7RTsbDY/Z9L7IGhSYjjuSNpk1vRVRdHSQ=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:Message-ID:References: MIME-Version:Content-Type:In-Reply-To:Content-Transfer-Encoding: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=mJq/bqHdpS6XmFXAwhccSr5KZ+47Q85RWn65jLt/NUypmQzsNBhoMDZ7cz/Z64j9 eySh0sV76hYsFldN7HHKgys8p+9jb8WtIJRG6wjPVs6dWnHSiBryzCqp53ChdMWPx mLrdlKl+DP/suoixw9MiprGvu4tKP3ooX7IDUMEUzF03NErIGL6dfK5e0n60abwJp c1J2cakzRnjFRUW34qX5b2osTV6on8U0BN+H3FUstGS63GSOt2F+UB/7SQeo+PwK6 E2/ILRvZi4qcvu0N83mzWJ3tMOMmO/MtXXalM4AmilB//BTd8mYKqaYovTney21xJ qCeb8mL4FID4O1SRJg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Date: Thu, 13 Jun 2024 17:34:47 +0200 From: Markus Wichmann To: musl@lists.openwall.com Cc: Meng Zhuo Message-ID: References: <20240613080717.546252-1-mzh@mzh.io> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240613080717.546252-1-mzh@mzh.io> X-Provags-ID: V03:K1:K9s7kJuI4COgYDws83eGFu2H+pjj9p7Y5zQaD0QeDzLGXnpBvKN vofTyGEveazLSAOubkvocUmGCGO1uwLRw8gdw3iLFPMkXz3VQ627LcV4yQexmqDdv6L3eTQ 0ox1AY9r3hxTvbaMfD+IXivR0affNWR5WmsqV41EScCisofoMfqQ3fuo5jTRqXg1541o1Eo 2poi9E9EILYaCIBMPP1cA== UI-OutboundReport: notjunk:1;M01:P0:VruEk++lFXk=;Eg4BFNTmnfNAHehUDpzFl/yzN+d q0Wg+qZGtJ7OIZQHK7rrZXz3+mFGe8RHVg83zCiIPmoZYwuqAPPgAx3g/KatRpQ1x2x2OaJcV 3OrrRdhANvJIS6dIc59tXxJN45GAtsJxbjXLML/PD9tEvqvQYJZpG6iHLYdJDvH+gcOxv/Ys0 1MUHlGlwhtO1h/YkcQwdHnR43buVH1UJgzNR3vTxcpsWRPzRu9J3YHRCJJjBg1qcsAI7xB4w3 /ymPbi4Ce53xJs9IJYEg7tkHnyu6nzXXuKN0haElDUtpKosU7zTIZ6U+C2ysMMFqYuktrgpLM b90bdB1Glm+nEYBqAPCECMZz+G9GyhOHkRC3uR6icAu+PwDl4o819jJ7n4YojkOFyX44sPob9 jen87uS3YAr0YfBAkP0mf+zuY+ZpPSfENJT3WKvF1BliLrfropf78WOW8/DG0ca2QLwAxwagF aor5iZvRtVN/ENy8sKT1FmYqItLUoDVUO+nedKhqhY7JmCDpetdKZXR8AjmQxVQ/172IxD/LA lGCfao1/ewtbP/QeDYBwajjAjAMTtIqGH6lC0Yy6dlbVKHtR2ZG6xiyutMYZvDZUuIuKrcFzS AWW4SvGQiapi+GFAj/hD9v6J1RWQNMJ1KXQ7LZ4MPXT9x5YSCm11HWJW9+qfZDUr2rfWYcd0h 8snz+M/Jk1tjMsPPCoYYlWYlfYoO+USiNnC6ZoL57gC3kdSvl6fSQKXgHV/PLe/yB0SizD/0E FW0JNCRmY9n53f8BusYA4CMwKgkvzHNO7ouZWdc2QDOQhXQ05PwmlFYLqLUO0I67FiTdR6bjc vdU/tSZBaQ5S3ZS7evGaxu6NDVhWHXec9rantlbM1DnKI= Content-Transfer-Encoding: quoted-printable Subject: Re: [musl] [PATCH v4] math: add riscv64 round/roundf Am Thu, Jun 13, 2024 at 04:07:17PM +0800 schrieb Meng Zhuo: > --- > v3 -> v4: > * add fabs(f) to avoild overflow. > * add comment on -0 copysign > > Thanks for review! > How to implement "single cmp+branch on the bit representation of x"? > I've tried Google bit hacks of it. Could you give some tip or refs? > --- musl's libm.h contains macro asuint64() to get the bit representation. And you can use it in this case like this: Original: > + if (!isfinite(x) || fabs(x) >=3D 0x1p52) return x; All IEEE FP numbers have the sign bit as MSB, then comes the exponent, then the significand. Note that all numbers that are not finite have an exponent field of all 1-bits. Meaning for this one, you only need to check if the exponent field is larger than 52 after biasing, or in other words if (((asuint64(x) >> 52) & 0x7ff) >=3D 52+0x3ff) return x; The exponent bias value is always half the maximum value that would fit the exponent field. double has an 11-bit exponent field. And mantissa does not matter for the selection, so we can shift it away. Adapting for float is left as an exercise for the reader. Ciao, Markus