diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2018-03-12 09:39:03 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2018-03-12 09:39:03 -0300 |
| commit | 6b01b6cf6a1631f7ca2ce527a5c355517095c209 (patch) | |
| tree | 763750a279d5a40210bc5943440b088ebc718f4d | |
| parent | e3388ebfad4a566c933b2b1562cfa9f40a8afc13 (diff) | |
| download | lua-6b01b6cf6a1631f7ca2ce527a5c355517095c209.tar.gz lua-6b01b6cf6a1631f7ca2ce527a5c355517095c209.tar.bz2 lua-6b01b6cf6a1631f7ca2ce527a5c355517095c209.zip | |
'lu_int32' may not be 'int'
| -rw-r--r-- | lmathlib.c | 23 |
1 files changed, 13 insertions, 10 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lmathlib.c,v 1.123 2018/03/09 19:23:39 roberto Exp roberto $ | 2 | ** $Id: lmathlib.c,v 1.124 2018/03/11 14:48:09 roberto Exp roberto $ |
| 3 | ** Standard mathematical library | 3 | ** Standard mathematical library |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -321,7 +321,7 @@ typedef struct I { | |||
| 321 | ** basic operations on 'I' values | 321 | ** basic operations on 'I' values |
| 322 | */ | 322 | */ |
| 323 | 323 | ||
| 324 | static I pack (int h, int l) { | 324 | static I pack (lu_int32 h, lu_int32 l) { |
| 325 | I result; | 325 | I result; |
| 326 | result.h = h; | 326 | result.h = h; |
| 327 | result.l = l; | 327 | result.l = l; |
| @@ -368,25 +368,27 @@ static I xorshift128plus (I *state) { | |||
| 368 | ** Converts an 'I' into a float. | 368 | ** Converts an 'I' into a float. |
| 369 | */ | 369 | */ |
| 370 | 370 | ||
| 371 | /* an unsigned 1 with proper type */ | ||
| 372 | #define UONE ((lu_int32)1) | ||
| 373 | |||
| 371 | #if FIGS <= 32 | 374 | #if FIGS <= 32 |
| 372 | 375 | ||
| 373 | /* do not need bits from higher half */ | 376 | #define maskHF 0 /* do not need bits from higher half */ |
| 374 | #define maskHF 0 | 377 | #define maskLOW (~(~UONE << (FIGS - 1))) /* use FIG bits */ |
| 375 | #define maskLOW (~(~1U << (FIGS - 1))) /* use FIG bits */ | 378 | #define shiftFIG (l_mathop(0.5) / (UONE << (FIGS - 1))) /* 2^(-FIG) */ |
| 376 | #define shiftFIG (l_mathop(0.5) / (1U << (FIGS - 1))) /* 2^(-FIG) */ | ||
| 377 | 379 | ||
| 378 | #else /* 32 < FIGS <= 64 */ | 380 | #else /* 32 < FIGS <= 64 */ |
| 379 | 381 | ||
| 380 | /* must take care to not shift stuff by more than 31 slots */ | 382 | /* must take care to not shift stuff by more than 31 slots */ |
| 381 | 383 | ||
| 382 | /* use FIG - 32 bits from higher half */ | 384 | /* use FIG - 32 bits from higher half */ |
| 383 | #define maskHF (~(~1U << (FIGS - 33))) | 385 | #define maskHF (~(~UONE << (FIGS - 33))) |
| 384 | 386 | ||
| 385 | /* use all bits from lower half */ | 387 | /* use all bits from lower half */ |
| 386 | #define maskLOW (~0) | 388 | #define maskLOW (~(lu_int32)0) |
| 387 | 389 | ||
| 388 | /* 2^(-FIG) == (1 / 2^33) / 2^(FIG-33) */ | 390 | /* 2^(-FIG) == (1 / 2^33) / 2^(FIG-33) */ |
| 389 | #define shiftFIG ((lua_Number)(1.0 / 8589934592.0) / (1U << (FIGS - 33))) | 391 | #define shiftFIG ((lua_Number)(1.0 / 8589934592.0) / (UONE << (FIGS - 33))) |
| 390 | 392 | ||
| 391 | #endif | 393 | #endif |
| 392 | 394 | ||
| @@ -403,7 +405,8 @@ static lua_Unsigned I2UInt (I x) { | |||
| 403 | } | 405 | } |
| 404 | 406 | ||
| 405 | static I Int2I (lua_Integer n) { | 407 | static I Int2I (lua_Integer n) { |
| 406 | return pack(n, n >> 31 >> 1); | 408 | lua_Unsigned un = n; |
| 409 | return pack((lu_int32)un, (lu_int32)(un >> 31 >> 1)); | ||
| 407 | } | 410 | } |
| 408 | 411 | ||
| 409 | #endif /* } */ | 412 | #endif /* } */ |
