소스 검색

add sincos lookup table

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 4 년 전
부모
커밋
a016819bc2
2개의 변경된 파일121개의 추가작업 그리고 1개의 파일을 삭제
  1. 1 0
      .gitignore
  2. 120 1
      Application/Math/fast_math.c

+ 1 - 0
.gitignore

@@ -1,5 +1,6 @@
 output
 Objects
+.vscode
 DebugConfig
 Listings
 RTE

+ 120 - 1
Application/Math/fast_math.c

@@ -2,7 +2,122 @@
 #include <string.h>
 #include <stdlib.h>
 #include "math/fast_math.h"
+/*
+生成sin/cos 查找表,(0-90°,间隔0.1°)
+#include <string.h>
+#include <stdio.h>
+#include <math.h>
+//#define M_PI (3.14159265f)
+#define degree_2_pi(d) ((float)d * M_PI / 180.0f)
 
+int main(){
+        float d = 0.0;
+        int count = 0;
+        for (; d <= 90.0f; d+=0.1f) {
+                if (count%10 == 0) {
+                        printf("        \r\n");
+                        printf("        ");
+                }
+                count++;
+                printf("%ff,", (sinf(degree_2_pi(d))));
+        }
+        printf("\r\n");
+        return 0;
+}
+*/
+static float _sintable[] = {
+        0.000000f,0.001745f,0.003491f,0.005236f,0.006981f,0.008727f,0.010472f,0.012217f,0.013962f,0.015707f,
+        0.017452f,0.019197f,0.020942f,0.022687f,0.024432f,0.026177f,0.027922f,0.029666f,0.031411f,0.033155f,
+        0.034899f,0.036644f,0.038388f,0.040132f,0.041876f,0.043619f,0.045363f,0.047106f,0.048850f,0.050593f,
+        0.052336f,0.054079f,0.055821f,0.057564f,0.059306f,0.061049f,0.062790f,0.064532f,0.066274f,0.068015f,
+        0.069756f,0.071497f,0.073238f,0.074979f,0.076719f,0.078459f,0.080199f,0.081938f,0.083678f,0.085417f,
+        0.087156f,0.088894f,0.090633f,0.092371f,0.094108f,0.095846f,0.097583f,0.099320f,0.101056f,0.102792f,
+        0.104528f,0.106264f,0.107999f,0.109734f,0.111469f,0.113203f,0.114937f,0.116671f,0.118404f,0.120137f,
+        0.121869f,0.123601f,0.125333f,0.127065f,0.128796f,0.130526f,0.132256f,0.133986f,0.135715f,0.137444f,
+        0.139173f,0.140901f,0.142629f,0.144356f,0.146083f,0.147809f,0.149535f,0.151261f,0.152986f,0.154710f,
+        0.156434f,0.158158f,0.159881f,0.161604f,0.163326f,0.165048f,0.166769f,0.168489f,0.170210f,0.171929f,
+        0.173648f,0.175367f,0.177085f,0.178802f,0.180519f,0.182236f,0.183951f,0.185667f,0.187381f,0.189096f,
+        0.190809f,0.192522f,0.194234f,0.195946f,0.197657f,0.199368f,0.201078f,0.202787f,0.204496f,0.206204f,
+        0.207912f,0.209619f,0.211325f,0.213031f,0.214736f,0.216440f,0.218143f,0.219846f,0.221549f,0.223250f,
+        0.224951f,0.226652f,0.228351f,0.230050f,0.231748f,0.233446f,0.235142f,0.236838f,0.238534f,0.240228f,
+        0.241922f,0.243615f,0.245308f,0.246999f,0.248690f,0.250380f,0.252070f,0.253758f,0.255446f,0.257133f,
+        0.258819f,0.260505f,0.262190f,0.263873f,0.265556f,0.267239f,0.268920f,0.270601f,0.272281f,0.273960f,
+        0.275638f,0.277315f,0.278992f,0.280667f,0.282342f,0.284016f,0.285689f,0.287361f,0.289032f,0.290703f,
+        0.292372f,0.294041f,0.295709f,0.297375f,0.299041f,0.300706f,0.302370f,0.304034f,0.305696f,0.307357f,
+        0.309018f,0.310677f,0.312335f,0.313993f,0.315650f,0.317305f,0.318960f,0.320614f,0.322266f,0.323918f,
+        0.325569f,0.327219f,0.328867f,0.330515f,0.332162f,0.333807f,0.335452f,0.337096f,0.338739f,0.340380f,
+        0.342021f,0.343660f,0.345299f,0.346936f,0.348573f,0.350208f,0.351842f,0.353476f,0.355108f,0.356739f,
+        0.358369f,0.359998f,0.361625f,0.363252f,0.364878f,0.366502f,0.368125f,0.369748f,0.371369f,0.372989f,
+        0.374607f,0.376225f,0.377842f,0.379457f,0.381071f,0.382684f,0.384296f,0.385907f,0.387516f,0.389125f,
+        0.390732f,0.392338f,0.393943f,0.395546f,0.397149f,0.398750f,0.400350f,0.401949f,0.403546f,0.405142f,
+        0.406738f,0.408331f,0.409924f,0.411515f,0.413105f,0.414694f,0.416282f,0.417868f,0.419453f,0.421037f,
+        0.422619f,0.424200f,0.425780f,0.427359f,0.428936f,0.430512f,0.432087f,0.433660f,0.435232f,0.436803f,
+        0.438372f,0.439940f,0.441507f,0.443072f,0.444636f,0.446199f,0.447760f,0.449320f,0.450879f,0.452436f,
+        0.453992f,0.455546f,0.457099f,0.458651f,0.460201f,0.461750f,0.463297f,0.464843f,0.466388f,0.467931f,
+        0.469473f,0.471013f,0.472552f,0.474089f,0.475625f,0.477160f,0.478693f,0.480225f,0.481755f,0.483284f,
+        0.484811f,0.486337f,0.487861f,0.489384f,0.490905f,0.492425f,0.493943f,0.495460f,0.496975f,0.498489f,
+        0.500001f,0.501512f,0.503021f,0.504529f,0.506035f,0.507540f,0.509043f,0.510544f,0.512044f,0.513542f,
+        0.515039f,0.516535f,0.518028f,0.519520f,0.521011f,0.522500f,0.523987f,0.525473f,0.526957f,0.528440f,
+        0.529921f,0.531400f,0.532877f,0.534354f,0.535828f,0.537301f,0.538772f,0.540241f,0.541709f,0.543176f,
+        0.544640f,0.546103f,0.547564f,0.549024f,0.550482f,0.551938f,0.553392f,0.554845f,0.556296f,0.557746f,
+        0.559194f,0.560640f,0.562084f,0.563527f,0.564968f,0.566407f,0.567844f,0.569280f,0.570714f,0.572146f,
+        0.573577f,0.575006f,0.576433f,0.577858f,0.579282f,0.580703f,0.582123f,0.583542f,0.584958f,0.586373f,
+        0.587786f,0.589197f,0.590606f,0.592013f,0.593419f,0.594823f,0.596225f,0.597625f,0.599024f,0.600420f,
+        0.601815f,0.603208f,0.604599f,0.605988f,0.607376f,0.608761f,0.610145f,0.611527f,0.612907f,0.614285f,
+        0.615661f,0.617036f,0.618408f,0.619779f,0.621148f,0.622514f,0.623879f,0.625242f,0.626604f,0.627963f,
+        0.629320f,0.630675f,0.632029f,0.633381f,0.634730f,0.636078f,0.637424f,0.638767f,0.640109f,0.641449f,
+        0.642787f,0.644123f,0.645457f,0.646789f,0.648119f,0.649447f,0.650774f,0.652098f,0.653420f,0.654740f,
+        0.656058f,0.657375f,0.658689f,0.660001f,0.661311f,0.662619f,0.663925f,0.665230f,0.666532f,0.667832f,
+        0.669130f,0.670426f,0.671720f,0.673012f,0.674301f,0.675589f,0.676875f,0.678159f,0.679440f,0.680720f,
+        0.681997f,0.683273f,0.684546f,0.685817f,0.687086f,0.688353f,0.689618f,0.690881f,0.692142f,0.693401f,
+        0.694657f,0.695912f,0.697164f,0.698414f,0.699662f,0.700908f,0.702152f,0.703393f,0.704633f,0.705870f,
+        0.707105f,0.708338f,0.709569f,0.710798f,0.712025f,0.713249f,0.714471f,0.715691f,0.716909f,0.718125f,
+        0.719338f,0.720550f,0.721759f,0.722966f,0.724170f,0.725373f,0.726573f,0.727771f,0.728967f,0.730161f,
+        0.731352f,0.732541f,0.733728f,0.734913f,0.736095f,0.737276f,0.738454f,0.739629f,0.740803f,0.741974f,
+        0.743143f,0.744310f,0.745474f,0.746636f,0.747796f,0.748954f,0.750109f,0.751262f,0.752413f,0.753561f,
+        0.754708f,0.755851f,0.756993f,0.758132f,0.759269f,0.760404f,0.761536f,0.762666f,0.763794f,0.764919f,
+        0.766042f,0.767163f,0.768281f,0.769397f,0.770511f,0.771622f,0.772731f,0.773838f,0.774942f,0.776044f,
+        0.777144f,0.778241f,0.779336f,0.780428f,0.781518f,0.782606f,0.783691f,0.784774f,0.785855f,0.786933f,
+        0.788008f,0.789082f,0.790153f,0.791221f,0.792287f,0.793351f,0.794412f,0.795471f,0.796527f,0.797581f,
+        0.798633f,0.799682f,0.800729f,0.801773f,0.802815f,0.803854f,0.804891f,0.805926f,0.806958f,0.807987f,
+        0.809014f,0.810039f,0.811061f,0.812081f,0.813098f,0.814113f,0.815125f,0.816135f,0.817142f,0.818147f,
+        0.819149f,0.820149f,0.821147f,0.822141f,0.823134f,0.824124f,0.825111f,0.826096f,0.827078f,0.828058f,
+        0.829035f,0.830010f,0.830982f,0.831951f,0.832918f,0.833883f,0.834845f,0.835805f,0.836762f,0.837716f,
+        0.838668f,0.839617f,0.840564f,0.841508f,0.842450f,0.843389f,0.844325f,0.845259f,0.846190f,0.847119f,
+        0.848045f,0.848969f,0.849890f,0.850808f,0.851724f,0.852637f,0.853548f,0.854456f,0.855361f,0.856264f,
+        0.857164f,0.858062f,0.858957f,0.859849f,0.860739f,0.861626f,0.862511f,0.863393f,0.864272f,0.865148f,
+        0.866022f,0.866894f,0.867762f,0.868629f,0.869492f,0.870353f,0.871211f,0.872066f,0.872919f,0.873769f,
+        0.874617f,0.875462f,0.876304f,0.877143f,0.877980f,0.878814f,0.879646f,0.880474f,0.881300f,0.882124f,
+        0.882945f,0.883763f,0.884578f,0.885391f,0.886200f,0.887008f,0.887812f,0.888614f,0.889413f,0.890210f,
+        0.891003f,0.891794f,0.892583f,0.893368f,0.894151f,0.894931f,0.895709f,0.896483f,0.897255f,0.898024f,
+        0.898791f,0.899555f,0.900316f,0.901074f,0.901829f,0.902582f,0.903332f,0.904079f,0.904824f,0.905566f,
+        0.906305f,0.907041f,0.907774f,0.908505f,0.909233f,0.909958f,0.910681f,0.911400f,0.912117f,0.912831f,
+        0.913542f,0.914251f,0.914957f,0.915659f,0.916360f,0.917057f,0.917752f,0.918443f,0.919132f,0.919818f,
+        0.920502f,0.921182f,0.921860f,0.922535f,0.923207f,0.923876f,0.924543f,0.925207f,0.925868f,0.926526f,
+        0.927181f,0.927833f,0.928483f,0.929130f,0.929773f,0.930415f,0.931053f,0.931688f,0.932321f,0.932950f,
+        0.933577f,0.934201f,0.934823f,0.935441f,0.936057f,0.936669f,0.937279f,0.937886f,0.938490f,0.939091f,
+        0.939690f,0.940285f,0.940878f,0.941468f,0.942055f,0.942639f,0.943220f,0.943798f,0.944373f,0.944946f,
+        0.945516f,0.946082f,0.946646f,0.947207f,0.947766f,0.948321f,0.948873f,0.949423f,0.949969f,0.950513f,
+        0.951054f,0.951592f,0.952127f,0.952659f,0.953188f,0.953714f,0.954238f,0.954758f,0.955276f,0.955790f,
+        0.956302f,0.956811f,0.957317f,0.957820f,0.958320f,0.958817f,0.959311f,0.959803f,0.960291f,0.960776f,
+        0.961259f,0.961739f,0.962215f,0.962689f,0.963160f,0.963628f,0.964093f,0.964555f,0.965014f,0.965470f,
+        0.965923f,0.966374f,0.966821f,0.967265f,0.967707f,0.968145f,0.968581f,0.969013f,0.969443f,0.969869f,
+        0.970293f,0.970714f,0.971132f,0.971547f,0.971959f,0.972367f,0.972773f,0.973176f,0.973576f,0.973974f,
+        0.974368f,0.974759f,0.975147f,0.975532f,0.975914f,0.976294f,0.976670f,0.977043f,0.977414f,0.977781f,
+        0.978145f,0.978507f,0.978865f,0.979221f,0.979573f,0.979923f,0.980269f,0.980613f,0.980953f,0.981291f,
+        0.981625f,0.981957f,0.982285f,0.982611f,0.982933f,0.983253f,0.983569f,0.983883f,0.984194f,0.984501f,
+        0.984806f,0.985107f,0.985406f,0.985702f,0.985994f,0.986284f,0.986570f,0.986854f,0.987134f,0.987412f,
+        0.987687f,0.987958f,0.988227f,0.988492f,0.988755f,0.989014f,0.989271f,0.989524f,0.989775f,0.990022f,
+        0.990266f,0.990508f,0.990746f,0.990982f,0.991214f,0.991443f,0.991670f,0.991893f,0.992113f,0.992330f,
+        0.992545f,0.992756f,0.992964f,0.993169f,0.993371f,0.993570f,0.993767f,0.993960f,0.994150f,0.994337f,
+        0.994521f,0.994702f,0.994879f,0.995054f,0.995226f,0.995395f,0.995561f,0.995724f,0.995883f,0.996040f,
+        0.996194f,0.996344f,0.996492f,0.996636f,0.996778f,0.996916f,0.997052f,0.997184f,0.997314f,0.997440f,
+        0.997563f,0.997683f,0.997801f,0.997915f,0.998026f,0.998134f,0.998239f,0.998341f,0.998440f,0.998536f,
+        0.998629f,0.998719f,0.998805f,0.998889f,0.998970f,0.999048f,0.999122f,0.999194f,0.999262f,0.999328f,
+        0.999390f,0.999450f,0.999506f,0.999559f,0.999610f,0.999657f,0.999701f,0.999742f,0.999780f,0.999815f,
+        0.999847f,0.999876f,0.999902f,0.999925f,0.999945f,0.999962f,0.999976f,0.999986f,0.999994f,0.999998f,
+        1.000000f	
+};
 /**
  * Fast sine and cosine implementation.
  *
@@ -18,7 +133,7 @@
  * @param cos
  * A pointer to store the cosine value.
  */
-void fast_sincos(float angle, float *sin, float *cos) {
+void fast_sincos2(float angle, float *sin, float *cos) {
 	//always wrap input angle to -PI..PI
 	while (angle < -M_PI) {
 		angle += 2.0f * M_PI;
@@ -91,3 +206,7 @@ void normal_sincosf(float angle, float *sin, float *cos) {
 	*cos = cosf(angle);
 }
 
+void fast_sincosf(float angle, float *sin, float *cos){
+	
+
+}