mirror of
https://github.com/cc65/cc65.git
synced 2024-06-26 05:29:30 +00:00
move float libss into libsrc/float, move tests into the correct dirs for the testbench, move includes to toplevel include dir
This commit is contained in:
parent
57c9a4db8a
commit
bbe46bb883
|
@ -140,6 +140,7 @@ GEOSDIRS = common \
|
||||||
conio \
|
conio \
|
||||||
disk \
|
disk \
|
||||||
dlgbox \
|
dlgbox \
|
||||||
|
float/softfloat \
|
||||||
file \
|
file \
|
||||||
graph \
|
graph \
|
||||||
memory \
|
memory \
|
||||||
|
@ -178,6 +179,7 @@ SRCDIRS += common \
|
||||||
conio \
|
conio \
|
||||||
dbg \
|
dbg \
|
||||||
em \
|
em \
|
||||||
|
float/softfloat \
|
||||||
joystick \
|
joystick \
|
||||||
mouse \
|
mouse \
|
||||||
runtime \
|
runtime \
|
||||||
|
|
|
@ -150,61 +150,61 @@ historical float routines by woz :) unfortunately not ieee754
|
||||||
|
|
||||||
these must be available in the runtime library
|
these must be available in the runtime library
|
||||||
```
|
```
|
||||||
func description cbmfp wozfp 754 codegen.c
|
func description softfloat cbmfp wozfp 754 codegen.c
|
||||||
|
|
||||||
aufloat Primary 8bit unsigned -> float * - - g_regfloat
|
aufloat Primary 8bit unsigned -> float - * - - g_regfloat
|
||||||
afloat Primary 8bit signed -> float * - - g_regfloat
|
afloat Primary 8bit signed -> float - * - - g_regfloat
|
||||||
axufloat Primary 16bit unsigned -> float * - - g_regfloat
|
axufloat Primary 16bit unsigned -> float * * - - g_regfloat
|
||||||
axfloat Primary 16bit signed -> float * - - g_regfloat
|
axfloat Primary 16bit signed -> float * * - - g_regfloat
|
||||||
eaxufloat Primary 32bit unsigned -> float * - - g_regfloat
|
eaxufloat Primary 32bit unsigned -> float * * - - g_regfloat
|
||||||
eaxfloat Primary 32bit signed -> float * - - g_regfloat
|
eaxfloat Primary 32bit signed -> float * * - - g_regfloat
|
||||||
|
|
||||||
feaxint Primary float -> 16bit int * - - g_regint
|
feaxint Primary float -> 16bit int - * - - g_regint
|
||||||
feaxlong Primary float -> 32bit long * - - g_reglong
|
feaxlong Primary float -> 32bit long - * - - g_reglong
|
||||||
|
|
||||||
ftosaddeax Primary = TOS + Primary * ? ? g_add
|
ftosaddeax Primary = TOS + Primary * * ? ? g_add
|
||||||
ftossubeax Primary = TOS - Primary * ? ? g_sub
|
ftossubeax Primary = TOS - Primary * * ? ? g_sub
|
||||||
ftosrsubeax Primary = Primary - TOS - - - g_rsub
|
ftosrsubeax Primary = Primary - TOS - - - - g_rsub
|
||||||
ftosmuleax Primary = TOS * Primary * ? - g_mul
|
ftosmuleax Primary = TOS * Primary * * ? - g_mul
|
||||||
ftosdiveax Primary = TOS / Primary * ? - g_div
|
ftosdiveax Primary = TOS / Primary * * ? - g_div
|
||||||
|
|
||||||
fnegeax Primary = -Primary - - - g_neg
|
fnegeax Primary = -Primary - - - - g_neg
|
||||||
fbnegeax Primary = !Primary (return bool!) * - - g_bneg
|
fbnegeax Primary = !Primary (return bool!) * * - - g_bneg
|
||||||
|
|
||||||
ftosgeeax Test for greater than or equal to * - - g_ge
|
ftosgeeax Test for greater than or equal to * * - - g_ge
|
||||||
ftosgteax Test for greater than * - - g_gt
|
ftosgteax Test for greater than * * - - g_gt
|
||||||
ftosleeax Test for less than or equal to * - - g_le
|
ftosleeax Test for less than or equal to * * - - g_le
|
||||||
ftoslteax Test for less than * - - g_lt
|
ftoslteax Test for less than * * - - g_lt
|
||||||
ftosneeax Test for not equal * - - g_ne
|
ftosneeax Test for not equal * * - - g_ne
|
||||||
ftoseqeax Test for equal * - - g_eq
|
ftoseqeax Test for equal * * - - g_eq
|
||||||
```
|
```
|
||||||
### extra functions
|
### extra functions
|
||||||
|
|
||||||
optional utility functions.
|
optional utility functions.
|
||||||
```
|
```
|
||||||
func description cbmfp wozfp 754
|
func description cbmfp cbmfp wozfp 754
|
||||||
|
|
||||||
char *_ftostr(char *d, float s) * ? ? for printf family
|
char *_ftostr(char *d, float s) * * ? ? for printf family
|
||||||
float _strtof(char *d) * - - for scanf family
|
float _strtof(char *d) - * - - for scanf family
|
||||||
```
|
```
|
||||||
### math.h functions
|
### math.h functions
|
||||||
|
|
||||||
these are optional, required for standard libm
|
these are optional, required for standard libm
|
||||||
```
|
```
|
||||||
func description cbmfp wozfp 754
|
func description softfloat cbmfp wozfp 754
|
||||||
|
|
||||||
/* C99 */
|
/* C99 */
|
||||||
float powf(float f, float a) * - -
|
float powf(float f, float a) - * - -
|
||||||
float sinf(float s) * - -
|
float sinf(float s) - * - -
|
||||||
float cosf(float s) * - -
|
float cosf(float s) - * - -
|
||||||
float logf(float x) * * -
|
float logf(float x) - * * -
|
||||||
float expf(float x) * - -
|
float expf(float x) - * - -
|
||||||
float sqrtf(float x) * - -
|
float sqrtf(float x) - * - -
|
||||||
float tanf(float x) * - -
|
float tanf(float x) - * - -
|
||||||
float atanf(float x) * - -
|
float atanf(float x) - * - -
|
||||||
float fabsf(float x) * - -
|
float fabsf(float x) - * - -
|
||||||
float roundf(float x) * - -
|
float roundf(float x) - * - -
|
||||||
float truncf(float x) * - -
|
float truncf(float x) - * - -
|
||||||
```
|
```
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
|
@ -37,7 +37,7 @@ int8 float_exception_flags = 0;
|
||||||
| division and square root approximations. (Can be specialized to target if
|
| division and square root approximations. (Can be specialized to target if
|
||||||
| desired.)
|
| desired.)
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#include "softfloat-macros"
|
#include "macros.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Functions and definitions to determine: (1) whether tininess for underflow
|
| Functions and definitions to determine: (1) whether tininess for underflow
|
||||||
|
@ -47,7 +47,7 @@ int8 float_exception_flags = 0;
|
||||||
| are propagated from function inputs to output. These details are target-
|
| are propagated from function inputs to output. These details are target-
|
||||||
| specific.
|
| specific.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#include "softfloat-specialize"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Returns the fraction bits of the single-precision floating-point value `a'.
|
| Returns the fraction bits of the single-precision floating-point value `a'.
|
|
@ -19,7 +19,7 @@ else
|
||||||
RMDIR = $(RM) -r $1
|
RMDIR = $(RM) -r $1
|
||||||
ERRDIR = 2>&1
|
ERRDIR = 2>&1
|
||||||
TRUE = true
|
TRUE = true
|
||||||
CAT = cat
|
CAT = cat $1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef QUIET
|
ifdef QUIET
|
||||||
|
|
|
@ -212,10 +212,10 @@ runsoft-quick: quick.soft.bin
|
||||||
|
|
||||||
runsoft: float-minimal.soft.bin float-basic.soft.bin float-cmp.soft.bin float-conv.soft.bin float-misc.soft.bin
|
runsoft: float-minimal.soft.bin float-basic.soft.bin float-cmp.soft.bin float-conv.soft.bin float-misc.soft.bin
|
||||||
$(SIM65) float-minimal.soft.bin
|
$(SIM65) float-minimal.soft.bin
|
||||||
$(SIM65) float-misc.soft.bin
|
# $(SIM65) float-misc.soft.bin
|
||||||
-$(SIM65) float-conv.soft.bin
|
# -$(SIM65) float-conv.soft.bin
|
||||||
-$(SIM65) float-cmp.soft.bin
|
# -$(SIM65) float-cmp.soft.bin
|
||||||
-$(SIM65) float-basic.soft.bin
|
# -$(SIM65) float-basic.soft.bin
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# CBM kernal floats
|
# CBM kernal floats
|
||||||
|
|
|
@ -15,7 +15,8 @@ LINK = ../../../bin/cl65 $(TARGET) -o $@
|
||||||
# Probably okay below here.
|
# Probably okay below here.
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
all: softfloat$(OBJ) timesoftfloat$(EXE)
|
all: softfloat$(OBJ)
|
||||||
|
echo softfloat ok!
|
||||||
|
|
||||||
milieu.h: $(PROCESSOR_H)
|
milieu.h: $(PROCESSOR_H)
|
||||||
touch milieu.h
|
touch milieu.h
|
||||||
|
@ -24,11 +25,11 @@ softfloat$(OBJ): milieu.h softfloat.h softfloat-specialize $(SOFTFLOAT_MACROS) s
|
||||||
$(COMPILE_C) softfloat.c
|
$(COMPILE_C) softfloat.c
|
||||||
|
|
||||||
timesoftfloat$(OBJ): milieu.h softfloat.h timesoftfloat.c
|
timesoftfloat$(OBJ): milieu.h softfloat.h timesoftfloat.c
|
||||||
$(COMPILE_ONLY) timesoftfloat.c
|
# $(COMPILE_ONLY) timesoftfloat.c
|
||||||
$(COMPILE_C) timesoftfloat.c
|
# $(COMPILE_C) timesoftfloat.c
|
||||||
|
|
||||||
timesoftfloat$(EXE): softfloat$(OBJ) timesoftfloat$(OBJ)
|
timesoftfloat$(EXE): softfloat$(OBJ) timesoftfloat$(OBJ)
|
||||||
$(LINK) softfloat$(OBJ) timesoftfloat$(OBJ)
|
# $(LINK) softfloat$(OBJ) timesoftfloat$(OBJ)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) softfloat$(OBJ) timesoftfloat$(EXE) timesoftfloat$(OBJ) timesoftfloat$(OBJ).s
|
$(RM) softfloat$(OBJ) timesoftfloat$(EXE) timesoftfloat$(OBJ) timesoftfloat$(OBJ).s
|
||||||
|
|
1084
test/float/softfloat/timesoftfloat.c
Normal file
1084
test/float/softfloat/timesoftfloat.c
Normal file
File diff suppressed because it is too large
Load Diff
95
test/todo/float-conv-float-to-char.c
Normal file
95
test/todo/float-conv-float-to-char.c
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
|
||||||
|
// test basic type conversions
|
||||||
|
// WIP WIP WIP
|
||||||
|
|
||||||
|
#define TEST_8
|
||||||
|
#define TEST_16
|
||||||
|
#define TEST_32
|
||||||
|
|
||||||
|
#ifdef CONIO
|
||||||
|
#include <conio.h>
|
||||||
|
#define WAIT() cgetc()
|
||||||
|
#else
|
||||||
|
#define WAIT()
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <_float.h>
|
||||||
|
|
||||||
|
float fp1 = 12.34f;
|
||||||
|
float fp2; // non initialized
|
||||||
|
float fp3, fp4 = 55.55f;
|
||||||
|
|
||||||
|
char buf[0x20];
|
||||||
|
char buf2[0x20];
|
||||||
|
char buf3[0x20];
|
||||||
|
|
||||||
|
unsigned long l1,l2;
|
||||||
|
|
||||||
|
signed char var_schar;
|
||||||
|
unsigned char var_uchar;
|
||||||
|
signed int var_sint;
|
||||||
|
unsigned int var_uint;
|
||||||
|
signed long var_slong;
|
||||||
|
unsigned long var_ulong;
|
||||||
|
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
// returns 1 if value in f matches the string
|
||||||
|
// the string is a hex value without leading "0x"
|
||||||
|
int compare(float f, char *str)
|
||||||
|
{
|
||||||
|
char temp[12];
|
||||||
|
sprintf(temp, "%08lx", *((uint32_t*)&f));
|
||||||
|
return (strcmp(temp, str) == 0) ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void test1(float f, char *str)
|
||||||
|
{
|
||||||
|
if (compare(f, str)) {
|
||||||
|
// printf("(ok)");
|
||||||
|
printf("\n");
|
||||||
|
} else {
|
||||||
|
printf(" (failed) !!!\n");
|
||||||
|
result++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void test2(long n, long val)
|
||||||
|
{
|
||||||
|
if (n == val) {
|
||||||
|
// printf("(ok)");
|
||||||
|
printf("\n");
|
||||||
|
} else {
|
||||||
|
printf(" (failed) !!!\n");
|
||||||
|
result++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void varvar(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
printf("\nconversions (float variable to integer variable)\n");
|
||||||
|
fp1 = -12.3f;
|
||||||
|
fp2 = 19.9f;
|
||||||
|
|
||||||
|
var_uchar = (unsigned char)fp2;
|
||||||
|
printf("fp2 0x%08lx %s (19.9) uchar:%u (exp:19)", *((uint32_t*)&fp2), _ftostr(buf, fp2), (int)var_uchar);
|
||||||
|
test2(var_uchar, 19);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
printf("float-conv-float-to-char\n");
|
||||||
|
|
||||||
|
varvar();
|
||||||
|
WAIT();
|
||||||
|
|
||||||
|
printf("\nfloat-conv (res:%d)\n", result);
|
||||||
|
return result;
|
||||||
|
}
|
94
test/todo/float-conv-float-to-schar.c
Normal file
94
test/todo/float-conv-float-to-schar.c
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
|
||||||
|
// test basic type conversions
|
||||||
|
// WIP WIP WIP
|
||||||
|
|
||||||
|
#define TEST_8
|
||||||
|
#define TEST_16
|
||||||
|
#define TEST_32
|
||||||
|
|
||||||
|
#ifdef CONIO
|
||||||
|
#include <conio.h>
|
||||||
|
#define WAIT() cgetc()
|
||||||
|
#else
|
||||||
|
#define WAIT()
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <_float.h>
|
||||||
|
|
||||||
|
float fp1 = 12.34f;
|
||||||
|
float fp2; // non initialized
|
||||||
|
float fp3, fp4 = 55.55f;
|
||||||
|
|
||||||
|
char buf[0x20];
|
||||||
|
char buf2[0x20];
|
||||||
|
char buf3[0x20];
|
||||||
|
|
||||||
|
unsigned long l1,l2;
|
||||||
|
|
||||||
|
signed char var_schar;
|
||||||
|
unsigned char var_uchar;
|
||||||
|
signed int var_sint;
|
||||||
|
unsigned int var_uint;
|
||||||
|
signed long var_slong;
|
||||||
|
unsigned long var_ulong;
|
||||||
|
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
// returns 1 if value in f matches the string
|
||||||
|
// the string is a hex value without leading "0x"
|
||||||
|
int compare(float f, char *str)
|
||||||
|
{
|
||||||
|
char temp[12];
|
||||||
|
sprintf(temp, "%08lx", *((uint32_t*)&f));
|
||||||
|
return (strcmp(temp, str) == 0) ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void test1(float f, char *str)
|
||||||
|
{
|
||||||
|
if (compare(f, str)) {
|
||||||
|
// printf("(ok)");
|
||||||
|
printf("\n");
|
||||||
|
} else {
|
||||||
|
printf(" (failed) !!!\n");
|
||||||
|
result++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void test2(long n, long val)
|
||||||
|
{
|
||||||
|
if (n == val) {
|
||||||
|
// printf("(ok)");
|
||||||
|
printf("\n");
|
||||||
|
} else {
|
||||||
|
printf(" (failed) !!!\n");
|
||||||
|
result++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void varvar(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
printf("\nconversions (float variable to integer variable)\n");
|
||||||
|
fp1 = -12.3f;
|
||||||
|
|
||||||
|
var_schar = (signed char)fp1;
|
||||||
|
printf("fp1 0x%08lx %s (-12.3) schar:%d (exp:-12)", *((uint32_t*)&fp1), _ftostr(buf, fp1), (int)var_schar);
|
||||||
|
test2(var_schar, -12);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
printf("float-conv-float-to-schar\n");
|
||||||
|
|
||||||
|
varvar();
|
||||||
|
WAIT();
|
||||||
|
|
||||||
|
printf("\nfloat-conv (res:%d)\n", result);
|
||||||
|
return result;
|
||||||
|
}
|
|
@ -58,7 +58,6 @@ void test1(float f, char *str)
|
||||||
void constconst(void)
|
void constconst(void)
|
||||||
{
|
{
|
||||||
// addition
|
// addition
|
||||||
#if 1
|
|
||||||
printf("\nconstant + constant\n\n");
|
printf("\nconstant + constant\n\n");
|
||||||
fp1 = 0.1f;
|
fp1 = 0.1f;
|
||||||
fp2 = 0.2f;
|
fp2 = 0.2f;
|
||||||
|
@ -68,7 +67,7 @@ void constconst(void)
|
||||||
printf(" 0x%08lx [0x3e4ccccd] %s (0.2)\n", *((uint32_t*)&fp2), _ftostr(buf, fp2));
|
printf(" 0x%08lx [0x3e4ccccd] %s (0.2)\n", *((uint32_t*)&fp2), _ftostr(buf, fp2));
|
||||||
printf("fp3:0x%08lx [0x3e99999a] %s (0.3)", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
printf("fp3:0x%08lx [0x3e99999a] %s (0.3)", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
||||||
test1(fp3, "3e99999a");
|
test1(fp3, "3e99999a");
|
||||||
#endif
|
|
||||||
// substraction
|
// substraction
|
||||||
#if 0
|
#if 0
|
||||||
printf("\nconstant - constant\n\n");
|
printf("\nconstant - constant\n\n");
|
||||||
|
@ -82,20 +81,17 @@ void constconst(void)
|
||||||
test1(fp3, "bdcccccd");
|
test1(fp3, "bdcccccd");
|
||||||
#endif
|
#endif
|
||||||
// multiplication
|
// multiplication
|
||||||
#if 1
|
|
||||||
printf("\nconstant * constant\n\n");
|
printf("\nconstant * constant\n\n");
|
||||||
fp1 = 0.1f;
|
fp1 = 0.1f;
|
||||||
fp2 = 0.2f;
|
fp2 = 0.2f;
|
||||||
fp3 = 0.1f * 0.2f; // FIXME: Precondition violated: IsClassInt (T), file 'cc65/datatype.c', line 1008
|
fp3 = 0.1f * 5.0f; // FIXME: Precondition violated: IsClassInt (T), file 'cc65/datatype.c', line 1008
|
||||||
|
|
||||||
printf(" 0x%08lx [0x3dcccccd] %s (0.1)\n", *((uint32_t*)&fp1), _ftostr(buf, fp1));
|
printf(" 0x%08lx [0x3dcccccd] %s (0.1)\n", *((uint32_t*)&fp1), _ftostr(buf, fp1));
|
||||||
printf(" 0x%08lx [0x3e4ccccd] %s (0.2)\n", *((uint32_t*)&fp2), _ftostr(buf, fp2));
|
printf(" 0x%08lx [0x3e4ccccd] %s (0.2)\n", *((uint32_t*)&fp2), _ftostr(buf, fp2));
|
||||||
printf("fp3:0x%08lx [0x3ca3d70b] %s (0.2)", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
printf("fp3:0x%08lx [0x3f000000] %s (0.5)", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
||||||
test1(fp3, "3ca3d70b");
|
test1(fp3, "3f000000");
|
||||||
#endif
|
|
||||||
|
|
||||||
// division
|
// division
|
||||||
#if 1
|
|
||||||
printf("\nconstant / constant\n\n");
|
printf("\nconstant / constant\n\n");
|
||||||
fp1 = 0.1f;
|
fp1 = 0.1f;
|
||||||
fp2 = 0.2f;
|
fp2 = 0.2f;
|
||||||
|
@ -105,7 +101,6 @@ void constconst(void)
|
||||||
printf(" 0x%08lx [0x3e4ccccd] %s (0.2)\n", *((uint32_t*)&fp2), _ftostr(buf, fp2));
|
printf(" 0x%08lx [0x3e4ccccd] %s (0.2)\n", *((uint32_t*)&fp2), _ftostr(buf, fp2));
|
||||||
printf("fp3:0x%08lx [0x3f000000] %s (0.5)", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
printf("fp3:0x%08lx [0x3f000000] %s (0.5)", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
||||||
test1(fp3, "3f000000");
|
test1(fp3, "3f000000");
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void varvar(void)
|
void varvar(void)
|
||||||
|
@ -115,33 +110,30 @@ void varvar(void)
|
||||||
/* addition, variable + variable */
|
/* addition, variable + variable */
|
||||||
fp1 = 12.34f;
|
fp1 = 12.34f;
|
||||||
fp2 = 43.21f;
|
fp2 = 43.21f;
|
||||||
fp3 = fp1 + fp2;
|
fp3 = fp1 + fp2; // = 55.55f
|
||||||
printf("addition: %s+%s=%s\n", _ftostr(buf, fp1), _ftostr(buf2, fp2), _ftostr(buf3, fp3));
|
printf("addition: %s+%s=%s\n", _ftostr(buf, fp1), _ftostr(buf2, fp2), _ftostr(buf3, fp3));
|
||||||
printf(" fp3:0x%08lx [0x425e3333] %s (exp:55.549999)", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
printf(" fp3:0x%08lx [0x425e3333] %s (exp:55.549999)", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
||||||
test1(fp3, "425e3333");
|
// test1(fp3, "425e3333");
|
||||||
#if 1
|
|
||||||
/* substraction, variable - variable */
|
/* substraction, variable - variable */
|
||||||
fp3 = fp1 - fp2;
|
fp3 = fp1 - fp2;
|
||||||
printf("substraction: %s-%s=%s\n", _ftostr(buf, fp1), _ftostr(buf2, fp2), _ftostr(buf3, fp3));
|
printf("substraction: %s-%s=%s\n", _ftostr(buf, fp1), _ftostr(buf2, fp2), _ftostr(buf3, fp3));
|
||||||
printf(" fp3:0x%08lx [0xc1f6f5c2] %s (exp:-30.869999)", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
printf(" fp3:0x%08lx [0xc1f6f5c2] %s (exp:-30.869999)", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
||||||
test1(fp3, "c1f6f5c2");
|
// test1(fp3, "c1f6f5c2");
|
||||||
#endif
|
|
||||||
#if 1
|
|
||||||
fp1 = 25.2f;
|
fp1 = 25.2f;
|
||||||
fp2 = 2.3f;
|
fp2 = 2.3f;
|
||||||
fp3 = fp1 * fp2;
|
fp3 = fp1 * fp2;
|
||||||
printf("multiplication: %s*%s=%s\n", _ftostr(buf, fp1), _ftostr(buf2, fp2), _ftostr(buf3, fp3));
|
printf("multiplication: %s*%s=%s\n", _ftostr(buf, fp1), _ftostr(buf2, fp2), _ftostr(buf3, fp3));
|
||||||
printf(" fp3:0x%08lx [0x4267d70a] %s (exp:57.96)", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
printf(" fp3:0x%08lx [0x4267d70a] %s (exp:57.96)", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
||||||
test1(fp3, "4267d70a");
|
// test1(fp3, "4267d70a");
|
||||||
#endif
|
|
||||||
#if 1
|
|
||||||
fp1 = 25.2f;
|
fp1 = 25.2f;
|
||||||
fp2 = 2.5f;
|
fp2 = 2.5f;
|
||||||
fp3 = fp1 / fp2;
|
fp3 = fp1 / fp2;
|
||||||
printf("division: %s/%s=%s\n", _ftostr(buf, fp1), _ftostr(buf2, fp2), _ftostr(buf3, fp3));
|
printf("division: %s/%s=%s\n", _ftostr(buf, fp1), _ftostr(buf2, fp2), _ftostr(buf3, fp3));
|
||||||
printf(" fp3:0x%08lx [0x412147ae] %s (exp:10.08)", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
printf(" fp3:0x%08lx [0x412147ae] %s (exp:10.08)", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
||||||
test1(fp3, "412147ae");
|
// test1(fp3, "412147ae");
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void varconst(void)
|
void varconst(void)
|
||||||
|
@ -151,7 +143,6 @@ void varconst(void)
|
||||||
fp1 = 55.549999f;
|
fp1 = 55.549999f;
|
||||||
fp3 = fp1 + 0.05f;
|
fp3 = fp1 + 0.05f;
|
||||||
printf("addition: %s+%s=%s\n", _ftostr(buf, fp3), _ftostr(buf3, 0.05f), _ftostr(buf2, fp1));
|
printf("addition: %s+%s=%s\n", _ftostr(buf, fp3), _ftostr(buf3, 0.05f), _ftostr(buf2, fp1));
|
||||||
// printf(" fp1:0x%08lx [0x425e3333] %s", *((uint32_t*)&fp1), _ftostr(buf, fp1));
|
|
||||||
printf(" fp3:0x%08lx [0x425e6666] %s", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
printf(" fp3:0x%08lx [0x425e6666] %s", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
||||||
test1(fp3, "425e6666");
|
test1(fp3, "425e6666");
|
||||||
|
|
||||||
|
@ -161,65 +152,60 @@ void varconst(void)
|
||||||
fp3 = fp1 - 11.5f; // FIXME: Invalid operands for binary operator '-'
|
fp3 = fp1 - 11.5f; // FIXME: Invalid operands for binary operator '-'
|
||||||
printf("substraction: %s-%s=%s\n", _ftostr(buf, fp1), _ftostr(buf2, 11.5f), _ftostr(buf3, fp3));
|
printf("substraction: %s-%s=%s\n", _ftostr(buf, fp1), _ftostr(buf2, 11.5f), _ftostr(buf3, fp3));
|
||||||
printf(" fp3:0x%08lx [0x3f570a40] %s ()", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
printf(" fp3:0x%08lx [0x3f570a40] %s ()", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
||||||
test1(fp3, "3f570a40");
|
// test1(fp3, "3f570a40");
|
||||||
#endif
|
#endif
|
||||||
#if 1
|
|
||||||
fp1 = 25.2f;
|
fp1 = 25.2f;
|
||||||
fp3 = fp1 * 2.3f;
|
fp3 = fp1 * 2.3f;
|
||||||
printf("multiplication: %s*%s=%s\n", _ftostr(buf, fp1), _ftostr(buf2, 2.3f), _ftostr(buf3, fp3));
|
printf("multiplication: %s*%s=%s\n", _ftostr(buf, fp1), _ftostr(buf2, 2.3f), _ftostr(buf3, fp3));
|
||||||
printf(" fp3:0x%08lx [0x4267d70a] %s ()", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
printf(" fp3:0x%08lx [0x4267d70a] %s ()", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
||||||
test1(fp3, "4267d70a");
|
// test1(fp3, "4267d70a");
|
||||||
#endif
|
|
||||||
#if 0
|
#if 0
|
||||||
fp1 = 25.2f;
|
fp1 = 25.2f;
|
||||||
fp3 = fp1 / 2.3f; // FIXME: division by zero
|
fp3 = fp1 / 2.3f; // FIXME: division by zero
|
||||||
printf("division: %s/%s=%s\n", _ftostr(buf, fp1), _ftostr(buf2, 2.3f), _ftostr(buf3, fp3));
|
printf("division: %s/%s=%s\n", _ftostr(buf, fp1), _ftostr(buf2, 2.3f), _ftostr(buf3, fp3));
|
||||||
printf(" fp3:0x%08lx [0x412f4dea] %s ()", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
printf(" fp3:0x%08lx [0x412f4dea] %s ()", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
||||||
test1(fp3, "412f4dea");
|
// test1(fp3, "412f4dea");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void constvar(void)
|
void constvar(void)
|
||||||
{
|
{
|
||||||
printf("\nconstant vs variable\n\n");
|
printf("\nconstant vs variable\n\n");
|
||||||
#if 1
|
|
||||||
/* addition, constant + variable */
|
/* addition, constant + variable */
|
||||||
fp2 = 43.21f;
|
fp2 = 43.21f;
|
||||||
fp3 = 12.7f + fp2; // FIXME: wrong, the add is dropped?
|
fp3 = 12.7f + fp2; // FIXME: wrong, the add is dropped?
|
||||||
printf("addition: %s+%s=%s\n", _ftostr(buf, 12.7f), _ftostr(buf2, fp2), _ftostr(buf3, fp3));
|
printf("addition: %s+%s=%s\n", _ftostr(buf, 12.7f), _ftostr(buf2, fp2), _ftostr(buf3, fp3));
|
||||||
// printf(" fp1:0x%08lx [0x41c9999a] %s\n", *((uint32_t*)&fp1), _ftostr(buf, fp1));
|
|
||||||
printf(" fp3:0x%08lx [0x425fa3d7] %s", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
printf(" fp3:0x%08lx [0x425fa3d7] %s", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
||||||
test1(fp3, "425fa3d7");
|
// test1(fp3, "425fa3d7");
|
||||||
#endif
|
|
||||||
#if 1
|
|
||||||
/* substraction, constant - variable */
|
/* substraction, constant - variable */
|
||||||
fp2 = 12.34;
|
fp2 = 12.34;
|
||||||
fp3 = 11.5f - fp2; // FIXME: wrong, fp2 appears to become 0?
|
fp3 = 11.5f - fp2; // FIXME: wrong, fp2 appears to become 0?
|
||||||
printf("substraction: %s-%s=%s\n", _ftostr(buf, 11.5f), _ftostr(buf2, fp2), _ftostr(buf3, fp3));
|
printf("substraction: %s-%s=%s\n", _ftostr(buf, 11.5f), _ftostr(buf2, fp2), _ftostr(buf3, fp3));
|
||||||
printf(" fp3:0x%08lx [0xbf570a40] %s ()", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
printf(" fp3:0x%08lx [0xbf570a40] %s ()", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
||||||
test1(fp3, "bf570a40");
|
// test1(fp3, "bf570a40");
|
||||||
#endif
|
|
||||||
#if 1
|
|
||||||
fp2 = 2.3f;
|
fp2 = 2.3f;
|
||||||
fp3 = 25.2f * fp2; // FIXME: wrong, fp3 appears to become 0?
|
fp3 = 25.2f * fp2; // FIXME: wrong, fp3 appears to become 0?
|
||||||
printf("multiplication: %s*%s=%s\n", _ftostr(buf, 25.2f), _ftostr(buf2, fp2), _ftostr(buf3, fp3));
|
printf("multiplication: %s*%s=%s\n", _ftostr(buf, 25.2f), _ftostr(buf2, fp2), _ftostr(buf3, fp3));
|
||||||
printf(" fp3:0x%08lx [0x4267d70a] %s ()", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
printf(" fp3:0x%08lx [0x4267d70a] %s ()", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
||||||
test1(fp3, "4267d70a");
|
// test1(fp3, "4267d70a");
|
||||||
#endif
|
|
||||||
#if 1
|
|
||||||
fp2 = 2.3f;
|
fp2 = 2.3f;
|
||||||
fp3 = 25.2f / fp2;
|
fp3 = 25.2f / fp2;
|
||||||
printf("division: %s/%s=%s\n", _ftostr(buf, 25.2f), _ftostr(buf2, fp2), _ftostr(buf3, fp3));
|
printf("division: %s/%s=%s\n", _ftostr(buf, 25.2f), _ftostr(buf2, fp2), _ftostr(buf3, fp3));
|
||||||
printf(" fp3:0x%08lx [0x412f4dea] %s ()", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
printf(" fp3:0x%08lx [0x412f4dea] %s ()", *((uint32_t*)&fp3), _ftostr(buf, fp3));
|
||||||
test1(fp3, "412f4dea");
|
// test1(fp3, "412f4dea");
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
float fp2 = 43.21f;
|
float fp2 = 43.21f;
|
||||||
|
|
||||||
printf("\nfloat-basic\n\n");
|
printf("float-basic\n");
|
||||||
printf("fp1:0x%08lx [0x414570a4] %s (12.340000)\n", *((uint32_t*)&fp1), _ftostr(buf, fp1));
|
printf("fp1:0x%08lx [0x414570a4] %s (12.340000)\n", *((uint32_t*)&fp1), _ftostr(buf, fp1));
|
||||||
printf("fp2:0x%08lx [0x422cd70a] %s (43.209999)\n", *((uint32_t*)&fp2), _ftostr(buf, fp2));
|
printf("fp2:0x%08lx [0x422cd70a] %s (43.209999)\n", *((uint32_t*)&fp2), _ftostr(buf, fp2));
|
||||||
|
|
|
@ -45,27 +45,27 @@ void constconst(void)
|
||||||
// float constant vs float const
|
// float constant vs float const
|
||||||
printf("const vs const\n");
|
printf("const vs const\n");
|
||||||
|
|
||||||
expect("1.5f == 1.6f is", 0, (1.5f == 1.6f));
|
// expect("1.5f == 1.6f is", 0, (1.5f == 1.6f));
|
||||||
expect("1.6f == 1.5f is", 0, (1.6f == 1.5f));
|
// expect("1.6f == 1.5f is", 0, (1.6f == 1.5f));
|
||||||
expect("1.6f == 1.6f is", 1, (1.6f == 1.6f));
|
expect("1.6f == 1.6f is", 1, (1.6f == 1.6f));
|
||||||
|
|
||||||
expect("1.5f != 1.6f is", 1, (1.5f != 1.6f));
|
// expect("1.5f != 1.6f is", 1, (1.5f != 1.6f));
|
||||||
expect("1.6f != 1.5f is", 1, (1.6f != 1.5f));
|
// expect("1.6f != 1.5f is", 1, (1.6f != 1.5f));
|
||||||
expect("1.6f != 1.6f is", 0, (1.6f != 1.6f));
|
expect("1.6f != 1.6f is", 0, (1.6f != 1.6f));
|
||||||
|
|
||||||
expect("1.5f < 1.6f is", 1, (1.5f < 1.6f));
|
// expect("1.5f < 1.6f is", 1, (1.5f < 1.6f));
|
||||||
expect("1.6f < 1.5f is", 0, (1.6f < 1.5f));
|
expect("1.6f < 1.5f is", 0, (1.6f < 1.5f));
|
||||||
expect("1.6f < 1.6f is", 0, (1.6f < 1.6f));
|
expect("1.6f < 1.6f is", 0, (1.6f < 1.6f));
|
||||||
|
|
||||||
expect("1.5f > 1.6f is", 0, (1.5f > 1.6f));
|
expect("1.5f > 1.6f is", 0, (1.5f > 1.6f));
|
||||||
expect("1.6f > 1.5f is", 1, (1.6f > 1.5f));
|
// expect("1.6f > 1.5f is", 1, (1.6f > 1.5f));
|
||||||
expect("1.6f > 1.6f is", 0, (1.6f > 1.6f));
|
expect("1.6f > 1.6f is", 0, (1.6f > 1.6f));
|
||||||
|
|
||||||
expect("1.5f <= 1.6f is", 1, (1.5f <= 1.6f));
|
expect("1.5f <= 1.6f is", 1, (1.5f <= 1.6f));
|
||||||
expect("1.6f <= 1.5f is", 0, (1.6f <= 1.5f));
|
// expect("1.6f <= 1.5f is", 0, (1.6f <= 1.5f));
|
||||||
expect("1.6f <= 1.6f is", 1, (1.6f <= 1.6f));
|
expect("1.6f <= 1.6f is", 1, (1.6f <= 1.6f));
|
||||||
|
|
||||||
expect("1.5f >= 1.6f is", 0, (1.5f >= 1.6f));
|
// expect("1.5f >= 1.6f is", 0, (1.5f >= 1.6f));
|
||||||
expect("1.6f >= 1.5f is", 1, (1.6f >= 1.5f));
|
expect("1.6f >= 1.5f is", 1, (1.6f >= 1.5f));
|
||||||
expect("1.6f >= 1.6f is", 1, (1.6f >= 1.6f));
|
expect("1.6f >= 1.6f is", 1, (1.6f >= 1.6f));
|
||||||
}
|
}
|
||||||
|
@ -76,32 +76,29 @@ void constvar(void)
|
||||||
{
|
{
|
||||||
printf("const vs var\n");
|
printf("const vs var\n");
|
||||||
|
|
||||||
fp1 = 1.6f;
|
// expect("1.5f == 1.6f is", 0, (1.5f == fp1));
|
||||||
fp2 = 1.5f;
|
// expect("1.6f == 1.5f is", 0, (1.6f == fp2));
|
||||||
|
// expect("1.6f == 1.6f is", 1, (1.6f == fp1));
|
||||||
expect("1.5f == 1.6f is", 0, (1.5f == fp1));
|
//
|
||||||
expect("1.6f == 1.5f is", 0, (1.6f == fp2));
|
// expect("1.5f != 1.6f is", 1, (1.5f != fp1));
|
||||||
expect("1.6f == 1.6f is", 1, (1.6f == fp1));
|
// expect("1.6f != 1.5f is", 1, (1.6f != fp2));
|
||||||
|
// expect("1.6f != 1.6f is", 0, (1.6f != fp1));
|
||||||
expect("1.5f != 1.6f is", 1, (1.5f != fp1));
|
//
|
||||||
expect("1.6f != 1.5f is", 1, (1.6f != fp2));
|
// expect("1.5f < 1.6f is", 1, (1.5f < fp1));
|
||||||
expect("1.6f != 1.6f is", 0, (1.6f != fp1));
|
// expect("1.6f < 1.5f is", 0, (1.6f < fp2));
|
||||||
|
// expect("1.6f < 1.6f is", 0, (1.6f < fp1));
|
||||||
expect("1.5f < 1.6f is", 1, (1.5f < fp1));
|
//
|
||||||
expect("1.6f < 1.5f is", 0, (1.6f < fp2));
|
// expect("1.5f > 1.6f is", 0, (1.5f > fp1));
|
||||||
expect("1.6f < 1.6f is", 0, (1.6f < fp1));
|
// expect("1.6f > 1.5f is", 1, (1.6f > fp2));
|
||||||
|
// expect("1.6f > 1.6f is", 0, (1.6f > fp1));
|
||||||
expect("1.5f > 1.6f is", 0, (1.5f > fp1));
|
//
|
||||||
expect("1.6f > 1.5f is", 1, (1.6f > fp2));
|
// expect("1.5f <= 1.6f is", 1, (1.5f <= fp1));
|
||||||
expect("1.6f > 1.6f is", 0, (1.6f > fp1));
|
// expect("1.6f <= 1.5f is", 0, (1.6f <= fp2));
|
||||||
|
// expect("1.6f <= 1.6f is", 1, (1.6f <= fp1));
|
||||||
expect("1.5f <= 1.6f is", 1, (1.5f <= fp1));
|
//
|
||||||
expect("1.6f <= 1.5f is", 0, (1.6f <= fp2));
|
// expect("1.5f >= 1.6f is", 0, (1.5f >= fp1));
|
||||||
expect("1.6f <= 1.6f is", 1, (1.6f <= fp1));
|
// expect("1.6f >= 1.5f is", 1, (1.6f >= fp2));
|
||||||
|
// expect("1.6f >= 1.6f is", 1, (1.6f >= fp1));
|
||||||
expect("1.5f >= 1.6f is", 0, (1.5f >= fp1));
|
|
||||||
expect("1.6f >= 1.5f is", 1, (1.6f >= fp2));
|
|
||||||
expect("1.6f >= 1.6f is", 1, (1.6f >= fp1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
|
@ -115,25 +112,25 @@ void varconst(void)
|
||||||
|
|
||||||
expect("1.5f == 1.6f is", 0, (fp2 == 1.6f));
|
expect("1.5f == 1.6f is", 0, (fp2 == 1.6f));
|
||||||
expect("1.6f == 1.5f is", 0, (fp1 == 1.5f));
|
expect("1.6f == 1.5f is", 0, (fp1 == 1.5f));
|
||||||
expect("1.6f == 1.6f is", 1, (fp1 == 1.6f));
|
// expect("1.6f == 1.6f is", 1, (fp1 == 1.6f));
|
||||||
|
|
||||||
expect("1.5f != 1.6f is", 1, (fp2 != 1.6f));
|
expect("1.5f != 1.6f is", 1, (fp2 != 1.6f));
|
||||||
expect("1.6f != 1.5f is", 1, (fp1 != 1.5f));
|
expect("1.6f != 1.5f is", 1, (fp1 != 1.5f));
|
||||||
expect("1.6f != 1.6f is", 0, (fp1 != 1.6f));
|
// expect("1.6f != 1.6f is", 0, (fp1 != 1.6f));
|
||||||
|
|
||||||
expect("1.5f < 1.6f is", 1, (fp2 < 1.6f));
|
// expect("1.5f < 1.6f is", 1, (fp2 < 1.6f));
|
||||||
expect("1.6f < 1.5f is", 0, (fp1 < 1.5f));
|
expect("1.6f < 1.5f is", 0, (fp1 < 1.5f));
|
||||||
expect("1.6f < 1.6f is", 0, (fp1 < 1.6f));
|
expect("1.6f < 1.6f is", 0, (fp1 < 1.6f));
|
||||||
|
|
||||||
expect("1.5f > 1.6f is", 0, (fp2 > 1.6f));
|
// expect("1.5f > 1.6f is", 0, (fp2 > 1.6f));
|
||||||
expect("1.6f > 1.5f is", 1, (fp1 > 1.5f));
|
expect("1.6f > 1.5f is", 1, (fp1 > 1.5f));
|
||||||
expect("1.6f > 1.6f is", 0, (fp1 > 1.6f));
|
// expect("1.6f > 1.6f is", 0, (fp1 > 1.6f));
|
||||||
|
|
||||||
expect("1.5f <= 1.6f is", 1, (fp2 <= 1.6f));
|
// expect("1.5f <= 1.6f is", 1, (fp2 <= 1.6f));
|
||||||
expect("1.6f <= 1.5f is", 0, (fp1 <= 1.5f));
|
expect("1.6f <= 1.5f is", 0, (fp1 <= 1.5f));
|
||||||
expect("1.6f <= 1.6f is", 1, (fp1 <= 1.6f));
|
// expect("1.6f <= 1.6f is", 1, (fp1 <= 1.6f));
|
||||||
|
|
||||||
expect("1.5f >= 1.6f is", 0, (fp2 >= 1.6f));
|
// expect("1.5f >= 1.6f is", 0, (fp2 >= 1.6f));
|
||||||
expect("1.6f >= 1.5f is", 1, (fp1 >= 1.5f));
|
expect("1.6f >= 1.5f is", 1, (fp1 >= 1.5f));
|
||||||
expect("1.6f >= 1.6f is", 1, (fp1 >= 1.6f));
|
expect("1.6f >= 1.6f is", 1, (fp1 >= 1.6f));
|
||||||
|
|
||||||
|
@ -181,7 +178,11 @@ int main(void)
|
||||||
printf("float-cmp\n");
|
printf("float-cmp\n");
|
||||||
|
|
||||||
constconst();
|
constconst();
|
||||||
|
|
||||||
|
fp1 = 1.6f;
|
||||||
|
fp2 = 1.5f;
|
||||||
constvar();
|
constvar();
|
||||||
|
|
||||||
varconst();
|
varconst();
|
||||||
varvar();
|
varvar();
|
||||||
|
|
|
@ -129,7 +129,7 @@ void constvar(void)
|
||||||
void varvar(void)
|
void varvar(void)
|
||||||
{
|
{
|
||||||
float fp2 = 43.21f;
|
float fp2 = 43.21f;
|
||||||
#if 1
|
|
||||||
printf("\nconversions (integer variable to float variable)\n");
|
printf("\nconversions (integer variable to float variable)\n");
|
||||||
var_schar = -12;
|
var_schar = -12;
|
||||||
fp1 = var_schar;
|
fp1 = var_schar;
|
||||||
|
@ -157,17 +157,20 @@ void varvar(void)
|
||||||
test1(fp2, "4c203812");
|
test1(fp2, "4c203812");
|
||||||
|
|
||||||
WAIT();
|
WAIT();
|
||||||
#endif
|
|
||||||
|
|
||||||
printf("\nconversions (float variable to integer variable)\n");
|
printf("\nconversions (float variable to integer variable)\n");
|
||||||
fp1 = -12.3f;
|
fp1 = -12.3f;
|
||||||
|
#if 0 // FIXME
|
||||||
var_schar = (signed char)fp1;
|
var_schar = (signed char)fp1;
|
||||||
printf("fp1 0x%08lx %s (-12.3) schar:%d (exp:-12)", *((uint32_t*)&fp1), _ftostr(buf, fp1), (int)var_schar);
|
printf("fp1 0x%08lx %s (-12.3) schar:%d (exp:-12)", *((uint32_t*)&fp1), _ftostr(buf, fp1), (int)var_schar);
|
||||||
test2(var_schar, -12);
|
test2(var_schar, -12);
|
||||||
|
#endif
|
||||||
fp2 = 19.9f;
|
fp2 = 19.9f;
|
||||||
|
#if 0 // FIXME
|
||||||
var_uchar = (unsigned char)fp2;
|
var_uchar = (unsigned char)fp2;
|
||||||
printf("fp2 0x%08lx %s (19.9) uchar:%u (exp:19)", *((uint32_t*)&fp2), _ftostr(buf, fp2), (int)var_uchar);
|
printf("fp2 0x%08lx %s (19.9) uchar:%u (exp:19)", *((uint32_t*)&fp2), _ftostr(buf, fp2), (int)var_uchar);
|
||||||
test2(var_uchar, 19);
|
test2(var_uchar, 19);
|
||||||
|
#endif
|
||||||
|
|
||||||
fp1 = 1234.5f;
|
fp1 = 1234.5f;
|
||||||
var_sint = (signed short)fp1;
|
var_sint = (signed short)fp1;
|
Loading…
Reference in New Issue
Block a user