Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Zwinkau
libfirm
Commits
2a461e01
Commit
2a461e01
authored
Apr 04, 2003
by
Michael Beck
Browse files
Changed inf/nan to remove non-partabel ieee754.h file
[r1033]
parent
c7dda3f6
Changes
1
Hide whitespace changes
Inline
Side-by-side
ir/tv/fltcalc.c
View file @
2a461e01
...
@@ -15,20 +15,22 @@
...
@@ -15,20 +15,22 @@
* Replace this code ASAP.
* Replace this code ASAP.
*/
*/
#include
"fltcalc.h"
#include
"fltcalc.h"
#include
"ieee754.h"
#include
<string.h>
#include
<string.h>
#include
<float.h>
#include
<float.h>
#include
<stdlib.h>
#include
<stdlib.h>
#include
<stdio.h>
#include
<stdio.h>
/* only defined in C99 mode */
extern
long
double
strtold
(
const
char
*
str
,
char
**
end
);
/********
/********
* globals
* globals
********/
********/
static
long
double
value
;
static
long
double
value
;
#define CAST_IN(val) ({ long double xxx = *(long double *)(val); printf("CAST to %Lg\n", xxx); xxx; })
//
#define CAST_IN(val) ({ long double xxx = *(long double *)(val); printf("CAST to %Lg\n", xxx); xxx; })
//
#define CAST_IN(val) (*((long double *)((val))))
#define CAST_IN(val) (*((long double *)((val))))
#define CAST_OUT(val) ((void *)&(val))
#define CAST_OUT(val) ((void *)&(val))
#define CLEAR_BUFFER() memset((char*)&value, 0, sizeof(long double))
#define CLEAR_BUFFER() memset((char*)&value, 0, sizeof(long double))
...
@@ -51,9 +53,6 @@ const int fc_get_buffer_length(void)
...
@@ -51,9 +53,6 @@ const int fc_get_buffer_length(void)
void
fc_val_from_str
(
const
char
*
str
,
unsigned
int
len
)
void
fc_val_from_str
(
const
char
*
str
,
unsigned
int
len
)
{
{
extern
long
double
strtold
(
const
char
*
str
,
char
**
end
);
printf
(
"-> %s
\n
"
,
str
);
CLEAR_BUFFER
();
CLEAR_BUFFER
();
value
=
strtold
(
str
,
NULL
);
value
=
strtold
(
str
,
NULL
);
}
}
...
@@ -107,33 +106,13 @@ void fc_get_max(unsigned int num_bits)
...
@@ -107,33 +106,13 @@ void fc_get_max(unsigned int num_bits)
void
fc_get_nan
(
void
)
void
fc_get_nan
(
void
)
{
{
/* nan: all exponent bit set, non-zero mantissa. not signalling wheni
value
=
strtold
(
"nan"
,
NULL
);
* msb of mantissa is set (easily found using this struct */
union
ieee854_long_double
ld
;
CLEAR_BUFFER
();
ld
.
ieee_nan
.
negative
=
0
;
ld
.
ieee_nan
.
exponent
=
0x7FFF
;
ld
.
ieee_nan
.
quiet_nan
=
1
;
ld
.
ieee_nan
.
mantissa0
=
42
;
value
=
ld
.
d
;
}
}
void
fc_get_inf
(
void
)
void
fc_get_inf
(
void
)
{
{
/* +-inf: all exponent bit set, sign is easy, one is strange XXX */
value
=
strtold
(
"inf"
,
NULL
);
union
ieee854_long_double
ld
;
CLEAR_BUFFER
();
ld
.
ieee_nan
.
negative
=
0
;
ld
.
ieee_nan
.
exponent
=
0x7FFF
;
ld
.
ieee_nan
.
quiet_nan
=
0
;
ld
.
ieee_nan
.
one
=
1
;
ld
.
ieee_nan
.
mantissa0
=
0
;
ld
.
ieee_nan
.
mantissa1
=
0
;
value
=
ld
.
d
;
}
}
void
fc_calc
(
const
void
*
a
,
const
void
*
b
,
int
opcode
)
void
fc_calc
(
const
void
*
a
,
const
void
*
b
,
int
opcode
)
...
@@ -155,7 +134,6 @@ void fc_calc(const void *a, const void *b, int opcode)
...
@@ -155,7 +134,6 @@ void fc_calc(const void *a, const void *b, int opcode)
break
;
break
;
case
FC_NEG
:
case
FC_NEG
:
value
=
-
CAST_IN
(
a
);
value
=
-
CAST_IN
(
a
);
printf
(
"-> NEG %Lg
\n
"
,
value
);
break
;
break
;
}
}
}
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment