Lookup Table Segmentation for Non-Linear Function Approximation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Computing non-linear functions in hardware or embedded systems is complex and resource-intensive, with Taylor series expansion being computationally inefficient due to high memory and processing requirements.
Innovation Solution
The use of look-up tables (LUTs) in conjunction with interpolation or extrapolation, specifically employing spline interpolation with exponentially spaced segments and spline reuse methods, to approximate non-linear functions efficiently and accurately.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Measurement precision
If Taylor series expansion is used to approximate non-linear function, then computation accuracy is improved, but memory usage and processing time increase significantly
Solution Approach 1:
The patent pre-calculates and stores function values in lookup tables during the design phase. The processor determines an integer n by finding the position of the most significant bit of input x, then directly retrieves pre-computed values from lookup tables based on n and x, avoiding real-time complex calculations and significantly reducing processing time while maintaining accuracy.
Solution Approach 2:
The patent divides the input range into segments based on the position of the most significant bit. Different lookup tables are used for different segments (e.g., n=0 for x<1, n=1 for 1≤x<2, etc.), allowing efficient retrieval for any input range while maintaining computational accuracy through segmented approximation.
2Measurement precision
If Taylor series expansion is used to approximate non-linear function, then computation accuracy is improved, but memory usage increases significantly
Solution Approach 1:
The patent pre-calculates and stores function values in lookup tables during the design phase. The processor determines an integer n by finding the position of the most significant bit of input x, then directly retrieves pre-computed values from lookup tables based on n and x, avoiding real-time complex calculations and significantly reducing processing time while maintaining accuracy.
Solution Approach 2:
The patent divides the input range into segments based on the position of the most significant bit. Different lookup tables are used for different segments (e.g., n=0 for x<1, n=1 for 1≤x<2, etc.), allowing efficient retrieval for any input range while maintaining computational accuracy through segmented approximation.
3Measurement precision
If lookup tables with fine granularity are used to improve accuracy, then computation accuracy is improved, but memory usage increases
Solution Approach 1:
The patent divides the input range into segments based on the position of the most significant bit. Different lookup tables are used for different segments (e.g., n=0 for x<1, n=1 for 1≤x<2, etc.), allowing efficient retrieval for any input range while maintaining computational accuracy through segmented approximation.
Solution Approach 2:
The patent uses interpolation to estimate function values between discrete lookup table entries. This partial approximation approach achieves sufficient accuracy for most practical applications without requiring storage of every possible input value, thereby reducing memory usage while maintaining acceptable computation accuracy.
Data Source
AI summary
Computing a non-linear function f(x) in hardware or embedded systems can be complex and resource intensive. In one or more aspects of the disclosure, a method, a computer-readable medium, and an apparatus are provided for computing a non-linear function f(x) accurately and efficiently in hardware using look-up tables (LUTs) and interpolation or extrapolation. The apparatus may be a processor. The processor computes a non-linear function f(x) for an input variable x, where f(x)=g(y(x),z(x)). The processor determines an integer n by determining a position of a most significant bit (MSB) of an input variable x. In addition, the processor determines a value for y(x) based on a first look-up table and the determined integer n. Also, the processor determines a value for z(x) based on n and the input variable x, and based on a second look-up table. Further, the processor computes f(x) based on the determined values for y(x) and z(x).