|
Math Products

GoFast® for R3000/R4000 C Compilers
Fast Floating Point Library
Features
- Fast
- Reentrant
- ROMable
- Conforms to IEEE 754 Format
- Includes single and double precision
- "Link and Go" compiler support
- Includes startup code
- Includes complete source, test programs, and make file
Description
GoFastŪ for R3000/R4000 was carefully designed for high performance operation
and ease of use including "link and go" compatibility with R3000/R4000 specific C
compilers. GoFast provides full IEEE and ANSI compatible floating point support for
the MIPS R3000/R4000 architecture.
Floating Point Technology
GoFast for R3000/R4000 is based on U S Software's "Architecture Independent
Technology" (AIT) and proven floating point algorithms the company has been
developing for over decade. The algorithms have been thoroughly tested using
automated methods. GoFast was specifically optimized and integrated for enhanced
performance on R3000/R4000 processors.
GoFast libraries are designed for "link and go" operation with each compiler. These
libraries provide the user with a significant speed advantage when no floating point
coprocessor hardware is available. This is of particular significance in real-time
embedded systems.
Compiler Support
GoFast for R3000/R4000 includes libraries for "link and go", seamless operation with
R3000/R4000 C compilers from GNU, IDT, and Green Hills.
The GoFast routines directly replace the compiler's floating point runtime library
routines. In addition, routines normally not supported by the compiler are available with
GoFast. An example might be the single precision version of the functions.
Functionality
GoFast contains the following floating point routines in both single and double
precision:
- conversion operations
- sqrt
- sin, cos, tan
- asin, acos, atan, atan2
- sinh, cosh, tanh
- log, log10
- exp, pow
- floor, ceil, fabs
- modf, fmod, frexp, ldexp
Additional support includes test programs and make files.
Capabilities and Accuracy
GoFast is reentrant. These is no need to perform any special state saving or
restoring. GoFast is ROMable. GoFast is IEEE 754 and ANSI C compatible.
The basic functions + - * / and the conversions perform the IEEE 754 "nearest or even"
rounding exactly. The other functions are accurate within one mantissa unit.
GoFast routines make no distinction between quiet and signaling Not-a-Numbers
(NaNs). In the case of an invalid operation, the answer is always a standard quiet NaN.
GoFast routines support IEEE 754 masked exception handling for overflows and
invalid operations. No unmasked exceptions are supported. Underflow and loss of
precision are not reported. Division by zero is treated as an invalid operation.
Timings
The following table gives the timing, in microseconds, of some floating-point operations in
both the R3000 and R4000 evaluation boards.
| |
R3000
25 MHz IDT R3000 eval board
|
R4000
50 MHz IDT R4000 Orion board
|
| Function |
double |
single |
double |
single |
| add |
3.6 |
2.3 |
0.7 |
0.7 |
| subtract |
6.8 |
2.8 |
0.8 |
0.9 |
| multiply |
9.0 |
3.8 |
0.7 |
0.7 |
| divide |
18.2 |
6.6 |
2.5 |
1.4 |
| sqrt |
24.0 |
10.1 |
4.5 |
2.9 |
| exp |
43.4 |
10.2 |
3.5 |
2.4 |
| log |
80.2 |
13.4 |
5.0 |
2.9 |
| log10 |
73.7 |
14.2 |
5.2 |
3.1 |
| sin |
39.8 |
9.2 |
3.1 |
2.3 |
| cos |
34.2 |
13.6 |
3.2 |
2.1 |
| tan |
63.6 |
13.8 |
5.5 |
3.2 |
| asin |
94.6 |
32.4 |
11.0 |
6.7 |
| acos |
122.5 |
33.5 |
13.2 |
7.7 |
| atan |
44.5 |
13.6 |
4.7 |
3.0 |
| atan 2 |
67.8 |
18.9 |
6.8 |
4.1 |
| pow |
118.1 |
25.7 |
8.6 |
5.5 |
|