diff options
Diffstat (limited to 'lvm.c')
-rw-r--r-- | lvm.c | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -655,6 +655,16 @@ lua_Integer luaV_mod (lua_State *L, lua_Integer m, lua_Integer n) { | |||
655 | } | 655 | } |
656 | 656 | ||
657 | 657 | ||
658 | /* | ||
659 | ** Float modulus | ||
660 | */ | ||
661 | lua_Number luaV_modf (lua_State *L, lua_Number m, lua_Number n) { | ||
662 | lua_Number r; | ||
663 | luai_nummod(L, m, n, r); | ||
664 | return r; | ||
665 | } | ||
666 | |||
667 | |||
658 | /* number of bits in an integer */ | 668 | /* number of bits in an integer */ |
659 | #define NBITS cast_int(sizeof(lua_Integer) * CHAR_BIT) | 669 | #define NBITS cast_int(sizeof(lua_Integer) * CHAR_BIT) |
660 | 670 | ||
@@ -1142,10 +1152,8 @@ void luaV_execute (lua_State *L, CallInfo *ci) { | |||
1142 | setivalue(s2v(ra), luaV_mod(L, ivalue(rb), ic)); | 1152 | setivalue(s2v(ra), luaV_mod(L, ivalue(rb), ic)); |
1143 | } | 1153 | } |
1144 | else if (tonumberns(rb, nb)) { | 1154 | else if (tonumberns(rb, nb)) { |
1145 | lua_Number m; | ||
1146 | lua_Number nc = cast_num(ic); | 1155 | lua_Number nc = cast_num(ic); |
1147 | luai_nummod(L, nb, nc, m); | 1156 | setfltvalue(s2v(ra), luaV_modf(L, nb, nc)); |
1148 | setfltvalue(s2v(ra), m); | ||
1149 | } | 1157 | } |
1150 | else | 1158 | else |
1151 | Protect(luaT_trybiniTM(L, rb, ic, 0, ra, TM_MOD)); | 1159 | Protect(luaT_trybiniTM(L, rb, ic, 0, ra, TM_MOD)); |
@@ -1370,9 +1378,7 @@ void luaV_execute (lua_State *L, CallInfo *ci) { | |||
1370 | setivalue(s2v(ra), luaV_mod(L, ib, ic)); | 1378 | setivalue(s2v(ra), luaV_mod(L, ib, ic)); |
1371 | } | 1379 | } |
1372 | else if (tonumberns(rb, nb) && tonumberns(rc, nc)) { | 1380 | else if (tonumberns(rb, nb) && tonumberns(rc, nc)) { |
1373 | lua_Number m; | 1381 | setfltvalue(s2v(ra), luaV_modf(L, nb, nc)); |
1374 | luai_nummod(L, nb, nc, m); | ||
1375 | setfltvalue(s2v(ra), m); | ||
1376 | } | 1382 | } |
1377 | else | 1383 | else |
1378 | Protect(luaT_trybinTM(L, rb, rc, ra, TM_MOD)); | 1384 | Protect(luaT_trybinTM(L, rb, rc, ra, TM_MOD)); |