binary3.gms : test binary operation: imp

Description

```In this test we check that the imp function works as expected
when the arguments are taken from parameters.  CMEX tries to take
advantage of sparsity in the inputs when computing outputs, (e.g. with
the or operator) but that's not possible with imp: 0 imp 0 = 1.

ABMaster issue AB01260: known to fail with 22.4, fixed for 22.5.

Contributor: Steve Dirkse
```

Small Model of Type : GAMS

Category : GAMS Test library

Main file : binary3.gms

``````\$Title 'test binary operation: imp' (BINARY3,SEQ=337)

\$ontext
In this test we check that the imp function works as expected
when the arguments are taken from parameters.  CMEX tries to take
advantage of sparsity in the inputs when computing outputs, (e.g. with
the or operator) but that's not possible with imp: 0 imp 0 = 1.

ABMaster issue AB01260: known to fail with 22.4, fixed for 22.5.

Contributor: Steve Dirkse
\$offtext

set I / 1 * 4 /;
parameters a(I,*), b(I,*);

a(I,'x') = floor((ord(I)-1) / 2);
a(I,'y') = mod(ord(I)-1,2);
a(I,'r') = a(I,'x') imp a(I,'y');

table b(I,*)
x       y
1        0       0
2        0       1
3        1       0
4        1       1  ;

b(I,'r') = b(I,'x') imp b(I,'y');

scalar r '0 imp 0';
r = 0 imp 0;

scalar r2 'zero imp zero';
r2 = b('1','x') imp b('1','x');

* these worked fine, i.e. they don't trigger an abort
abort\$[not r]          ' r: 0 imp 0 returns 0';
abort\$[not r2]         'r2: 0 imp 0 returns 0';

* but these are/were a problem!
abort\$[not a('1','r')] ' a: 0 imp 0 returns 0';
abort\$[not b('1','r')] ' b: 0 imp 0 returns 0';
``````
GAMS Development Corp.
GAMS Software GmbH

General Information and Sales
U.S. (+1) 202 342-0180
Europe: (+49) 221 949-9170