MATLAB: What is the function of flag in this code

MATLAB

clear all;close all;clc;
es=0.05*10^-3;
sum=0;
i=0;
ea=1;
x=input('Enter x: ');
flag=1;
while(abs(ea)>es)
prev=sum;
sum=sum+flag*(x^i)/factorial(i);
i=i+2;
ea=(sum-prev)/sum;
flag=0-flag;
end
sum

Best Answer

On each loop iteration the flag value changes sign, so it follows this pattern:
+1
-1
+1
-1
...
This has the effect of alternately adding or subtracting the following term:
+ (x^0)/factorial(0)
- (x^2)/factorial(2)
+ (x^4)/factorial(4)
- (x^6)/factorial(6)
...
This avoids the need to call two different plus and minus operators (but that would also be a perfectly viable approach).
Related Question