From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,a1d5d5934367929d X-Google-Attributes: gid103376,public From: dewar@merv.cs.nyu.edu (Robert Dewar) Subject: Re: fixed point vs floating point (When do you use it ?) Date: 1997/11/28 Message-ID: #1/1 X-Deja-AN: 293505406 References: <65nafe$u8@lotho.delphi.com> X-Complaints-To: usenet@news.nyu.edu X-Trace: news.nyu.edu 880757758 18553 (None) 128.122.140.58 Organization: New York University Newsgroups: comp.lang.ada Date: 1997-11-28T00:00:00+00:00 List-Id: << 1) Soon stock prices will be in decimal, and thus not accurately representable by binary floating point types. That's already the case for various commodity prices. 2) For a historical price database, space matters, and fixed point types, depending on the compiler, are in this case easier to store in a substantially smaller number of bytes. (As I recall, there's only one stock price that doesn't fit in 16 bits with a delta, and small, of 1/8, not counting adjusting the historical record for splits etc.) 3) This database was already in this form. 4) Most of the processing of data of this sort is comparisons, multiplication or division by integers, or addition/subtraction. Division of one stock price by another is relatively rare, and thus not timing critical, and multiplication of two stock or commodity prices together is even rarer. So any speed advantage of */ fpt on some new machines is not usually important. >> First, there is nothing special about binary scaling with respect to fixed-point. Ada 95 (at least in a full featured implementation such as GNAT) fully supports decimal fixed-point, as well as ordinary fixed-point with decimal small values. The former is attractive since it has deterministic arithmetic semantics, while the latter does not. Many manipulations of stock prices involve complex calculations, including computing weighted averages, for which floating-point will be more suitable (for example, computing the time weighted rate of return, as described in my paper in Management Science, definitely prefers floating-point, which is why when I was writing COMVEST, a pension fund portfolio analysis program, using the TWRR extensively, for the Banking Administration Institute, we decided to use Fortran instead of COBOL, since we really needed fpt. Boy that was a long time ago now, the paper is 1971, "An axiomatic characterization of the Time-Weighted Rate of Return, Vol18, #2). Of course today, I would prefer to use Ada for COMVEST, but we would still use floating-point for representing stock prices in that context. That's not to say that scaled fixed-point might not be more suitable for some purposes, and certainly for compact external storage, it is a reasonable medium to choose, although please note that stock prices are sometimes in 1/16 or 1/32 these days, so a uniform scaling in 16-bits is not practical!