aboutsummaryrefslogtreecommitdiff
path: root/lvm.c
diff options
context:
space:
mode:
Diffstat (limited to 'lvm.c')
-rw-r--r--lvm.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/lvm.c b/lvm.c
index add26942..dd6a660b 100644
--- a/lvm.c
+++ b/lvm.c
@@ -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*/
661lua_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));