  lua-l archive

• Subject: Re: exponent and modulus operator oddities on ppc
• From: Glenn McAllister <glenn@...>
• Date: Mon, 02 Mar 2009 12:09:02 -0500

```Ralph Hempel wrote:
```
```Glenn McAllister wrote:
```
We've been having some odd problems with the exponent operator ('^') and
```
<snip>

```
```Host: ppc 32-bit

```
Given the following script, it produces the correct results on both x86 and ppc:
```
y = 2^3
print('y = ', y)

x = 10 % y
print('x = ', x)

y = 2^3
print('y = ', y)

The output on both platforms is:

y =     8
x =     2
y =     8

```
However, if we run the morally equivalent series of operations directly in the lua interpreter on the target ppc system, we get a different result:
```
Lua 5.1.3  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> x = 2^3
> =x
8
> y = 10 % x
> =y
2
> z = 2^3
> =z
4.0096609170284
```
```
What happens if you run the "morally equivalent" script from a file?
```
```
```
Sorry, I had changed around some of the variable for the interactive session to show that its any assignment of 2^3 that triggers the issue, and not just resetting y.
```
If I change the script to:

x = 2^3
print('x = ', x)

y = 10 % x
print('y = ', y)

z = 2^3
print('z = ', z)

I get the expected output:

x =     8
y =     2
z =     8

```
```
And is the last step z = 2^3 or is it z = y^3
```
```
```
Its z = 2^3, which should have the value of 8. So I'm using constants, not the variable.
```
But interestingly, if I change the last assignment in the script from

z = 2 ^ 3

to be

z = y ^ 3

I now get the broken output:

x =     8
y =     2
z =     4.0096609170284

Adding the following to the end of the script:

a = 2 ^ 3
print ('a = ', a)

Gives me the following:

x =     8
y =     2
z =     4.0096609170284
a =     8

WTF?
--
Glenn McAllister     <glenn@somanetworks.com>      +1 416 348 1594
SOMA Networks, Inc.  http://www.somanetworks.com/  +1 416 977 1414

```