Joseph Wright skrev: > Hello all, > > Those of you who take an interest in the LaTeX3 SVN may have noticed > that I've just added the beginnings of a 'l3fp' module as part of expl3. > This is intended to provide a set of floating point functions for LaTeX3. [snip] > In terms of input range, I've gone for -999999999.999999999 to > +999999999.999999999. This should be sufficient for a wide range of > purposes (for example, if you convert a dimen into a floating point > number in units pt then you are safe for any dimen TeX can handle). I was as confused by this as J.Fine, but it now seems clear that you've implemented a fixed point arithmetic package that possibly will become a floating point arithmetic package. > The design of the internals of the package is loosely following the > well-known fp package. However, that package is rather slow, at least > partly as it handles 18 digits either side of the decimal. The approach > in l3fp currently delivers addition, subtraction, multiplication and > division much faster than fp does (between about 8 and 15 times as fast > for a large number of repeated calculations). I hope this makes the > module fast enough for practical use. > > The next phase is to add some more complex functions. I'm planning to > cover trigonometry, exponential/ln and roots, plus a pseudo-random > number generator That most standard libraries primarily provide a "uniform in $[0,1]$" (or some open variation of that interval) PRNG doesn't mean it is the most natural form of a PRNG. It is entirely reasonable for an l3 core PRNG to primarily produce random bits or random integers, which could then be converted to random floats if anyone asks for it; it's easier than going the other way. > and a few utility functions. They may take a while: > getting it right is not that easy. > > Feedback on the module is very welcome, for example on which functions > to provide, bugs (there are bound to be some), etc. There are some standard floating-point arithmetic modules for MetaPost, which could perhaps provide inspiration, but on closer inspection those seem to rely on built-in primitives for logarithm and exponent (of course, one can then take a look in mp.web to see how Knuth implemented those while avoiding overflow and such, but the level of indirection is then pretty high). Two Meta*-ish operations which could well be useful in LaTeX are "Pythagorean addition" (known as hypot in the C library I think) and "Pythagorean subtraction" (given one side and the hypothenuse, find the other side). Lars Hellström