mirror of
https://git.code.sf.net/p/newrpl/sources
synced 2024-09-29 17:36:57 +02:00
Added error checks to NUMINT arguments.
This commit is contained in:
parent
34884fd210
commit
6edea50574
3 changed files with 39 additions and 2 deletions
|
@ -26,7 +26,8 @@
|
|||
ERR(INVALIDLISTOFVARS,2), \
|
||||
ERR(INVALIDVARRANGE,3), \
|
||||
ERR(REALVALUEDFUNCTIONSONLY,4), \
|
||||
ERR(TRYDIFFERENTRANGE,5)
|
||||
ERR(TRYDIFFERENTRANGE,5), \
|
||||
ERR(INVALIDSYMBFUNCTION,6)
|
||||
|
||||
// LIST OF COMMANDS EXPORTED,
|
||||
// INCLUDING INFORMATION FOR SYMBOLIC COMPILER
|
||||
|
@ -151,6 +152,41 @@ case NUMINT:
|
|||
return;
|
||||
}
|
||||
|
||||
// ADD CHECKS TO SEE IF THE SYMBOLIC IS VALID
|
||||
if(ISSYMBOLIC(*rplPeekData(4))) {
|
||||
if(rplSymbMainOperator(rplPeekData(4))!=CMD_EQUATIONOPERATOR) {
|
||||
rplError(ERR_INVALIDSYMBFUNCTION);
|
||||
return;
|
||||
}
|
||||
WORDPTR leftpart=rplSymbMainOperatorPTR(rplPeekData(4))+1;
|
||||
if(ISSYMBOLIC(*leftpart)) {
|
||||
if(rplSymbMainOperator(leftpart)!=CMD_OVR_FUNCEVAL) {
|
||||
rplError(ERR_INVALIDSYMBFUNCTION);
|
||||
return;
|
||||
}
|
||||
// COUNT NUMBER OF ARGUMENTS
|
||||
WORDPTR end=rplSkipOb(leftpart);
|
||||
BINT nargs=0;
|
||||
leftpart=rplSymbMainOperatorPTR(leftpart)+1;
|
||||
while(leftpart<end) { ++nargs; leftpart=rplSkipOb(leftpart); }
|
||||
if(nargs!=2) {
|
||||
rplError(ERR_INVALIDSYMBFUNCTION);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
rplError(ERR_INVALIDSYMBFUNCTION);
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if(!ISNUMBERCPLX(*rplPeekData(3)) || !ISNUMBERCPLX(*rplPeekData(2)))
|
||||
{
|
||||
rplError(ERR_COMPLEXORREALEXPECTED);
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
##1,ERR_INVALIDVARRANGE "Invalid variable range"
|
||||
##1,ERR_REALVALUEDFUNCTIONSONLY "Real valued func only"
|
||||
##1,ERR_TRYDIFFERENTRANGE "Try a different range"
|
||||
##1,ERR_INVALIDSYMBFUNCTION "Use 'f(x)=...' in expressions."
|
||||
}
|
||||
|
||||
@#name lib104_menu
|
||||
|
|
|
@ -202,7 +202,7 @@ R → A<fraction>"
|
|||
@#name allroots_rules
|
||||
{
|
||||
'√.xX:→XROOT(ABS(.xX),2)*c{1,-1}'
|
||||
'.xX^(1/.iN):→XROOT(ABS(.xX),.iN)*е^(ARG(.xX)/.iN*і+∡360°/.iN*RANGE(1,.iN,1))'
|
||||
'.xX^(1/.iN):→XROOT(ABS(.xX),.iN)*е^(і*(ARG(.xX)/.iN+∡360°/.iN*RANGE(1,.iN,1)))'
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue