~ubuntu-branches/ubuntu/raring/avr-libc/raring-proposed

« back to all changes in this revision

Viewing changes to tests/simulate/math/isnan-01.c

  • Committer: Bazaar Package Importer
  • Author(s): Hakan Ardo
  • Date: 2009-10-31 11:52:10 UTC
  • mfrom: (1.1.8 upstream) (4.1.2 squeeze)
  • Revision ID: james.westby@ubuntu.com-20091031115210-x0mlijnegkce86fk
Tags: 1:1.6.7-1
* New upstream relese (closes: #544030)
* Added lintian overrides (closes: #553265)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Test of isnan().
2
 
   $Id: isnan-01.c,v 1.1 2007/02/05 21:35:58 dmix Exp $
3
 
 */
4
 
#include <math.h>
5
 
#include <stdio.h>
6
 
#include <stdlib.h>
7
 
#include "progmem.h"
8
 
 
9
 
union lofl_u {
10
 
    long lo;
11
 
    float fl;
12
 
};
13
 
 
14
 
PROGMEM const union lofl_u t0[] = {     /* No NaNs      */
15
 
 
16
 
    /* positive finite  */
17
 
    { 0x00000000 },
18
 
    { 0x00000001 },
19
 
    { 0x00000100 },
20
 
    { 0x00010000 },
21
 
    { 0x007fffff },
22
 
    { 0x00800000 },
23
 
    { 0x3f800000 },
24
 
    { 0x7f7fffff },
25
 
 
26
 
    /* negative finite  */
27
 
    { 0x80000000 },
28
 
    { 0x80000001 },
29
 
    { 0x80000100 },
30
 
    { 0x80010000 },
31
 
    { 0x807fffff },
32
 
    { 0x80800000 },
33
 
    { 0xbf800000 },
34
 
    { 0xff7fffff },
35
 
 
36
 
    /* Inf      */
37
 
    { 0x7f800000 },
38
 
    { 0xff800000 },
39
 
};
40
 
 
41
 
PROGMEM const union lofl_u t1[] = {     /* NaNs */
42
 
 
43
 
    { 0x7f800001 },
44
 
    { 0x7f800100 },
45
 
    { 0x7f810000 },
46
 
    { 0x7fc00000 },
47
 
    { 0x7fffffff },
48
 
 
49
 
    { 0xff800001 },
50
 
    { 0xff800100 },
51
 
    { 0xff810000 },
52
 
    { 0xffc00000 },
53
 
    { 0xffffffff },
54
 
 
55
 
};
56
 
 
57
 
void x_exit (int index)
58
 
{
59
 
#ifndef __AVR__
60
 
    fprintf (stderr, "t[%d]\n", index - 1);
61
 
#endif
62
 
    exit (index ? index : -1);
63
 
}
64
 
 
65
 
int main ()
66
 
{
67
 
    union lofl_u x;
68
 
    int i;
69
 
    
70
 
    for (i = 0; i < (int) (sizeof(t0) / sizeof(t0[0])); i++) {
71
 
        x.lo = pgm_read_dword (& t0[i]);
72
 
        if (isnan(x.fl))
73
 
            x_exit (i + 1);
74
 
    }
75
 
    for (i = 0; i < (int) (sizeof(t1) / sizeof(t1[0])); i++) {
76
 
        x.lo = pgm_read_dword (& t1[i]);
77
 
        if (!isnan(x.fl))
78
 
            x_exit (i + 101);
79
 
    }
80
 
    return 0;
81
 
}