arm sin f32 8c source


CMSIS DSP Software Library: arm_sin_f32.c Source File Main Page Modules Data Structures Files Examples File List Globals arm_sin_f32.c Go to the documentation of this file.00001 /* ---------------------------------------------------------------------- 00002 * Copyright (C) 2010 ARM Limited. All rights reserved. 00003 * 00004 * $Date: 29. November 2010 00005 * $Revision: V1.0.3 00006 * 00007 * Project: CMSIS DSP Library 00008 * Title: arm_sin_f32.c 00009 * 00010 * Description: Fast sine calculation for floating-point values. 00011 * 00012 * Target Processor: Cortex-M4/Cortex-M3 00013 * 00014 * Version 1.0.3 2010/11/29 00015 * Re-organized the CMSIS folders and updated documentation. 00016 * 00017 * Version 1.0.2 2010/11/11 00018 * Documentation updated. 00019 * 00020 * Version 1.0.1 2010/10/05 00021 * Production release and review comments incorporated. 00022 * 00023 * Version 1.0.0 2010/09/20 00024 * Production release and review comments incorporated. 00025 * -------------------------------------------------------------------- */ 00026 00027 #include "arm_math.h" 00028 00085 static const float32_t sinTable[259] = { 00086 -0.024541229009628296f, 0.000000000000000000f, 0.024541229009628296f, 00087 0.049067676067352295f, 0.073564566671848297f, 0.098017141222953796f, 00088 0.122410677373409270f, 0.146730467677116390f, 00089 0.170961886644363400f, 0.195090323686599730f, 0.219101235270500180f, 00090 0.242980182170867920f, 0.266712754964828490f, 0.290284663438797000f, 00091 0.313681751489639280f, 0.336889863014221190f, 00092 0.359895050525665280f, 0.382683426141738890f, 0.405241310596466060f, 00093 0.427555084228515630f, 0.449611335992813110f, 0.471396744251251220f, 00094 0.492898195981979370f, 0.514102756977081300f, 00095 0.534997642040252690f, 0.555570244789123540f, 0.575808167457580570f, 00096 0.595699310302734380f, 0.615231573581695560f, 0.634393274784088130f, 00097 0.653172850608825680f, 0.671558976173400880f, 00098 0.689540565013885500f, 0.707106769084930420f, 0.724247097969055180f, 00099 0.740951120853424070f, 0.757208824157714840f, 0.773010432720184330f, 00100 0.788346409797668460f, 0.803207516670227050f, 00101 0.817584812641143800f, 0.831469595432281490f, 0.844853579998016360f, 00102 0.857728600502014160f, 0.870086967945098880f, 0.881921291351318360f, 00103 0.893224298954010010f, 0.903989315032958980f, 00104 0.914209783077239990f, 0.923879504203796390f, 0.932992815971374510f, 00105 0.941544055938720700f, 0.949528157711029050f, 0.956940352916717530f, 00106 0.963776051998138430f, 0.970031261444091800f, 00107 0.975702106952667240f, 0.980785250663757320f, 0.985277652740478520f, 00108 0.989176511764526370f, 0.992479562759399410f, 0.995184719562530520f, 00109 0.997290432453155520f, 0.998795449733734130f, 00110 0.999698817729949950f, 1.000000000000000000f, 0.999698817729949950f, 00111 0.998795449733734130f, 0.997290432453155520f, 0.995184719562530520f, 00112 0.992479562759399410f, 0.989176511764526370f, 00113 0.985277652740478520f, 0.980785250663757320f, 0.975702106952667240f, 00114 0.970031261444091800f, 0.963776051998138430f, 0.956940352916717530f, 00115 0.949528157711029050f, 0.941544055938720700f, 00116 0.932992815971374510f, 0.923879504203796390f, 0.914209783077239990f, 00117 0.903989315032958980f, 0.893224298954010010f, 0.881921291351318360f, 00118 0.870086967945098880f, 0.857728600502014160f, 00119 0.844853579998016360f, 0.831469595432281490f, 0.817584812641143800f, 00120 0.803207516670227050f, 0.788346409797668460f, 0.773010432720184330f, 00121 0.757208824157714840f, 0.740951120853424070f, 00122 0.724247097969055180f, 0.707106769084930420f, 0.689540565013885500f, 00123 0.671558976173400880f, 0.653172850608825680f, 0.634393274784088130f, 00124 0.615231573581695560f, 0.595699310302734380f, 00125 0.575808167457580570f, 0.555570244789123540f, 0.534997642040252690f, 00126 0.514102756977081300f, 0.492898195981979370f, 0.471396744251251220f, 00127 0.449611335992813110f, 0.427555084228515630f, 00128 0.405241310596466060f, 0.382683426141738890f, 0.359895050525665280f, 00129 0.336889863014221190f, 0.313681751489639280f, 0.290284663438797000f, 00130 0.266712754964828490f, 0.242980182170867920f, 00131 0.219101235270500180f, 0.195090323686599730f, 0.170961886644363400f, 00132 0.146730467677116390f, 0.122410677373409270f, 0.098017141222953796f, 00133 0.073564566671848297f, 0.049067676067352295f, 00134 0.024541229009628296f, 0.000000000000000122f, -0.024541229009628296f, 00135 -0.049067676067352295f, -0.073564566671848297f, -0.098017141222953796f, 00136 -0.122410677373409270f, -0.146730467677116390f, 00137 -0.170961886644363400f, -0.195090323686599730f, -0.219101235270500180f, 00138 -0.242980182170867920f, -0.266712754964828490f, -0.290284663438797000f, 00139 -0.313681751489639280f, -0.336889863014221190f, 00140 -0.359895050525665280f, -0.382683426141738890f, -0.405241310596466060f, 00141 -0.427555084228515630f, -0.449611335992813110f, -0.471396744251251220f, 00142 -0.492898195981979370f, -0.514102756977081300f, 00143 -0.534997642040252690f, -0.555570244789123540f, -0.575808167457580570f, 00144 -0.595699310302734380f, -0.615231573581695560f, -0.634393274784088130f, 00145 -0.653172850608825680f, -0.671558976173400880f, 00146 -0.689540565013885500f, -0.707106769084930420f, -0.724247097969055180f, 00147 -0.740951120853424070f, -0.757208824157714840f, -0.773010432720184330f, 00148 -0.788346409797668460f, -0.803207516670227050f, 00149 -0.817584812641143800f, -0.831469595432281490f, -0.844853579998016360f, 00150 -0.857728600502014160f, -0.870086967945098880f, -0.881921291351318360f, 00151 -0.893224298954010010f, -0.903989315032958980f, 00152 -0.914209783077239990f, -0.923879504203796390f, -0.932992815971374510f, 00153 -0.941544055938720700f, -0.949528157711029050f, -0.956940352916717530f, 00154 -0.963776051998138430f, -0.970031261444091800f, 00155 -0.975702106952667240f, -0.980785250663757320f, -0.985277652740478520f, 00156 -0.989176511764526370f, -0.992479562759399410f, -0.995184719562530520f, 00157 -0.997290432453155520f, -0.998795449733734130f, 00158 -0.999698817729949950f, -1.000000000000000000f, -0.999698817729949950f, 00159 -0.998795449733734130f, -0.997290432453155520f, -0.995184719562530520f, 00160 -0.992479562759399410f, -0.989176511764526370f, 00161 -0.985277652740478520f, -0.980785250663757320f, -0.975702106952667240f, 00162 -0.970031261444091800f, -0.963776051998138430f, -0.956940352916717530f, 00163 -0.949528157711029050f, -0.941544055938720700f, 00164 -0.932992815971374510f, -0.923879504203796390f, -0.914209783077239990f, 00165 -0.903989315032958980f, -0.893224298954010010f, -0.881921291351318360f, 00166 -0.870086967945098880f, -0.857728600502014160f, 00167 -0.844853579998016360f, -0.831469595432281490f, -0.817584812641143800f, 00168 -0.803207516670227050f, -0.788346409797668460f, -0.773010432720184330f, 00169 -0.757208824157714840f, -0.740951120853424070f, 00170 -0.724247097969055180f, -0.707106769084930420f, -0.689540565013885500f, 00171 -0.671558976173400880f, -0.653172850608825680f, -0.634393274784088130f, 00172 -0.615231573581695560f, -0.595699310302734380f, 00173 -0.575808167457580570f, -0.555570244789123540f, -0.534997642040252690f, 00174 -0.514102756977081300f, -0.492898195981979370f, -0.471396744251251220f, 00175 -0.449611335992813110f, -0.427555084228515630f, 00176 -0.405241310596466060f, -0.382683426141738890f, -0.359895050525665280f, 00177 -0.336889863014221190f, -0.313681751489639280f, -0.290284663438797000f, 00178 -0.266712754964828490f, -0.242980182170867920f, 00179 -0.219101235270500180f, -0.195090323686599730f, -0.170961886644363400f, 00180 -0.146730467677116390f, -0.122410677373409270f, -0.098017141222953796f, 00181 -0.073564566671848297f, -0.049067676067352295f, 00182 -0.024541229009628296f, -0.000000000000000245f, 0.024541229009628296f 00183 }; 00184 00185 00192 float32_t arm_sin_f32( 00193 float32_t x) 00194 { 00195 float32_t sinVal, fract, in; /* Temporary variables for input, output */ 00196 uint32_t index; /* Index variables */ 00197 uint32_t tableSize = (uint32_t) TABLE_SIZE; /* Initialise tablesize */ 00198 float32_t wa, wb, wc, wd; /* Cubic interpolation coefficients */ 00199 float32_t a, b, c, d; /* Four nearest output values */ 00200 float32_t *tablePtr; /* Pointer to table */ 00201 int32_t n; 00202 00203 /* input x is in radians */ 00204 /* Scale the input to [0 1] range from [0 2*PI] , divide input by 2*pi */ 00205 in = x * 0.159154943092f; 00206 00207 /* Calculation of floor value of input */ 00208 n = (int32_t) in; 00209 00210 /* Make negative values towards -infinity */ 00211 if(x < 0.0f) 00212 { 00213 n = n - 1; 00214 } 00215 00216 /* Map input value to [0 1] */ 00217 in = in - (float32_t) n; 00218 00219 /* Calculation of index of the table */ 00220 index = (uint32_t) (tableSize * in); 00221 00222 /* fractional value calculation */ 00223 fract = ((float32_t) tableSize * in) - (float32_t) index; 00224 00225 /* Initialise table pointer */ 00226 tablePtr = (float32_t *) & sinTable[index]; 00227 00228 /* Read four nearest values of output value from the sin table */ 00229 a = *tablePtr++; 00230 b = *tablePtr++; 00231 c = *tablePtr++; 00232 d = *tablePtr++; 00233 00234 /* Cubic interpolation process */ 00235 wa = -(((0.166666667f) * (fract * (fract * fract))) + 00236 ((0.3333333333333f) * fract)) + ((0.5f) * (fract * fract)); 00237 wb = (((0.5f) * (fract * (fract * fract))) - 00238 ((fract * fract) + ((0.5f) * fract))) + 1.0f; 00239 wc = (-((0.5f) * (fract * (fract * fract))) + 00240 ((0.5f) * (fract * fract))) + fract; 00241 wd = ((0.166666667f) * (fract * (fract * fract))) - 00242 ((0.166666667f) * fract); 00243 00244 /* Calculate sin value */ 00245 sinVal = ((a * wa) + (b * wb)) + ((c * wc) + (d * wd)); 00246 00247 /* Return the output value */ 00248 return (sinVal); 00249 00250 } 00251  All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines Generated on Mon Nov 29 2010 17:19:57 for CMSIS DSP Software Library by  1.7.2

Wyszukiwarka

Podobne podstrony:
arm conv ?2? source
arm power ?2? source
arm ?d ?2? source
arm scale ?2? source
arm sin q15? source
arm correlate ?2? source
arm mult ?2? source
arm ?s ?2? source
arm offset ?2? source
arm mean ?2? source
arm cos ?2? source
arm sin q31? source
arm std ?2? source
arm sin ?2?
arm negate ?2? source
arm ?t4 ?2? source
arm min ?2? source
arm fill ?2? source
arm lms ?2? source

więcej podobnych podstron