mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-16 01:43:35 +00:00
55 lines
1.3 KiB
Mathematica
55 lines
1.3 KiB
Mathematica
%---------------------------------------------------------------------------%
|
|
% vim: ts=4 sw=4 et ft=mercury
|
|
%---------------------------------------------------------------------------%
|
|
%
|
|
% This is a regression test --
|
|
% a previous version of Mercury generated code for this test
|
|
% which ran out of memory, if the test was compiled with `-O3'.
|
|
|
|
:- module bigtest.
|
|
|
|
:- interface.
|
|
|
|
:- import_module io.
|
|
|
|
:- pred main(io::di, io::uo) is cc_multi.
|
|
|
|
:- implementation.
|
|
|
|
:- import_module float.
|
|
:- import_module list.
|
|
:- import_module lp.
|
|
:- import_module pair.
|
|
:- import_module require.
|
|
:- import_module term.
|
|
:- import_module varset.
|
|
|
|
main(!IO) :-
|
|
data(Eqns, Dir, Obj, Varset),
|
|
lp_solve(Eqns, Dir, Obj, Varset, Result, !IO),
|
|
(
|
|
Result = satisfiable(_, _),
|
|
io.write_string("satisfiable.\n", !IO)
|
|
;
|
|
Result = unsatisfiable,
|
|
io.write_string("unsatisfiable.\n", !IO)
|
|
).
|
|
|
|
:- pred data(equations::out, direction::out, objective::out, varset::out)
|
|
is det.
|
|
|
|
data(Eqns, max, Obj, Varset) :-
|
|
varset.init(Varset0 ),
|
|
varset.new_vars(80, Vars0, Varset0, Varset),
|
|
list.sort(Vars0, Vars),
|
|
list.map(mkeqn, Vars, Eqns),
|
|
list.map(mkobj, Vars, Obj).
|
|
|
|
:- pred mkeqn(var::in, equation::out) is det.
|
|
|
|
mkeqn(Var, eqn([Var - 1.0], (=<), 42.0)).
|
|
|
|
:- pred mkobj(var::in, coeff::out) is det.
|
|
|
|
mkobj(Var, Var - 1.0).
|