[lkml]   [2004]   [May]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: How to use floating point in a module?
Ian Kent wrote:
> On Sun, 30 May 2004 wrote:
>>Yes, if we use a real-time Linux and make a daemon cooperate very closely
>>with the driver.
>>>Maybe you could use lookup tables instead of doing floating point
>>You might be right, if the device can only be controlled to position itself
>>in say 1,000 different ways, then we could have lookup tables for 1,000
>>different intervals of (emulations of) floating-point numbers, that yield
>>1,000 different values of sin. Another table for cos, another for log10,
>>etc. But I'd still have to write my own emulations for binary operators
>>such as +, /, etc., since a 1,000*1,000 lookup table would be too big.
> Why not scaled longs (or bigger), scalled to number of significant
> digits. The Taylor series for the trig functions might be a painfull.

See the "Handbook of Mathematical Functions" by Abromawitz and Stegun,
Dover Publications (ISBN 486-61272-2, Library of Congress number
65-12253) which has some small but accurate polynomial approximations
for many functions. I have used these successfully with fixed point
rational numbers (FDRN) (which are probably the same as your scaled
longs) using 64 bit integers and the results were generally accurate to
the least significant bit when compared to values calculated using the
normal maths library and converted to FDRN representation.

Of course, the available range of values is smaller than for floats or
double and you have to be careful w.r.t. overflow etc.

Dr Peter Williams

"Learning, n. The kind of ignorance distinguishing the studious."
-- Ambrose Bierce

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 14:03    [W:0.052 / U:0.148 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site