-10^2 (OT)

Dar Scott dsc at swcp.com
Tue May 27 23:18:00 EDT 2003


On Tuesday, May 27, 2003, at 08:29 PM, Raymond E. Griffith wrote:
>> On Thursday, May 22, 2003, at 11:32 AM, David Squance wrote:
>>
>>> -10*-10 is ambiguous, since you have two operations adjacent to each
>>> other
>>> (ultra picky, I know)
>>> Assuming *-10 is meant to be *(-10), -10*-10 = -(-100) = 100
>>
>> I'm having trouble seeing an alternate meaning.
...
> Here is the issue:

I'm sorry; in my brevity I was not clear.  I wandered off the -10^2 
subject.  What I meant is that I don't see what is ambiguous about 
-10*-10.  One meaning suggested is (-10)*(-10).  If it is ambiguous, 
then there must be an alternative meaning.  I don't see one.

> But since computers see numerical representation differently, the 
> negation
> of a number is not a real "operation" to a computer. -10 is a single 
> unit.

Negation has been a primitive machine instructions on must computers 
where I have programmed in machine language or assembler.  (I would 
also think that both negation and negative numbers have a place in 
mathematics.)

> So -10^2 in computer languages will always mean (-10)^2.

This seems too strong of a generalization.  One can design a computer 
language in which that is not so.  More so, at compile time it is 
straightforward for for negation of a constant to be pre-computed 
(optimized) to a representation of a negative number.  I believe 
Fortran will do exponentiation and multiplication and division before 
negation.  I think in Basic it is exponentiation, negation and then 
multiplication and division.

> But if the engine were rewritten to check and correct
> for this algebraically, it would run a lot slower.

I doubt this would run any slower than what we get when we put the 
parentheses where we want them.

> Better for us just to
> recognize the difficulty and code around it.

Yes, we must code around it.  But the difficulty that causes it is not 
something inherent in the computer, but a tradition among computer 
languages in both C and Pascal families.  In particular, in the 
Hypercard heritage the order is negation, exponentiation, and then 
multiplication and division.

We agree in that we work around it.  I use parentheses and intermediate 
values in variables.

Dar Scott




More information about the use-livecode mailing list