>
>
> /***********************************************************************\
> *
> * return indicated airspeed (kts)(assume std density at sea level
> * also assume 80mv FS in A2D
> * returns airspeed in 10ths of knots
> *
> \***********************************************************************/
> int SpdLookup( ulong raw )
> {
> /*
> return (int)sqrt( raw * 200 )/10 ;
> */
>
> byte iteration ;
> unsigned long guess ;
> unsigned long last_guess ;
>
> // 1 psi = 2.13e6 counts from A/D
> // rho 2.378e-3 slugs/cu.ft - density of air at sea level
> // p(psf) = 1/2 rho(slugs/cu.ft) V^2(ft/sec)
> // p(psf) = raw / 14789 ;
> // V(ft/sec) = sqrt( 2 * p /rho )
> // 1 kt = 0.5925 ft/sec
> // V(kts) = 0.5925*sqrt( 2 * p /rho )
> // V(kts*100) = 59.25*sqrt( 2 * p /rho )
> // V(kts*100) = sqrt( (59.25^2*2*raw) /(2.378e-3*14.789e3) )
> raw *= 200ul ;
> //***********************************************************************
> //*
> //* Take a square root - Newton's method
> //*
> //***********************************************************************
> iteration = 20 ;
> last_guess = guess = raw / 128 ;
> do {
> if (guess == 0l ) guess = 1l ;
> guess += (raw / guess) ;
> guess /= 2 ;
> if (last_guess == guess) break ;
> last_guess = guess ;
> } while ( --iteration ) ;
> return MakeInt(guess/10l) ;
> }
>
> Jim Ham, Porcine Associates
> (650)326-2669 fax(650)326-1071
> "
http://www.porcine.com"
>