Math Products
GoFast® for MIPS32 and GNUBased Compilers
Fast Floating Point Library
Features
 Fast
 Reentrant
 ROMable
 Conforms to IEEE 754 Format
 "Link and Go" compiler support for MIPS SDE
 Includes complete source, test programs, project files, and startup code
Description
GoFast®for MIPS32 was carefully designed for high performance operation in embedded applications and ease of use including “link and go” compatibility with the MIPS SDE C compiler. GoFast provides ROMable, reentrant IEEE and ANSI compatible MIPS floating point support. It boosts the performance of an application’s math calculations or eliminates the need for a hardware floatingpoint coprocessor, in order to reduce product manufacturing cost. It is delivered with full assembly source code.
GoFast for MIPS32 runs on all rev1 and rev2 cores. Contact us if you need support for MIPS64.
Functionality
GoFast MIPS32 offers the following reentrant floating point routines, for both single and double precision:
 intrinsic basic operations +  * /
 intrinsic conversions
 sqrt
 sin, cos, tan
 asin, acos, atan, atan2
 sinh, cosh, atanh
 log, log10, exp, pow
 floor, ceil, fabs
 modf, fmod, frexp, ldexp
Floating Point Technology
GoFast is based on “Architecture Independent Technology” (AIT) and proven floating point algorithms that were developed for over a decade. The algorithms have been thoroughly tested using automated methods.
Conformance and Testing
The accuracy of each GoFast Floating Point Library is within one (least significant) bit for arithmetic functions and two bits for transcendental functions, in most cases. The IEEE 754 Floating Point Format defines special representations for underflow, overflow, and invalid operation. The GoFast routines use these formats and adhere to the IEEE 754 error handling procedures in all applicable cases. Quality assurance and testing procedures have assured proper product operation. In addition, each delivery includes target specific test programs assuring confidence of product operation.
Timings
The following table gives the times for all floating point operations, for GoFast and the GNU floating point library. The times, in microseconds, were measured using the indicated processor and evaluation board. GoFast provides the greatest benefit for the more complex operations, offering a 10x performance boost for many and even higher for some.
Microsecond Timings
PIC32 Starter Kit (PIC32MX360F512L), 80 MHz, RAM

Double Precision 
Single Precision 
Function 
GoFast 
GNU 
GoFast 
GNU 
add 
0.93 
1.53 
0.75 
0.84 
subtract 
0.92 
1.60 
0.70 
0.82 
multiply 
0.97 
1.60 
0.60 
0.77 
divide 
2.38 
7.84 
1.12 
1.77 
sqrt 
3.93 
8.95 
1.67 
1.69 
exp 
4.15 
42.22 
1.30 
— 
log 
6.05 
48.08 
2.13 
— 
log10 
6.48 
49.64 
2.24 
— 
pow 
10.40 
135.30 
3.66 
— 
sin 
3.77 
29.32 
1.46 
— 
cos 
3.71 
30.05 
1.45 
— 
tan 
6.40 
59.46 
2.10 
— 
asin 
5.33 
77.31 
4.02 
— 
acos 
5.16 
76.13 
4.54 
— 
atan 
6.74 
48.59 
2.35 
— 
atan2 
8.76 
67.37 
3.16 
— 
sinh 
5.92 
70.57 
2.06 
— 
cosh 
5.81 
54.03 
1.96 
— 
tanh 
6.04 
70.10 
2.53 
— 
modf 
0.55 
1.10 
0.44 
— 
fmod 
4.83 
80.09 
2.68 
— 
fabs 
0.14 
0.15 
0.11 
0.11 
floor 
0.35 
6.51 
0.23 
— 
ceil 
0.46 
5.91 
0.24 
— 
ldexp 
0.31 
0.80 
0.29 
0.51 
frexp 
0.21 
0.47 
0.19 
— 
cmp 
0.69 
0.73 
0.56 
0.52 
fp to long 
0.20 
0.32 
0.18 
0.22 
fp to ulong 
0.20 
1.14 
0.18 
0.75 
long to fp 
0.24 
0.29 
0.21 
0.67 
ulong to fp 
0.28 
0.40 
0.29 
0.77 
sgl to dbl 
0.20 
0.24 
— 
— 
dbl to sgl 
0.27 
0.44 
— 
— 
GoFast is a registered trademark of Lantronix Inc. MIPS32 is a registered trademark of MIPS Technologies.
