]>
git.gir.st - tmk_keyboard.git/blob - tmk_core/tool/mbed/mbed-sdk/libraries/dsp/cmsis_dsp/ControllerFunctions/arm_sin_cos_f32.c
1 /* ----------------------------------------------------------------------
2 * Copyright (C) 2010-2013 ARM Limited. All rights reserved.
4 * $Date: 17. January 2013
7 * Project: CMSIS DSP Library
8 * Title: arm_sin_cos_f32.c
10 * Description: Sine and Cosine calculation for floating-point values.
12 * Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
14 * Redistribution and use in source and binary forms, with or without
15 * modification, are permitted provided that the following conditions
17 * - Redistributions of source code must retain the above copyright
18 * notice, this list of conditions and the following disclaimer.
19 * - Redistributions in binary form must reproduce the above copyright
20 * notice, this list of conditions and the following disclaimer in
21 * the documentation and/or other materials provided with the
23 * - Neither the name of ARM LIMITED nor the names of its contributors
24 * may be used to endorse or promote products derived from this
25 * software without specific prior written permission.
27 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
28 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
29 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
30 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
31 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
32 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
33 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
34 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
35 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
36 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
37 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
38 * POSSIBILITY OF SUCH DAMAGE.
39 * -------------------------------------------------------------------- */
44 * @ingroup groupController
48 * @defgroup SinCos Sine Cosine
50 * Computes the trigonometric sine and cosine values using a combination of table lookup
51 * and linear interpolation.
52 * There are separate functions for Q31 and floating-point data types.
53 * The input to the floating-point version is in degrees while the
54 * fixed-point Q31 have a scaled input with the range
55 * [-1 0.9999] mapping to [-180 179] degrees.
57 * The implementation is based on table lookup using 360 values together with linear interpolation.
59 * -# Calculation of the nearest integer table index.
60 * -# Compute the fractional portion (fract) of the input.
61 * -# Fetch the value corresponding to \c index from sine table to \c y0 and also value from \c index+1 to \c y1.
62 * -# Sine value is computed as <code> *psinVal = y0 + (fract * (y1 - y0))</code>.
63 * -# Fetch the value corresponding to \c index from cosine table to \c y0 and also value from \c index+1 to \c y1.
64 * -# Cosine value is computed as <code> *pcosVal = y0 + (fract * (y1 - y0))</code>.
75 * Cosine Table is generated from following loop
76 * <pre>for(i = 0; i < 360; i++)
78 * cosTable[i]= cos((i-180) * PI/180.0);
82 static const float32_t cosTable
[360] = {
83 -0.999847695156391270f
, -0.999390827019095760f
, -0.998629534754573830f
,
84 -0.997564050259824200f
, -0.996194698091745550f
, -0.994521895368273290f
,
85 -0.992546151641321980f
, -0.990268068741570250f
,
86 -0.987688340595137660f
, -0.984807753012208020f
, -0.981627183447663980f
,
87 -0.978147600733805690f
, -0.974370064785235250f
, -0.970295726275996470f
,
88 -0.965925826289068200f
, -0.961261695938318670f
,
89 -0.956304755963035440f
, -0.951056516295153530f
, -0.945518575599316740f
,
90 -0.939692620785908320f
, -0.933580426497201740f
, -0.927183854566787310f
,
91 -0.920504853452440150f
, -0.913545457642600760f
,
92 -0.906307787036649940f
, -0.898794046299167040f
, -0.891006524188367790f
,
93 -0.882947592858926770f
, -0.874619707139395740f
, -0.866025403784438710f
,
94 -0.857167300702112220f
, -0.848048096156425960f
,
95 -0.838670567945424160f
, -0.829037572555041620f
, -0.819152044288991580f
,
96 -0.809016994374947340f
, -0.798635510047292940f
, -0.788010753606721900f
,
97 -0.777145961456970680f
, -0.766044443118977900f
,
98 -0.754709580222772010f
, -0.743144825477394130f
, -0.731353701619170460f
,
99 -0.719339800338651300f
, -0.707106781186547460f
, -0.694658370458997030f
,
100 -0.681998360062498370f
, -0.669130606358858240f
,
101 -0.656059028990507500f
, -0.642787609686539360f
, -0.629320391049837280f
,
102 -0.615661475325658290f
, -0.601815023152048380f
, -0.587785252292473030f
,
103 -0.573576436351045830f
, -0.559192903470746680f
,
104 -0.544639035015027080f
, -0.529919264233204790f
, -0.515038074910054270f
,
105 -0.499999999999999780f
, -0.484809620246337000f
, -0.469471562785890530f
,
106 -0.453990499739546750f
, -0.438371146789077510f
,
107 -0.422618261740699330f
, -0.406736643075800100f
, -0.390731128489273600f
,
108 -0.374606593415912070f
, -0.358367949545300270f
, -0.342020143325668710f
,
109 -0.325568154457156420f
, -0.309016994374947340f
,
110 -0.292371704722736660f
, -0.275637355816999050f
, -0.258819045102520850f
,
111 -0.241921895599667790f
, -0.224951054343864810f
, -0.207911690817759120f
,
112 -0.190808995376544800f
, -0.173648177666930300f
,
113 -0.156434465040231040f
, -0.139173100960065350f
, -0.121869343405147370f
,
114 -0.104528463267653330f
, -0.087155742747658235f
, -0.069756473744125330f
,
115 -0.052335956242943620f
, -0.034899496702500733f
,
116 -0.017452406437283477f
, 0.000000000000000061f
, 0.017452406437283376f
,
117 0.034899496702501080f
, 0.052335956242943966f
, 0.069756473744125455f
,
118 0.087155742747658138f
, 0.104528463267653460f
,
119 0.121869343405147490f
, 0.139173100960065690f
, 0.156434465040230920f
,
120 0.173648177666930410f
, 0.190808995376544920f
, 0.207911690817759450f
,
121 0.224951054343864920f
, 0.241921895599667900f
,
122 0.258819045102520740f
, 0.275637355816999160f
, 0.292371704722736770f
,
123 0.309016994374947450f
, 0.325568154457156760f
, 0.342020143325668820f
,
124 0.358367949545300380f
, 0.374606593415911960f
,
125 0.390731128489273940f
, 0.406736643075800210f
, 0.422618261740699440f
,
126 0.438371146789077460f
, 0.453990499739546860f
, 0.469471562785890860f
,
127 0.484809620246337110f
, 0.500000000000000110f
,
128 0.515038074910054380f
, 0.529919264233204900f
, 0.544639035015027200f
,
129 0.559192903470746790f
, 0.573576436351046050f
, 0.587785252292473140f
,
130 0.601815023152048270f
, 0.615661475325658290f
,
131 0.629320391049837500f
, 0.642787609686539360f
, 0.656059028990507280f
,
132 0.669130606358858240f
, 0.681998360062498480f
, 0.694658370458997370f
,
133 0.707106781186547570f
, 0.719339800338651190f
,
134 0.731353701619170570f
, 0.743144825477394240f
, 0.754709580222772010f
,
135 0.766044443118978010f
, 0.777145961456970900f
, 0.788010753606722010f
,
136 0.798635510047292830f
, 0.809016994374947450f
,
137 0.819152044288991800f
, 0.829037572555041620f
, 0.838670567945424050f
,
138 0.848048096156425960f
, 0.857167300702112330f
, 0.866025403784438710f
,
139 0.874619707139395740f
, 0.882947592858926990f
,
140 0.891006524188367900f
, 0.898794046299167040f
, 0.906307787036649940f
,
141 0.913545457642600870f
, 0.920504853452440370f
, 0.927183854566787420f
,
142 0.933580426497201740f
, 0.939692620785908430f
,
143 0.945518575599316850f
, 0.951056516295153530f
, 0.956304755963035440f
,
144 0.961261695938318890f
, 0.965925826289068310f
, 0.970295726275996470f
,
145 0.974370064785235250f
, 0.978147600733805690f
,
146 0.981627183447663980f
, 0.984807753012208020f
, 0.987688340595137770f
,
147 0.990268068741570360f
, 0.992546151641321980f
, 0.994521895368273290f
,
148 0.996194698091745550f
, 0.997564050259824200f
,
149 0.998629534754573830f
, 0.999390827019095760f
, 0.999847695156391270f
,
150 1.000000000000000000f
, 0.999847695156391270f
, 0.999390827019095760f
,
151 0.998629534754573830f
, 0.997564050259824200f
,
152 0.996194698091745550f
, 0.994521895368273290f
, 0.992546151641321980f
,
153 0.990268068741570360f
, 0.987688340595137770f
, 0.984807753012208020f
,
154 0.981627183447663980f
, 0.978147600733805690f
,
155 0.974370064785235250f
, 0.970295726275996470f
, 0.965925826289068310f
,
156 0.961261695938318890f
, 0.956304755963035440f
, 0.951056516295153530f
,
157 0.945518575599316850f
, 0.939692620785908430f
,
158 0.933580426497201740f
, 0.927183854566787420f
, 0.920504853452440370f
,
159 0.913545457642600870f
, 0.906307787036649940f
, 0.898794046299167040f
,
160 0.891006524188367900f
, 0.882947592858926990f
,
161 0.874619707139395740f
, 0.866025403784438710f
, 0.857167300702112330f
,
162 0.848048096156425960f
, 0.838670567945424050f
, 0.829037572555041620f
,
163 0.819152044288991800f
, 0.809016994374947450f
,
164 0.798635510047292830f
, 0.788010753606722010f
, 0.777145961456970900f
,
165 0.766044443118978010f
, 0.754709580222772010f
, 0.743144825477394240f
,
166 0.731353701619170570f
, 0.719339800338651190f
,
167 0.707106781186547570f
, 0.694658370458997370f
, 0.681998360062498480f
,
168 0.669130606358858240f
, 0.656059028990507280f
, 0.642787609686539360f
,
169 0.629320391049837500f
, 0.615661475325658290f
,
170 0.601815023152048270f
, 0.587785252292473140f
, 0.573576436351046050f
,
171 0.559192903470746790f
, 0.544639035015027200f
, 0.529919264233204900f
,
172 0.515038074910054380f
, 0.500000000000000110f
,
173 0.484809620246337110f
, 0.469471562785890860f
, 0.453990499739546860f
,
174 0.438371146789077460f
, 0.422618261740699440f
, 0.406736643075800210f
,
175 0.390731128489273940f
, 0.374606593415911960f
,
176 0.358367949545300380f
, 0.342020143325668820f
, 0.325568154457156760f
,
177 0.309016994374947450f
, 0.292371704722736770f
, 0.275637355816999160f
,
178 0.258819045102520740f
, 0.241921895599667900f
,
179 0.224951054343864920f
, 0.207911690817759450f
, 0.190808995376544920f
,
180 0.173648177666930410f
, 0.156434465040230920f
, 0.139173100960065690f
,
181 0.121869343405147490f
, 0.104528463267653460f
,
182 0.087155742747658138f
, 0.069756473744125455f
, 0.052335956242943966f
,
183 0.034899496702501080f
, 0.017452406437283376f
, 0.000000000000000061f
,
184 -0.017452406437283477f
, -0.034899496702500733f
,
185 -0.052335956242943620f
, -0.069756473744125330f
, -0.087155742747658235f
,
186 -0.104528463267653330f
, -0.121869343405147370f
, -0.139173100960065350f
,
187 -0.156434465040231040f
, -0.173648177666930300f
,
188 -0.190808995376544800f
, -0.207911690817759120f
, -0.224951054343864810f
,
189 -0.241921895599667790f
, -0.258819045102520850f
, -0.275637355816999050f
,
190 -0.292371704722736660f
, -0.309016994374947340f
,
191 -0.325568154457156420f
, -0.342020143325668710f
, -0.358367949545300270f
,
192 -0.374606593415912070f
, -0.390731128489273600f
, -0.406736643075800100f
,
193 -0.422618261740699330f
, -0.438371146789077510f
,
194 -0.453990499739546750f
, -0.469471562785890530f
, -0.484809620246337000f
,
195 -0.499999999999999780f
, -0.515038074910054270f
, -0.529919264233204790f
,
196 -0.544639035015027080f
, -0.559192903470746680f
,
197 -0.573576436351045830f
, -0.587785252292473030f
, -0.601815023152048380f
,
198 -0.615661475325658290f
, -0.629320391049837280f
, -0.642787609686539360f
,
199 -0.656059028990507500f
, -0.669130606358858240f
,
200 -0.681998360062498370f
, -0.694658370458997030f
, -0.707106781186547460f
,
201 -0.719339800338651300f
, -0.731353701619170460f
, -0.743144825477394130f
,
202 -0.754709580222772010f
, -0.766044443118977900f
,
203 -0.777145961456970680f
, -0.788010753606721900f
, -0.798635510047292940f
,
204 -0.809016994374947340f
, -0.819152044288991580f
, -0.829037572555041620f
,
205 -0.838670567945424160f
, -0.848048096156425960f
,
206 -0.857167300702112220f
, -0.866025403784438710f
, -0.874619707139395740f
,
207 -0.882947592858926770f
, -0.891006524188367790f
, -0.898794046299167040f
,
208 -0.906307787036649940f
, -0.913545457642600760f
,
209 -0.920504853452440150f
, -0.927183854566787310f
, -0.933580426497201740f
,
210 -0.939692620785908320f
, -0.945518575599316740f
, -0.951056516295153530f
,
211 -0.956304755963035440f
, -0.961261695938318670f
,
212 -0.965925826289068200f
, -0.970295726275996470f
, -0.974370064785235250f
,
213 -0.978147600733805690f
, -0.981627183447663980f
, -0.984807753012208020f
,
214 -0.987688340595137660f
, -0.990268068741570250f
,
215 -0.992546151641321980f
, -0.994521895368273290f
, -0.996194698091745550f
,
216 -0.997564050259824200f
, -0.998629534754573830f
, -0.999390827019095760f
,
217 -0.999847695156391270f
, -1.000000000000000000f
222 * Sine Table is generated from following loop
223 * <pre>for(i = 0; i < 360; i++)
225 * sinTable[i]= sin((i-180) * PI/180.0);
230 static const float32_t sinTable
[360] = {
231 -0.017452406437283439f
, -0.034899496702500699f
, -0.052335956242943807f
,
232 -0.069756473744125524f
, -0.087155742747658638f
, -0.104528463267653730f
,
233 -0.121869343405147550f
, -0.139173100960065740f
,
234 -0.156434465040230980f
, -0.173648177666930280f
, -0.190808995376544970f
,
235 -0.207911690817759310f
, -0.224951054343864780f
, -0.241921895599667730f
,
236 -0.258819045102521020f
, -0.275637355816999660f
,
237 -0.292371704722737050f
, -0.309016994374947510f
, -0.325568154457156980f
,
238 -0.342020143325668880f
, -0.358367949545300210f
, -0.374606593415912240f
,
239 -0.390731128489274160f
, -0.406736643075800430f
,
240 -0.422618261740699500f
, -0.438371146789077290f
, -0.453990499739546860f
,
241 -0.469471562785891080f
, -0.484809620246337170f
, -0.499999999999999940f
,
242 -0.515038074910054380f
, -0.529919264233204900f
,
243 -0.544639035015026860f
, -0.559192903470746900f
, -0.573576436351046380f
,
244 -0.587785252292473250f
, -0.601815023152048160f
, -0.615661475325658400f
,
245 -0.629320391049837720f
, -0.642787609686539470f
,
246 -0.656059028990507280f
, -0.669130606358858350f
, -0.681998360062498590f
,
247 -0.694658370458997140f
, -0.707106781186547570f
, -0.719339800338651410f
,
248 -0.731353701619170570f
, -0.743144825477394240f
,
249 -0.754709580222771790f
, -0.766044443118978010f
, -0.777145961456971010f
,
250 -0.788010753606722010f
, -0.798635510047292720f
, -0.809016994374947450f
,
251 -0.819152044288992020f
, -0.829037572555041740f
,
252 -0.838670567945424050f
, -0.848048096156426070f
, -0.857167300702112330f
,
253 -0.866025403784438710f
, -0.874619707139395850f
, -0.882947592858927100f
,
254 -0.891006524188367900f
, -0.898794046299166930f
,
255 -0.906307787036650050f
, -0.913545457642600980f
, -0.920504853452440370f
,
256 -0.927183854566787420f
, -0.933580426497201740f
, -0.939692620785908430f
,
257 -0.945518575599316850f
, -0.951056516295153640f
,
258 -0.956304755963035550f
, -0.961261695938318890f
, -0.965925826289068310f
,
259 -0.970295726275996470f
, -0.974370064785235250f
, -0.978147600733805690f
,
260 -0.981627183447663980f
, -0.984807753012208020f
,
261 -0.987688340595137660f
, -0.990268068741570360f
, -0.992546151641322090f
,
262 -0.994521895368273400f
, -0.996194698091745550f
, -0.997564050259824200f
,
263 -0.998629534754573830f
, -0.999390827019095760f
,
264 -0.999847695156391270f
, -1.000000000000000000f
, -0.999847695156391270f
,
265 -0.999390827019095760f
, -0.998629534754573830f
, -0.997564050259824200f
,
266 -0.996194698091745550f
, -0.994521895368273290f
,
267 -0.992546151641321980f
, -0.990268068741570250f
, -0.987688340595137770f
,
268 -0.984807753012208020f
, -0.981627183447663980f
, -0.978147600733805580f
,
269 -0.974370064785235250f
, -0.970295726275996470f
,
270 -0.965925826289068310f
, -0.961261695938318890f
, -0.956304755963035440f
,
271 -0.951056516295153530f
, -0.945518575599316740f
, -0.939692620785908320f
,
272 -0.933580426497201740f
, -0.927183854566787420f
,
273 -0.920504853452440260f
, -0.913545457642600870f
, -0.906307787036649940f
,
274 -0.898794046299167040f
, -0.891006524188367790f
, -0.882947592858926880f
,
275 -0.874619707139395740f
, -0.866025403784438600f
,
276 -0.857167300702112220f
, -0.848048096156426070f
, -0.838670567945423940f
,
277 -0.829037572555041740f
, -0.819152044288991800f
, -0.809016994374947450f
,
278 -0.798635510047292830f
, -0.788010753606722010f
,
279 -0.777145961456970790f
, -0.766044443118978010f
, -0.754709580222772010f
,
280 -0.743144825477394240f
, -0.731353701619170460f
, -0.719339800338651080f
,
281 -0.707106781186547460f
, -0.694658370458997250f
,
282 -0.681998360062498480f
, -0.669130606358858240f
, -0.656059028990507160f
,
283 -0.642787609686539250f
, -0.629320391049837390f
, -0.615661475325658180f
,
284 -0.601815023152048270f
, -0.587785252292473140f
,
285 -0.573576436351046050f
, -0.559192903470746900f
, -0.544639035015027080f
,
286 -0.529919264233204900f
, -0.515038074910054160f
, -0.499999999999999940f
,
287 -0.484809620246337060f
, -0.469471562785890810f
,
288 -0.453990499739546750f
, -0.438371146789077400f
, -0.422618261740699440f
,
289 -0.406736643075800150f
, -0.390731128489273720f
, -0.374606593415912010f
,
290 -0.358367949545300270f
, -0.342020143325668710f
,
291 -0.325568154457156640f
, -0.309016994374947400f
, -0.292371704722736770f
,
292 -0.275637355816999160f
, -0.258819045102520740f
, -0.241921895599667730f
,
293 -0.224951054343865000f
, -0.207911690817759310f
,
294 -0.190808995376544800f
, -0.173648177666930330f
, -0.156434465040230870f
,
295 -0.139173100960065440f
, -0.121869343405147480f
, -0.104528463267653460f
,
296 -0.087155742747658166f
, -0.069756473744125302f
,
297 -0.052335956242943828f
, -0.034899496702500969f
, -0.017452406437283512f
,
298 0.000000000000000000f
, 0.017452406437283512f
, 0.034899496702500969f
,
299 0.052335956242943828f
, 0.069756473744125302f
,
300 0.087155742747658166f
, 0.104528463267653460f
, 0.121869343405147480f
,
301 0.139173100960065440f
, 0.156434465040230870f
, 0.173648177666930330f
,
302 0.190808995376544800f
, 0.207911690817759310f
,
303 0.224951054343865000f
, 0.241921895599667730f
, 0.258819045102520740f
,
304 0.275637355816999160f
, 0.292371704722736770f
, 0.309016994374947400f
,
305 0.325568154457156640f
, 0.342020143325668710f
,
306 0.358367949545300270f
, 0.374606593415912010f
, 0.390731128489273720f
,
307 0.406736643075800150f
, 0.422618261740699440f
, 0.438371146789077400f
,
308 0.453990499739546750f
, 0.469471562785890810f
,
309 0.484809620246337060f
, 0.499999999999999940f
, 0.515038074910054160f
,
310 0.529919264233204900f
, 0.544639035015027080f
, 0.559192903470746900f
,
311 0.573576436351046050f
, 0.587785252292473140f
,
312 0.601815023152048270f
, 0.615661475325658180f
, 0.629320391049837390f
,
313 0.642787609686539250f
, 0.656059028990507160f
, 0.669130606358858240f
,
314 0.681998360062498480f
, 0.694658370458997250f
,
315 0.707106781186547460f
, 0.719339800338651080f
, 0.731353701619170460f
,
316 0.743144825477394240f
, 0.754709580222772010f
, 0.766044443118978010f
,
317 0.777145961456970790f
, 0.788010753606722010f
,
318 0.798635510047292830f
, 0.809016994374947450f
, 0.819152044288991800f
,
319 0.829037572555041740f
, 0.838670567945423940f
, 0.848048096156426070f
,
320 0.857167300702112220f
, 0.866025403784438600f
,
321 0.874619707139395740f
, 0.882947592858926880f
, 0.891006524188367790f
,
322 0.898794046299167040f
, 0.906307787036649940f
, 0.913545457642600870f
,
323 0.920504853452440260f
, 0.927183854566787420f
,
324 0.933580426497201740f
, 0.939692620785908320f
, 0.945518575599316740f
,
325 0.951056516295153530f
, 0.956304755963035440f
, 0.961261695938318890f
,
326 0.965925826289068310f
, 0.970295726275996470f
,
327 0.974370064785235250f
, 0.978147600733805580f
, 0.981627183447663980f
,
328 0.984807753012208020f
, 0.987688340595137770f
, 0.990268068741570250f
,
329 0.992546151641321980f
, 0.994521895368273290f
,
330 0.996194698091745550f
, 0.997564050259824200f
, 0.998629534754573830f
,
331 0.999390827019095760f
, 0.999847695156391270f
, 1.000000000000000000f
,
332 0.999847695156391270f
, 0.999390827019095760f
,
333 0.998629534754573830f
, 0.997564050259824200f
, 0.996194698091745550f
,
334 0.994521895368273400f
, 0.992546151641322090f
, 0.990268068741570360f
,
335 0.987688340595137660f
, 0.984807753012208020f
,
336 0.981627183447663980f
, 0.978147600733805690f
, 0.974370064785235250f
,
337 0.970295726275996470f
, 0.965925826289068310f
, 0.961261695938318890f
,
338 0.956304755963035550f
, 0.951056516295153640f
,
339 0.945518575599316850f
, 0.939692620785908430f
, 0.933580426497201740f
,
340 0.927183854566787420f
, 0.920504853452440370f
, 0.913545457642600980f
,
341 0.906307787036650050f
, 0.898794046299166930f
,
342 0.891006524188367900f
, 0.882947592858927100f
, 0.874619707139395850f
,
343 0.866025403784438710f
, 0.857167300702112330f
, 0.848048096156426070f
,
344 0.838670567945424050f
, 0.829037572555041740f
,
345 0.819152044288992020f
, 0.809016994374947450f
, 0.798635510047292720f
,
346 0.788010753606722010f
, 0.777145961456971010f
, 0.766044443118978010f
,
347 0.754709580222771790f
, 0.743144825477394240f
,
348 0.731353701619170570f
, 0.719339800338651410f
, 0.707106781186547570f
,
349 0.694658370458997140f
, 0.681998360062498590f
, 0.669130606358858350f
,
350 0.656059028990507280f
, 0.642787609686539470f
,
351 0.629320391049837720f
, 0.615661475325658400f
, 0.601815023152048160f
,
352 0.587785252292473250f
, 0.573576436351046380f
, 0.559192903470746900f
,
353 0.544639035015026860f
, 0.529919264233204900f
,
354 0.515038074910054380f
, 0.499999999999999940f
, 0.484809620246337170f
,
355 0.469471562785891080f
, 0.453990499739546860f
, 0.438371146789077290f
,
356 0.422618261740699500f
, 0.406736643075800430f
,
357 0.390731128489274160f
, 0.374606593415912240f
, 0.358367949545300210f
,
358 0.342020143325668880f
, 0.325568154457156980f
, 0.309016994374947510f
,
359 0.292371704722737050f
, 0.275637355816999660f
,
360 0.258819045102521020f
, 0.241921895599667730f
, 0.224951054343864780f
,
361 0.207911690817759310f
, 0.190808995376544970f
, 0.173648177666930280f
,
362 0.156434465040230980f
, 0.139173100960065740f
,
363 0.121869343405147550f
, 0.104528463267653730f
, 0.087155742747658638f
,
364 0.069756473744125524f
, 0.052335956242943807f
, 0.034899496702500699f
,
365 0.017452406437283439f
, 0.000000000000000122f
370 * @brief Floating-point sin_cos function.
371 * @param[in] theta input value in degrees
372 * @param[out] *pSinVal points to the processed sine output.
373 * @param[out] *pCosVal points to the processed cos output.
378 void arm_sin_cos_f32(
383 int32_t i
; /* Index for reading nearwst output values */
384 float32_t x1
= -179.0f
; /* Initial input value */
385 float32_t y0
, y1
; /* nearest output values */
387 float32_t fract
; /* fractional part of input */
389 /* Calculation of fractional part */
392 fract
= theta
- (float32_t
) ((int32_t) theta
);
396 fract
= (theta
- (float32_t
) ((int32_t) theta
)) + 1.0f
;
399 /* index calculation for reading nearest output values */
400 i
= (uint32_t) (theta
- x1
);
402 /* Checking min and max index of table */
412 /* reading nearest sine output values */
414 y1
= sinTable
[i
+ 1u];
416 /* reading nearest cosine output values */
418 y3
= cosTable
[i
+ 1u];
426 /* Calculation of sine value */
429 /* Calculation of cosine value */
435 * @} end of SinCos group