www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/02/03/23:01:01

Date: Tue, 3 Feb 1998 18:23:01 -0800 (PST)
Message-Id: <199802040223.SAA05007@adit.ap.net>
Mime-Version: 1.0
To: Eli Zaretskii <eliz AT is DOT elta DOT co DOT il>, John Luebs <sales AT luebsphoto DOT com>
From: Nate Eldredge <eldredge AT ap DOT net>
Subject: Re: division by 0
Cc: djgpp AT delorie DOT com

At 12:27  2/3/1998 +0200, Eli Zaretskii wrote:
>
>On 3 Feb 1998, John Luebs wrote:
>
>> 2) The only way (should be #1 now!!!). Make a divide function:
>> float divide(float a, float b)
>> {
>> 	if(!b) return MAX_FLOAT; /* if you never use the maximum then this may
>> work as "inf" */
>> 	else return a/b;
>> }
>
>For floating-point code you don't need this at all, as x87 will do this
>for you if you set it up to mask off all FP exceptions (see `_control87'
>in the library).  If you do that, you will automatically get Inf, which is
>better than FLT_MAX, since the latter is a valid number.  (DJGPP v2.02 
>will set up x87 to mask all exception by default, btw.) 
Is there some portable way to say what kind of exceptions you want?
Sometimes a program would want some masked (like if I use NaN's), but others
not (if divide by 0 would be a bug in my code). `_control87' can obviously
do this, but equally obviously it won't work on anything but a 386/7.
>
>But if you need to do the same for integer code, you cannot do it 
>easily.  Obviously, replacing every division with a function call would 
>be terribly slow.
You could make it inline, but it would still be some overhead.

Nate Eldredge
eldredge AT ap DOT net



- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019