File: isanan.c

package info (click to toggle)
scilab 2.4-1
  • links: PTS
  • area: non-free
  • in suites: potato, slink
  • size: 55,196 kB
  • ctags: 38,019
  • sloc: ansic: 231,970; fortran: 148,976; tcl: 7,099; makefile: 4,585; sh: 2,978; csh: 154; cpp: 101; asm: 39; sed: 5
file content (44 lines) | stat: -rw-r--r-- 730 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/* Copyright INRIA */
#include <stdio.h>
#include <math.h>

#include "../machine.h"

#ifdef WIN32 
#ifndef __CYGWIN32__
#define _ISANAN
#include <float.h>
#endif 
#endif 


/* testing Nan returns 1 if a Nan is found and 0 elsewhere */
/* should be changed to use a libm isnan function when possible */

integer C2F(isanan)(x)
     double *x ;
{
#ifdef _ISANAN
  return(_isnan(*x)== 1);
#else
  return((!( *x <= 1.0 )) && (!( *x >= 1.0 )));
#endif
}



#ifdef TESTALONE 
int main()
{
  double x=0.0,y=1/x,z;
  z= y-y;
  if ( C2F(isanan)(&z) == 1) 
    fprintf(stdout,"z is a Nan\n");
  if ( C2F(isanan)(&x) == 1) 
    fprintf(stdout,"x is a Nan\n");
  if ( C2F(isanan)(&y) == 1) 
    fprintf(stdout,"y is a Nan\n");
}
			
#endif