unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#13580: 24.2.92; regression in calc-convert-units
@ 2013-01-28 22:24 Roland Winkler
  2013-01-29  1:10 ` Jay Belanger
                   ` (2 more replies)
  0 siblings, 3 replies; 30+ messages in thread
From: Roland Winkler @ 2013-01-28 22:24 UTC (permalink / raw)
  To: 13580

start emacs -Q
start Calc
type 'k K / eV RET u c

expected result: either Emacs will ask me 'New units:' (as with
                 Emacs 23) or something else meaningful,
                 allowing me to convert 'k K / eV' to the units
                 of my choice

actual result: Calc returns 'k K / eV' expression unmodified



In GNU Emacs 24.2.92.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.12.9)
 of 2013-01-10 on lukas
Windowing system distributor `The X.Org Foundation', version 11.0.10400090
System Description:	Ubuntu 8.04.4 LTS





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-01-28 22:24 bug#13580: 24.2.92; regression in calc-convert-units Roland Winkler
@ 2013-01-29  1:10 ` Jay Belanger
  2013-01-29  2:55 ` Jay Belanger
  2013-01-30 14:20 ` Jay Belanger
  2 siblings, 0 replies; 30+ messages in thread
From: Jay Belanger @ 2013-01-29  1:10 UTC (permalink / raw)
  To: Roland Winkler; +Cc: 13580


> start emacs -Q
> start Calc
> type 'k K / eV RET u c

Oops; Calc is inelegantly distinguishing between expressions with no
units and expressions where the units cancel.
I'll fix that as soon as I get to a computer I can commit from.





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-01-28 22:24 bug#13580: 24.2.92; regression in calc-convert-units Roland Winkler
  2013-01-29  1:10 ` Jay Belanger
@ 2013-01-29  2:55 ` Jay Belanger
  2013-01-30 14:20 ` Jay Belanger
  2 siblings, 0 replies; 30+ messages in thread
From: Jay Belanger @ 2013-01-29  2:55 UTC (permalink / raw)
  To: 13580


Also, what's happening here is that since the units all cancel in the
given expression, Calc simply returns the expression, with the units
simplified.  (That it doesn't properly simplify that particular
expression is a bug to be fixed, but it isn't a regression.)

The given example should probably be handled like an expression
which has no units (either simply simplify it or prompt for "Old units"
and "New units").  The Emacs 23 behavior, where new units were
prompted for but essentially ignored, doesn't seem right.
The overall fix depends on a non-regression fix (otherwise, it is
replacing one wrong behavior for another).  I'll make the fix in the
trunk when I get to a computer I can commit from, but I don't know if
the old behavior should be put back into the emacs-24 branch.






^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-01-28 22:24 bug#13580: 24.2.92; regression in calc-convert-units Roland Winkler
  2013-01-29  1:10 ` Jay Belanger
  2013-01-29  2:55 ` Jay Belanger
@ 2013-01-30 14:20 ` Jay Belanger
  2013-02-07 17:38   ` Roland Winkler
  2 siblings, 1 reply; 30+ messages in thread
From: Jay Belanger @ 2013-01-30 14:20 UTC (permalink / raw)
  To: 13580-done


> start emacs -Q
> start Calc
> type 'k K / eV RET u c
>
> expected result: either Emacs will ask me 'New units:' (as with
>                  Emacs 23) or something else meaningful,

This has been fixed in bzr.





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-01-30 14:20 ` Jay Belanger
@ 2013-02-07 17:38   ` Roland Winkler
  2013-02-07 19:53     ` Jay Belanger
  0 siblings, 1 reply; 30+ messages in thread
From: Roland Winkler @ 2013-02-07 17:38 UTC (permalink / raw)
  To: belanger; +Cc: 13580

On Wed Jan 30 2013 Jay Belanger wrote:
> 
> > start emacs -Q
> > start Calc
> > type 'k K / eV RET u c
> >
> > expected result: either Emacs will ask me 'New units:' (as with
> >                  Emacs 23) or something else meaningful,
> 
> This has been fixed in bzr.

I am sorry, I do not understand the new behavior: Why does
calc-convert-units ask now

  (The expression is unitless when simplified) Old Units: 

if the expression is dimensionless? In physics "unitless" is
different from "dimensionless", it is quite common to use
dimensionless units. In other words, I do not quite understand what
the change in calc-convert-units was supposed to fix or improve
here. calc-convert-units should take such dimensionless expressions
from the stack as it used to with any such expressions (expressions
with dimensions or dimensionless expressions). The old behavior was
fine in that respect.

From a different perspective: calc-convert-units in the pretest
branch is still broken, I just installed 24.2.93.1 which still shows
the bug. The current behavior is a regression as compared with
previous emacs versions and rather annoying for me.

Roland





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-07 17:38   ` Roland Winkler
@ 2013-02-07 19:53     ` Jay Belanger
  2013-02-07 20:11       ` Roland Winkler
  2013-02-07 20:24       ` Roland Winkler
  0 siblings, 2 replies; 30+ messages in thread
