$title 'JAMS: test of flipping functions with VI' (EMP34, SEQ=947) $onText Test to verify that the flip operator is working as expected when used with the VI keyword and a VI function. The expected behavior matches what GAMS does for MCP when an equation is flipped in a model statement. Contributor: Steve Dirkse, Dec 2023 $offText scalar xL; xL = exp(log(2.0) / 1.1); variable x '1.5 <= x < INF' / LO 1.5 / ; equations f 'x^1.1 >= 2' fNeg 'f times -1'; f.. x**1.1 =G= 2; fNeg.. - x**1.1 =L= -2; model m1 / f /; model m2 / fNeg /; file empinfo / '%emp.info%' /; putclose empinfo 'vi f x'; solve m1 using emp; abort$[m1.modelstat > 2] 'bad model status', m1.modelstat; abort$[abs(x.L - xL ) > 1e-6] 'expected x.L == xL', x.L, xL; abort$[f.lo <> 2.0] 'expected f.lo == 2', f.lo; abort$[abs(f.L - 2.0) > 1e-6] 'expected f.L == 2', f.L; abort$[f.up <> inf] 'expected f.up == inf', f.up; abort$[abs(f.m - x.L) > 1e-6] 'expected f.m == x.L', f.m, x.L; putclose empinfo 'vi -fNeg x'; solve m2 using emp; abort$[m2.modelstat > 2] 'bad model status', m2.modelstat; abort$[abs(x.L - xL ) > 1e-6] 'expected x.L == xL', x.L, xL; abort$[fNeg.up <> -2.0] 'expected fNeg.up == -2', fNeg.up; abort$[abs(fNeg.L + 2.0) > 1e-6] 'expected fNeg.L == -2', fNeg.L; abort$[fNeg.lo <> -inf] 'expected fNeg.lo == -inf', fNeg.lo; abort$[abs(fNeg.m - x.L) > 1e-6] 'expected fNeg.m == x.L', fNeg.m, x.L;