/* * Copyright (C) 2004-2010 NXP Software * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "LVM_Types.h" #include "LVM_Macros.h" #include "ScalarArithmetic.h" #include "Filter.h" /*-------------------------------------------------------------------------*/ /* FUNCTION: */ /* LVM_Power10 */ /* */ /* DESCRIPTION: */ /* This function calculates 10X using an 11th order polynomial. It uses */ /* the following table of 32-bit integer polynomial coefficients: */ /* */ /* Coefficient Value */ /* A0 67102543 */ /* A1 309032995 */ /* A2 712096127 */ /* A3 1092797331 */ /* A4 1251625137 */ /* A5 1154649460 */ /* A6 915654800 */ /* A7 597883683 */ /* A8 284378230 */ /* A9 150262097 */ /* A10 124894471 */ /* A11 50477244 */ /* A12 -2 */ /* */ /* Y = (A0 + A1*X + A2*X2 + A3*X3 + ….. + AN*xN) << AN+1 */ /* */ /* */ /* PARAMETERS: */ /* */ /* X is the input variable in Q2.30 format */ /* */ /* RETURNS: */ /* The result of the 10x expansion in Q8.24 format */ /*-------------------------------------------------------------------------*/ LVM_INT32 LVM_Power10(LVM_INT32 X) { LVM_INT32 Y,Coefficients[13]={ 16775636, 77258249, 178024032, 273199333, 312906284, 288662365, 228913700, 149470921, 71094558, 37565524, 31223618, 12619311, 0}; Y=LVM_Polynomial((LVM_UINT16)11, Coefficients, X); return Y; }