Math Products
GoFast® for Microsoft/Protected Mode
Fast Floating Point Library
Features
- Fast
- Reentrant
- ROMable
- Conforms to IEEE 754
- "Link and Go" compiler support
- Includes test programs and make file
- Source code provided
Description
GoFast® for 80x86 Protected Mode is a floating point emulator and library for 80x86
32-bit protected mode and the Microsoft Visual C++ compiler. The GF-MPROT floating
point emulator supports any 80x86 protected mode processor, which does not contain
floating point support in the processor. The GF-MPROT library may be used with any
processor. GoFast provides ROMable, reentrant IEEE and ANSI compatible 80x86
floating point support.
Emulator Functionality
The GF-MPROT emulator matches the functionality of the 80387 coprocessor. GFMPROT gets control through interrupt 7 (coprocessor not present). The GoFast code will then run and process the floating point instruction in software just as the instruction would have been handled in hardware had a floating-point coprocessor been present.
Library Functionality
The GF-MPROT library replaces the library provided with the Microsoft 32-bit compiler.
The library provided with the Microsoft 32-bit compiler assumes you are running in an
environment with a Microsoft operating system and the application will obtain the code
for the floating point routines from a dynamic link library. A dynamic link library is
typically not available in an embedded application so the GF-MPROT library is an ideal
solution. The GF-MPROT library will use the processor floating point unit if available.
Microsecond timings
Function |
Double Precision |
Function |
Double Precision |
GoFast*3 |
GoFast*4 |
GoFast*1 |
Microsoft*2 |
% |
add |
|
29.16 |
add |
|
|
|
subtract |
|
30.69 |
subtract |
|
|
|
multiply |
|
35.27 |
multiply |
|
|
|
divide |
|
37.30 |
divide |
|
|
|
floor |
|
69.76 |
floor |
|
|
|
cell |
|
69.72 |
cell |
|
|
|
tabs |
|
38.37 |
tabs |
|
|
|
sqrt |
13.20 |
84.01 |
sqrt |
0.39 |
0.61 |
156% |
exp |
43.90 |
169.70 |
exp |
1.10 |
2.26 |
205% |
log |
19.80 |
86.10 |
log |
1.10 |
0.99 |
90% |
log10 |
19.20 |
85.94 |
log10 |
0.93 |
1.00 |
108% |
sin |
15.90 |
121.96 |
sin |
0.37 |
0.55 |
149% |
cos |
16.00 |
122.34 |
cos |
0.53 |
0.61 |
115% |
tan |
20.30 |
49.69 |
tan |
0.73 |
0.89 |
122% |
asin |
33.50 |
141.13 |
asin |
1.67 |
1.26 |
75% |
acos |
34.10 |
145.33 |
acos |
1.43 |
1.27 |
89% |
atan |
18.10 |
82.25 |
atan |
1.10 |
1.05 |
95% |
atan2 |
18.10 |
84.01 |
atan2 |
1.10 |
1.98 |
180% |
Processor:
190Mhz AMD K6 with hardware coprocessor
Note: No single precision timings are shown because the Microsoft library does not support single precision
*1: GoFast library routines and floating point operations in processor
*2: Microsoft library and floating point operations in processor
*3: GoFast emulation and library routines
*4: GoFast emulation and library routines (40Mhz AMD 386)
|