|  Math Products 
  
 GoFast® for ARM / Cortex and CrossWorks
 
 Fast Floating Point Library
 
 
 Features
 
        FastReentrant
ROMable
Conforms to IEEE 754 Format
"Link and Go" compiler support for CrossWorks 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 CrossWorks C 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.Functionality
 Currently GoFast is  offered only for the ARM and Thumb-2 instruction sets, not Thumb.
 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 CrossWorks 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 CrossWorks C library are  hand-coded and faster than those in GoFast, so the CrossWorks 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, RAM 
              
                |  | Double Precision  | Single Precision  |  
                | Function | GoFast | CrossWorks | GoFast | CrossWorks |  
                | add | 2.5 | 1.6 | 1.6 | 1.0 |  
                | subtract | 3.0 | 2.0 | 1.9 | 1.4 |  
                | multiply | 2.7 | 2.2 | 1.6 | 1.0 |  
                | divide | 16.5 | 9.2 | 8.3 | 2.3 |  
                | sqrt | 32.3 | 46.6 | 16.7 | 15.3 |  
                | exp | 13.1 | 46.6 | 4.3 | 32.4 |  
                | log | 27.2 | 60.2 | 11.3 | 28.9 |  
                | log10 | 28.3 | 62.4 | 11.6 | 30.0 |  
                | sin | 11.6 | 41.9 | 4.0 | 21.0 |  
                | cos | 10.6 | 53.1 | 4.0 | 25.2 |  
                | tan | 28.2 | 59.9 | 11.3 | 28.5 |  
                | asin | 45.1 | 109.2 | 34.8 | 48.2 |  
                | acos | 43.8 | 107.6 | 42.2 | 46.8 |  
                | atan | 27.1 | 64.4 | 11.6 | 30.2 |  
                | atan 2 | 42.8 | 75.5 | 19.2 | 34.6 |  
                | pow |    40.5 |   112.9 |   16.7 |   65.8 |  
                | tanh | 30.7 | 62.5 | 19.2 | 40.1 |  
                | sinh | 30.4 | 65.0 | 12.1 | 39.0 |  
                | cosh | 29.8 | 63.9 | 11.6 | 40.6 |  
                | modf | 1.4 | 1.9 | 1.1 | 1.3 |  
                | fmod | 1.6 | 16.5 | 1.0 | 8.0 |  
                | fabs | 0.5 | 0.5 | 0.3 | 0.3 |  
                | floor | 1.1 | 1.9 | 0.7 | 1.2 |  
                | ceil | 1.2 | 1.9 | 0.7 | 1.2 |  
                | ldexp | 2.2 | 2.3 | 1.4 | 1.6 |  
                | frexp | 1.3 | 1.8 | 0.8 | 1.3 |  
                | cmp | 1.7 | 1.0 | 1.2 | 0.8 |  
                | fp to long | 1.0 | 0.6 | 0.7 | 0.5 |  
                | fp to ulong | 1.0 | 0.5 | 0.7 | 0.5 |  
                | long to fp | 4.6 | 0.8 | 4.3 | 0.7 |  
                | ulong to fp | 4.5 | 0.7 | 4.2 | 0.7 |  
                | sgl to dbl | 0.9 | 0.5 | — | — |  
                | dbl to sgl | 1.1 | 0.6 | — | — |  
 
            
 GoFast is a registered trademark of Lantronix Inc. ARM is a registered trademark of ARM Ltd.
 
 
 |