From: Jay Belanger @ 2013-02-07 19:53 UTC (permalink / raw)
  To: Roland Winkler; +Cc: 13580


> I am sorry, I do not understand the new behavior: Why does
> calc-convert-units ask now
>
>   (The expression is unitless when simplified) Old Units: 
>
> if the expression is dimensionless? 

It says unitless, not dimensionless.  They are not the same thing.

> From a different perspective: calc-convert-units in the pretest
> branch is still broken,

Not that I can see.  If there are units (whether dimensionless or not),
it will work with those.  If there are not units to convert, it will ask
what units you intended.

For example, 
convert:
 3
There are no units here, so Calc asks for the old units.  This behavior
is as old as Calc.
convert:
 3 ft/in
This is simply 36.  There are no units here, so Calc asks for the old
units.  Since someone might wonder why Calc is asking for units, there
is a message pointing out the expression doesn't have any.
convert:
 3 rad
This is dimensionless but not unitless.  Since there is a unit to work
with, Calc doesn't ask for one.  

Which behavior do you consider buggy?





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-07 19:53     ` Jay Belanger
@ 2013-02-07 20:11       ` Roland Winkler
  2013-02-07 20:18         ` Jay Belanger
  2013-02-07 20:24       ` Roland Winkler
  1 sibling, 1 reply; 30+ messages in thread
From: Roland Winkler @ 2013-02-07 20:11 UTC (permalink / raw)
  To: jay.p.belanger; +Cc: 13580

On Thu Feb 7 2013 Jay Belanger wrote:
> Which behavior do you consider buggy?

Please see my original bug report. Nothing has changed with GNU
Emacs 24.2.93.1.





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-07 20:11       ` Roland Winkler
@ 2013-02-07 20:18         ` Jay Belanger
  2013-02-07 20:23           ` Roland Winkler
  0 siblings, 1 reply; 30+ messages in thread
From: Jay Belanger @ 2013-02-07 20:18 UTC (permalink / raw)
  To: Roland Winkler; +Cc: 13580


> Please see my original bug report.

I did.  That bug has been fixed.  I tried it again to make sure. 
If you have a new bug to report, please give the details.





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-07 20:18         ` Jay Belanger
@ 2013-02-07 20:23           ` Roland Winkler
  2013-02-07 20:33             ` Jay Belanger
       [not found]             ` <87pq0bn9st.fsf@gmail.com>
  0 siblings, 2 replies; 30+ messages in thread
From: Roland Winkler @ 2013-02-07 20:23 UTC (permalink / raw)
  To: jay.p.belanger; +Cc: 13580

On Thu Feb 7 2013 Jay Belanger wrote:
> 
> > Please see my original bug report.
> 
> I did.  That bug has been fixed.  I tried it again to make sure. 
> If you have a new bug to report, please give the details.

You changed the trunk, but not the pretest branch.





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-07 19:53     ` Jay Belanger
  2013-02-07 20:11       ` Roland Winkler
@ 2013-02-07 20:24       ` Roland Winkler
  2013-02-07 20:39         ` Jay Belanger
  1 sibling, 1 reply; 30+ messages in thread
From: Roland Winkler @ 2013-02-07 20:24 UTC (permalink / raw)
  To: jay.p.belanger; +Cc: 13580

On Thu Feb 7 2013 Jay Belanger wrote:
> convert:
>  3 ft/in
> This is simply 36.  There are no units here, so Calc asks for the old
> units.  Since someone might wonder why Calc is asking for units, there
> is a message pointing out the expression doesn't have any.

Please recognize the difference between dimensionless and unitless.
3 ft/in is dimensionless, but it has the unit "ft/in". 
As calc-convert-units is about converting units and (I suppose)
nothing else, there is no need to ask the user here. If the user
entered "kg" as the old unit of "3 ft / in" this makes no sense.

Please, trust the user she knows what she wants. The new behavior is
a regression.

Roland





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-07 20:23           ` Roland Winkler
@ 2013-02-07 20:33             ` Jay Belanger
       [not found]             ` <87pq0bn9st.fsf@gmail.com>
  1 sibling, 0 replies; 30+ messages in thread
From: Jay Belanger @ 2013-02-07 20:33 UTC (permalink / raw)
  To: Roland Winkler; +Cc: 13580, emacs-devel


> You changed the trunk, but not the pretest branch.

