Math Products
GoFast® for 8051 Family
Fast Floating Point Library
Features
- Fast
- ROMable
- IEEE 754 Format
- Includes single and double precision
- Includes test programs
Description
GoFastŪ for 8051 was carefully designed for high performance operation on
8051 and derivative architectures. The product optimizes for a balance of space and speed. It is integrated with Keil C51. For other compiler support, please contact us
Functionality
GoFast for 8051 contains the following floating point routines in both single and double precision:
add, subtract, multiply, divide
conversion operations
comparison operations
sin, cos, tan, atan
sqrt
log, log10
exp, pow
fabs, ceil, floor
GoFast for 8051 implements a floating point accumulator (FAC) in read-write
memory. Operations and functions are performed using the value in FAC.
GoFast for 8051 is not naturally reentrant. However, reentrancy can be
achieved by saving/restoring the FAC and other GoFast temporaries during a context
switch. An application note included with the product describes the procedure.
Floating Point Technology
GoFast for 8051 is based on proven floating point algorithms developed over a decade. The algorithms have been thoroughly tested using automated methods. GoFast was specifically optimized and integrated for high performance on 8051 processors.
Timings
The following table gives the times for all floating point operations, for GoFast and the Keil floating point library. The times, in microseconds, were measured using the indicated processor and evaluation board. The single precision routines in the Keil C library are generally faster than those in GoFast, but Keil does not offer double precision routines. (If you only need single precision and you are using Keil, you probably don’t need GoFast.) Thus, the routines linked are a mixture of both libraries, as indicated in bold below.
Microsecond Timings
C8051F330, 25 MHz
|
Double Precision |
Single Precision |
Function |
GoFast |
Keil |
GoFast |
Keil |
add |
116.4 |
— |
53.8 |
20.3 |
sub |
115.7 |
— |
59.1 |
22.3 |
mul |
200.0 |
— |
71.9 |
21.5 |
div |
675.3 |
— |
155.6 |
89.2 |
sqrt |
2224.4 |
— |
361.7 |
220.1 |
exp |
4180.0 |
— |
881.6 |
515.1 |
log |
2626.3 |
— |
731.0 |
396.9 |
log10 |
2788.0 |
— |
778.6 |
416.9 |
sin |
2480.2 |
— |
566.4 |
324.1 |
cos |
2509.4 |
— |
557.5 |
321.3 |
tan |
3108.6 |
— |
962.7 |
525.1 |
atan |
2876.7 |
— |
753.2 |
401.8 |
pow |
6935.4 |
— |
1639.9 |
953.9 |
fabs |
3.4 |
— |
3.3 |
3.8 |
floor |
56.6 |
— |
15.1 |
186.7 |
ceil |
56.8 |
— |
15.2 |
186.6 |
cmp |
75.1 |
— |
37.8 |
9.0 |
char to fp |
36.1 |
— |
14.9 |
20.7 |
uchar to fp |
35.0 |
— |
12.6 |
20.7 |
short to fp |
34.0 |
— |
15.3 |
12.5 |
ushort to fp |
33.7 |
— |
15.1 |
12.5 |
long to fp |
30.9 |
— |
13.1 |
12.0 |
ulong to fp |
29.1 |
— |
9.8 |
9.5 |
fp to char |
28.4 |
— |
19.2 |
20.7 |
fp to uchar |
28.2 |
— |
18.9 |
20.7 |
fp to short |
31.3 |
— |
21.2 |
20.9 |
fp to ushort |
30.9 |
— |
17.9 |
20.9 |
fp to long |
43.2 |
— |
27.6 |
21.2 |
fp to ulong |
43.2 |
— |
27.6 |
21.2 |
abs char |
— |
— |
2.7 |
2.9 |
abs short |
— |
— |
2.6 |
2.7 |
abs long |
— |
— |
3.2 |
4.2 |
sgl to dbl |
50.6 |
— |
— |
— |
dbl to sgl |
49.7 |
— |
— |
— |
Times were measured on Silicon Laboratories C8051F330DK board with Keil C51 v8.16.
GoFast is a registered trademark of Lantronix Inc.
|