Products       Learn       Buy       Support       Company
 
  Home > Products > Other Products > GoFast
   
 

Math Products


GoFast® for ARM / Cortex and GNU GCC


Fast Floating Point Library


Features

  • Fast
  • Reentrant
  • ROMable
  • Conforms to IEEE 754
  • “Link and Go” compiler support for GNU GCC ARM
  • Includes complete source, test programs, project files, and startup code


Description

GoFast® for ARM / Cortex was carefully designed for high performance operation in embedded applications and ease of use including “link and go” compatibility with the GNU GCC compiler. GoFast provides ROMable, reentrant IEEE and ANSI compatible ARM floating point support. It boosts the performance of an application’s math calculations or eliminates the need for a hardware floating-point coprocessor, in order to reduce product manufacturing cost. It is delivered with full assembly source code.

Currently GoFast is offered for the ARM and Thumb-2 instruction sets, not Thumb.

Functionality

GoFast ARM / Cortex 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 tables give the times for all floating point operations, for GoFast and the GNU GCC floating point library. The times, in microseconds, were measured using the indicated processor and evaluation board. The basic operations (add, subtract, multiply, divide, conversions, and comparisons) in the GNU GCC library are hand-coded and faster than those in GoFast, so the GNU GCC versions are used instead. (If you only need these basic operations, you don’t need GoFast.) Thus, the routines linked are a mixture of both libraries, as indicated in bold below. GoFast provides the greatest benefit for the more complex operations, typically offering a 2x to 3x performance boost.

Microsecond Timings

ARM7: AT91SAM7X256-EK, 48 MHz, Internal Flash, GCC v4.4.1

 
Double Precision
Single Precision
Function
GoFast
GNU
GoFast
GNU
add
4.822
3.806
3.806
2.659
subtract
5.074
3.799
3.779
2.814
multiply
4.674
3.334
3.008
2.057
divide
32.438
22.356
16.650
5.725
sqrt
63.384
50.835
33.136
17.603
exp
24.556
101.055
7.759
55.894
log
58.298
103.429
27.531
55.842
log10
60.154
115.334
28.074
63.799
sin
20.132
77.748
8.217
48.893
cos
19.832
79.160
8.198
49.934
tan
52.953
149.342
22.725
87.206
asin
48.970
134.666
69.860
65.574
acos
49.851
128.082
78.975
62.616
atan
65.977
96.755
29.203
52.429
atan 2
93.489
136.486
42.537
68.699
pow
82.380
340.638
36.542
193.091
tanh
53.949
152.922
33.785
79.452
sinh
51.509
158.234
22.812
83.242
cosh
50.591
126.249
22.037
63.574
modf
7.544
6.339
4.603
3.658
fmod
21.554
35.667
15.963
24.328
fabs
0.931
1.067
0.873
0.835
floor
2.388
6.555
1.763
4.856
ceil
2.468
6.565
1.838
4.862
ldexp
2.094
9.275
1.927
8.059
frexp
1.980
2.426
1.669
2.057
cmp
2.843
1.821
2.152
1.533
fp to long
1.949
1.418
1.528
1.294
fp to ulong
1.892
1.184
1.470
1.090
long to fp
2.725
2.742
2.454
2.188
ulong to fp
2.329
2.704
1.941
2.264
fp to longlong
2.716
11.869
2.350
11.674
fp to ulonglong
2.701
7.701
2.338
8.004
longlong to fp
5.978
2.939
5.718
2.294
sgl to dbl
1.708
1.068
dbl to sgl
2.192
1.281


GoFast is a registered trademark of Lantronix Inc. ARM is a registered trademark of ARM Ltd.

     back to top
 
  Register for More Info
 
 

 
Home       Sitemap       Contact