Module:Calculator widget: Difference between revisions

Content deleted Content added
No edit summary
No edit summary
Line 20:
local Y_EXP_START = 3
local Y_EXP_END = 5
local Y_STARTY_SIGN_START = 5
local Y_SIGN_END = 6
local Y_START = 6
local Y_END = 22
local X_EXP_START = 22
local X_EXP_END = 24
local X_STARTX_SIGN_START = 24
local X_SIGN_END = 25
local X_START = 25
local X_END = 41
local MEM_EXP_START = 41
local MEM_EXP_END = 43
local MEM_STARTMEM_SIGN_START = 43
local MEM_SIGN_END = 44
local MEM_START = 44
local MEM_END = 52
local ALL_END = 52
Line 45 ⟶ 51:
local maxLen = 2^(endOffset-offset)
offsetMul = 2^offset
return 'ifgreaterorequal( ' .. value .. ', ' .. maxLen .. ',NaN,' .. offsetMul .. '*' .. value .. ')'
end
 
Line 54 ⟶ 60:
 
local function get(reg)
local main_start, main_end, exp_start, exp_end, sign_start
if reg == 'X' then
main_start = X_START
Line 60 ⟶ 66:
exp_start = X_EXP_START
exp_end = X_EXP_END
sign_start = X_SIGN_START
elseif reg == 'Y' then
main_start = Y_START
Line 65 ⟶ 72:
exp_start = Y_EXP_START
exp_end = Y_EXP_END
sign_start = Y_SIGN_START
elseif reg == 'MEM' then
main_start = MEM_START
Line 70 ⟶ 78:
exp_start = MEM_EXP_START
exp_end = MEM_EXP_END
sign_start = MEM_SIGN_START
else
error( "unknown register" )
end
return '(' .. unpack( X_STARTmain_start, X_ENDmain_end ) ..
'*(pow(10,' .. unpack( X_EXP_STARTexp_start, X_EXP_ENDexp_end ) .. ')))'
.. '*(1-' .. unpack( sign_start, sign_start+1 ) .. '))'
 
end
Line 105 ⟶ 115:
return selectBits( ALL_START, X_EXP_START ) .. '+' ..
selectBits( X_END, ALL_END ) .. '+' ..
selectBits( X_SIGN_START, X_SIGN_END ) .. '+' ..
'ifzero( '
.. regFull("X") .. ',' ..
Line 123 ⟶ 134:
selectBits( X_EXP_START, X_END )
.. ')'
end
 
local function getClear()
return selectBits( MEM_EXP_START, ALL_END )
end
 
Line 131 ⟶ 146:
{ "M−", "" },
{ "M+", "" },
{ "C", ""getClear() },
{ "±", "" },
{ "%", "" },
Line 162 ⟶ 177:
calc = calc .. '{{calculator button|type='.. type ..'|weight=normal|for=reg|formula=' .. v[2] .. '|contents='.. v[1] .. '}}'
end
calc = calc .. '{{calculator|type=hidden|id=reg|defualt=0}}'
calc = calc .. '</div>'
return frame:preprocess(calc)