Path: csiph.com!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!news.uzoreto.com!aioe.org!BFmHnFuKgZIQaiywaVRfTQ.user.46.165.242.75.POSTED!not-for-mail From: Thomas David Rivers Newsgroups: comp.lang.c Subject: Re: Decimal Floating Point Date: Mon, 13 Sep 2021 22:23:47 -0400 Organization: Aioe.org NNTP Server Message-ID: <614007B3.80603@dignus.com> References: <2bff66f3-391b-4785-9c43-1f056106d6a1n@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: gioia.aioe.org; logging-data="51624"; posting-host="BFmHnFuKgZIQaiywaVRfTQ.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org"; User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.13) Gecko/20061027 X-Notice: Filtered by postfilter v. 0.9.2 X-Accept-Language: en-us, en Xref: csiph.com comp.lang.c:162757 Fabian Russell wrote: >Decimal floating point was standardized as IEEE758-2008 and new C types >were defined: _Decimal128, _Decimal64, and _Decimal32. > >Gcc has many built-in functions (via libgcc) to handle decimal FP: > >https://gcc.gnu.org/onlinedocs/gccint/Decimal-float-library-routines.html > >However, what puzzles me is that C has not yet incorporated the decimal >FP types so that the ordinary binary operators, such as "+ - * /" can operate >directly on them. Rather, to add two _Decimal_64 values, x, y, for example, >one must use the function __bid_adddd3(x, y) instead of x + y. > >Why bother to include the new types yet now allow them to be used >arithmetically like all other standard numeric types? > > > Just F.Y.I. - the BID format is suggested by Intel for their processors, the DPD format is used by IBM in their processors (z/Arch and Power.) The various standards allow for either... if you dig down in that library you can also find a function named __dpd_adddd3(x,y) for using the DPD decimal floating-point format. We implement those types/operations in the Dignus mainframe C compilers and take advantage of the native hardware operations (for the DPD format.) And, you can add two _Decimal64 values with just '+' (and the other arithmetic operations as well as some I/O operations); it's part of the suggested (not yet adopted) standard. - Dave Rivers - -- rivers@dignus.com Work: (919) 676-0847 Get your mainframe programming tools at http://www.dignus.com