151 lines
4.4 KiB
C
151 lines
4.4 KiB
C
/****************************************************************************
|
|
|
|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
|
|
|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
|
be copied by any method or incorporated into another program without
|
|
the express written consent of Aerospace C.Power. This Information or any portion
|
|
thereof remains the property of Aerospace C.Power. The Information contained herein
|
|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
|
liability for its use in any way and conveys no license or title under
|
|
any patent or copyright and makes no representation or warranty that this
|
|
Information is free from patent or copyright infringement.
|
|
|
|
****************************************************************************/
|
|
|
|
#include "math_log10.h"
|
|
|
|
const math_log10_tbl_t log10_tbl[] = {
|
|
{0.0, 1 },
|
|
{0.2, 2 },
|
|
{0.4, 3 },
|
|
{0.6, 4 },
|
|
{0.7, 5 },
|
|
{0.8, 6 },
|
|
{0.9, 8 },
|
|
{1.0, 10 },
|
|
{1.1, 13 },
|
|
{1.2, 16 },
|
|
{1.3, 20 },
|
|
{1.4, 25 },
|
|
{1.5, 32 },
|
|
{1.6, 40 },
|
|
{1.7, 50 },
|
|
{1.8, 63 },
|
|
{1.9, 79 },
|
|
{2.0, 100 },
|
|
{2.1, 126 },
|
|
{2.2, 158 },
|
|
{2.3, 200 },
|
|
{2.4, 251 },
|
|
{2.5, 316 },
|
|
{2.6, 398 },
|
|
{2.7, 501 },
|
|
{2.8, 631 },
|
|
{2.9, 794 },
|
|
{3.0, 1000 },
|
|
{3.1, 1259 },
|
|
{3.2, 1585 },
|
|
{3.3, 1995 },
|
|
{3.4, 2512 },
|
|
{3.5, 3162 },
|
|
{3.6, 3981 },
|
|
{3.7, 5012 },
|
|
{3.8, 6310 },
|
|
{3.9, 7943 },
|
|
{4.0, 10000 },
|
|
{4.1, 12589 },
|
|
{4.2, 15849 },
|
|
{4.3, 19953 },
|
|
{4.4, 25119 },
|
|
{4.5, 31623 },
|
|
{4.6, 39811 },
|
|
{4.7, 50119 },
|
|
{4.8, 63096 },
|
|
{4.9, 79433 },
|
|
{5.0, 100000 },
|
|
{5.1, 125893 },
|
|
{5.2, 158489 },
|
|
{5.3, 199526 },
|
|
{5.4, 251189 },
|
|
{5.5, 316228 },
|
|
{5.6, 398107 },
|
|
{5.7, 501187 },
|
|
{5.8, 630957 },
|
|
{5.9, 794328 },
|
|
{6.0, 1000000 },
|
|
{6.1, 1258925 },
|
|
{6.2, 1584893 },
|
|
{6.3, 1995262 },
|
|
{6.4, 2511886 },
|
|
{6.5, 3162277 },
|
|
{6.6, 3981071 },
|
|
{6.7, 5011872 },
|
|
{6.8, 6309573 },
|
|
{6.9, 7943282 },
|
|
{7.0, 10000000 },
|
|
{7.1, 12589254 },
|
|
{7.2, 15848931 },
|
|
{7.3, 19952623 },
|
|
{7.4, 25118864 },
|
|
{7.5, 31622776 },
|
|
{7.6, 39810717 },
|
|
{7.7, 50118723 },
|
|
{7.8, 63095734 },
|
|
{7.9, 79432823 },
|
|
{8.0, 100000000 },
|
|
{8.1, 125892541 },
|
|
{8.2, 158489319 },
|
|
{8.3, 199526231 },
|
|
{8.4, 251188643 },
|
|
{8.5, 316227766 },
|
|
{8.6, 398107170 },
|
|
{8.7, 501187233 },
|
|
{8.8, 630957344 },
|
|
{8.9, 794328234 },
|
|
{9.0, 1000000000},
|
|
{9.1, 1258925411},
|
|
{9.2, 1584893192},
|
|
{9.3, 1995262314},
|
|
{9.4, 2511886431},
|
|
{9.5, 3162277660},
|
|
{9.6, 3981071705},
|
|
/* the maximum value of uint32 type is 4294967295 */
|
|
{9.7, 5011872336},
|
|
{9.8, 6309573444},
|
|
{9.9, 7943282347},
|
|
{10.0, 10000000000},
|
|
{11.0, 100000000000},
|
|
{12.0, 1000000000000},
|
|
{13.0, 10000000000000},
|
|
{14.0, 100000000000000},
|
|
{15.0, 1000000000000000},
|
|
{16.0, 10000000000000000},
|
|
{17.0, 100000000000000000},
|
|
{18.0, 1000000000000000000},
|
|
//{19.0, 10000000000000000000}, /* uint64_t max */
|
|
};
|
|
|
|
float mlog10(uint64_t raw_data)
|
|
{
|
|
uint32_t i;
|
|
|
|
if(raw_data <= log10_tbl[0].raw_data){
|
|
return log10_tbl[0].log10_val;
|
|
}
|
|
|
|
for(i = 1; i < sizeof(log10_tbl)/sizeof(math_log10_tbl_t); i++)
|
|
{
|
|
if(raw_data == log10_tbl[i].raw_data){
|
|
return log10_tbl[i].log10_val;
|
|
}
|
|
else if(raw_data > log10_tbl[i-1].raw_data && \
|
|
raw_data < log10_tbl[i].raw_data){
|
|
return log10_tbl[i-1].log10_val;
|
|
}
|
|
}
|
|
|
|
return log10_tbl[i-1].log10_val;
|
|
}
|
|
|