Browse Source

refactoring: preparing functions for double datatypes

master
Dennis Sperzel 1 year ago
parent
commit
89056fb86a
  1. 6
      src/addition.c
  2. 4
      src/addition.h
  3. 6
      test/test_addition.c

6
src/addition.c

@ -17,7 +17,7 @@ struct data
struct datad { struct datad {
union { union {
double dnum; double dnum;
unsigned long lnum;
unsigned long long lnum;
} number; } number;
unsigned long sign; unsigned long sign;
unsigned long exponent; unsigned long exponent;
@ -111,12 +111,12 @@ float addition_float(float number1, float number2) {
return num3.number.floating; return num3.number.floating;
} }
unsigned long sign_double(unsigned long a) {
unsigned long long sign_double(unsigned long long a) {
if (a & 0x8000000000000000 == 0x8000000000000000) return 1; if (a & 0x8000000000000000 == 0x8000000000000000) return 1;
else return 0; else return 0;
} }
unsigned long precision_double(unsigned long a) {
unsigned long long precision_double(unsigned long long a) {
a &= 0x000fffffffffffff; a &= 0x000fffffffffffff;
return a; return a;
} }

4
src/addition.h

@ -23,8 +23,8 @@ unsigned int output_float(unsigned int sign, unsigned int exponent, unsigned int
float addition_float(float number1, float number2); float addition_float(float number1, float number2);
unsigned long sign_double(unsigned long a);
unsigned long long sign_double(unsigned long long a);
unsigned long precision_double(unsigned long a);
unsigned long long precision_double(unsigned long long a);
#endif // ADDITION_H #endif // ADDITION_H

6
test/test_addition.c

@ -15,7 +15,7 @@ union {
union { union {
double dnum; double dnum;
unsigned long lnum;
unsigned long long lnum;
} numberd[6]; } numberd[6];
void setUp(void) void setUp(void)
@ -286,8 +286,8 @@ void test_addition_addition_float_sumofpositivnumbers(void)
void test_addition_sign_double_numbers(void) void test_addition_sign_double_numbers(void)
{ {
unsigned long result[2];
unsigned long expected[2] = { 1, 0 };
unsigned long long result[2];
unsigned long long expected[2] = { 1, 0 };
numberd[0].dnum = -3004683105640520235, numberd[1].dnum = 0.05313546453135; numberd[0].dnum = -3004683105640520235, numberd[1].dnum = 0.05313546453135;
result[0] = sign_double(numberd[0].lnum); result[0] = sign_double(numberd[0].lnum);

Loading…
Cancel
Save