Questions on Function Approximation (using FPGAs)

Oct 10, 2003 2 Replies

Dear all,



I am working on (compound) function approximation with one input variable using piecewise polynomial approximation with non-linear joints. These approximations are implemented in hardware using Xilinx FPGAs.



Example of such functions include: f(x)=sqrt(-ln(x)) or f(x)=x*ln(x) where x = [0,1), which are used for Gaussian noise generation (Box-Muller method) and Entropy calculation respectively.



Does anyone know any other real-life applications where compound functions need to be approximated?



My second question is on the function f(x)=sqrt(-ln(x)) over x = [0,1). This function is highly non-linear and approaches infinity as x gets close to zero. This requires floating point implementation (due to the large polynomial coefficients, which I want to avoid). Are there any transformations I am apply to the function to decompose it 2 or more functions that are more linear? (Note that ln(x) is also highly non-linear over x = [0,1))


Regards,



Dong-U Lee


Dear all,

I am working on (compound) function approximation with one input variable using piecewise polynomial approximation with non-linear joints. These approximations are implemented in hardware using Xilinx FPGAs.

Example of such functions include: f(x)=sqrt(-ln(x)) or f(x)=x*ln(x) where x = [0,1), which are used for Gaussian noise generation (Box-Muller method) and Entropy calculation respectively.

Does anyone know any other real-life applications where compound functions need to be approximated?

My second question is on the function f(x)=sqrt(-ln(x)) over x = [0,1). This function is highly non-linear and approaches infinity as x gets close to zero. This requires floating point implementation (due to the large polynomial coefficients, which I want to avoid). Are there any transformations I am apply to the function to decompose it 2 or more functions that are more linear? (Note that ln(x) is also highly non-linear over x = [0,1))

Regards,

Dong-U Lee

sqrt(1/x) is used so often that more than one modern cpu contains built-in lookup tables to generate a good starting point for a NR iteration.

My first guess would be to look for some kind of rational approximation, even if this does require a final division.

Terje

- "almost all programming can be viewed as an exercise in caching"

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required