Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
table.cpp
00001 #include "math.h" 00002 #include "mbed.h" 00003 00004 class table{ 00005 public: 00006 table(int times); 00007 ~table(); 00008 void SIN_table(void); 00009 void COS_table(void); 00010 void make_table(double (*fnc)(int)); 00011 double show(int num); 00012 double deg(double degree); 00013 double rad(double radian); 00014 private: 00015 double M_PI = 3.141592653589793; 00016 double *ans; 00017 int number; 00018 }; 00019 table::table(int times){ 00020 number = times; 00021 } 00022 table::~table(){ 00023 free(ans); 00024 } 00025 void table::SIN_table(void){ 00026 ans = (double*)malloc(sizeof(double)*number+1); 00027 //ans = new double[sizeof(double)*number+1]; 00028 if(ans == NULL) exit(1); 00029 for(int i=0;i<number+1;i++){//[0]~[number] 00030 ans[i] = sin(M_PI*i*2.0/number); 00031 } 00032 } 00033 void table::COS_table(void){ 00034 ans = (double*)malloc(sizeof(double)*number+1); 00035 for(int i=0;i<number+1;i++){ 00036 ans[i] = cos(M_PI*i*2.0/number); 00037 } 00038 } 00039 void table::make_table(double (*fnc)(int)){ 00040 ans = (double*)malloc(sizeof(double)*number+1); 00041 for(int i=0;i<number+1;i++){ 00042 ans[i] = fnc(i); 00043 } 00044 } 00045 double table::show(int num){ 00046 return ans[num]; 00047 } 00048 double table::deg(double degree){ 00049 double sa_db=0.0; 00050 int sa_int=0; 00051 double degree_abs =0.0; 00052 int degree_int=0; 00053 if(degree<0) degree_abs = labs(degree); 00054 else degree_abs = degree; 00055 if(degree_abs>360){ 00056 degree_int = degree/360; 00057 degree = degree - degree_int*360; 00058 } 00059 if(degree<0) degree = degree+360; 00060 sa_db = number*0.5*degree/180; 00061 sa_int = sa_db; 00062 return ans[sa_int]; 00063 //return ans[sa_int]; 00064 //return sa_db; 00065 } 00066 double table::rad(double radian){ 00067 double sa_db; 00068 int sa_int; 00069 double radian_abs; 00070 int radian_int; 00071 radian = radian/M_PI; 00072 00073 if(radian<0) radian_abs = labs(radian); 00074 else radian_abs = radian; 00075 00076 if(radian_abs>2.0){ 00077 radian_int = radian/2.0; 00078 radian = radian - radian_int*2.0; 00079 } 00080 00081 if(radian<0) radian = radian+2.0; 00082 00083 sa_db = number*radian*0.5; 00084 sa_int = sa_db; 00085 sa_db = ans[sa_int]; 00086 return sa_db; 00087 }
Generated on Fri Aug 5 2022 06:59:11 by
