# st: Re: Mata logical operators

 From "Michael Blasnik" To Subject st: Re: Mata logical operators Date Wed, 25 Oct 2006 14:48:34 -0400

I think you need to check your logic. When you use "or" conditions, the loop will continue while any of the conditions are true. You should use "and" conditions to make it terminate when any are false.

Michael Blasnik

----- Original Message ----- From: "U.A.QU.AP" <uaquap@gnet.tn>
To: <statalist@hsphsun2.harvard.edu>
Sent: Wednesday, October 25, 2006 3:18 PM
Subject: st: Mata logical operators

Dear all,
I've written a loop that maximize a given function. In order to
control convergence i use 3 critereon
iteration number and 2 scalars for tolerance
My statement is :
...
while ((critb > eps) || (crita > eps^2) || (iter <= 31)) {
....stmts
iter=iter+1
}
I expect that Mata must stop the loop when at least one of the three critereon is reached. But the problem is: Mata goes untill iteration 112 (for example) and it doesn't stop the loop at iteration 31 as expected.
My output portion is given below:
End iteration 112.00
Stepsize: 0.02
Criterion: 1.35
Percent variation: 0.00
....
Even when i replace (||) by (|) I get the same results
any ideas to resolve this problem? Waht is the logic of mata to evaluate 3 or more condition in the while loop?
Thank you
AbdelRahmen El Lahga
*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/