How to evaluate an expression with the (=) operator, so that returns a Boolean value (true/false)?
Example
0 = 0 -> true
10*e^5-10*e^10 = 0 -> false
I think it takes a function of the type.
evaLogic (MathExpre) -> true/false
evaLogic ( (10 * e ^ 5) - (10 * e ^ 10) = 0 ) -> false
What about :
Code:
EXPORT EvalLogic(expression)
BEGIN
LOCAL s;
s:=REPLACE(STRING(expression),"=","==");
CAS(s);
END;
EvalLogic('0=0') -> 1
EvalLogic('0=1') -> 0
EvalLogic('10*e^5-10*e^10=0') -> 0
And in CAS mode you can also evaluate expressions with undefined variables :
EvalLogic('2*x = x+x') -> 1
[Edited to support undefined variables]
subst(x^2+x*y+y^2+x*y=x^2+2x*y+y^2,'=','==')
(08-27-2016 06:49 PM)compsystems Wrote: [ -> ]The flags must be changed manually =(, but that's not the idea, the flags should be changed from the program code, it is to automate algorithms as does the hp 48 hp 50, TI89 ...
No need to change the flags if you explicitly simplify the expression :
Code:
#cas
evalLogicv3(expression)
BEGIN
LOCAL bool_numeric;
bool_numeric:= subst(simplify(expression),'=','==');
if(bool_numeric==1) then
return true;
else
return false;
end;
END;
#end
(08-28-2016 06:44 PM)compsystems Wrote: [ -> ]also must be added EXACT MODE
Do you have an exemple of an expression for which the latest version of evalLogicv3 is different depending on the status of the Exact flag ?