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;
 | 
						|
}
 | 
						|
 |