On Tue, Aug 11, 2009 at 11:30 PM, Jason Grout<jason-s...@creativetrax.com> wrote: > > William Stein wrote: >> Hi, >> >> I just wanted to let people know that David Ackerman -- a UW student who >> took my course on Sage last quarter -- is working (funded by NSF) on >> creating a "units package" for Sage right _now_. If anybody has any >> pseudo-sage code that involves units that they wished work, please post >> it to this thread. What do you want units to *do*? >> > > Is he doing something from scratch or is he working from the packages > that have come up from time to time here?
He is doing something from scratch. I had planned to have him work on integrating some existing package, but after evaluating that approach he said it didn't seem to make sense (at least he has a lot of experience using Sage, since he took my class). I didn't have an opinion one way or the other, but we decided to ask -- "what is a so called units package supposed to do anyways" since I honestly couldn't really tell you. I would use one to convert between Fahrenheit and Celcius, and maybe dollars and euros :-). We google around and found that Matlab didn't seem to come with a units package, but there were several third party packages -- anyway Sage isn't much like Matlab so looking there seemed pointless. Then we looked at Mathematica's included units package and read all the documentation and examples of it. That was enlightening, and suggested doing almost precisely what Robert Dodier keeps telling us to do, which is make the different units just be symbolic variables, plus have some extra table somewhere of conversions (where everything is kept as exact fractions), and add a few functions to do conversions. If you read the Mathematica docs you'll see that *all* their units package is is: * a function Convert to convert between units * a very big list of different standard units (e.g., Foot, Mile, Meter Second, etc.), which are all literally just symbolic variables. * ConvertTemperature (and 3 other convert style functions). That's it. The Sage units package will be similar, except we'll have more builtin units than Mathematica, just to one up them. For example, I think they have the "information" unit of "nibble", but for some reason they don't have bytes. We will. So you'll be able to do something like this: sage: from units import mega, kilo, byte, second, giga, minute sage: n = 94959 * kilo*byte sage: n.convert(mega*byte) ? * mega*byte sage: (6 *giga*byte/minute).convert(mega*byte/second) ? * mega*byte/second David's started by simply assembling a big table in a Sage worksheet with data about all the different units and the conversion factors. It would also be nice to have nice latex output recorded for each unit. The above doesn't sound too complicated or hard to write, but honestly I can see myself using it all the time. For example, David Harvey kept telling me tonight about writing data to disk at a rate of 6 gigabytes/minute, and I would rather think about megabytes/second, and the above little snippet would give that trivially. -- William --~--~---------~--~----~------------~-------~--~----~ To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---