The old behavior was buggy, and the pretest behavior is buggy. 
I'd be happy to put a fix in the pretest branch, but I think currently
there are only supposed to be bugfixes in the pretest branch for
regressions, and I'm not sure this counts as one. 





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-07 20:24       ` Roland Winkler
@ 2013-02-07 20:39         ` Jay Belanger
  2013-02-07 20:55           ` Roland Winkler
  0 siblings, 1 reply; 30+ messages in thread
From: Jay Belanger @ 2013-02-07 20:39 UTC (permalink / raw)
  To: Roland Winkler; +Cc: 13580


> Please recognize the difference between dimensionless and unitless.
> 3 ft/in is dimensionless, but it has the unit "ft/in". 

"The expression is unitless when simplified"

> If the user entered "kg" as the old unit of "3 ft / in" this makes no
> sense.

Of course it does, and Calc has supported this behavior for years.
When Calc asks for Old Units:...  New Units:...,
it is regarding the expression on the stack as the coefficient of the
old units. 






^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
       [not found]             ` <87pq0bn9st.fsf@gmail.com>
@ 2013-02-07 20:40               ` Glenn Morris
  2013-02-08  1:29                 ` Jay Belanger
  0 siblings, 1 reply; 30+ messages in thread
From: Glenn Morris @ 2013-02-07 20:40 UTC (permalink / raw)
  To: jay.p.belanger; +Cc: 13580, Roland Winkler

Jay Belanger wrote:

> The old behavior was buggy, and the pretest behavior is buggy. 

Sounds like something that does not need fixing in emacs-24 then.

> I'd be happy to put a fix in the pretest branch, but I think currently
> there are only supposed to be bugfixes in the pretest branch for
> regressions, and I'm not sure this counts as one. 

If you are absolutely convinced the patch is safe, you can put it in
emacs-24 if you like.





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-07 20:39         ` Jay Belanger
@ 2013-02-07 20:55           ` Roland Winkler
  2013-02-07 21:11             ` Jay Belanger
                               ` (2 more replies)
  0 siblings, 3 replies; 30+ messages in thread
From: Roland Winkler @ 2013-02-07 20:55 UTC (permalink / raw)
  To: jay.p.belanger; +Cc: 13580

On Thu Feb 7 2013 Jay Belanger wrote:
> > Please recognize the difference between dimensionless and unitless.
> > 3 ft/in is dimensionless, but it has the unit "ft/in". 
> 
> "The expression is unitless when simplified"

I am sorry, this is a rather unique interpretation of the concept of
"dimensions" vs "units" in physics.  Is there no other physicist
reading this?





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-07 20:55           ` Roland Winkler
@ 2013-02-07 21:11             ` Jay Belanger
  2013-02-08  8:33               ` Eli Zaretskii
       [not found]             ` <87d2wb3k4e.fsf@gmail.com>
  2013-02-08  8:21             ` Eli Zaretskii
  2 siblings, 1 reply; 30+ messages in thread
From: Jay Belanger @ 2013-02-07 21:11 UTC (permalink / raw)
  To: 13580



>> > Please recognize the difference between dimensionless and unitless.
>> > 3 ft/in is dimensionless, but it has the unit "ft/in". 
>> 
>> "The expression is unitless when simplified"
>
> I am sorry, this is a rather unique interpretation of the concept of
> "dimensions" vs "units" in physics.

I honestly have no idea what you are talking about, but you certainly
aren't addressing what I am saying.  Please respond to what I write.
I've been consistently talking about units, not dimensions; I have given
no interpretation of "dimensions" vs "units".  The expression above has
no units when simplified; that's a pretty straightforward statement.





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
       [not found]             ` <87d2wb3k4e.fsf@gmail.com>
@ 2013-02-07 21:19               ` Roland Winkler
  0 siblings, 0 replies; 30+ messages in thread
From: Roland Winkler @ 2013-02-07 21:19 UTC (permalink / raw)
  To: jay.p.belanger; +Cc: 13580

On Thu Feb 7 2013 Jay Belanger wrote:
> 
> >> > Please recognize the difference between dimensionless and unitless.
> >> > 3 ft/in is dimensionless, but it has the unit "ft/in". 
> >> 
> >> "The expression is unitless when simplified"
> >
> > I am sorry, this is a rather unique interpretation of the concept of
> > "dimensions" vs "units" in physics.
> 
> I honestly have no idea what you are talking about, but you
> certainly aren't addressing what I am saying. Please respond to
> what I write. I've been consistently talking about units, not
> dimensions; I have given no interpretation of "dimensions" vs
> "units". The expression above has no units when simplified; that's
> a pretty straightforward statement.

I give up





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-07 20:40               ` Glenn Morris
@ 2013-02-08  1:29                 ` Jay Belanger
  2013-02-08  1:51                   ` Glenn Morris
  0 siblings, 1 reply; 30+ messages in thread
From: Jay Belanger @ 2013-02-08  1:29 UTC (permalink / raw)
  To: Glenn Morris; +Cc: 13580

Glenn Morris <rgm@gnu.org> writes:

> Jay Belanger wrote:
>
>> The old behavior was buggy, and the pretest behavior is buggy. 
>
> Sounds like something that does not need fixing in emacs-24 then.

