Changeset cf4a823 in mainline
- Timestamp:
- 2005-12-22T12:11:35Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 75a23abf
- Parents:
- ef0aa999
- Location:
- softfloat
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
softfloat/generic/arithmetic.c
ref0aa999 rcf4a823 29 29 #include<sftypes.h> 30 30 #include<arithmetic.h> 31 #include<comparison.h> 31 32 32 33 /** Add two Float32 numbers with same signs -
softfloat/generic/comparison.c
ref0aa999 rcf4a823 50 50 inline int isFloat32eq(float32 a, float32 b) 51 51 { 52 return ((a ==b)||(((a.binary| b.binary)&0x7FFFFFFF)==0)); /* a equals to b or both are zeros (with any sign) */52 return ((a.binary==b.binary)||(((a.binary| b.binary)&0x7FFFFFFF)==0)); /* a equals to b or both are zeros (with any sign) */ 53 53 } 54 54 … … 59 59 { 60 60 if (((a.binary| b.binary)&0x7FFFFFFF)==0) { 61 return 0; 61 return 0; /* +- zeroes */ 62 62 }; 63 a.parts.sign^=a.parts.sign; 64 b.parts.sign^=b.parts.sign; 63 64 if ((a.parts.sign)&&(b.parts.sign)) { 65 /*if both are negative, smaller is that with greater binary value*/ 66 return (a.binary>b.binary); 67 }; 68 69 /* lets negate signs - now will be positive numbers allways bigger than negative (first bit will be set for unsigned integer comparison)*/ 70 a.parts.sign=!a.parts.sign; 71 b.parts.sign=!b.parts.sign; 65 72 return (a.binary<b.binary); 66 73 … … 73 80 { 74 81 if (((a.binary| b.binary)&0x7FFFFFFF)==0) { 75 return 0; 82 return 0; /* zeroes are equal with any sign */ 76 83 }; 77 a.parts.sign^=a.parts.sign; 78 b.parts.sign^=b.parts.sign; 84 85 if ((a.parts.sign)&&(b.parts.sign)) { 86 /*if both are negative, greater is that with smaller binary value*/ 87 return (a.binary<b.binary); 88 }; 89 90 /* lets negate signs - now will be positive numbers allways bigger than negative (first bit will be set for unsigned integer comparison)*/ 91 a.parts.sign=!a.parts.sign; 92 b.parts.sign=!b.parts.sign; 79 93 return (a.binary>b.binary); 80 94 -
softfloat/generic/softfloat.c
ref0aa999 rcf4a823 58 58 fb.f=b; 59 59 if (fa.parts.sign!=fb.parts.sign) { 60 fb.parts.sign !=fb.parts.sign;60 fb.parts.sign=!fb.parts.sign; 61 61 return addFloat32(fa,fb).f; 62 62 } … … 89 89 * */ 90 90 91 int __cmpsf2( double a, doubleb)91 int __cmpsf2(float a, float b) 92 92 { 93 93 float32 fa,fb; … … 146 146 if ((isFloat32NaN(fa))||(isFloat32NaN(fb))) { 147 147 /* TODO: sigNaNs*/ 148 return 1;148 return -1; 149 149 }; 150 150 … … 199 199 200 200 /** Return positive value, if a>b and neither is NaN*/ 201 int __ ltsf2(float a, float b)202 { 203 float32 fa,fb; 204 fa.f=a; 205 fb.f=b; 206 if ((isFloat32NaN(fa))||(isFloat32NaN(fb))) { 207 /* TODO: sigNaNs*/ 208 return 1;201 int __gtsf2(float a, float b) 202 { 203 float32 fa,fb; 204 fa.f=a; 205 fb.f=b; 206 if ((isFloat32NaN(fa))||(isFloat32NaN(fb))) { 207 /* TODO: sigNaNs*/ 208 return -1; 209 209 }; 210 210 if (isFloat32gt(fa, fb)) { -
softfloat/include/comparison.h
ref0aa999 rcf4a823 33 33 inline int isFloat32SigNaN(float32 f); 34 34 35 inline int isFloat32Infinity(float32 f) 35 inline int isFloat32Infinity(float32 f); 36 36 37 37 inline int isFloat32eq(float32 a, float32 b);
Note:
See TracChangeset
for help on using the changeset viewer.