On 8/23/06, Paul Lutus <nospam / nosite.zzz> wrote:
> Peter Vanbroekhoven wrote:
>
> / ...
>
> >> 3. Facet Units doesn't seem to do temperature conversions.  Maybe it
> >> does, but I can't find any documentation on it.
> >
> > It doesn't as temperature conversions are ill-defined.
>
> No, actually, temperature conversions are perfectly well-defined.
> Unfortunately, absolute temperature conversions require two mathematical
> operations instead of one (a multiplier and an offset), which sets them
> apart from nearly all other conversions. It even sets them apart from
> temperature differential conversions.
>
> > As you know,
> > both absolute temperatures and temperature differences have the same
> > unit. Any operation on two temperatures expressed in different units
> > cannot be correct for absolute temperatures and temperature
> > differences.
>
> That is because converting a temperature differential is not the same as
> converting a temperature. But each of the operations is clearly defined.
>
> > This is an inherent problem, so we had three choices: do
> > no conversions, use the conversion for absolute temperatures, or use
> > the conversion for temperature differences.
>
> There is a third choice -- convert temperatures and temperature
> differentials separately. Name one absolute temperatures, and the other
> delta-t or something similar.
>
> It is basically a Calculus issue. You may know that taking a differential
> (or a derivative) involves the loss of information, and when the converse
> operation (integration, a term only loosely applicable here) is performed,
> a constant (usually unknown) is included to remind the practitioner about
> the lost information. In the same way, moving from a temperature to a
> differential of temperature loses information, so the reciprocal operation
> (difference to absolute) must be carefully handled (when it can be
> performed at all).
>
> Someone versed in Calculus wouldn't think of mixing functions and their
> derivatives without being vigilant that they represent different things.
> The temperature conversion problem should be looked on in the same way.
>
> > We chose the first of
> > these three. We're open to additional ideas on this.
>
> Well, this is just something to think about. I've written a lot of unit
> conversion routines over the years and I haven't considered handling
> temperatures and temperature differentials separately, but it's an obvious
> solution.

We have considered this option too, but because I started by saying
that both temperatures and temperature differentials have the same
units, I didn't arrive at that option in my reasoning. If I remember
correctly, we discarded this option because it was a bit weird for a
simple units library. This actually goes beyond the units part, it is
about interpretation. It's like you say, it's a calculus-y issue (I
think it's actually an algebra issue as it is not differentiation, but
that's not important), and we felt that that belongs in a
calculus/algebra/scientific library. So let me refine my statement
above: conversions of temperatures consisting only of a value and a
temperature unit are ill-defined. More information is needed, and we
felt back then that it should not be part of a units library. Of
course, this means we can do no conversion, so I'm considering
changing my opinion on this.

> I just noticed something. The Linux utility "units" handles both temperature
> and temperature differences, and they are distinguished by syntax:
>
> $ units "tempC(0)" tempF # absolute temperature
>    32
>
> $ units "32 degF" degC   # temperature difference
>         * 17.777778
>         / 0.05625
>
> So it seems it has been done.

We considered something like this too, but what bothers me is that
tempC, tempF, degC and degF are no actual units.

I think this is an issue with the people who started this library both
being perfectionists. None of the solutions we could think of, are
perfect.

I'll see if I can get a tempC-degC like scheme to work, and then we
can still decide this afterwards.

Peter