Okay, then. 
Particular since:
  * the difference between the old behavior and the pretest behavior is
    that one bug was fixed, making it easier to see another bug which
    had been around a while (the pretest buggy behavior wasn't new),
  * the changes since the pretest have been simple, but not trivial,
I'll leave the pretest alone.





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-08  1:29                 ` Jay Belanger
@ 2013-02-08  1:51                   ` Glenn Morris
  0 siblings, 0 replies; 30+ messages in thread
From: Glenn Morris @ 2013-02-08  1:51 UTC (permalink / raw)
  To: jay.p.belanger; +Cc: 13580

Jay Belanger wrote:

>   * the difference between the old behavior and the pretest behavior is
>     that one bug was fixed, making it easier to see another bug which
>     had been around a while (the pretest buggy behavior wasn't new),
>   * the changes since the pretest have been simple, but not trivial,
> I'll leave the pretest alone.

Sounds like the right call to me.





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-07 20:55           ` Roland Winkler
  2013-02-07 21:11             ` Jay Belanger
       [not found]             ` <87d2wb3k4e.fsf@gmail.com>
@ 2013-02-08  8:21             ` Eli Zaretskii
  2 siblings, 0 replies; 30+ messages in thread
From: Eli Zaretskii @ 2013-02-08  8:21 UTC (permalink / raw)
  To: Roland Winkler; +Cc: 13580

> Date: Thu, 7 Feb 2013 14:55:37 -0600
> From: "Roland Winkler" <winkler@gnu.org>
> Cc: 13580@debbugs.gnu.org
> 
> On Thu Feb 7 2013 Jay Belanger wrote:
> > > Please recognize the difference between dimensionless and unitless.
> > > 3 ft/in is dimensionless, but it has the unit "ft/in". 
> > 
> > "The expression is unitless when simplified"
> 
> I am sorry, this is a rather unique interpretation of the concept of
> "dimensions" vs "units" in physics.  Is there no other physicist
> reading this?

I am, but AFAIU this is not an issue whether dimensionless and
unitless are the same (they are not).  The issue is how this
makes a difference in relevant use cases with Calc.

So I suggest that you show several examples where the new behavior is
not what the user will want, and propose a better behavior in those
cases.  Up until now, the discussion here didn't show enough clear
examples for me to make up my mind on this issue; perhaps Jay is
unconvinced for the same reason.





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-07 21:11             ` Jay Belanger
@ 2013-02-08  8:33               ` Eli Zaretskii
  2013-02-08 14:30                 ` Jay Belanger
  0 siblings, 1 reply; 30+ messages in thread
From: Eli Zaretskii @ 2013-02-08  8:33 UTC (permalink / raw)
  To: jay.p.belanger; +Cc: 13580

> From: Jay Belanger <jay.p.belanger@gmail.com>
> Date: Thu, 07 Feb 2013 15:11:58 -0600
> 
> I've been consistently talking about units, not dimensions; I have given
> no interpretation of "dimensions" vs "units".  The expression above has
> no units when simplified; that's a pretty straightforward statement.

He is talking about this (see
http://en.wikipedia.org/wiki/Dimensionless_quantity):

  In dimensional analysis, a dimensionless quantity or quantity of
  dimension one is a quantity without an associated physical
  dimension. It is thus a "pure" number, and as such always has a
  dimension of 1. [...]

  Even though a dimensionless quantity has no physical dimension
  associated with it, it can still have dimensionless units. To show the
  quantity being measured (for example mass fraction or mole fraction),
  it is sometimes helpful to use the same units in both the numerator
  and denominator (kg/kg or mol/mol). The quantity may also be given as
  a ratio of two different units that have the same dimension (for
  instance, light years over meters). This may be the case when
  calculating slopes in graphs, or when making unit conversions. Such
  notation does not indicate the presence of physical dimensions, and is
  purely a notational convention. Other common dimensionless units are
  % (= 0.01),  ‰ (= 0.001), [...] and angle units (degrees, radians, grad).

Therefore, "dimensionless" and "unitless" is not the same, and you see
above prominent examples of such dimensionless units.

IOW, removing dimensions of an expression as part of simplifying it
might sometimes lose information.  E.g., dividing the length of a
circular arc by its radius will give you m/m, but the natural units of
this are radians or degrees, not lack of units, and talking about
"unitless" in this case might make little sense to a user who _knows_
she is computing an angle.






^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-08  8:33               ` Eli Zaretskii
@ 2013-02-08 14:30                 ` Jay Belanger
  2013-02-08 14:49                   ` Eli Zaretskii
  2013-02-08 15:41                   ` Jay Belanger
  0 siblings, 2 replies; 30+ messages in thread
From: Jay Belanger @ 2013-02-08 14:30 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 13580


>> I've been consistently talking about units, not dimensions; I have given
>> no interpretation of "dimensions" vs "units".  The expression above has
>> no units when simplified; that's a pretty straightforward statement.
>
> He is talking about this (see
> http://en.wikipedia.org/wiki/Dimensionless_quantity):

I've indicated that I know what dimensionless means; I've been
consistently talking about unitless because that's what
calc-convert-units works with.  Whether something is dimensionless or
not is irrelevant to Calc.

> Therefore, "dimensionless" and "unitless" is not the same,

That's pretty much a direct quote of what I said before.

> IOW, removing dimensions of an expression as part of simplifying it
> might sometimes lose information.  E.g., dividing the length of a
> circular arc by its radius will give you m/m, but the natural units of
> this are radians or degrees, not lack of units, and talking about
> "unitless" in this case might make little sense to a user who _knows_
> she is computing an angle.

Sure, but if a user asks Calc to work with m/m, the classic Calc
behavior was for Calc to ask for a new unit, then basically ignore it
and cancel the units.  If the user put in "3 m/m", "New units: rad", the
result would not be "3", not "3 rad".  (Behind the scenes the new unit
would be introduced but then disappear.)  It ended up just simplifying
the units.  Asking for unused information seems like a bug.  This was
changed so that it wouldn't ask for the essentially unused information.
Since Calc then acts without informing the user, I added information and
allowed the user to treat the expression as unitless.  That is the way I
would like to use it.  But it seems like there are two reasonable
behaviors when the units cancel:
 (1) Simplify the expression.  (The 24 branch behavior.)
 (2) Treat it like a unitless expression. (The trunk behavior.)
Changing from the classic behavior to (1) was fixing a bug; when I heard
a complaint about the lack of information that (1) provided, I changed
to (2).
Perhaps Calc should stick to (1), and let the user deal with the
simplified expression. 

Or: What do you suggest? 





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-08 14:30                 ` Jay Belanger
@ 2013-02-08 14:49                   ` Eli Zaretskii
  2013-02-08 14:56                     ` Jay Belanger
  2013-02-09  4:57                     ` Roland Winkler
  2013-02-08 15:41                   ` Jay Belanger
  1 sibling, 2 replies; 30+ messages in thread
From: Eli Zaretskii @ 2013-02-08 14:49 UTC (permalink / raw)
  To: jay.p.belanger; +Cc: 13580, Roland Winkler

> From: Jay Belanger <jay.p.belanger@gmail.com>
> Cc: 13580@debbugs.gnu.org
> CC: jay.p.belanger@gmail.com
> Date: Fri, 08 Feb 2013 08:30:43 -0600
> 
> > He is talking about this (see
> > http://en.wikipedia.org/wiki/Dimensionless_quantity):
> 
> I've indicated that I know what dimensionless means

Sorry about that.  I wanted to make sure everyone is on the same page
in this regard.

> Sure, but if a user asks Calc to work with m/m, the classic Calc
> behavior was for Calc to ask for a new unit, then basically ignore it
> and cancel the units.  If the user put in "3 m/m", "New units: rad", the
> result would not be "3", not "3 rad".  (Behind the scenes the new unit
> would be introduced but then disappear.)  It ended up just simplifying
> the units.  Asking for unused information seems like a bug.  This was
> changed so that it wouldn't ask for the essentially unused information.
> Since Calc then acts without informing the user, I added information and
> allowed the user to treat the expression as unitless.  That is the way I
> would like to use it.  But it seems like there are two reasonable
> behaviors when the units cancel:
>  (1) Simplify the expression.  (The 24 branch behavior.)
>  (2) Treat it like a unitless expression. (The trunk behavior.)
> Changing from the classic behavior to (1) was fixing a bug; when I heard
> a complaint about the lack of information that (1) provided, I changed
> to (2).
> Perhaps Calc should stick to (1), and let the user deal with the
> simplified expression. 
> 
> Or: What do you suggest? 

I'd rather hope that Roland will suggest the alternative behavior he
would like to see instead.





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-08 14:49                   ` Eli Zaretskii
@ 2013-02-08 14:56                     ` Jay Belanger
  2013-02-09  4:57                     ` Roland Winkler
  1 sibling, 0 replies; 30+ messages in thread
From: Jay Belanger @ 2013-02-08 14:56 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 13580, Roland Winkler


>> I've indicated that I know what dimensionless means
>
> Sorry about that.  I wanted to make sure everyone is on the same page
> in this regard.

Thanks; that's a good idea.

>> Perhaps Calc should stick to (1), and let the user deal with the
>> simplified expression. 
>> 
>> Or: What do you suggest? 
>
> I'd rather hope that Roland will suggest the alternative behavior he
> would like to see instead.

A concrete suggestion would be nice, but should take into account the
different uses for expressions where the units cancel.





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-08 14:30                 ` Jay Belanger
  2013-02-08 14:49                   ` Eli Zaretskii
@ 2013-02-08 15:41                   ` Jay Belanger
  1 sibling, 0 replies; 30+ messages in thread
From: Jay Belanger @ 2013-02-08 15:41 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 13580


> Sure, but if a user asks Calc to work with m/m, the classic Calc
> behavior was for Calc to ask for a new unit, then basically ignore it
> and cancel the units.  If the user put in "3 m/m", "New units: rad", the
> result would not be "3", not "3 rad".  (Behind the scenes the new unit
> would be introduced but then disappear.) 

This behavior was inconsistent, by the way.
That might be related to a simplification bug I mentioned earlier in
this thread; I'll look into that.





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-08 14:49                   ` Eli Zaretskii
  2013-02-08 14:56                     ` Jay Belanger
@ 2013-02-09  4:57                     ` Roland Winkler
  2013-02-09 15:08                       ` Jay Belanger
  1 sibling, 1 reply; 30+ messages in thread
From: Roland Winkler @ 2013-02-09  4:57 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 13580

On Fri Feb 8 2013 Eli Zaretskii wrote:
> > > He is talking about this (see
> > > http://en.wikipedia.org/wiki/Dimensionless_quantity):
> > 
> > I've indicated that I know what dimensionless means
> 
> Sorry about that.  I wanted to make sure everyone is on the same page
> in this regard.

This wikipedia page is about "dimensionless quantities", and that's
very different from dimensionless units. Distance, mass, energy,
they can all be expressed in dimensionless units. Such dimensionless
units are used all the time in physics. Strangely, I can give you
zillions of references in (more advanced) textbooks that use them.
But nobody bothers to explain this concept in general terms.

> I'd rather hope that Roland will suggest the alternative behavior he
> would like to see instead.

Let's focus on what calc-convert-units should do (and mostly has
been doing previously):

Consider the equality

   1 mph = 0.44704 m / s     (1)

which we can read as a task for calc-convert-units:

  converting "1 mph" to the new unit "m / s" gives "0.44704 m / s"

We can manipulate Eq. (1) in lots of ways so that it is once again
an equality that we can interpret as a different task for
calc-convert-units, for example

  1 mph s = 0.44704 m      (2)
  converting "1 mph s" to the new unit "m" gives "0.44704 m"

  1 mph s / m = 0.44704      (3)
  converting "1 mph s / m" to the new unit "1" gives "0.44704"

  1 = 0.44704 m / (s mph)      (4)
  converting "1" to the new unit "m/(s mph)" gives "0.44704"

The above is a very consistent scheme as it corresponds to equality
transformations: if previously the left-hand-side of one of these
equations was on the Calc stack, it gets replaced by an "equal"
expression, very similar to

  10 = 8#12 = 16#A

Equations (3) and (4) correspond to "dimensionless" expressions: we
do have units (which do NOT cancel), but the dimensions of these
units cancel on each side of these equations. (The dimension of "m"
is "length", for "s" it is "time", for "mph" it is "velocity".) But
conceptually there is really no difference between Eqs. (1) - (4).

Now where is the problem?

- (1) and (2) are fine with old (GNU Emacs 23) and more recent
  (24.2.93 and 24.3.50) versions of Emacs

- (3) is essentially fine with Emacs 23 ("1" is not recognized as
  new unit, but calc-convert-units requires that the new unit is
  specified as "si", which, I believe, in this case boils down to
  "simplify". - Not prefect, but ok. The final result is correct).

  With (3) and 24.2.93, calc-convert-units does not do anything,
  an annoying regression.

  With (3) and 24.3.50, calc-convert-units requests an "old unit",
  which can be something like "kg". If the new unit is chosen as
  "si" (to keep things simple), calc-convert-units returns
  "0.44704 kg". Clearly, the new expression on the stack is not
  equal to the old expression on the stack before calc-convert-units
  was cold. That's very irritating for a command that is supposed to
  perform a conversion. It is like having a command for converting
  octal numbers into decimal numbers, which, during the conversion,
  also get multiplied by some factor 42.

  I just noticed: With (3) and old unit chosen as "kg",
  calc-convert-units offers as default for the new unit again "kg".
  Accepting this default gives "0.44704" (dimensionless).
  Here I do not understand the rationale either.

- (4) fails with old and new versions of Emacs. If the old
  expression has no units at all, calc-convert-units asks for an old
  unit ("1"), then for a new unit ("m / (s mph)"), but then it
  simply returns "1" without any conversion. [In my own work, a
  conversion of type (4) rarely comes up, so it has been less
  annoying for me that it is not properly implemented. Still it is
  inconsistent.]

So what am I proposing for calc-convert-units?

There should be a way to perform the conversions (1) - (4) as
described above such that each time the conversion corresponds to an
equality. If some people like that in case (3) or (4) they can
specify an extra unit for the old expression on the stack instead of
dealing with dimensionless expressions, that's fine with me. But
there should be a Calc option to disable this, thus implementing a
conversion algorithm that is consistently based on proper
equalities. Please, trust the user she knows what she wants when
performing conversions (1) - (4).

In a Deluxe version of calc-convert-units, the user could also get
informed about the dimension of the original expression (length,
time, energy, etc.) so that she can choose the new unit accordingly.
There could also be a warning / error message if the dimension of
the old expression and the dimension of the new unit do not match.
I know that Calc has been able to work around such inconsistent
dimensions. However, I do not consider this a feature, but more a
source of errors in daily life. Most often, the problem was really a
typo earlier in the calculation that can be detected by a warning
about inconsistent dimensions.

Roland





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-09  4:57                     ` Roland Winkler
@ 2013-02-09 15:08                       ` Jay Belanger
  2013-02-09 16:14                         ` Roland Winkler
  0 siblings, 1 reply; 30+ messages in thread
From: Jay Belanger @ 2013-02-09 15:08 UTC (permalink / raw)
  To: Roland Winkler; +Cc: 13580


"Roland Winkler" <winkler@gnu.org> writes:
...
> Let's focus on what calc-convert-units should do (and mostly has
> been doing previously):
>
> Consider the equality
>
>    1 mph = 0.44704 m / s     (1)
>
> which we can read as a task for calc-convert-units:
>
>   converting "1 mph" to the new unit "m / s" gives "0.44704 m / s"
>
> We can manipulate Eq. (1) in lots of ways so that it is once again
> an equality that we can interpret as a different task for
> calc-convert-units, for example
>
>   1 mph s = 0.44704 m      (2)
>   converting "1 mph s" to the new unit "m" gives "0.44704 m"
>
>   1 mph s / m = 0.44704      (3)
>   converting "1 mph s / m" to the new unit "1" gives "0.44704"
>
>   1 = 0.44704 m / (s mph)      (4)
>   converting "1" to the new unit "m/(s mph)" gives "0.44704"
...
> Equations (3) and (4) correspond to "dimensionless" expressions: we
> do have units (which do NOT cancel),

The expression is unitless when simplified.  mph s / m is equal to
0.44704, which has no units, and can easily be regarded as another way
of writing 0.44704.  The user can regard it either way.

> - (1) and (2) are fine with old (GNU Emacs 23) and more recent
>   (24.2.93 and 24.3.50) versions of Emacs

Okay.

>   With (3) and 24.3.50, calc-convert-units requests an "old unit",
>   which can be something like "kg". 

Right; as mentioned above, some might wish to interpret the expression
as simply a number.  Ignoring the "Old inputs:" (say, by hitting
return) will bring about the GNU Emacs 23 behavior.  I would think
giving users the choice is good. 

>   If the new unit is chosen as "si" (to keep things simple),
>   calc-convert-units returns "0.44704 kg". Clearly, the new expression
>   on the stack is not equal to the old expression on the stack before
>   calc-convert-units was cold. That's very irritating for a command
>   that is supposed to perform a conversion.

This is also how emacs 23 works and has probably been around 
for a while; it isn't anything new.  But I'll look into it.

>   I just noticed: With (3) and old unit chosen as "kg",
>   calc-convert-units offers as default for the new unit again "kg".

That's when you do the same thing a second time, after the first time
you (implicitly) said that you wanted your mass units in kg.
The check to make sure that the new unit isn't the same as the old unit
probably breaks because you the new units were previously given as "si"
and not "kg" directly.  
I'll look into that.

> - (4) fails with old and new versions of Emacs. If the old
>   expression has no units at all, calc-convert-units asks for an old
>   unit ("1"), then for a new unit ("m / (s mph)"), but then it
>   simply returns "1" without any conversion.

The unit conversions does some simplifications, and 0.44704 m / (s mph) 
simplifies to 1.  This is old behavior.

> So what am I proposing for calc-convert-units?
>
> There should be a way to perform the conversions (1) - (4) as
> described above such that each time the conversion corresponds to an
> equality.

The only one which doesn't work is (4), which has never worked.  I'll
look into it.

> If some people like that in case (3) or (4) they can
> specify an extra unit for the old expression on the stack instead of
> dealing with dimensionless expressions, that's fine with me.

Okay.  The user can do it that way, or ignore the "Old unit:" part and
get the classic behavior.  Whatever the user wants.

> Please, trust the user she knows what she wants when

That's what happens.

> In a Deluxe version of calc-convert-units, the user could also get
> informed about the dimension of the original expression (length,
> time, energy, etc.) so that she can choose the new unit accordingly.
> There could also be a warning / error message if the dimension of
> the old expression and the dimension of the new unit do not match.
> I know that Calc has been able to work around such inconsistent
> dimensions. However, I do not consider this a feature, but more a
> source of errors in daily life.

It's a way of trusting the user to do what she wants.  But an option to
at least check that the units match up was previously put in, at your
request. 

Anyhow, the issues in the trunk are old issues which were previously
unnoticed (or simply not reported), but should be taken care of.

Thanks for pointing them out; I will work on them.

Jay





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-09 15:08                       ` Jay Belanger
@ 2013-02-09 16:14                         ` Roland Winkler
  2013-02-09 23:49                           ` Jay Belanger
  0 siblings, 1 reply; 30+ messages in thread
From: Roland Winkler @ 2013-02-09 16:14 UTC (permalink / raw)
  To: jay.p.belanger; +Cc: 13580

On Sat Feb 9 2013 Jay Belanger wrote:
> > If some people like that in case (3) or (4) they can
> > specify an extra unit for the old expression on the stack instead of
> > dealing with dimensionless expressions, that's fine with me.
> 
> Okay.  The user can do it that way, or ignore the "Old unit:" part and
> get the classic behavior.  Whatever the user wants.

I suggest to give Calc a user option that completely disables the
question about an "old unit". If this pops up sometimes, but there
is no need for this in a consistent work flow, such a question can
be very distracting. (As you surely have noticed by now: I use
calc-convert-units all the time!)

> Thanks for pointing them out; I will work on them.

Thanks,

Roland





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-09 16:14                         ` Roland Winkler
@ 2013-02-09 23:49                           ` Jay Belanger
  2013-02-10  0:19                             ` Roland Winkler
  0 siblings, 1 reply; 30+ messages in thread
From: Jay Belanger @ 2013-02-09 23:49 UTC (permalink / raw)
  To: Roland Winkler; +Cc: 13580


"Roland Winkler" <winkler@gnu.org> writes:
...
>> Okay.  The user can do it that way, or ignore the "Old unit:" part and
>> get the classic behavior.  Whatever the user wants.
>
> I suggest to give Calc a user option that completely disables the
> question about an "old unit".

Okay; if the variable `calc-allow-units-as-numbers' is nil, then that
is disabled.







^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-09 23:49                           ` Jay Belanger
@ 2013-02-10  0:19                             ` Roland Winkler
  2013-02-10  0:41                               ` Jay Belanger
  0 siblings, 1 reply; 30+ messages in thread
From: Roland Winkler @ 2013-02-10  0:19 UTC (permalink / raw)
  To: jay.p.belanger; +Cc: 13580

On Sat Feb 9 2013 Jay Belanger wrote:
> Okay; if the variable `calc-allow-units-as-numbers' is nil, then that
> is disabled.

Thanks. - Shouldn't the name be reversed: calc-allow-numbers-as-units?
As a physicist, I would really prefer calc-allow-dimensionless-units.

Roland





^ permalink raw reply	[flat|nested] 30+ messages in thread

* bug#13580: 24.2.92; regression in calc-convert-units
  2013-02-10  0:19                             ` Roland Winkler
@ 2013-02-10  0:41                               ` Jay Belanger
  0 siblings, 0 replies; 30+ messages in thread
From: Jay Belanger @ 2013-02-10  0:41 UTC (permalink / raw)
  To: Roland Winkler; +Cc: 13580


>> Okay; if the variable `calc-allow-units-as-numbers' is nil, then that
>> is disabled.
>
> Thanks. - Shouldn't the name be reversed: calc-allow-numbers-as-units?

Well, there's a lot of information to be put into a variable name, but I
thought of it as short for
 "Allow (expressions involving) units (to be treated) as numbers (in certain
  situations ...)"
But ideally, the variable will probably be ignored or set once and then
ignored.





^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2013-02-10  0:41 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-28 22:24 bug#13580: 24.2.92; regression in calc-convert-units Roland Winkler
2013-01-29  1:10 ` Jay Belanger
2013-01-29  2:55 ` Jay Belanger
2013-01-30 14:20 ` Jay Belanger
2013-02-07 17:38   ` Roland Winkler
2013-02-07 19:53     ` Jay Belanger
2013-02-07 20:11       ` Roland Winkler
2013-02-07 20:18         ` Jay Belanger
2013-02-07 20:23           ` Roland Winkler
2013-02-07 20:33             ` Jay Belanger
     [not found]             ` <87pq0bn9st.fsf@gmail.com>
2013-02-07 20:40               ` Glenn Morris
2013-02-08  1:29                 ` Jay Belanger
2013-02-08  1:51                   ` Glenn Morris
2013-02-07 20:24       ` Roland Winkler
2013-02-07 20:39         ` Jay Belanger
2013-02-07 20:55           ` Roland Winkler
2013-02-07 21:11             ` Jay Belanger
2013-02-08  8:33               ` Eli Zaretskii
2013-02-08 14:30                 ` Jay Belanger
2013-02-08 14:49                   ` Eli Zaretskii
2013-02-08 14:56                     ` Jay Belanger
2013-02-09  4:57                     ` Roland Winkler
2013-02-09 15:08                       ` Jay Belanger
2013-02-09 16:14                         ` Roland Winkler
2013-02-09 23:49                           ` Jay Belanger
2013-02-10  0:19                             ` Roland Winkler
2013-02-10  0:41                               ` Jay Belanger
2013-02-08 15:41                   ` Jay Belanger
     [not found]             ` <87d2wb3k4e.fsf@gmail.com>
2013-02-07 21:19               ` Roland Winkler
2013-02-08  8:21             ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).