#include /* * 1/(1+x) = 1 + sum( (-x)^i, 0<=i<=n ) * S = 1 - x + x^2 - x^3 + x^4 - x^5 * = 1 - x( 1 - x + x^2 - x^3 + x^4 ) * = 1 - x( 1 - x( 1 - x + x^2 - x^3 )) * = 1 - x( 1 - x( 1 - x( 1 - x + x^2 ))) * = 1 - x( 1 - x( 1 - x( 1 - x( 1 - x )))) * S0 = 1 - x * Si+1 = 1 - x*Si * Considering scale: * S = (m - m * x / m + m * x^2 / m^2 - m * x^3 / m^3 + m * x^4 / m^4 - m * x^5 / m^5)/m = * = ( m - x(m - m*x/m + m*x^2/m^2 + m*x^3/m^3 + ... )/m)/m * = ( m - x(m - x(m - m*x/m + m*x^2/m^2 + m*x^3/m^3)/m)/m)/m * = ( m - x(m - x(m - x( m - x(m-x)/m)/m)/m)/m)/m * S0 = m - x; * Si+1 = m - x*Si/m; */ typedef unsigned int uint16_t; typedef unsigned char uint8_t; main( ) { uint16_t num, x, m = 100; uint8_t j; // m is a scale. for( x = 0; x< 100; x++ ) { num = m - x; for( j = 0; j < 50; j++ ) num = m - x*num/m; P3 = num; // For analyzer. } while(1); }