andrewm@379
|
1 /*
|
andrewm@379
|
2 * Copyright 2011-15 ARM Limited and Contributors.
|
andrewm@379
|
3 * All rights reserved.
|
andrewm@379
|
4 *
|
andrewm@379
|
5 * Redistribution and use in source and binary forms, with or without
|
andrewm@379
|
6 * modification, are permitted provided that the following conditions are met:
|
andrewm@379
|
7 * * Redistributions of source code must retain the above copyright
|
andrewm@379
|
8 * notice, this list of conditions and the following disclaimer.
|
andrewm@379
|
9 * * Redistributions in binary form must reproduce the above copyright
|
andrewm@379
|
10 * notice, this list of conditions and the following disclaimer in the
|
andrewm@379
|
11 * documentation and/or other materials provided with the distribution.
|
andrewm@379
|
12 * * Neither the name of ARM Limited nor the
|
andrewm@379
|
13 * names of its contributors may be used to endorse or promote products
|
andrewm@379
|
14 * derived from this software without specific prior written permission.
|
andrewm@379
|
15 *
|
andrewm@379
|
16 * THIS SOFTWARE IS PROVIDED BY ARM LIMITED AND CONTRIBUTORS "AS IS" AND
|
andrewm@379
|
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
andrewm@379
|
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
andrewm@379
|
19 * DISCLAIMED. IN NO EVENT SHALL ARM LIMITED AND CONTRIBUTORS BE LIABLE FOR ANY
|
andrewm@379
|
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
andrewm@379
|
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
andrewm@379
|
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
andrewm@379
|
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
andrewm@379
|
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
andrewm@379
|
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
andrewm@379
|
26 */
|
andrewm@379
|
27
|
andrewm@379
|
28 /*
|
andrewm@379
|
29 * NE10 Library : inc/NE10.h
|
andrewm@379
|
30 */
|
andrewm@379
|
31
|
andrewm@379
|
32 /**
|
andrewm@379
|
33 \mainpage Welcome to Ne10 Documentation!
|
andrewm@379
|
34 *
|
andrewm@379
|
35 *
|
andrewm@379
|
36 *\par Introduction
|
andrewm@379
|
37 *
|
andrewm@379
|
38 * Ne10 (http://projectne10.github.com/Ne10/) is a library of the most commonly used functions that have been heavily
|
andrewm@379
|
39 * optimized for ARM-based CPUs with NEON. These functions provide a consistent
|
andrewm@379
|
40 * well tested behavior that can be easily incorporated into applications enabling
|
andrewm@379
|
41 * developers to get the most out of the ARM V7/NEON without arduous assembly coding.
|
andrewm@379
|
42 * Ne10 is usable as a 'drop and go' pre-built library or as a set of modular functions
|
andrewm@379
|
43 * that can be incorporated in a more modular "pick and mix" form where binary size might
|
andrewm@379
|
44 * be an issue.
|
andrewm@379
|
45 *
|
andrewm@379
|
46 * The following figure illustrates the basic concepts of "What's Ne10"
|
andrewm@379
|
47 *\image html ne10_library.png "Ne10 Library Description"
|
andrewm@379
|
48 *
|
andrewm@379
|
49 *\par Top-Level Overview
|
andrewm@379
|
50 * When you checkout Ne10, you will notice a number of directories. These directories are as follows:
|
andrewm@379
|
51 * <pre>
|
andrewm@379
|
52 * ├── android
|
andrewm@379
|
53 * │ └── Android reference files
|
andrewm@379
|
54 * ├── build
|
andrewm@379
|
55 * │ └── directory for build-related files
|
andrewm@379
|
56 * ├── common
|
andrewm@379
|
57 * │ └── directory for common header, table and macro definition files
|
andrewm@379
|
58 * ├── doc
|
andrewm@379
|
59 * │ └── directory for documentations
|
andrewm@379
|
60 * ├── inc
|
andrewm@379
|
61 * │ └── directory for functions'heaeder files
|
andrewm@379
|
62 * ├── modules
|
andrewm@379
|
63 * │ ├── dsp
|
andrewm@379
|
64 * │ │ ├── @link groupDSPs dsp module@endlink that provides a set of signal processing functions, such as complex/real FFT/IFFT, FIR and IIR
|
andrewm@379
|
65 * │ │ └── test
|
andrewm@379
|
66 * │ │ └── directory for test files
|
andrewm@379
|
67 * │ ├── imgproc
|
andrewm@379
|
68 * │ │ ├── @link groupIMGPROCs imgproc module@endlink that provides a set of image processing functions, such as image resize, image rotate
|
andrewm@379
|
69 * │ │ └── test
|
andrewm@379
|
70 * │ │ └── directory for test files
|
andrewm@379
|
71 * │ ├── math
|
andrewm@379
|
72 * │ │ ├── @link groupMaths math module@endlink that provides a set of vector/matrix algebra functions
|
andrewm@379
|
73 * │ │ └── test
|
andrewm@379
|
74 * │ │ └── directory for test files
|
andrewm@379
|
75 * │ ├── physics
|
andrewm@379
|
76 * │ │ ├── @link groupPhysics physics module@endlink that provides a set of collision detection functions
|
andrewm@379
|
77 * │ │ └── test
|
andrewm@379
|
78 * │ │ └── directory for test files
|
andrewm@379
|
79 * ├── samples
|
andrewm@379
|
80 * │ └── @link groupSamples sample code@endlink
|
andrewm@379
|
81 * ├── test
|
andrewm@379
|
82 * │ ├── directory for test framework
|
andrewm@379
|
83 * ├── tools
|
andrewm@379
|
84 * │ ├── directory for tools such as Cformatter, doxygen, etc
|
andrewm@379
|
85 * </pre>
|
andrewm@379
|
86 *
|
andrewm@379
|
87 *\par Modules Description
|
andrewm@379
|
88 * Ne10 has a modular structure, which means that the package includes several shared or static libraries.
|
andrewm@379
|
89 * Currently, the following modules are available or in plan:
|
andrewm@379
|
90 *
|
andrewm@379
|
91 * - @link groupMaths Math Functions@endlink
|
andrewm@379
|
92 * - @link groupDSPs Signal Processing Functions@endlink
|
andrewm@379
|
93 * - @link groupIMGPROCs Image Processing Functions@endlink
|
andrewm@379
|
94 * - @link groupPhysics Physics Functions@endlink
|
andrewm@379
|
95 * - Others
|
andrewm@379
|
96 *
|
andrewm@379
|
97 *\par Usage
|
andrewm@379
|
98 *
|
andrewm@379
|
99 * Ne10 library provides directly and indirectly function call. you could check the @link groupSamples sample code@endlink for details
|
andrewm@379
|
100 *
|
andrewm@379
|
101 *\par Build
|
andrewm@379
|
102 *
|
andrewm@379
|
103 * See CMakeBuilding.txt file in the "doc" folder
|
andrewm@379
|
104 *
|
andrewm@379
|
105 *\par Code formatter
|
andrewm@379
|
106 *
|
andrewm@379
|
107 * See Formatter.txt file in the "doc" folder
|
andrewm@379
|
108 *
|
andrewm@379
|
109 *\par License
|
andrewm@379
|
110 *
|
andrewm@379
|
111 * The Ne10 is provided free of charge by ARM Limited and Contributors, and licensed under both New BSD License
|
andrewm@379
|
112 * (http://opensource.org/licenses/BSD-3-Clause) and Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0).
|
andrewm@379
|
113 * You could also check the LICENSE file in "doc" directory
|
andrewm@379
|
114 */
|
andrewm@379
|
115
|
andrewm@379
|
116
|
andrewm@379
|
117 /**
|
andrewm@379
|
118 * @defgroup groupMaths Math Functions
|
andrewm@379
|
119 *
|
andrewm@379
|
120 *
|
andrewm@379
|
121 * This set of functions provide vector/matrix algebra functions that include
|
andrewm@379
|
122 * add, sub, multiply, div and so on. Currently, only the float (single precision)
|
andrewm@379
|
123 * data type is supported.
|
andrewm@379
|
124 */
|
andrewm@379
|
125
|
andrewm@379
|
126 /**
|
andrewm@379
|
127 * @defgroup groupDSPs Signal Processing Functions
|
andrewm@379
|
128 *
|
andrewm@379
|
129 *
|
andrewm@379
|
130 * This set of functions provide some commonly used functions in signal processing,
|
andrewm@379
|
131 * such as complex/real FFT/IFFT, FIR and IIR. Currently, only the float (single precision)
|
andrewm@379
|
132 * data type is supported.
|
andrewm@379
|
133 */
|
andrewm@379
|
134
|
andrewm@379
|
135 /**
|
andrewm@379
|
136 * @defgroup groupIMGPROCs Image Processing Functions
|
andrewm@379
|
137 *
|
andrewm@379
|
138 *
|
andrewm@379
|
139 * This set of functions provide some commonly used functions in image processing,
|
andrewm@379
|
140 * such as image scale, image rotate.
|
andrewm@379
|
141 */
|
andrewm@379
|
142
|
andrewm@379
|
143 /**
|
andrewm@379
|
144 * @defgroup groupPhysics Physics Functions
|
andrewm@379
|
145 *
|
andrewm@379
|
146 *
|
andrewm@379
|
147 * This set of functions provide some APIs used for collision detection,
|
andrewm@379
|
148 * such as compute AABB, caculate relative velocity and apply contact impulse.
|
andrewm@379
|
149 */
|
andrewm@379
|
150
|
andrewm@379
|
151 /**
|
andrewm@379
|
152 * @defgroup groupSamples Sample Functions
|
andrewm@379
|
153 *
|
andrewm@379
|
154 *
|
andrewm@379
|
155 * This set of functions provide some sample functions.
|
andrewm@379
|
156 */
|
andrewm@379
|
157
|
andrewm@379
|
158
|
andrewm@379
|
159 #ifndef NE10_H
|
andrewm@379
|
160 #define NE10_H
|
andrewm@379
|
161
|
andrewm@379
|
162 #ifdef __cplusplus
|
andrewm@379
|
163 extern "C" {
|
andrewm@379
|
164 #endif
|
andrewm@379
|
165
|
andrewm@379
|
166 #include <stdio.h>
|
andrewm@379
|
167 #include <stdlib.h>
|
andrewm@379
|
168 #include <math.h>
|
andrewm@379
|
169 #include <string.h>
|
andrewm@379
|
170
|
andrewm@379
|
171 #include "NE10_types.h"
|
andrewm@379
|
172 #include "NE10_macros.h"
|
andrewm@379
|
173 #include "NE10_init.h"
|
andrewm@379
|
174 #include "NE10_math.h"
|
andrewm@379
|
175 #include "NE10_dsp.h"
|
andrewm@379
|
176 #include "NE10_imgproc.h"
|
andrewm@379
|
177 #include "NE10_physics.h"
|
andrewm@379
|
178
|
andrewm@379
|
179 #ifdef __cplusplus
|
andrewm@379
|
180 }
|
andrewm@379
|
181 #endif
|
andrewm@379
|
182
|
andrewm@379
|
183 #endif
|