 # Question on tilde operator (~) and 'le' logical comparison in GAUSS

proc (1) = gamesim(para,msel,nobs);
local bet1, bet2,
del1, del2,
alp, alp1, alp2,
pim1, pim2, pid1, pid2,
pm1, pm2, pd1, pd2,
yy,
i;

bet1 = para;
del1 = para;
bet2 = para;
if msel == 1;
del2 = para;
elseif msel == 2;
del2 = del1;
endif;
alp1 = para;
alp2 = para;
alp = alp12_to_alp(para[1:6]');

pim1 = bet1 + rndn(nobs,1);
pim2 = bet2 + rndn(nobs,1);
pid1 = pim1 - del1;
pid2 = pim2 - del2;

yy = zeros(nobs,2);

i = 1;
do until i > nobs;

pm1 = pim1[i];
pm2 = pim2[i];
pd1 = pid1[i];
pd2 = pid2[i];

if (pm1<0) AND (pm2<0); yy[i,.] = (0~0); elseif (pd1>0) AND (pd2>0); yy[i,.] = (1~1);
elseif (pm1 GE 0) AND (pm2 < 0); yy[i,.] = (1~0); elseif (pm1 < 0) AND (pm2 GE 0); yy[i,.] = (0~1); elseif (pd1 GE 0) AND (pm2 GE 0) AND (pd2 < 0); yy[i,.] = (1~0); elseif (pm1 GE 0) AND (pd1 < 0) AND (pd2 GE 0); yy[i,.] = (0~1); else; if rndu(1,1) LE alp; yy[i,.] = (1~0); else; yy[i,.] = (0~1); endif; endif; i = i+1; endo; yy = yy~pim1~pim2~pid1~pid2;

retp(yy);
endp;

0

Can anyone explain little about the following three part?

"alp = alp12_to_alp(para[1:6]‘);"  I don't understand the logic how do we define variable alp

"if rndu(1,1) LE alp;"   why did we put LE alp after rndu(1,1)?

and the line:

yy = yy~pim1~pim2~pid1~pid2;

what does "~" means here. 0
1. The line below means: if the 1x1 uniform random number created by rndu is less than or equal to the value of the variable alp.
```if rndu(1,1) LE alp;
```

This line could have been written also this way:

```tmp = rndu(1,1);
if tmp < alp;
```
2. The line below:
```alp = alp12_to_alp(para[1:6]‘);
```

performs these steps 1) transpose the first 6 elements of para 2) Pass those 6 elements in to a user defined procedure called apl12_to_alp 3) Assign the return from this function call to alp. GAUSS always uses square brackets [] for indexing. Parentheses () are used for function calls and for separating operations i.e. (5*6)+7 vs 5*(6+7)

3. The tilde operator ~ performs horizontal concatenation in GAUSS. For example:
```a = 5;
b = 2;
c = a~b;
```

will assign c to be equal to the row vector:

```5 2
```

The tilde operator works for scalars, vectors and matrices aptech
1,678

### Have a Specific Question?

Get a real answer from a real person

### Need Support?

Get help from our friendly experts.