Codebase list glpk-java / upstream/1.0.36
Imported Upstream version 1.0.36 Sébastien Villemot 9 years ago
38 changed file(s) with 1167 addition(s) and 1617 deletion(s). Raw diff Collapse all Expand all
0 Version 1.0.36, 2014-05-13
1 Provide configure option for GLPK library load path.
2 Version 1.0.35, 2014-05-08
3 Correct javadoc to enable building with JDK 1.8
04 Version 1.0.34, 2014-04-19
15 Correct memory access on big endian systems.
26 Version 1.0.33, 2014-03-31
5050 To configure the package use command
5151
5252 ./configure
53
54 The GLPK for Java dynamic link library is loaded from the path specified by
55 java.library.path. If you want the GLPK dynamic link library also to be loaded
56 from this path use
57
58 ./configure --enable-libpath
5359
5460
5561 OS X has jni.h in a special path. You may want to specify this path in the
0 # Makefile.in generated by automake 1.14.1 from Makefile.am.
0 # Makefile.in generated by automake 1.11.6 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
4
3 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
4 # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
5 # Foundation, Inc.
56 # This Makefile.in is free software; the Free Software Foundation
67 # gives unlimited permission to copy and/or distribute it,
78 # with or without modifications, as long as this notice is preserved.
1314
1415 @SET_MAKE@
1516 VPATH = @srcdir@
16 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
17 am__make_running_with_option = \
18 case $${target_option-} in \
19 ?) ;; \
20 *) echo "am__make_running_with_option: internal error: invalid" \
21 "target option '$${target_option-}' specified" >&2; \
22 exit 1;; \
23 esac; \
24 has_opt=no; \
25 sane_makeflags=$$MAKEFLAGS; \
26 if $(am__is_gnu_make); then \
27 sane_makeflags=$$MFLAGS; \
28 else \
17 am__make_dryrun = \
18 { \
19 am__dry=no; \
2920 case $$MAKEFLAGS in \
3021 *\\[\ \ ]*) \
31 bs=\\; \
32 sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
33 | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
22 echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
23 | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
24 *) \
25 for am__flg in $$MAKEFLAGS; do \
26 case $$am__flg in \
27 *=*|--*) ;; \
28 *n*) am__dry=yes; break;; \
29 esac; \
30 done;; \
3431 esac; \
35 fi; \
36 skip_next=no; \
37 strip_trailopt () \
38 { \
39 flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
40 }; \
41 for flg in $$sane_makeflags; do \
42 test $$skip_next = yes && { skip_next=no; continue; }; \
43 case $$flg in \
44 *=*|--*) continue;; \
45 -*I) strip_trailopt 'I'; skip_next=yes;; \
46 -*I?*) strip_trailopt 'I';; \
47 -*O) strip_trailopt 'O'; skip_next=yes;; \
48 -*O?*) strip_trailopt 'O';; \
49 -*l) strip_trailopt 'l'; skip_next=yes;; \
50 -*l?*) strip_trailopt 'l';; \
51 -[dEDm]) skip_next=yes;; \
52 -[JT]) skip_next=yes;; \
53 esac; \
54 case $$flg in \
55 *$$target_option*) has_opt=yes; break;; \
56 esac; \
57 done; \
58 test $$has_opt = yes
59 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
60 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
32 test $$am__dry = yes; \
33 }
6134 pkgdatadir = $(datadir)/@PACKAGE@
6235 pkgincludedir = $(includedir)/@PACKAGE@
6336 pkglibdir = $(libdir)/@PACKAGE@
7750 build_triplet = @build@
7851 host_triplet = @host@
7952 subdir = .
80 DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
81 $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
82 $(top_srcdir)/configure $(am__configure_deps) \
83 $(srcdir)/config.h.in COPYING THANKS compile config.guess \
84 config.sub depcomp install-sh missing ltmain.sh
53 DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
54 $(srcdir)/Makefile.in $(srcdir)/config.h.in \
55 $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
56 THANKS compile config.guess config.sub depcomp install-sh \
57 ltmain.sh missing
8558 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
8659 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
8760 $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
9568 CONFIG_HEADER = config.h
9669 CONFIG_CLEAN_FILES =
9770 CONFIG_CLEAN_VPATH_FILES =
98 AM_V_P = $(am__v_P_@AM_V@)
99 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
100 am__v_P_0 = false
101 am__v_P_1 = :
102 AM_V_GEN = $(am__v_GEN_@AM_V@)
103 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
104 am__v_GEN_0 = @echo " GEN " $@;
105 am__v_GEN_1 =
106 AM_V_at = $(am__v_at_@AM_V@)
107 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
108 am__v_at_0 = @
109 am__v_at_1 =
11071 SOURCES =
11172 DIST_SOURCES =
112 RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
113 ctags-recursive dvi-recursive html-recursive info-recursive \
114 install-data-recursive install-dvi-recursive \
115 install-exec-recursive install-html-recursive \
116 install-info-recursive install-pdf-recursive \
117 install-ps-recursive install-recursive installcheck-recursive \
118 installdirs-recursive pdf-recursive ps-recursive \
119 tags-recursive uninstall-recursive
73 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
74 html-recursive info-recursive install-data-recursive \
75 install-dvi-recursive install-exec-recursive \
76 install-html-recursive install-info-recursive \
77 install-pdf-recursive install-ps-recursive install-recursive \
78 installcheck-recursive installdirs-recursive pdf-recursive \
79 ps-recursive uninstall-recursive
12080 am__can_run_installinfo = \
12181 case $$AM_UPDATE_INFO_DIR in \
12282 n|no|NO) false;; \
12484 esac
12585 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
12686 distclean-recursive maintainer-clean-recursive
127 am__recursive_targets = \
128 $(RECURSIVE_TARGETS) \
129 $(RECURSIVE_CLEAN_TARGETS) \
130 $(am__extra_recursive_targets)
131 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
132 cscope distdir dist dist-all distcheck
133 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
134 $(LISP)config.h.in
135 # Read a list of newline-separated strings from the standard input,
136 # and print each of them once, without duplicates. Input order is
137 # *not* preserved.
138 am__uniquify_input = $(AWK) '\
139 BEGIN { nonempty = 0; } \
140 { items[$$0] = 1; nonempty = 1; } \
141 END { if (nonempty) { for (i in items) print i; }; } \
142 '
143 # Make sure the list of sources is unique. This is necessary because,
144 # e.g., the same source file might be shared among _SOURCES variables
145 # for different programs/libraries.
146 am__define_uniq_tagged_files = \
147 list='$(am__tagged_files)'; \
148 unique=`for i in $$list; do \
149 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
150 done | $(am__uniquify_input)`
87 AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
88 $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
89 distdir dist dist-all distcheck
15190 ETAGS = etags
15291 CTAGS = ctags
153 CSCOPE = cscope
15492 DIST_SUBDIRS = $(SUBDIRS)
15593 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
15694 distdir = $(PACKAGE)-$(VERSION)
16199 && rm -rf "$(distdir)" \
162100 || { sleep 5 && rm -rf "$(distdir)"; }; \
163101 else :; fi
164 am__post_remove_distdir = $(am__remove_distdir)
165102 am__relativize = \
166103 dir0=`pwd`; \
167104 sed_first='s,^\([^/]*\)/.*$$,\1,'; \
189126 reldir="$$dir2"
190127 DIST_ARCHIVES = $(distdir).tar.gz
191128 GZIP_ENV = --best
192 DIST_TARGETS = dist-gzip
193129 distuninstallcheck_listfiles = find . -type f -print
194130 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
195131 | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
196132 distcleancheck_listfiles = find . -type f -print
197133 ACLOCAL = @ACLOCAL@
198134 AMTAR = @AMTAR@
199 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
200135 AR = @AR@
201136 AUTOCONF = @AUTOCONF@
202137 AUTOHEADER = @AUTOHEADER@
358293 $(am__aclocal_m4_deps):
359294
360295 config.h: stamp-h1
361 @test -f $@ || rm -f stamp-h1
362 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
296 @if test ! -f $@; then rm -f stamp-h1; else :; fi
297 @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
363298
364299 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
365300 @rm -f stamp-h1
382317 -rm -f libtool config.lt
383318
384319 # This directory's subdirectories are mostly independent; you can cd
385 # into them and run 'make' without going through this Makefile.
386 # To change the values of 'make' variables: instead of editing Makefiles,
387 # (1) if the variable is set in 'config.status', edit 'config.status'
388 # (which will cause the Makefiles to be regenerated when you run 'make');
389 # (2) otherwise, pass the desired values on the 'make' command line.
390 $(am__recursive_targets):
391 @fail=; \
392 if $(am__make_keepgoing); then \
393 failcom='fail=yes'; \
394 else \
395 failcom='exit 1'; \
396 fi; \
320 # into them and run `make' without going through this Makefile.
321 # To change the values of `make' variables: instead of editing Makefiles,
322 # (1) if the variable is set in `config.status', edit `config.status'
323 # (which will cause the Makefiles to be regenerated when you run `make');
324 # (2) otherwise, pass the desired values on the `make' command line.
325 $(RECURSIVE_TARGETS):
326 @fail= failcom='exit 1'; \
327 for f in x $$MAKEFLAGS; do \
328 case $$f in \
329 *=* | --[!k]*);; \
330 *k*) failcom='fail=yes';; \
331 esac; \
332 done; \
397333 dot_seen=no; \
398334 target=`echo $@ | sed s/-recursive//`; \
399 case "$@" in \
400 distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
401 *) list='$(SUBDIRS)' ;; \
402 esac; \
403 for subdir in $$list; do \
335 list='$(SUBDIRS)'; for subdir in $$list; do \
404336 echo "Making $$target in $$subdir"; \
405337 if test "$$subdir" = "."; then \
406338 dot_seen=yes; \
415347 $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
416348 fi; test -z "$$fail"
417349
418 ID: $(am__tagged_files)
419 $(am__define_uniq_tagged_files); mkid -fID $$unique
420 tags: tags-recursive
421 TAGS: tags
422
423 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
350 $(RECURSIVE_CLEAN_TARGETS):
351 @fail= failcom='exit 1'; \
352 for f in x $$MAKEFLAGS; do \
353 case $$f in \
354 *=* | --[!k]*);; \
355 *k*) failcom='fail=yes';; \
356 esac; \
357 done; \
358 dot_seen=no; \
359 case "$@" in \
360 distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
361 *) list='$(SUBDIRS)' ;; \
362 esac; \
363 rev=''; for subdir in $$list; do \
364 if test "$$subdir" = "."; then :; else \
365 rev="$$subdir $$rev"; \
366 fi; \
367 done; \
368 rev="$$rev ."; \
369 target=`echo $@ | sed s/-recursive//`; \
370 for subdir in $$rev; do \
371 echo "Making $$target in $$subdir"; \
372 if test "$$subdir" = "."; then \
373 local_target="$$target-am"; \
374 else \
375 local_target="$$target"; \
376 fi; \
377 ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
378 || eval $$failcom; \
379 done && test -z "$$fail"
380 tags-recursive:
381 list='$(SUBDIRS)'; for subdir in $$list; do \
382 test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
383 done
384 ctags-recursive:
385 list='$(SUBDIRS)'; for subdir in $$list; do \
386 test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
387 done
388
389 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
390 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
391 unique=`for i in $$list; do \
392 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
393 done | \
394 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
395 END { if (nonempty) { for (i in files) print i; }; }'`; \
396 mkid -fID $$unique
397 tags: TAGS
398
399 TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
400 $(TAGS_FILES) $(LISP)
424401 set x; \
425402 here=`pwd`; \
426403 if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
436413 set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
437414 fi; \
438415 done; \
439 $(am__define_uniq_tagged_files); \
416 list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
417 unique=`for i in $$list; do \
418 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
419 done | \
420 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
421 END { if (nonempty) { for (i in files) print i; }; }'`; \
440422 shift; \
441423 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
442424 test -n "$$unique" || unique=$$empty_fix; \
448430 $$unique; \
449431 fi; \
450432 fi
451 ctags: ctags-recursive
452
453 CTAGS: ctags
454 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
455 $(am__define_uniq_tagged_files); \
433 ctags: CTAGS
434 CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
435 $(TAGS_FILES) $(LISP)
436 list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
437 unique=`for i in $$list; do \
438 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
439 done | \
440 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
441 END { if (nonempty) { for (i in files) print i; }; }'`; \
456442 test -z "$(CTAGS_ARGS)$$unique" \
457443 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
458444 $$unique
461447 here=`$(am__cd) $(top_builddir) && pwd` \
462448 && $(am__cd) $(top_srcdir) \
463449 && gtags -i $(GTAGS_ARGS) "$$here"
464 cscope: cscope.files
465 test ! -s cscope.files \
466 || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
467 clean-cscope:
468 -rm -f cscope.files
469 cscope.files: clean-cscope cscopelist
470 cscopelist: cscopelist-recursive
471
472 cscopelist-am: $(am__tagged_files)
473 list='$(am__tagged_files)'; \
474 case "$(srcdir)" in \
475 [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
476 *) sdir=$(subdir)/$(srcdir) ;; \
477 esac; \
478 for i in $$list; do \
479 if test -f "$$i"; then \
480 echo "$(subdir)/$$i"; \
481 else \
482 echo "$$sdir/$$i"; \
483 fi; \
484 done >> $(top_builddir)/cscope.files
485450
486451 distclean-tags:
487452 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
488 -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
489453
490454 distdir: $(DISTFILES)
491455 $(am__remove_distdir)
556520 || chmod -R a+r "$(distdir)"
557521 dist-gzip: distdir
558522 tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
559 $(am__post_remove_distdir)
523 $(am__remove_distdir)
560524
561525 dist-bzip2: distdir
562526 tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
563 $(am__post_remove_distdir)
527 $(am__remove_distdir)
564528
565529 dist-lzip: distdir
566530 tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
567 $(am__post_remove_distdir)
531 $(am__remove_distdir)
532
533 dist-lzma: distdir
534 tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
535 $(am__remove_distdir)
568536
569537 dist-xz: distdir
570538 tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
571 $(am__post_remove_distdir)
539 $(am__remove_distdir)
572540
573541 dist-tarZ: distdir
574 @echo WARNING: "Support for shar distribution archives is" \
575 "deprecated." >&2
576 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
577542 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
578 $(am__post_remove_distdir)
543 $(am__remove_distdir)
579544
580545 dist-shar: distdir
581 @echo WARNING: "Support for distribution archives compressed with" \
582 "legacy program 'compress' is deprecated." >&2
583 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
584546 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
585 $(am__post_remove_distdir)
547 $(am__remove_distdir)
586548
587549 dist-zip: distdir
588550 -rm -f $(distdir).zip
589551 zip -rq $(distdir).zip $(distdir)
590 $(am__post_remove_distdir)
591
592 dist dist-all:
593 $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
594 $(am__post_remove_distdir)
552 $(am__remove_distdir)
553
554 dist dist-all: distdir
555 tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
556 $(am__remove_distdir)
595557
596558 # This target untars the dist file and tries a VPATH configuration. Then
597559 # it guarantees that the distribution is self-contained by making another
602564 GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
603565 *.tar.bz2*) \
604566 bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
567 *.tar.lzma*) \
568 lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
605569 *.tar.lz*) \
606570 lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
607571 *.tar.xz*) \
613577 *.zip*) \
614578 unzip $(distdir).zip ;;\
615579 esac
616 chmod -R a-w $(distdir)
617 chmod u+w $(distdir)
618 mkdir $(distdir)/_build $(distdir)/_inst
580 chmod -R a-w $(distdir); chmod u+w $(distdir)
581 mkdir $(distdir)/_build
582 mkdir $(distdir)/_inst
619583 chmod a-w $(distdir)
620584 test -d $(distdir)/_build || exit 0; \
621585 dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
622586 && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
623587 && am__cwd=`pwd` \
624588 && $(am__cd) $(distdir)/_build \
625 && ../configure \
589 && ../configure --srcdir=.. --prefix="$$dc_install_base" \
626590 $(AM_DISTCHECK_CONFIGURE_FLAGS) \
627591 $(DISTCHECK_CONFIGURE_FLAGS) \
628 --srcdir=.. --prefix="$$dc_install_base" \
629592 && $(MAKE) $(AM_MAKEFLAGS) \
630593 && $(MAKE) $(AM_MAKEFLAGS) dvi \
631594 && $(MAKE) $(AM_MAKEFLAGS) check \
648611 && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
649612 && cd "$$am__cwd" \
650613 || exit 1
651 $(am__post_remove_distdir)
614 $(am__remove_distdir)
652615 @(echo "$(distdir) archives ready for distribution: "; \
653616 list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
654617 sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
781744
782745 uninstall-am:
783746
784 .MAKE: $(am__recursive_targets) all install-am install-strip
785
786 .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
787 am--refresh check check-am clean clean-cscope clean-generic \
788 clean-libtool cscope cscopelist-am ctags ctags-am dist \
789 dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \
790 dist-tarZ dist-xz dist-zip distcheck distclean \
791 distclean-generic distclean-hdr distclean-libtool \
792 distclean-tags distcleancheck distdir distuninstallcheck dvi \
793 dvi-am html html-am info info-am install install-am \
794 install-data install-data-am install-dvi install-dvi-am \
795 install-exec install-exec-am install-html install-html-am \
796 install-info install-info-am install-man install-pdf \
797 install-pdf-am install-ps install-ps-am install-strip \
798 installcheck installcheck-am installdirs installdirs-am \
799 maintainer-clean maintainer-clean-generic mostlyclean \
800 mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
801 tags tags-am uninstall uninstall-am
747 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
748 ctags-recursive install-am install-strip tags-recursive
749
750 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
751 all all-am am--refresh check check-am clean clean-generic \
752 clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
753 dist-gzip dist-hook dist-lzip dist-lzma dist-shar dist-tarZ \
754 dist-xz dist-zip distcheck distclean distclean-generic \
755 distclean-hdr distclean-libtool distclean-tags distcleancheck \
756 distdir distuninstallcheck dvi dvi-am html html-am info \
757 info-am install install-am install-data install-data-am \
758 install-dvi install-dvi-am install-exec install-exec-am \
759 install-html install-html-am install-info install-info-am \
760 install-man install-pdf install-pdf-am install-ps \
761 install-ps-am install-strip installcheck installcheck-am \
762 installdirs installdirs-am maintainer-clean \
763 maintainer-clean-generic mostlyclean mostlyclean-generic \
764 mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
765 uninstall uninstall-am
802766
803767
804768 clean:
0 Version 1.0.36, 2014-05-13
1 Provide configure option for GLPK library load path.
2 Version 1.0.35, 2014-05-08
3 Correct javadoc to enable building with JDK 1.8
04 Version 1.0.34, 2014-04-19
15 Correct memory access on big endian systems.
26 Version 1.0.33, 2014-03-31
0 # generated automatically by aclocal 1.14.1 -*- Autoconf -*-
1
2 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
3
0 # generated automatically by aclocal 1.11.6 -*- Autoconf -*-
1
2 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
3 # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
4 # Inc.
45 # This file is free software; the Free Software Foundation
56 # gives unlimited permission to copy and/or distribute it,
67 # with or without modifications, as long as this notice is preserved.
1011 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
1112 # PARTICULAR PURPOSE.
1213
13 m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
1414 m4_ifndef([AC_AUTOCONF_VERSION],
1515 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
1616 m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
1717 [m4_warning([this file was generated for autoconf 2.69.
1818 You have another version of autoconf. It may work, but is not guaranteed to.
1919 If you have problems, you may need to regenerate the build system entirely.
20 To do so, use the procedure documented by the package, typically 'autoreconf'.])])
21
22 # Copyright (C) 2002-2013 Free Software Foundation, Inc.
23 #
24 # This file is free software; the Free Software Foundation
25 # gives unlimited permission to copy and/or distribute it,
26 # with or without modifications, as long as this notice is preserved.
20 To do so, use the procedure documented by the package, typically `autoreconf'.])])
21
22 # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
23 # Foundation, Inc.
24 #
25 # This file is free software; the Free Software Foundation
26 # gives unlimited permission to copy and/or distribute it,
27 # with or without modifications, as long as this notice is preserved.
28
29 # serial 1
2730
2831 # AM_AUTOMAKE_VERSION(VERSION)
2932 # ----------------------------
3134 # generated from the m4 files accompanying Automake X.Y.
3235 # (This private macro should not be called outside this file.)
3336 AC_DEFUN([AM_AUTOMAKE_VERSION],
34 [am__api_version='1.14'
37 [am__api_version='1.11'
3538 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
3639 dnl require some minimum version. Point them to the right macro.
37 m4_if([$1], [1.14.1], [],
40 m4_if([$1], [1.11.6], [],
3841 [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
3942 ])
4043
5053 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
5154 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
5255 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
53 [AM_AUTOMAKE_VERSION([1.14.1])dnl
56 [AM_AUTOMAKE_VERSION([1.11.6])dnl
5457 m4_ifndef([AC_AUTOCONF_VERSION],
5558 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
5659 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
5760
5861 # AM_AUX_DIR_EXPAND -*- Autoconf -*-
5962
60 # Copyright (C) 2001-2013 Free Software Foundation, Inc.
61 #
62 # This file is free software; the Free Software Foundation
63 # gives unlimited permission to copy and/or distribute it,
64 # with or without modifications, as long as this notice is preserved.
63 # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
64 #
65 # This file is free software; the Free Software Foundation
66 # gives unlimited permission to copy and/or distribute it,
67 # with or without modifications, as long as this notice is preserved.
68
69 # serial 1
6570
6671 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
67 # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
68 # '$srcdir', '$srcdir/..', or '$srcdir/../..'.
72 # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
73 # `$srcdir', `$srcdir/..', or `$srcdir/../..'.
6974 #
7075 # Of course, Automake must honor this variable whenever it calls a
7176 # tool from the auxiliary directory. The problem is that $srcdir (and
8489 #
8590 # The reason of the latter failure is that $top_srcdir and $ac_aux_dir
8691 # are both prefixed by $srcdir. In an in-source build this is usually
87 # harmless because $srcdir is '.', but things will broke when you
92 # harmless because $srcdir is `.', but things will broke when you
8893 # start a VPATH build or use an absolute $srcdir.
8994 #
9095 # So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
110115
111116 # AM_COND_IF -*- Autoconf -*-
112117
113 # Copyright (C) 2008-2013 Free Software Foundation, Inc.
114 #
115 # This file is free software; the Free Software Foundation
116 # gives unlimited permission to copy and/or distribute it,
117 # with or without modifications, as long as this notice is preserved.
118 # Copyright (C) 2008, 2010 Free Software Foundation, Inc.
119 #
120 # This file is free software; the Free Software Foundation
121 # gives unlimited permission to copy and/or distribute it,
122 # with or without modifications, as long as this notice is preserved.
123
124 # serial 3
118125
119126 # _AM_COND_IF
120127 # _AM_COND_ELSE
124131 m4_define([_AM_COND_IF])
125132 m4_define([_AM_COND_ELSE])
126133 m4_define([_AM_COND_ENDIF])
134
127135
128136 # AM_COND_IF(COND, [IF-TRUE], [IF-FALSE])
129137 # ---------------------------------------
147155
148156 # AM_CONDITIONAL -*- Autoconf -*-
149157
150 # Copyright (C) 1997-2013 Free Software Foundation, Inc.
151 #
152 # This file is free software; the Free Software Foundation
153 # gives unlimited permission to copy and/or distribute it,
154 # with or without modifications, as long as this notice is preserved.
158 # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
159 # Free Software Foundation, Inc.
160 #
161 # This file is free software; the Free Software Foundation
162 # gives unlimited permission to copy and/or distribute it,
163 # with or without modifications, as long as this notice is preserved.
164
165 # serial 9
155166
156167 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
157168 # -------------------------------------
158169 # Define a conditional.
159170 AC_DEFUN([AM_CONDITIONAL],
160 [AC_PREREQ([2.52])dnl
161 m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
162 [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
171 [AC_PREREQ(2.52)dnl
172 ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
173 [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
163174 AC_SUBST([$1_TRUE])dnl
164175 AC_SUBST([$1_FALSE])dnl
165176 _AM_SUBST_NOTMAKE([$1_TRUE])dnl
178189 Usually this means the macro was only invoked conditionally.]])
179190 fi])])
180191
181 # Copyright (C) 1999-2013 Free Software Foundation, Inc.
182 #
183 # This file is free software; the Free Software Foundation
184 # gives unlimited permission to copy and/or distribute it,
185 # with or without modifications, as long as this notice is preserved.
186
187
188 # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
192 # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
193 # 2010, 2011 Free Software Foundation, Inc.
194 #
195 # This file is free software; the Free Software Foundation
196 # gives unlimited permission to copy and/or distribute it,
197 # with or without modifications, as long as this notice is preserved.
198
199 # serial 12
200
201 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
189202 # written in clear, in which case automake, when reading aclocal.m4,
190203 # will think it sees a *use*, and therefore will trigger all it's
191204 # C support machinery. Also note that it means that autoscan, seeing
195208 # _AM_DEPENDENCIES(NAME)
196209 # ----------------------
197210 # See how the compiler implements dependency checking.
198 # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
211 # NAME is "CC", "CXX", "GCJ", or "OBJC".
199212 # We try a few techniques and use that to set a single cache variable.
200213 #
201214 # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
208221 AC_REQUIRE([AM_MAKE_INCLUDE])dnl
209222 AC_REQUIRE([AM_DEP_TRACK])dnl
210223
211 m4_if([$1], [CC], [depcc="$CC" am_compiler_list=],
212 [$1], [CXX], [depcc="$CXX" am_compiler_list=],
213 [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
214 [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
215 [$1], [UPC], [depcc="$UPC" am_compiler_list=],
216 [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
217 [depcc="$$1" am_compiler_list=])
224 ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
225 [$1], CXX, [depcc="$CXX" am_compiler_list=],
226 [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
227 [$1], UPC, [depcc="$UPC" am_compiler_list=],
228 [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
229 [depcc="$$1" am_compiler_list=])
218230
219231 AC_CACHE_CHECK([dependency style of $depcc],
220232 [am_cv_$1_dependencies_compiler_type],
222234 # We make a subdir and do the tests there. Otherwise we can end up
223235 # making bogus files that we don't know about and never remove. For
224236 # instance it was reported that on HP-UX the gcc test will end up
225 # making a dummy file named 'D' -- because '-MD' means "put the output
226 # in D".
237 # making a dummy file named `D' -- because `-MD' means `put the output
238 # in D'.
227239 rm -rf conftest.dir
228240 mkdir conftest.dir
229241 # Copy depcomp to subdir because otherwise we won't find it if we're
263275 : > sub/conftest.c
264276 for i in 1 2 3 4 5 6; do
265277 echo '#include "conftst'$i'.h"' >> sub/conftest.c
266 # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
267 # Solaris 10 /bin/sh.
268 echo '/* dummy */' > sub/conftst$i.h
278 # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
279 # Solaris 8's {/usr,}/bin/sh.
280 touch sub/conftst$i.h
269281 done
270282 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
271283
272 # We check with '-c' and '-o' for the sake of the "dashmstdout"
284 # We check with `-c' and `-o' for the sake of the "dashmstdout"
273285 # mode. It turns out that the SunPro C++ compiler does not properly
274 # handle '-M -o', and we need to detect this. Also, some Intel
275 # versions had trouble with output in subdirs.
286 # handle `-M -o', and we need to detect this. Also, some Intel
287 # versions had trouble with output in subdirs
276288 am__obj=sub/conftest.${OBJEXT-o}
277289 am__minus_obj="-o $am__obj"
278290 case $depmode in
281293 test "$am__universal" = false || continue
282294 ;;
283295 nosideeffect)
284 # After this tag, mechanisms are not by side-effect, so they'll
285 # only be used when explicitly requested.
296 # after this tag, mechanisms are not by side-effect, so they'll
297 # only be used when explicitly requested
286298 if test "x$enable_dependency_tracking" = xyes; then
287299 continue
288300 else
290302 fi
291303 ;;
292304 msvc7 | msvc7msys | msvisualcpp | msvcmsys)
293 # This compiler won't grok '-c -o', but also, the minuso test has
305 # This compiler won't grok `-c -o', but also, the minuso test has
294306 # not run yet. These depmodes are late enough in the game, and
295307 # so weak that their functioning should not be impacted.
296308 am__obj=conftest.${OBJEXT-o}
338350 # AM_SET_DEPDIR
339351 # -------------
340352 # Choose a directory name for dependency files.
341 # This macro is AC_REQUIREd in _AM_DEPENDENCIES.
353 # This macro is AC_REQUIREd in _AM_DEPENDENCIES
342354 AC_DEFUN([AM_SET_DEPDIR],
343355 [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
344356 AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
348360 # AM_DEP_TRACK
349361 # ------------
350362 AC_DEFUN([AM_DEP_TRACK],
351 [AC_ARG_ENABLE([dependency-tracking], [dnl
352 AS_HELP_STRING(
353 [--enable-dependency-tracking],
354 [do not reject slow dependency extractors])
355 AS_HELP_STRING(
356 [--disable-dependency-tracking],
357 [speeds up one-time build])])
363 [AC_ARG_ENABLE(dependency-tracking,
364 [ --disable-dependency-tracking speeds up one-time build
365 --enable-dependency-tracking do not reject slow dependency extractors])
358366 if test "x$enable_dependency_tracking" != xno; then
359367 am_depcomp="$ac_aux_dir/depcomp"
360368 AMDEPBACKSLASH='\'
369377
370378 # Generate code to set up dependency tracking. -*- Autoconf -*-
371379
372 # Copyright (C) 1999-2013 Free Software Foundation, Inc.
373 #
374 # This file is free software; the Free Software Foundation
375 # gives unlimited permission to copy and/or distribute it,
376 # with or without modifications, as long as this notice is preserved.
377
380 # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
381 # Free Software Foundation, Inc.
382 #
383 # This file is free software; the Free Software Foundation
384 # gives unlimited permission to copy and/or distribute it,
385 # with or without modifications, as long as this notice is preserved.
386
387 #serial 5
378388
379389 # _AM_OUTPUT_DEPENDENCY_COMMANDS
380390 # ------------------------------
381391 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
382392 [{
383 # Older Autoconf quotes --file arguments for eval, but not when files
393 # Autoconf 2.62 quotes --file arguments for eval, but not when files
384394 # are listed without --file. Let's play safe and only enable the eval
385395 # if we detect the quoting.
386396 case $CONFIG_FILES in
393403 # Strip MF so we end up with the name of the file.
394404 mf=`echo "$mf" | sed -e 's/:.*$//'`
395405 # Check whether this is an Automake generated Makefile or not.
396 # We used to match only the files named 'Makefile.in', but
406 # We used to match only the files named `Makefile.in', but
397407 # some people rename them; so instead we look at the file content.
398408 # Grep'ing the first line is not enough: some people post-process
399409 # each Makefile.in and add a new line on top of each file to say so.
405415 continue
406416 fi
407417 # Extract the definition of DEPDIR, am__include, and am__quote
408 # from the Makefile without running 'make'.
418 # from the Makefile without running `make'.
409419 DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
410420 test -z "$DEPDIR" && continue
411421 am__include=`sed -n 's/^am__include = //p' < "$mf"`
412 test -z "$am__include" && continue
422 test -z "am__include" && continue
413423 am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
424 # When using ansi2knr, U may be empty or an underscore; expand it
425 U=`sed -n 's/^U = //p' < "$mf"`
414426 # Find all dependency output files, they are included files with
415427 # $(DEPDIR) in their names. We invoke sed twice because it is the
416428 # simplest approach to changing $(DEPDIR) to its actual value in the
417429 # expansion.
418430 for file in `sed -n "
419431 s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
420 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
432 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
421433 # Make sure the directory exists.
422434 test -f "$dirpart/$file" && continue
423435 fdir=`AS_DIRNAME(["$file"])`
435447 # This macro should only be invoked once -- use via AC_REQUIRE.
436448 #
437449 # This code is only required when automatic dependency tracking
438 # is enabled. FIXME. This creates each '.P' file that we will
450 # is enabled. FIXME. This creates each `.P' file that we will
439451 # need in order to bootstrap the dependency handling code.
440452 AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
441453 [AC_CONFIG_COMMANDS([depfiles],
445457
446458 # Do all the work for Automake. -*- Autoconf -*-
447459
448 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
449 #
450 # This file is free software; the Free Software Foundation
451 # gives unlimited permission to copy and/or distribute it,
452 # with or without modifications, as long as this notice is preserved.
460 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
461 # 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
462 #
463 # This file is free software; the Free Software Foundation
464 # gives unlimited permission to copy and/or distribute it,
465 # with or without modifications, as long as this notice is preserved.
466
467 # serial 16
453468
454469 # This macro actually does too much. Some checks are only needed if
455470 # your package does certain things. But this isn't really a big deal.
456
457 dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
458 m4_define([AC_PROG_CC],
459 m4_defn([AC_PROG_CC])
460 [_AM_PROG_CC_C_O
461 ])
462471
463472 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
464473 # AM_INIT_AUTOMAKE([OPTIONS])
472481 # arguments mandatory, and then we can depend on a new Autoconf
473482 # release and drop the old call support.
474483 AC_DEFUN([AM_INIT_AUTOMAKE],
475 [AC_PREREQ([2.65])dnl
484 [AC_PREREQ([2.62])dnl
476485 dnl Autoconf wants to disallow AM_ names. We explicitly allow
477486 dnl the ones we care about.
478487 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
501510 # Define the identity of the package.
502511 dnl Distinguish between old-style and new-style calls.
503512 m4_ifval([$2],
504 [AC_DIAGNOSE([obsolete],
505 [$0: two- and three-arguments forms are deprecated.])
506 m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
513 [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
507514 AC_SUBST([PACKAGE], [$1])dnl
508515 AC_SUBST([VERSION], [$2])],
509516 [_AM_SET_OPTIONS([$1])dnl
510517 dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
511 m4_if(
512 m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
513 [ok:ok],,
518 m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
514519 [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
515520 AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
516521 AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
517522
518523 _AM_IF_OPTION([no-define],,
519 [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
520 AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
524 [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
525 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
521526
522527 # Some tools Automake needs.
523528 AC_REQUIRE([AM_SANITY_CHECK])dnl
524529 AC_REQUIRE([AC_ARG_PROGRAM])dnl
525 AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
526 AM_MISSING_PROG([AUTOCONF], [autoconf])
527 AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
528 AM_MISSING_PROG([AUTOHEADER], [autoheader])
529 AM_MISSING_PROG([MAKEINFO], [makeinfo])
530 AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
531 AM_MISSING_PROG(AUTOCONF, autoconf)
532 AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
533 AM_MISSING_PROG(AUTOHEADER, autoheader)
534 AM_MISSING_PROG(MAKEINFO, makeinfo)
530535 AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
531536 AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
532 AC_REQUIRE([AC_PROG_MKDIR_P])dnl
533 # For better backward compatibility. To be removed once Automake 1.9.x
534 # dies out for good. For more background, see:
535 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
536 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
537 AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
537 AC_REQUIRE([AM_PROG_MKDIR_P])dnl
538538 # We need awk for the "check" target. The system "awk" is bad on
539539 # some platforms.
540540 AC_REQUIRE([AC_PROG_AWK])dnl
545545 [_AM_PROG_TAR([v7])])])
546546 _AM_IF_OPTION([no-dependencies],,
547547 [AC_PROVIDE_IFELSE([AC_PROG_CC],
548 [_AM_DEPENDENCIES([CC])],
549 [m4_define([AC_PROG_CC],
550 m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
548 [_AM_DEPENDENCIES(CC)],
549 [define([AC_PROG_CC],
550 defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
551551 AC_PROVIDE_IFELSE([AC_PROG_CXX],
552 [_AM_DEPENDENCIES([CXX])],
553 [m4_define([AC_PROG_CXX],
554 m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
552 [_AM_DEPENDENCIES(CXX)],
553 [define([AC_PROG_CXX],
554 defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
555555 AC_PROVIDE_IFELSE([AC_PROG_OBJC],
556 [_AM_DEPENDENCIES([OBJC])],
557 [m4_define([AC_PROG_OBJC],
558 m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
559 AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
560 [_AM_DEPENDENCIES([OBJCXX])],
561 [m4_define([AC_PROG_OBJCXX],
562 m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
563 ])
564 AC_REQUIRE([AM_SILENT_RULES])dnl
565 dnl The testsuite driver may need to know about EXEEXT, so add the
566 dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
567 dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
556 [_AM_DEPENDENCIES(OBJC)],
557 [define([AC_PROG_OBJC],
558 defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
559 ])
560 _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
561 dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
562 dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
563 dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
568564 AC_CONFIG_COMMANDS_PRE(dnl
569565 [m4_provide_if([_AM_COMPILER_EXEEXT],
570566 [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
571
572 # POSIX will say in a future version that running "rm -f" with no argument
573 # is OK; and we want to be able to make that assumption in our Makefile
574 # recipes. So use an aggressive probe to check that the usage we want is
575 # actually supported "in the wild" to an acceptable degree.
576 # See automake bug#10828.
577 # To make any issue more visible, cause the running configure to be aborted
578 # by default if the 'rm' program in use doesn't match our expectations; the
579 # user can still override this though.
580 if rm -f && rm -fr && rm -rf; then : OK; else
581 cat >&2 <<'END'
582 Oops!
583
584 Your 'rm' program seems unable to run without file operands specified
585 on the command line, even when the '-f' option is present. This is contrary
586 to the behaviour of most rm programs out there, and not conforming with
587 the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
588
589 Please tell bug-automake@gnu.org about your system, including the value
590 of your $PATH and any error possibly output before this message. This
591 can help us improve future automake versions.
592
593 END
594 if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
595 echo 'Configuration will proceed anyway, since you have set the' >&2
596 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
597 echo >&2
598 else
599 cat >&2 <<'END'
600 Aborting the configuration process, to ensure you take notice of the issue.
601
602 You can download and install GNU coreutils to get an 'rm' implementation
603 that behaves properly: <http://www.gnu.org/software/coreutils/>.
604
605 If you want to complete the configuration process using your problematic
606 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
607 to "yes", and re-run configure.
608
609 END
610 AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
611 fi
612 fi
613 ])
614
615 dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
567 ])
568
569 dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
616570 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
617571 dnl mangled by Autoconf and run in a shell conditional statement.
618572 m4_define([_AC_COMPILER_EXEEXT],
619573 m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
574
620575
621576 # When config.status generates a header, we must update the stamp-h file.
622577 # This file resides in the same directory as the config header
639594 done
640595 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
641596
642 # Copyright (C) 2001-2013 Free Software Foundation, Inc.
643 #
644 # This file is free software; the Free Software Foundation
645 # gives unlimited permission to copy and/or distribute it,
646 # with or without modifications, as long as this notice is preserved.
597 # Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
598 # Inc.
599 #
600 # This file is free software; the Free Software Foundation
601 # gives unlimited permission to copy and/or distribute it,
602 # with or without modifications, as long as this notice is preserved.
603
604 # serial 1
647605
648606 # AM_PROG_INSTALL_SH
649607 # ------------------
658616 install_sh="\${SHELL} $am_aux_dir/install-sh"
659617 esac
660618 fi
661 AC_SUBST([install_sh])])
662
663 # Copyright (C) 2003-2013 Free Software Foundation, Inc.
664 #
665 # This file is free software; the Free Software Foundation
666 # gives unlimited permission to copy and/or distribute it,
667 # with or without modifications, as long as this notice is preserved.
619 AC_SUBST(install_sh)])
620
621 # Copyright (C) 2003, 2005 Free Software Foundation, Inc.
622 #
623 # This file is free software; the Free Software Foundation
624 # gives unlimited permission to copy and/or distribute it,
625 # with or without modifications, as long as this notice is preserved.
626
627 # serial 2
668628
669629 # Check whether the underlying file-system supports filenames
670630 # with a leading dot. For instance MS-DOS doesn't.
681641
682642 # Check to see how 'make' treats includes. -*- Autoconf -*-
683643
684 # Copyright (C) 2001-2013 Free Software Foundation, Inc.
685 #
686 # This file is free software; the Free Software Foundation
687 # gives unlimited permission to copy and/or distribute it,
688 # with or without modifications, as long as this notice is preserved.
644 # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
645 #
646 # This file is free software; the Free Software Foundation
647 # gives unlimited permission to copy and/or distribute it,
648 # with or without modifications, as long as this notice is preserved.
649
650 # serial 4
689651
690652 # AM_MAKE_INCLUDE()
691653 # -----------------
704666 _am_result=none
705667 # First try GNU make style include.
706668 echo "include confinc" > confmf
707 # Ignore all kinds of additional output from 'make'.
669 # Ignore all kinds of additional output from `make'.
708670 case `$am_make -s -f confmf 2> /dev/null` in #(
709671 *the\ am__doit\ target*)
710672 am__include=include
731693
732694 # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
733695
734 # Copyright (C) 1997-2013 Free Software Foundation, Inc.
735 #
736 # This file is free software; the Free Software Foundation
737 # gives unlimited permission to copy and/or distribute it,
738 # with or without modifications, as long as this notice is preserved.
696 # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
697 # Free Software Foundation, Inc.
698 #
699 # This file is free software; the Free Software Foundation
700 # gives unlimited permission to copy and/or distribute it,
701 # with or without modifications, as long as this notice is preserved.
702
703 # serial 6
739704
740705 # AM_MISSING_PROG(NAME, PROGRAM)
741706 # ------------------------------
744709 $1=${$1-"${am_missing_run}$2"}
745710 AC_SUBST($1)])
746711
712
747713 # AM_MISSING_HAS_RUN
748714 # ------------------
749 # Define MISSING if not defined so far and test if it is modern enough.
750 # If it is, set am_missing_run to use it, otherwise, to nothing.
715 # Define MISSING if not defined so far and test if it supports --run.
716 # If it does, set am_missing_run to use it, otherwise, to nothing.
751717 AC_DEFUN([AM_MISSING_HAS_RUN],
752718 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
753719 AC_REQUIRE_AUX_FILE([missing])dnl
760726 esac
761727 fi
762728 # Use eval to expand $SHELL
763 if eval "$MISSING --is-lightweight"; then
764 am_missing_run="$MISSING "
729 if eval "$MISSING --run true"; then
730 am_missing_run="$MISSING --run "
765731 else
766732 am_missing_run=
767 AC_MSG_WARN(['missing' script is too old or missing])
768 fi
733 AC_MSG_WARN([`missing' script is too old or missing])
734 fi
735 ])
736
737 # Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
738 # Inc.
739 #
740 # This file is free software; the Free Software Foundation
741 # gives unlimited permission to copy and/or distribute it,
742 # with or without modifications, as long as this notice is preserved.
743
744 # serial 1
745
746 # AM_PROG_MKDIR_P
747 # ---------------
748 # Check for `mkdir -p'.
749 AC_DEFUN([AM_PROG_MKDIR_P],
750 [AC_PREREQ([2.60])dnl
751 AC_REQUIRE([AC_PROG_MKDIR_P])dnl
752 dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
753 dnl while keeping a definition of mkdir_p for backward compatibility.
754 dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
755 dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
756 dnl Makefile.ins that do not define MKDIR_P, so we do our own
757 dnl adjustment using top_builddir (which is defined more often than
758 dnl MKDIR_P).
759 AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
760 case $mkdir_p in
761 [[\\/$]]* | ?:[[\\/]]*) ;;
762 */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
763 esac
769764 ])
770765
771766 # Helper functions for option handling. -*- Autoconf -*-
772767
773 # Copyright (C) 2001-2013 Free Software Foundation, Inc.
774 #
775 # This file is free software; the Free Software Foundation
776 # gives unlimited permission to copy and/or distribute it,
777 # with or without modifications, as long as this notice is preserved.
768 # Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
769 # Foundation, Inc.
770 #
771 # This file is free software; the Free Software Foundation
772 # gives unlimited permission to copy and/or distribute it,
773 # with or without modifications, as long as this notice is preserved.
774
775 # serial 5
778776
779777 # _AM_MANGLE_OPTION(NAME)
780778 # -----------------------
785783 # --------------------
786784 # Set option NAME. Presently that only means defining a flag for this option.
787785 AC_DEFUN([_AM_SET_OPTION],
788 [m4_define(_AM_MANGLE_OPTION([$1]), [1])])
786 [m4_define(_AM_MANGLE_OPTION([$1]), 1)])
789787
790788 # _AM_SET_OPTIONS(OPTIONS)
791789 # ------------------------
799797 AC_DEFUN([_AM_IF_OPTION],
800798 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
801799
802 # Copyright (C) 1999-2013 Free Software Foundation, Inc.
803 #
804 # This file is free software; the Free Software Foundation
805 # gives unlimited permission to copy and/or distribute it,
806 # with or without modifications, as long as this notice is preserved.
807
808 # _AM_PROG_CC_C_O
809 # ---------------
810 # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC
811 # to automatically call this.
812 AC_DEFUN([_AM_PROG_CC_C_O],
813 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
814 AC_REQUIRE_AUX_FILE([compile])dnl
815 AC_LANG_PUSH([C])dnl
816 AC_CACHE_CHECK(
817 [whether $CC understands -c and -o together],
818 [am_cv_prog_cc_c_o],
819 [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
820 # Make sure it works both with $CC and with simple cc.
821 # Following AC_PROG_CC_C_O, we do the test twice because some
822 # compilers refuse to overwrite an existing .o file with -o,
823 # though they will create one.
824 am_cv_prog_cc_c_o=yes
825 for am_i in 1 2; do
826 if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
827 && test -f conftest2.$ac_objext; then
828 : OK
829 else
830 am_cv_prog_cc_c_o=no
831 break
832 fi
833 done
834 rm -f core conftest*
835 unset am_i])
836 if test "$am_cv_prog_cc_c_o" != yes; then
837 # Losing compiler, so override with the script.
838 # FIXME: It is wrong to rewrite CC.
839 # But if we don't then we get into trouble of one sort or another.
840 # A longer-term fix would be to have automake use am__CC in this case,
841 # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
842 CC="$am_aux_dir/compile $CC"
843 fi
844 AC_LANG_POP([C])])
845
846 # For backward compatibility.
847 AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
848
849 # Copyright (C) 2001-2013 Free Software Foundation, Inc.
850 #
851 # This file is free software; the Free Software Foundation
852 # gives unlimited permission to copy and/or distribute it,
853 # with or without modifications, as long as this notice is preserved.
854
855 # AM_RUN_LOG(COMMAND)
856 # -------------------
857 # Run COMMAND, save the exit status in ac_status, and log it.
858 # (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
859 AC_DEFUN([AM_RUN_LOG],
860 [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
861 ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
862 ac_status=$?
863 echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
864 (exit $ac_status); }])
865
866800 # Check to make sure that the build environment is sane. -*- Autoconf -*-
867801
868 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
869 #
870 # This file is free software; the Free Software Foundation
871 # gives unlimited permission to copy and/or distribute it,
872 # with or without modifications, as long as this notice is preserved.
802 # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
803 # Free Software Foundation, Inc.
804 #
805 # This file is free software; the Free Software Foundation
806 # gives unlimited permission to copy and/or distribute it,
807 # with or without modifications, as long as this notice is preserved.
808
809 # serial 5
873810
874811 # AM_SANITY_CHECK
875812 # ---------------
876813 AC_DEFUN([AM_SANITY_CHECK],
877814 [AC_MSG_CHECKING([whether build environment is sane])
815 # Just in case
816 sleep 1
817 echo timestamp > conftest.file
878818 # Reject unsafe characters in $srcdir or the absolute working directory
879819 # name. Accept space and tab only in the latter.
880820 am_lf='
885825 esac
886826 case $srcdir in
887827 *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
888 AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
828 AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
889829 esac
890830
891 # Do 'set' in a subshell so we don't clobber the current shell's
831 # Do `set' in a subshell so we don't clobber the current shell's
892832 # arguments. Must try -L first in case configure is actually a
893833 # symlink; some systems play weird games with the mod time of symlinks
894834 # (eg FreeBSD returns the mod time of the symlink's containing
895835 # directory).
896836 if (
897 am_has_slept=no
898 for am_try in 1 2; do
899 echo "timestamp, slept: $am_has_slept" > conftest.file
900 set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
901 if test "$[*]" = "X"; then
902 # -L didn't work.
903 set X `ls -t "$srcdir/configure" conftest.file`
904 fi
905 if test "$[*]" != "X $srcdir/configure conftest.file" \
906 && test "$[*]" != "X conftest.file $srcdir/configure"; then
907
908 # If neither matched, then we have a broken ls. This can happen
909 # if, for instance, CONFIG_SHELL is bash and it inherits a
910 # broken ls alias from the environment. This has actually
911 # happened. Such a system could not be considered "sane".
912 AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
913 alias in your environment])
914 fi
915 if test "$[2]" = conftest.file || test $am_try -eq 2; then
916 break
917 fi
918 # Just in case.
919 sleep 1
920 am_has_slept=yes
921 done
837 set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
838 if test "$[*]" = "X"; then
839 # -L didn't work.
840 set X `ls -t "$srcdir/configure" conftest.file`
841 fi
842 rm -f conftest.file
843 if test "$[*]" != "X $srcdir/configure conftest.file" \
844 && test "$[*]" != "X conftest.file $srcdir/configure"; then
845
846 # If neither matched, then we have a broken ls. This can happen
847 # if, for instance, CONFIG_SHELL is bash and it inherits a
848 # broken ls alias from the environment. This has actually
849 # happened. Such a system could not be considered "sane".
850 AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
851 alias in your environment])
852 fi
853
922854 test "$[2]" = conftest.file
923855 )
924856 then
928860 AC_MSG_ERROR([newly created file is older than distributed files!
929861 Check your system clock])
930862 fi
931 AC_MSG_RESULT([yes])
932 # If we didn't sleep, we still need to ensure time stamps of config.status and
933 # generated files are strictly newer.
934 am_sleep_pid=
935 if grep 'slept: no' conftest.file >/dev/null 2>&1; then
936 ( sleep 1 ) &
937 am_sleep_pid=$!
938 fi
939 AC_CONFIG_COMMANDS_PRE(
940 [AC_MSG_CHECKING([that generated files are newer than configure])
941 if test -n "$am_sleep_pid"; then
942 # Hide warnings about reused PIDs.
943 wait $am_sleep_pid 2>/dev/null
944 fi
945 AC_MSG_RESULT([done])])
946 rm -f conftest.file
947 ])
948
949 # Copyright (C) 2009-2013 Free Software Foundation, Inc.
950 #
951 # This file is free software; the Free Software Foundation
952 # gives unlimited permission to copy and/or distribute it,
953 # with or without modifications, as long as this notice is preserved.
954
955 # AM_SILENT_RULES([DEFAULT])
956 # --------------------------
957 # Enable less verbose build rules; with the default set to DEFAULT
958 # ("yes" being less verbose, "no" or empty being verbose).
959 AC_DEFUN([AM_SILENT_RULES],
960 [AC_ARG_ENABLE([silent-rules], [dnl
961 AS_HELP_STRING(
962 [--enable-silent-rules],
963 [less verbose build output (undo: "make V=1")])
964 AS_HELP_STRING(
965 [--disable-silent-rules],
966 [verbose build output (undo: "make V=0")])dnl
967 ])
968 case $enable_silent_rules in @%:@ (((
969 yes) AM_DEFAULT_VERBOSITY=0;;
970 no) AM_DEFAULT_VERBOSITY=1;;
971 *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
972 esac
973 dnl
974 dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
975 dnl do not support nested variable expansions.
976 dnl See automake bug#9928 and bug#10237.
977 am_make=${MAKE-make}
978 AC_CACHE_CHECK([whether $am_make supports nested variables],
979 [am_cv_make_support_nested_variables],
980 [if AS_ECHO([['TRUE=$(BAR$(V))
981 BAR0=false
982 BAR1=true
983 V=1
984 am__doit:
985 @$(TRUE)
986 .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
987 am_cv_make_support_nested_variables=yes
988 else
989 am_cv_make_support_nested_variables=no
990 fi])
991 if test $am_cv_make_support_nested_variables = yes; then
992 dnl Using '$V' instead of '$(V)' breaks IRIX make.
993 AM_V='$(V)'
994 AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
995 else
996 AM_V=$AM_DEFAULT_VERBOSITY
997 AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
998 fi
999 AC_SUBST([AM_V])dnl
1000 AM_SUBST_NOTMAKE([AM_V])dnl
1001 AC_SUBST([AM_DEFAULT_V])dnl
1002 AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
1003 AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
1004 AM_BACKSLASH='\'
1005 AC_SUBST([AM_BACKSLASH])dnl
1006 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
1007 ])
1008
1009 # Copyright (C) 2001-2013 Free Software Foundation, Inc.
1010 #
1011 # This file is free software; the Free Software Foundation
1012 # gives unlimited permission to copy and/or distribute it,
1013 # with or without modifications, as long as this notice is preserved.
863 AC_MSG_RESULT(yes)])
864
865 # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
866 #
867 # This file is free software; the Free Software Foundation
868 # gives unlimited permission to copy and/or distribute it,
869 # with or without modifications, as long as this notice is preserved.
870
871 # serial 1
1014872
1015873 # AM_PROG_INSTALL_STRIP
1016874 # ---------------------
1017 # One issue with vendor 'install' (even GNU) is that you can't
875 # One issue with vendor `install' (even GNU) is that you can't
1018876 # specify the program used to strip binaries. This is especially
1019877 # annoying in cross-compiling environments, where the build's strip
1020878 # is unlikely to handle the host's binaries.
1021879 # Fortunately install-sh will honor a STRIPPROG variable, so we
1022 # always use install-sh in "make install-strip", and initialize
880 # always use install-sh in `make install-strip', and initialize
1023881 # STRIPPROG with the value of the STRIP variable (set by the user).
1024882 AC_DEFUN([AM_PROG_INSTALL_STRIP],
1025883 [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
1026 # Installed binaries are usually stripped using 'strip' when the user
1027 # run "make install-strip". However 'strip' might not be the right
884 # Installed binaries are usually stripped using `strip' when the user
885 # run `make install-strip'. However `strip' might not be the right
1028886 # tool to use in cross-compilation environments, therefore Automake
1029 # will honor the 'STRIP' environment variable to overrule this program.
1030 dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
887 # will honor the `STRIP' environment variable to overrule this program.
888 dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
1031889 if test "$cross_compiling" != no; then
1032890 AC_CHECK_TOOL([STRIP], [strip], :)
1033891 fi
1034892 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
1035893 AC_SUBST([INSTALL_STRIP_PROGRAM])])
1036894
1037 # Copyright (C) 2006-2013 Free Software Foundation, Inc.
1038 #
1039 # This file is free software; the Free Software Foundation
1040 # gives unlimited permission to copy and/or distribute it,
1041 # with or without modifications, as long as this notice is preserved.
895 # Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
896 #
897 # This file is free software; the Free Software Foundation
898 # gives unlimited permission to copy and/or distribute it,
899 # with or without modifications, as long as this notice is preserved.
900
901 # serial 3
1042902
1043903 # _AM_SUBST_NOTMAKE(VARIABLE)
1044904 # ---------------------------
1053913
1054914 # Check how to create a tarball. -*- Autoconf -*-
1055915
1056 # Copyright (C) 2004-2013 Free Software Foundation, Inc.
1057 #
1058 # This file is free software; the Free Software Foundation
1059 # gives unlimited permission to copy and/or distribute it,
1060 # with or without modifications, as long as this notice is preserved.
916 # Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
917 #
918 # This file is free software; the Free Software Foundation
919 # gives unlimited permission to copy and/or distribute it,
920 # with or without modifications, as long as this notice is preserved.
921
922 # serial 2
1061923
1062924 # _AM_PROG_TAR(FORMAT)
1063925 # --------------------
1064926 # Check how to create a tarball in format FORMAT.
1065 # FORMAT should be one of 'v7', 'ustar', or 'pax'.
927 # FORMAT should be one of `v7', `ustar', or `pax'.
1066928 #
1067929 # Substitute a variable $(am__tar) that is a command
1068930 # writing to stdout a FORMAT-tarball containing the directory
1072934 # Substitute a variable $(am__untar) that extract such
1073935 # a tarball read from stdin.
1074936 # $(am__untar) < result.tar
1075 #
1076937 AC_DEFUN([_AM_PROG_TAR],
1077938 [# Always define AMTAR for backward compatibility. Yes, it's still used
1078939 # in the wild :-( We should find a proper way to deprecate it ...
1079940 AC_SUBST([AMTAR], ['$${TAR-tar}'])
1080
1081 # We'll loop over all known methods to create a tar archive until one works.
941 m4_if([$1], [v7],
942 [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
943 [m4_case([$1], [ustar],, [pax],,
944 [m4_fatal([Unknown tar format])])
945 AC_MSG_CHECKING([how to create a $1 tar archive])
946 # Loop over all known methods to create a tar archive until one works.
1082947 _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
1083
1084 m4_if([$1], [v7],
1085 [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
1086
1087 [m4_case([$1],
1088 [ustar],
1089 [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
1090 # There is notably a 21 bits limit for the UID and the GID. In fact,
1091 # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
1092 # and bug#13588).
1093 am_max_uid=2097151 # 2^21 - 1
1094 am_max_gid=$am_max_uid
1095 # The $UID and $GID variables are not portable, so we need to resort
1096 # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
1097 # below are definitely unexpected, so allow the users to see them
1098 # (that is, avoid stderr redirection).
1099 am_uid=`id -u || echo unknown`
1100 am_gid=`id -g || echo unknown`
1101 AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
1102 if test $am_uid -le $am_max_uid; then
1103 AC_MSG_RESULT([yes])
1104 else
1105 AC_MSG_RESULT([no])
1106 _am_tools=none
1107 fi
1108 AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
1109 if test $am_gid -le $am_max_gid; then
1110 AC_MSG_RESULT([yes])
1111 else
1112 AC_MSG_RESULT([no])
1113 _am_tools=none
1114 fi],
1115
1116 [pax],
1117 [],
1118
1119 [m4_fatal([Unknown tar format])])
1120
1121 AC_MSG_CHECKING([how to create a $1 tar archive])
1122
1123 # Go ahead even if we have the value already cached. We do so because we
1124 # need to set the values for the 'am__tar' and 'am__untar' variables.
1125 _am_tools=${am_cv_prog_tar_$1-$_am_tools}
1126
1127 for _am_tool in $_am_tools; do
1128 case $_am_tool in
1129 gnutar)
1130 for _am_tar in tar gnutar gtar; do
1131 AM_RUN_LOG([$_am_tar --version]) && break
1132 done
1133 am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
1134 am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
1135 am__untar="$_am_tar -xf -"
1136 ;;
1137 plaintar)
1138 # Must skip GNU tar: if it does not support --format= it doesn't create
1139 # ustar tarball either.
1140 (tar --version) >/dev/null 2>&1 && continue
1141 am__tar='tar chf - "$$tardir"'
1142 am__tar_='tar chf - "$tardir"'
1143 am__untar='tar xf -'
1144 ;;
1145 pax)
1146 am__tar='pax -L -x $1 -w "$$tardir"'
1147 am__tar_='pax -L -x $1 -w "$tardir"'
1148 am__untar='pax -r'
1149 ;;
1150 cpio)
1151 am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
1152 am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
1153 am__untar='cpio -i -H $1 -d'
1154 ;;
1155 none)
1156 am__tar=false
1157 am__tar_=false
1158 am__untar=false
1159 ;;
1160 esac
1161
1162 # If the value was cached, stop now. We just wanted to have am__tar
1163 # and am__untar set.
1164 test -n "${am_cv_prog_tar_$1}" && break
1165
1166 # tar/untar a dummy directory, and stop if the command works.
1167 rm -rf conftest.dir
1168 mkdir conftest.dir
1169 echo GrepMe > conftest.dir/file
1170 AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
1171 rm -rf conftest.dir
1172 if test -s conftest.tar; then
1173 AM_RUN_LOG([$am__untar <conftest.tar])
1174 AM_RUN_LOG([cat conftest.dir/file])
1175 grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
1176 fi
1177 done
948 _am_tools=${am_cv_prog_tar_$1-$_am_tools}
949 # Do not fold the above two line into one, because Tru64 sh and
950 # Solaris sh will not grok spaces in the rhs of `-'.
951 for _am_tool in $_am_tools
952 do
953 case $_am_tool in
954 gnutar)
955 for _am_tar in tar gnutar gtar;
956 do
957 AM_RUN_LOG([$_am_tar --version]) && break
958 done
959 am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
960 am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
961 am__untar="$_am_tar -xf -"
962 ;;
963 plaintar)
964 # Must skip GNU tar: if it does not support --format= it doesn't create
965 # ustar tarball either.
966 (tar --version) >/dev/null 2>&1 && continue
967 am__tar='tar chf - "$$tardir"'
968 am__tar_='tar chf - "$tardir"'
969 am__untar='tar xf -'
970 ;;
971 pax)
972 am__tar='pax -L -x $1 -w "$$tardir"'
973 am__tar_='pax -L -x $1 -w "$tardir"'
974 am__untar='pax -r'
975 ;;
976 cpio)
977 am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
978 am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
979 am__untar='cpio -i -H $1 -d'
980 ;;
981 none)
982 am__tar=false
983 am__tar_=false
984 am__untar=false
985 ;;
986 esac
987
988 # If the value was cached, stop now. We just wanted to have am__tar
989 # and am__untar set.
990 test -n "${am_cv_prog_tar_$1}" && break
991
992 # tar/untar a dummy directory, and stop if the command works
1178993 rm -rf conftest.dir
1179
1180 AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
1181 AC_MSG_RESULT([$am_cv_prog_tar_$1])])
1182
994 mkdir conftest.dir
995 echo GrepMe > conftest.dir/file
996 AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
997 rm -rf conftest.dir
998 if test -s conftest.tar; then
999 AM_RUN_LOG([$am__untar <conftest.tar])
1000 grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
1001 fi
1002 done
1003 rm -rf conftest.dir
1004
1005 AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
1006 AC_MSG_RESULT([$am_cv_prog_tar_$1])])
11831007 AC_SUBST([am__tar])
11841008 AC_SUBST([am__untar])
11851009 ]) # _AM_PROG_TAR
00 #! /bin/sh
11 # Guess values for system-dependent variables and create Makefiles.
2 # Generated by GNU Autoconf 2.69 for libglpk-java 1.0.34.
2 # Generated by GNU Autoconf 2.69 for GLPK for Java 1.0.36.
33 #
44 # Report bugs to <xypron.glpk@gmx.de>.
55 #
587587 MAKEFLAGS=
588588
589589 # Identity of this package.
590 PACKAGE_NAME='libglpk-java'
590 PACKAGE_NAME='GLPK for Java'
591591 PACKAGE_TARNAME='libglpk-java'
592 PACKAGE_VERSION='1.0.34'
593 PACKAGE_STRING='libglpk-java 1.0.34'
592 PACKAGE_VERSION='1.0.36'
593 PACKAGE_STRING='GLPK for Java 1.0.36'
594594 PACKAGE_BUGREPORT='xypron.glpk@gmx.de'
595 PACKAGE_URL=''
595 PACKAGE_URL='http://glpk-java.sourceforge.net'
596596
597597 # Factoring default headers for most tests.
598598 ac_includes_default="\
690690 build_cpu
691691 build
692692 LIBTOOL
693 AM_BACKSLASH
694 AM_DEFAULT_VERBOSITY
695 AM_DEFAULT_V
696 AM_V
697693 am__untar
698694 am__tar
699695 AMTAR
758754 ac_subst_files=''
759755 ac_user_opts='
760756 enable_option_checking
761 enable_silent_rules
762757 enable_shared
763758 enable_static
764759 with_pic
767762 with_gnu_ld
768763 with_sysroot
769764 enable_libtool_lock
765 enable_libpath
770766 '
771767 ac_precious_vars='build_alias
772768 host_alias
13181314 # Omit some internal or obsolete options to make the list less imposing.
13191315 # This message is too long to be a string in the A/UX 3.1 sh.
13201316 cat <<_ACEOF
1321 \`configure' configures libglpk-java 1.0.34 to adapt to many kinds of systems.
1317 \`configure' configures GLPK for Java 1.0.36 to adapt to many kinds of systems.
13221318
13231319 Usage: $0 [OPTION]... [VAR=VALUE]...
13241320
13881384
13891385 if test -n "$ac_init_help"; then
13901386 case $ac_init_help in
1391 short | recursive ) echo "Configuration of libglpk-java 1.0.34:";;
1387 short | recursive ) echo "Configuration of GLPK for Java 1.0.36:";;
13921388 esac
13931389 cat <<\_ACEOF
13941390
13961392 --disable-option-checking ignore unrecognized --enable/--with options
13971393 --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
13981394 --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
1399 --enable-silent-rules less verbose build output (undo: "make V=1")
1400 --disable-silent-rules verbose build output (undo: "make V=0")
14011395 --enable-shared[=PKGS] build shared libraries [default=yes]
14021396 --enable-static[=PKGS] build static libraries [default=yes]
14031397 --enable-fast-install[=PKGS]
14041398 optimize for fast installation [default=yes]
1405 --enable-dependency-tracking
1406 do not reject slow dependency extractors
1407 --disable-dependency-tracking
1408 speeds up one-time build
1399 --disable-dependency-tracking speeds up one-time build
1400 --enable-dependency-tracking do not reject slow dependency extractors
14091401 --disable-libtool-lock avoid locking (might break parallel builds)
1402 --enable-libpath load GLPK library from java.library.path
1403 [[default=no]]
14101404
14111405 Optional Packages:
14121406 --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
14321426 it to find libraries and programs with nonstandard names/locations.
14331427
14341428 Report bugs to <xypron.glpk@gmx.de>.
1429 GLPK for Java home page: <http://glpk-java.sourceforge.net>.
14351430 _ACEOF
14361431 ac_status=$?
14371432 fi
14941489 test -n "$ac_init_help" && exit $ac_status
14951490 if $ac_init_version; then
14961491 cat <<\_ACEOF
1497 libglpk-java configure 1.0.34
1492 GLPK for Java configure 1.0.36
14981493 generated by GNU Autoconf 2.69
14991494
15001495 Copyright (C) 2012 Free Software Foundation, Inc.
18631858 This file contains any messages produced by compilers while
18641859 running configure, to aid debugging if configure makes a mistake.
18651860
1866 It was created by libglpk-java $as_me 1.0.34, which was
1861 It was created by GLPK for Java $as_me 1.0.36, which was
18671862 generated by GNU Autoconf 2.69. Invocation command line was
18681863
18691864 $ $0 $@
22142209 ac_config_headers="$ac_config_headers config.h"
22152210
22162211
2217 am__api_version='1.14'
2212 am__api_version='1.11'
22182213
22192214 ac_aux_dir=
22202215 for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
23402335
23412336 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
23422337 $as_echo_n "checking whether build environment is sane... " >&6; }
2338 # Just in case
2339 sleep 1
2340 echo timestamp > conftest.file
23432341 # Reject unsafe characters in $srcdir or the absolute working directory
23442342 # name. Accept space and tab only in the latter.
23452343 am_lf='
23502348 esac
23512349 case $srcdir in
23522350 *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
2353 as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
2351 as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
23542352 esac
23552353
2356 # Do 'set' in a subshell so we don't clobber the current shell's
2354 # Do `set' in a subshell so we don't clobber the current shell's
23572355 # arguments. Must try -L first in case configure is actually a
23582356 # symlink; some systems play weird games with the mod time of symlinks
23592357 # (eg FreeBSD returns the mod time of the symlink's containing
23602358 # directory).
23612359 if (
2362 am_has_slept=no
2363 for am_try in 1 2; do
2364 echo "timestamp, slept: $am_has_slept" > conftest.file
2365 set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
2366 if test "$*" = "X"; then
2367 # -L didn't work.
2368 set X `ls -t "$srcdir/configure" conftest.file`
2369 fi
2370 if test "$*" != "X $srcdir/configure conftest.file" \
2371 && test "$*" != "X conftest.file $srcdir/configure"; then
2372
2373 # If neither matched, then we have a broken ls. This can happen
2374 # if, for instance, CONFIG_SHELL is bash and it inherits a
2375 # broken ls alias from the environment. This has actually
2376 # happened. Such a system could not be considered "sane".
2377 as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
2378 alias in your environment" "$LINENO" 5
2379 fi
2380 if test "$2" = conftest.file || test $am_try -eq 2; then
2381 break
2382 fi
2383 # Just in case.
2384 sleep 1
2385 am_has_slept=yes
2386 done
2360 set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
2361 if test "$*" = "X"; then
2362 # -L didn't work.
2363 set X `ls -t "$srcdir/configure" conftest.file`
2364 fi
2365 rm -f conftest.file
2366 if test "$*" != "X $srcdir/configure conftest.file" \
2367 && test "$*" != "X conftest.file $srcdir/configure"; then
2368
2369 # If neither matched, then we have a broken ls. This can happen
2370 # if, for instance, CONFIG_SHELL is bash and it inherits a
2371 # broken ls alias from the environment. This has actually
2372 # happened. Such a system could not be considered "sane".
2373 as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
2374 alias in your environment" "$LINENO" 5
2375 fi
2376
23872377 test "$2" = conftest.file
23882378 )
23892379 then
23952385 fi
23962386 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
23972387 $as_echo "yes" >&6; }
2398 # If we didn't sleep, we still need to ensure time stamps of config.status and
2399 # generated files are strictly newer.
2400 am_sleep_pid=
2401 if grep 'slept: no' conftest.file >/dev/null 2>&1; then
2402 ( sleep 1 ) &
2403 am_sleep_pid=$!
2404 fi
2405
2406 rm -f conftest.file
2407
24082388 test "$program_prefix" != NONE &&
24092389 program_transform_name="s&^&$program_prefix&;$program_transform_name"
24102390 # Use a double $ so make ignores it.
24272407 esac
24282408 fi
24292409 # Use eval to expand $SHELL
2430 if eval "$MISSING --is-lightweight"; then
2431 am_missing_run="$MISSING "
2410 if eval "$MISSING --run true"; then
2411 am_missing_run="$MISSING --run "
24322412 else
24332413 am_missing_run=
2434 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
2435 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
2414 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
2415 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
24362416 fi
24372417
24382418 if test x"${install_sh}" != xset; then
24442424 esac
24452425 fi
24462426
2447 # Installed binaries are usually stripped using 'strip' when the user
2448 # run "make install-strip". However 'strip' might not be the right
2427 # Installed binaries are usually stripped using `strip' when the user
2428 # run `make install-strip'. However `strip' might not be the right
24492429 # tool to use in cross-compilation environments, therefore Automake
2450 # will honor the 'STRIP' environment variable to overrule this program.
2430 # will honor the `STRIP' environment variable to overrule this program.
24512431 if test "$cross_compiling" != no; then
24522432 if test -n "$ac_tool_prefix"; then
24532433 # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
25862566 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
25872567 $as_echo "$MKDIR_P" >&6; }
25882568
2569 mkdir_p="$MKDIR_P"
2570 case $mkdir_p in
2571 [\\/$]* | ?:[\\/]*) ;;
2572 */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
2573 esac
2574
25892575 for ac_prog in gawk mawk nawk awk
25902576 do
25912577 # Extract the first word of "$ac_prog", so it can be a program name with args.
26682654 fi
26692655 rmdir .tst 2>/dev/null
26702656
2671 # Check whether --enable-silent-rules was given.
2672 if test "${enable_silent_rules+set}" = set; then :
2673 enableval=$enable_silent_rules;
2674 fi
2675
2676 case $enable_silent_rules in # (((
2677 yes) AM_DEFAULT_VERBOSITY=0;;
2678 no) AM_DEFAULT_VERBOSITY=1;;
2679 *) AM_DEFAULT_VERBOSITY=1;;
2680 esac
2681 am_make=${MAKE-make}
2682 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
2683 $as_echo_n "checking whether $am_make supports nested variables... " >&6; }
2684 if ${am_cv_make_support_nested_variables+:} false; then :
2685 $as_echo_n "(cached) " >&6
2686 else
2687 if $as_echo 'TRUE=$(BAR$(V))
2688 BAR0=false
2689 BAR1=true
2690 V=1
2691 am__doit:
2692 @$(TRUE)
2693 .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
2694 am_cv_make_support_nested_variables=yes
2695 else
2696 am_cv_make_support_nested_variables=no
2697 fi
2698 fi
2699 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
2700 $as_echo "$am_cv_make_support_nested_variables" >&6; }
2701 if test $am_cv_make_support_nested_variables = yes; then
2702 AM_V='$(V)'
2703 AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
2704 else
2705 AM_V=$AM_DEFAULT_VERBOSITY
2706 AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
2707 fi
2708 AM_BACKSLASH='\'
2709
27102657 if test "`cd $srcdir && pwd`" != "`pwd`"; then
27112658 # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
27122659 # is not polluted with repeated "-I."
27292676
27302677 # Define the identity of the package.
27312678 PACKAGE='libglpk-java'
2732 VERSION='1.0.34'
2679 VERSION='1.0.36'
27332680
27342681
27352682 cat >>confdefs.h <<_ACEOF
27562703
27572704
27582705 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
2759
2760 # For better backward compatibility. To be removed once Automake 1.9.x
2761 # dies out for good. For more background, see:
2762 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
2763 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
2764 mkdir_p='$(MKDIR_P)'
27652706
27662707 # We need awk for the "check" target. The system "awk" is bad on
27672708 # some platforms.
27692710 # in the wild :-( We should find a proper way to deprecate it ...
27702711 AMTAR='$${TAR-tar}'
27712712
2772
2773 # We'll loop over all known methods to create a tar archive until one works.
2774 _am_tools='gnutar pax cpio none'
2775
27762713 am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
27772714
27782715
27792716
27802717
2781
2782
2783 # POSIX will say in a future version that running "rm -f" with no argument
2784 # is OK; and we want to be able to make that assumption in our Makefile
2785 # recipes. So use an aggressive probe to check that the usage we want is
2786 # actually supported "in the wild" to an acceptable degree.
2787 # See automake bug#10828.
2788 # To make any issue more visible, cause the running configure to be aborted
2789 # by default if the 'rm' program in use doesn't match our expectations; the
2790 # user can still override this though.
2791 if rm -f && rm -fr && rm -rf; then : OK; else
2792 cat >&2 <<'END'
2793 Oops!
2794
2795 Your 'rm' program seems unable to run without file operands specified
2796 on the command line, even when the '-f' option is present. This is contrary
2797 to the behaviour of most rm programs out there, and not conforming with
2798 the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
2799
2800 Please tell bug-automake@gnu.org about your system, including the value
2801 of your $PATH and any error possibly output before this message. This
2802 can help us improve future automake versions.
2803
2804 END
2805 if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
2806 echo 'Configuration will proceed anyway, since you have set the' >&2
2807 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
2808 echo >&2
2809 else
2810 cat >&2 <<'END'
2811 Aborting the configuration process, to ensure you take notice of the issue.
2812
2813 You can download and install GNU coreutils to get an 'rm' implementation
2814 that behaves properly: <http://www.gnu.org/software/coreutils/>.
2815
2816 If you want to complete the configuration process using your problematic
2817 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
2818 to "yes", and re-run configure.
2819
2820 END
2821 as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
2822 fi
2823 fi
28242718
28252719 case `pwd` in
28262720 *\ * | *\ *)
30062900 _am_result=none
30072901 # First try GNU make style include.
30082902 echo "include confinc" > confmf
3009 # Ignore all kinds of additional output from 'make'.
2903 # Ignore all kinds of additional output from `make'.
30102904 case `$am_make -s -f confmf 2> /dev/null` in #(
30112905 *the\ am__doit\ target*)
30122906 am__include=include
38393733 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
38403734 ac_compiler_gnu=$ac_cv_c_compiler_gnu
38413735
3842 ac_ext=c
3843 ac_cpp='$CPP $CPPFLAGS'
3844 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3845 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3846 ac_compiler_gnu=$ac_cv_c_compiler_gnu
3847 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
3848 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
3849 if ${am_cv_prog_cc_c_o+:} false; then :
3850 $as_echo_n "(cached) " >&6
3851 else
3852 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3853 /* end confdefs.h. */
3854
3855 int
3856 main ()
3857 {
3858
3859 ;
3860 return 0;
3861 }
3862 _ACEOF
3863 # Make sure it works both with $CC and with simple cc.
3864 # Following AC_PROG_CC_C_O, we do the test twice because some
3865 # compilers refuse to overwrite an existing .o file with -o,
3866 # though they will create one.
3867 am_cv_prog_cc_c_o=yes
3868 for am_i in 1 2; do
3869 if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
3870 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
3871 ac_status=$?
3872 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3873 (exit $ac_status); } \
3874 && test -f conftest2.$ac_objext; then
3875 : OK
3876 else
3877 am_cv_prog_cc_c_o=no
3878 break
3879 fi
3880 done
3881 rm -f core conftest*
3882 unset am_i
3883 fi
3884 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
3885 $as_echo "$am_cv_prog_cc_c_o" >&6; }
3886 if test "$am_cv_prog_cc_c_o" != yes; then
3887 # Losing compiler, so override with the script.
3888 # FIXME: It is wrong to rewrite CC.
3889 # But if we don't then we get into trouble of one sort or another.
3890 # A longer-term fix would be to have automake use am__CC in this case,
3891 # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
3892 CC="$am_aux_dir/compile $CC"
3893 fi
3894 ac_ext=c
3895 ac_cpp='$CPP $CPPFLAGS'
3896 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3897 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3898 ac_compiler_gnu=$ac_cv_c_compiler_gnu
3899
3900
39013736 depcc="$CC" am_compiler_list=
39023737
39033738 { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
39093744 # We make a subdir and do the tests there. Otherwise we can end up
39103745 # making bogus files that we don't know about and never remove. For
39113746 # instance it was reported that on HP-UX the gcc test will end up
3912 # making a dummy file named 'D' -- because '-MD' means "put the output
3913 # in D".
3747 # making a dummy file named `D' -- because `-MD' means `put the output
3748 # in D'.
39143749 rm -rf conftest.dir
39153750 mkdir conftest.dir
39163751 # Copy depcomp to subdir because otherwise we won't find it if we're
39453780 : > sub/conftest.c
39463781 for i in 1 2 3 4 5 6; do
39473782 echo '#include "conftst'$i'.h"' >> sub/conftest.c
3948 # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
3949 # Solaris 10 /bin/sh.
3950 echo '/* dummy */' > sub/conftst$i.h
3783 # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
3784 # Solaris 8's {/usr,}/bin/sh.
3785 touch sub/conftst$i.h
39513786 done
39523787 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
39533788
3954 # We check with '-c' and '-o' for the sake of the "dashmstdout"
3789 # We check with `-c' and `-o' for the sake of the "dashmstdout"
39553790 # mode. It turns out that the SunPro C++ compiler does not properly
3956 # handle '-M -o', and we need to detect this. Also, some Intel
3957 # versions had trouble with output in subdirs.
3791 # handle `-M -o', and we need to detect this. Also, some Intel
3792 # versions had trouble with output in subdirs
39583793 am__obj=sub/conftest.${OBJEXT-o}
39593794 am__minus_obj="-o $am__obj"
39603795 case $depmode in
39633798 test "$am__universal" = false || continue
39643799 ;;
39653800 nosideeffect)
3966 # After this tag, mechanisms are not by side-effect, so they'll
3967 # only be used when explicitly requested.
3801 # after this tag, mechanisms are not by side-effect, so they'll
3802 # only be used when explicitly requested
39683803 if test "x$enable_dependency_tracking" = xyes; then
39693804 continue
39703805 else
39723807 fi
39733808 ;;
39743809 msvc7 | msvc7msys | msvisualcpp | msvcmsys)
3975 # This compiler won't grok '-c -o', but also, the minuso test has
3810 # This compiler won't grok `-c -o', but also, the minuso test has
39763811 # not run yet. These depmodes are late enough in the game, and
39773812 # so weak that their functioning should not be impacted.
39783813 am__obj=conftest.${OBJEXT-o}
1199811833 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
1199911834 ac_compiler_gnu=$ac_cv_c_compiler_gnu
1200011835
12001 ac_ext=c
12002 ac_cpp='$CPP $CPPFLAGS'
12003 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
12004 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
12005 ac_compiler_gnu=$ac_cv_c_compiler_gnu
12006 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
12007 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
12008 if ${am_cv_prog_cc_c_o+:} false; then :
12009 $as_echo_n "(cached) " >&6
12010 else
12011 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12012 /* end confdefs.h. */
12013
12014 int
12015 main ()
12016 {
12017
12018 ;
12019 return 0;
12020 }
12021 _ACEOF
12022 # Make sure it works both with $CC and with simple cc.
12023 # Following AC_PROG_CC_C_O, we do the test twice because some
12024 # compilers refuse to overwrite an existing .o file with -o,
12025 # though they will create one.
12026 am_cv_prog_cc_c_o=yes
12027 for am_i in 1 2; do
12028 if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
12029 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
12030 ac_status=$?
12031 echo "$as_me:$LINENO: \$? = $ac_status" >&5
12032 (exit $ac_status); } \
12033 && test -f conftest2.$ac_objext; then
12034 : OK
12035 else
12036 am_cv_prog_cc_c_o=no
12037 break
12038 fi
12039 done
12040 rm -f core conftest*
12041 unset am_i
12042 fi
12043 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
12044 $as_echo "$am_cv_prog_cc_c_o" >&6; }
12045 if test "$am_cv_prog_cc_c_o" != yes; then
12046 # Losing compiler, so override with the script.
12047 # FIXME: It is wrong to rewrite CC.
12048 # But if we don't then we get into trouble of one sort or another.
12049 # A longer-term fix would be to have automake use am__CC in this case,
12050 # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
12051 CC="$am_aux_dir/compile $CC"
12052 fi
12053 ac_ext=c
12054 ac_cpp='$CPP $CPPFLAGS'
12055 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
12056 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
12057 ac_compiler_gnu=$ac_cv_c_compiler_gnu
12058
12059
1206011836 depcc="$CC" am_compiler_list=
1206111837
1206211838 { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
1206811844 # We make a subdir and do the tests there. Otherwise we can end up
1206911845 # making bogus files that we don't know about and never remove. For
1207011846 # instance it was reported that on HP-UX the gcc test will end up
12071 # making a dummy file named 'D' -- because '-MD' means "put the output
12072 # in D".
11847 # making a dummy file named `D' -- because `-MD' means `put the output
11848 # in D'.
1207311849 rm -rf conftest.dir
1207411850 mkdir conftest.dir
1207511851 # Copy depcomp to subdir because otherwise we won't find it if we're
1210411880 : > sub/conftest.c
1210511881 for i in 1 2 3 4 5 6; do
1210611882 echo '#include "conftst'$i'.h"' >> sub/conftest.c
12107 # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
12108 # Solaris 10 /bin/sh.
12109 echo '/* dummy */' > sub/conftst$i.h
11883 # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
11884 # Solaris 8's {/usr,}/bin/sh.
11885 touch sub/conftst$i.h
1211011886 done
1211111887 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
1211211888
12113 # We check with '-c' and '-o' for the sake of the "dashmstdout"
11889 # We check with `-c' and `-o' for the sake of the "dashmstdout"
1211411890 # mode. It turns out that the SunPro C++ compiler does not properly
12115 # handle '-M -o', and we need to detect this. Also, some Intel
12116 # versions had trouble with output in subdirs.
11891 # handle `-M -o', and we need to detect this. Also, some Intel
11892 # versions had trouble with output in subdirs
1211711893 am__obj=sub/conftest.${OBJEXT-o}
1211811894 am__minus_obj="-o $am__obj"
1211911895 case $depmode in
1212211898 test "$am__universal" = false || continue
1212311899 ;;
1212411900 nosideeffect)
12125 # After this tag, mechanisms are not by side-effect, so they'll
12126 # only be used when explicitly requested.
11901 # after this tag, mechanisms are not by side-effect, so they'll
11902 # only be used when explicitly requested
1212711903 if test "x$enable_dependency_tracking" = xyes; then
1212811904 continue
1212911905 else
1213111907 fi
1213211908 ;;
1213311909 msvc7 | msvc7msys | msvisualcpp | msvcmsys)
12134 # This compiler won't grok '-c -o', but also, the minuso test has
11910 # This compiler won't grok `-c -o', but also, the minuso test has
1213511911 # not run yet. These depmodes are late enough in the game, and
1213611912 # so weak that their functioning should not be impacted.
1213711913 am__obj=conftest.${OBJEXT-o}
1246412240 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Maven is missing" >&5
1246512241 $as_echo "$as_me: WARNING: Maven is missing" >&2;}
1246612242
12243 fi
12244
12245 # Check whether --enable-libpath was given.
12246 if test "${enable_libpath+set}" = set; then :
12247 enableval=$enable_libpath; case $enableval in
12248 yes | no) ;;
12249 *) as_fn_error $? "invalid value $enableval for --enable-libpath" "$LINENO" 5;;
12250 esac
12251 else
12252 enable_libpath=no
12253 fi
12254
12255
12256
12257 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to load GLPK library from java.library.path" >&5
12258 $as_echo_n "checking whether to load GLPK library from java.library.path... " >&6; }
12259 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_libpath" >&5
12260 $as_echo "$enable_libpath" >&6; }
12261 if test "x$enable_libpath" == "xyes"; then
12262 SWIGFLAGS="-DGLPKPRELOAD $SWIGFLAGS"
1246712263 fi
1246812264
1246912265 if test "x$JAVA_HOME" == "x"; then
1260812404 LTLIBOBJS=$ac_ltlibobjs
1260912405
1261012406
12611 { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
12612 $as_echo_n "checking that generated files are newer than configure... " >&6; }
12613 if test -n "$am_sleep_pid"; then
12614 # Hide warnings about reused PIDs.
12615 wait $am_sleep_pid 2>/dev/null
12616 fi
12617 { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
12618 $as_echo "done" >&6; }
1261912407 if test -n "$EXEEXT"; then
1262012408 am__EXEEXT_TRUE=
1262112409 am__EXEEXT_FALSE='#'
1303712825 # report actual input values of CONFIG_FILES etc. instead of their
1303812826 # values after options handling.
1303912827 ac_log="
13040 This file was extended by libglpk-java $as_me 1.0.34, which was
12828 This file was extended by GLPK for Java $as_me 1.0.36, which was
1304112829 generated by GNU Autoconf 2.69. Invocation command line was
1304212830
1304312831 CONFIG_FILES = $CONFIG_FILES
1309712885 Configuration commands:
1309812886 $config_commands
1309912887
13100 Report bugs to <xypron.glpk@gmx.de>."
12888 Report bugs to <xypron.glpk@gmx.de>.
12889 GLPK for Java home page: <http://glpk-java.sourceforge.net>."
1310112890
1310212891 _ACEOF
1310312892 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
1310412893 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
1310512894 ac_cs_version="\\
13106 libglpk-java config.status 1.0.34
12895 GLPK for Java config.status 1.0.36
1310712896 configured by $0, generated by GNU Autoconf 2.69,
1310812897 with options \\"\$ac_cs_config\\"
1310912898
1411113900
1411213901 case $ac_file$ac_mode in
1411313902 "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
14114 # Older Autoconf quotes --file arguments for eval, but not when files
13903 # Autoconf 2.62 quotes --file arguments for eval, but not when files
1411513904 # are listed without --file. Let's play safe and only enable the eval
1411613905 # if we detect the quoting.
1411713906 case $CONFIG_FILES in
1412413913 # Strip MF so we end up with the name of the file.
1412513914 mf=`echo "$mf" | sed -e 's/:.*$//'`
1412613915 # Check whether this is an Automake generated Makefile or not.
14127 # We used to match only the files named 'Makefile.in', but
13916 # We used to match only the files named `Makefile.in', but
1412813917 # some people rename them; so instead we look at the file content.
1412913918 # Grep'ing the first line is not enough: some people post-process
1413013919 # each Makefile.in and add a new line on top of each file to say so.
1415813947 continue
1415913948 fi
1416013949 # Extract the definition of DEPDIR, am__include, and am__quote
14161 # from the Makefile without running 'make'.
13950 # from the Makefile without running `make'.
1416213951 DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
1416313952 test -z "$DEPDIR" && continue
1416413953 am__include=`sed -n 's/^am__include = //p' < "$mf"`
14165 test -z "$am__include" && continue
13954 test -z "am__include" && continue
1416613955 am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
13956 # When using ansi2knr, U may be empty or an underscore; expand it
13957 U=`sed -n 's/^U = //p' < "$mf"`
1416713958 # Find all dependency output files, they are included files with
1416813959 # $(DEPDIR) in their names. We invoke sed twice because it is the
1416913960 # simplest approach to changing $(DEPDIR) to its actual value in the
1417013961 # expansion.
1417113962 for file in `sed -n "
1417213963 s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
14173 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
13964 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
1417413965 # Make sure the directory exists.
1417513966 test -f "$dirpart/$file" && continue
1417613967 fdir=`$as_dirname -- "$file" ||
00 dnl GLPK for Java
11
22 dnl Initialization
3 AC_INIT([libglpk-java], [1.0.34], [xypron.glpk@gmx.de])
3 AC_INIT([GLPK for Java], [1.0.36], [xypron.glpk@gmx.de],
4 [libglpk-java], [http://glpk-java.sourceforge.net])
45 AC_CONFIG_HEADERS([config.h])
56 AC_CONFIG_MACRO_DIR([m4])
67 AM_INIT_AUTOMAKE
4041 AC_MSG_WARN([Maven is missing])
4142 )
4243
44 AC_ARG_ENABLE(libpath,
45 AC_HELP_STRING([--enable-libpath],
46 [load GLPK library from java.library.path [[default=no]]]),
47 [case $enableval in
48 yes | no) ;;
49 *) AC_MSG_ERROR([invalid value $enableval for --enable-libpath]);;
50 esac],
51 [enable_libpath=no])
52
53
54 AC_MSG_CHECKING([whether to load GLPK library from java.library.path])
55 AC_MSG_RESULT([$enable_libpath])
56 if test "x$enable_libpath" == "xyes"; then
57 SWIGFLAGS="-DGLPKPRELOAD $SWIGFLAGS"
58 fi
59
4360 dnl Check JAVA_HOME is set
4461 if test "x$JAVA_HOME" == "x"; then
4562 AC_MSG_ERROR([JAVA_HOME is not set])
0 # Makefile.in generated by automake 1.14.1 from Makefile.am.
0 # Makefile.in generated by automake 1.11.6 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
4
3 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
4 # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
5 # Foundation, Inc.
56 # This Makefile.in is free software; the Free Software Foundation
67 # gives unlimited permission to copy and/or distribute it,
78 # with or without modifications, as long as this notice is preserved.
1314
1415 @SET_MAKE@
1516 VPATH = @srcdir@
16 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
17 am__make_running_with_option = \
18 case $${target_option-} in \
19 ?) ;; \
20 *) echo "am__make_running_with_option: internal error: invalid" \
21 "target option '$${target_option-}' specified" >&2; \
22 exit 1;; \
23 esac; \
24 has_opt=no; \
25 sane_makeflags=$$MAKEFLAGS; \
26 if $(am__is_gnu_make); then \
27 sane_makeflags=$$MFLAGS; \
28 else \
17 am__make_dryrun = \
18 { \
19 am__dry=no; \
2920 case $$MAKEFLAGS in \
3021 *\\[\ \ ]*) \
31 bs=\\; \
32 sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
33 | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
22 echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
23 | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
24 *) \
25 for am__flg in $$MAKEFLAGS; do \
26 case $$am__flg in \
27 *=*|--*) ;; \
28 *n*) am__dry=yes; break;; \
29 esac; \
30 done;; \
3431 esac; \
35 fi; \
36 skip_next=no; \
37 strip_trailopt () \
38 { \
39 flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
40 }; \
41 for flg in $$sane_makeflags; do \
42 test $$skip_next = yes && { skip_next=no; continue; }; \
43 case $$flg in \
44 *=*|--*) continue;; \
45 -*I) strip_trailopt 'I'; skip_next=yes;; \
46 -*I?*) strip_trailopt 'I';; \
47 -*O) strip_trailopt 'O'; skip_next=yes;; \
48 -*O?*) strip_trailopt 'O';; \
49 -*l) strip_trailopt 'l'; skip_next=yes;; \
50 -*l?*) strip_trailopt 'l';; \
51 -[dEDm]) skip_next=yes;; \
52 -[JT]) skip_next=yes;; \
53 esac; \
54 case $$flg in \
55 *$$target_option*) has_opt=yes; break;; \
56 esac; \
57 done; \
58 test $$has_opt = yes
59 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
60 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
32 test $$am__dry = yes; \
33 }
6134 pkgdatadir = $(datadir)/@PACKAGE@
6235 pkgincludedir = $(includedir)/@PACKAGE@
6336 pkglibdir = $(libdir)/@PACKAGE@
7750 build_triplet = @build@
7851 host_triplet = @host@
7952 subdir = doc
80 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
53 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
8154 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
8255 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
8356 $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
8962 CONFIG_HEADER = $(top_builddir)/config.h
9063 CONFIG_CLEAN_FILES =
9164 CONFIG_CLEAN_VPATH_FILES =
92 AM_V_P = $(am__v_P_@AM_V@)
93 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
94 am__v_P_0 = false
95 am__v_P_1 = :
96 AM_V_GEN = $(am__v_GEN_@AM_V@)
97 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
98 am__v_GEN_0 = @echo " GEN " $@;
99 am__v_GEN_1 =
100 AM_V_at = $(am__v_at_@AM_V@)
101 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
102 am__v_at_0 = @
103 am__v_at_1 =
10465 SOURCES =
10566 DIST_SOURCES =
10667 am__can_run_installinfo = \
10869 n|no|NO) false;; \
10970 *) (install-info --version) >/dev/null 2>&1;; \
11071 esac
111 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
11272 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
11373 ACLOCAL = @ACLOCAL@
11474 AMTAR = @AMTAR@
115 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
11675 AR = @AR@
11776 AUTOCONF = @AUTOCONF@
11877 AUTOHEADER = @AUTOHEADER@
279238
280239 clean-libtool:
281240 -rm -rf .libs _libs
282 tags TAGS:
283
284 ctags CTAGS:
285
286 cscope cscopelist:
241 tags: TAGS
242 TAGS:
243
244 ctags: CTAGS
245 CTAGS:
287246
288247
289248 distdir: $(DISTFILES)
418377 .MAKE: install-am install-strip
419378
420379 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
421 clean-local cscopelist-am ctags-am distclean distclean-generic \
422 distclean-libtool distdir dvi dvi-am html html-am info info-am \
423 install install-am install-data install-data-am install-dvi \
380 clean-local distclean distclean-generic distclean-libtool \
381 distdir dvi dvi-am html html-am info info-am install \
382 install-am install-data install-data-am install-dvi \
424383 install-dvi-am install-exec install-exec-am install-html \
425384 install-html-am install-info install-info-am install-man \
426385 install-pdf install-pdf-am install-ps install-ps-am \
427386 install-strip installcheck installcheck-am installdirs \
428387 maintainer-clean maintainer-clean-generic mostlyclean \
429388 mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
430 tags-am uninstall uninstall-am
389 uninstall uninstall-am
431390
432391
433392 all:
Binary diff not shown
3434 %%generate index
3535 \makeindex
3636
37 \newcommand{\glpkJavaVersion}{1.0.34}
37 \newcommand{\glpkJavaVersion}{1.0.36}
3838 \newcommand{\glpkVersionMajor}{4}
3939 \newcommand{\glpkVersionMinor}{54}
4040
0 .TH libglpk-java 3 "April 18th, 2014" "version 1.0.34" "libglpk-java overview"
0 .TH libglpk-java 3 "May 13th, 2014" "version 1.0.36" "libglpk-java overview"
11 .SH NAME
22 libglpk-java \- GNU Linear Programming Kit Java Binding
33 .SH DESCRIPTION
examples/java/BranchDown.class less more
Binary diff not shown
examples/java/GmplSwing$1.class less more
Binary diff not shown
examples/java/GmplSwing$Diagram$1.class less more
Binary diff not shown
examples/java/GmplSwing$Diagram.class less more
Binary diff not shown
examples/java/GmplSwing$EvaluateAction.class less more
Binary diff not shown
examples/java/GmplSwing$EvaluateThread.class less more
Binary diff not shown
examples/java/GmplSwing$ExitAction.class less more
Binary diff not shown
examples/java/GmplSwing$ModelFileFilter.class less more
Binary diff not shown
examples/java/GmplSwing$NewAction.class less more
Binary diff not shown
examples/java/GmplSwing$OpenAction.class less more
Binary diff not shown
examples/java/GmplSwing$Progress.class less more
Binary diff not shown
examples/java/GmplSwing$SaveAction.class less more
Binary diff not shown
examples/java/GmplSwing$SaveAsAction.class less more
Binary diff not shown
examples/java/GmplSwing$Status.class less more
Binary diff not shown
examples/java/GmplSwing$TopEtchedBorder.class less more
Binary diff not shown
examples/java/GmplSwing$WindowClosingListener.class less more
Binary diff not shown
examples/java/GmplSwing.class less more
Binary diff not shown
examples/java/Mip.class less more
Binary diff not shown
0 # Makefile.in generated by automake 1.14.1 from Makefile.am.
0 # Makefile.in generated by automake 1.11.6 from Makefile.am.
11 # @configure_input@
22
3 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
4
3 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
4 # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
5 # Foundation, Inc.
56 # This Makefile.in is free software; the Free Software Foundation
67 # gives unlimited permission to copy and/or distribute it,
78 # with or without modifications, as long as this notice is preserved.
1314
1415 @SET_MAKE@
1516 VPATH = @srcdir@
16 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
17 am__make_running_with_option = \
18 case $${target_option-} in \
19 ?) ;; \
20 *) echo "am__make_running_with_option: internal error: invalid" \
21 "target option '$${target_option-}' specified" >&2; \
22 exit 1;; \
23 esac; \
24 has_opt=no; \
25 sane_makeflags=$$MAKEFLAGS; \
26 if $(am__is_gnu_make); then \
27 sane_makeflags=$$MFLAGS; \
28 else \
17 am__make_dryrun = \
18 { \
19 am__dry=no; \
2920 case $$MAKEFLAGS in \
3021 *\\[\ \ ]*) \
31 bs=\\; \
32 sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
33 | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
22 echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
23 | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
24 *) \
25 for am__flg in $$MAKEFLAGS; do \
26 case $$am__flg in \
27 *=*|--*) ;; \
28 *n*) am__dry=yes; break;; \
29 esac; \
30 done;; \
3431 esac; \
35 fi; \
36 skip_next=no; \
37 strip_trailopt () \
38 { \
39 flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
40 }; \
41 for flg in $$sane_makeflags; do \
42 test $$skip_next = yes && { skip_next=no; continue; }; \
43 case $$flg in \
44 *=*|--*) continue;; \
45 -*I) strip_trailopt 'I'; skip_next=yes;; \
46 -*I?*) strip_trailopt 'I';; \
47 -*O) strip_trailopt 'O'; skip_next=yes;; \
48 -*O?*) strip_trailopt 'O';; \
49 -*l) strip_trailopt 'l'; skip_next=yes;; \
50 -*l?*) strip_trailopt 'l';; \
51 -[dEDm]) skip_next=yes;; \
52 -[JT]) skip_next=yes;; \
53 esac; \
54 case $$flg in \
55 *$$target_option*) has_opt=yes; break;; \
56 esac; \
57 done; \
58 test $$has_opt = yes
59 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
60 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
32 test $$am__dry = yes; \
33 }
6134 pkgdatadir = $(datadir)/@PACKAGE@
6235 pkgincludedir = $(includedir)/@PACKAGE@
6336 pkglibdir = $(libdir)/@PACKAGE@
7750 build_triplet = @build@
7851 host_triplet = @host@
7952 subdir = swig
80 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
53 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
8154 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
8255 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
8356 $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
8962 CONFIG_HEADER = $(top_builddir)/config.h
9063 CONFIG_CLEAN_FILES =
9164 CONFIG_CLEAN_VPATH_FILES =
92 AM_V_P = $(am__v_P_@AM_V@)
93 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
94 am__v_P_0 = false
95 am__v_P_1 = :
96 AM_V_GEN = $(am__v_GEN_@AM_V@)
97 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
98 am__v_GEN_0 = @echo " GEN " $@;
99 am__v_GEN_1 =
100 AM_V_at = $(am__v_at_@AM_V@)
101 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
102 am__v_at_0 = @
103 am__v_at_1 =
10465 SOURCES =
10566 DIST_SOURCES =
10667 am__can_run_installinfo = \
10869 n|no|NO) false;; \
10970 *) (install-info --version) >/dev/null 2>&1;; \
11071 esac
111 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
11272 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
11373 ACLOCAL = @ACLOCAL@
11474 AMTAR = @AMTAR@
115 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
11675 AR = @AR@
11776 AUTOCONF = @AUTOCONF@
11877 AUTOHEADER = @AUTOHEADER@
274233
275234 clean-libtool:
276235 -rm -rf .libs _libs
277 tags TAGS:
278
279 ctags CTAGS:
280
281 cscope cscopelist:
236 tags: TAGS
237 TAGS:
238
239 ctags: CTAGS
240 CTAGS:
282241
283242
284243 distdir: $(DISTFILES)
416375 .MAKE: install-am install-strip
417376
418377 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
419 clean-local cscopelist-am ctags-am dist-hook distclean \
420 distclean-generic distclean-libtool distdir dvi dvi-am html \
421 html-am info info-am install install-am install-data \
422 install-data-am install-dvi install-dvi-am install-exec \
423 install-exec-am install-html install-html-am install-info \
424 install-info-am install-man install-pdf install-pdf-am \
425 install-ps install-ps-am install-strip installcheck \
426 installcheck-am installdirs maintainer-clean \
427 maintainer-clean-generic mostlyclean mostlyclean-generic \
428 mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
429 uninstall-am
378 clean-local dist-hook distclean distclean-generic \
379 distclean-libtool distdir dvi dvi-am html html-am info info-am \
380 install install-am install-data install-data-am install-dvi \
381 install-dvi-am install-exec install-exec-am install-html \
382 install-html-am install-info install-info-am install-man \
383 install-pdf install-pdf-am install-ps install-ps-am \
384 install-strip installcheck installcheck-am installdirs \
385 maintainer-clean maintainer-clean-generic mostlyclean \
386 mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
387 uninstall uninstall-am
430388
431389
432390 all:
1111 try {
1212 if (System.getProperty("os.name").toLowerCase().contains("windows")) {
1313 // try to load Windows libraries
14 %}
15 #ifdef GLPKPRELOAD
16 %pragma(java) jniclasscode=%{
1417 try {
1518 System.loadLibrary("glpk_4_54");
1619 } catch (UnsatisfiedLinkError e) {
1720 // The dependent library might be in the OS library search path.
1821 }
22 %}
23 #endif
24 %pragma(java) jniclasscode=%{
1925 System.loadLibrary("glpk_4_54_java");
2026 } else {
2127 // try to load Linux library
28 %}
29 #ifdef GLPKPRELOAD
30 %pragma(java) jniclasscode=%{
31 try {
32 System.loadLibrary("glpk");
33 } catch (UnsatisfiedLinkError e) {
34 // The dependent library might be in the OS library search path.
35 }
36 %}
37 #endif
38 %pragma(java) jniclasscode=%{
2239 System.loadLibrary("glpk_java");
2340 }
2441 } catch (UnsatisfiedLinkError e) {
6767 *
6868 * @param ary array
6969 * @param index index of the element
70 * @return array element
7071 */
7172 public";
7273 TYPE NAME##_getitem(TYPE *ary, int index);
1212 * <p>GLP_UNDEF - dual solution is undefined; GLP_FEAS - dual solution is feasible; GLP_INFEAS - dual solution is infeasible; GLP_NOFEAS - no dual feasible solution exists.</p>
1313 * <p>If the parameter d_stat is NULL, the current status of dual basic solution remains unchanged.</p>
1414 * <p>The parameter obj_val is a pointer to the objective function value. If it is NULL, the current value of the objective function remains unchanged.</p>
15 * <p>The array element r_stat[i], 1 <= i <= m (where m is the number of rows in the problem object), specifies the status of i-th auxiliary variable, which should be specified as follows:</p>
15 * <p>The array element r_stat[i], 1 &lt;= i &lt;= m (where m is the number of rows in the problem object), specifies the status of i-th auxiliary variable, which should be specified as follows:</p>
1616 * <p>GLP_BS - basic variable; GLP_NL - non-basic variable on lower bound; GLP_NU - non-basic variable on upper bound; GLP_NF - non-basic free variable; GLP_NS - non-basic fixed variable.</p>
1717 * <p>If the parameter r_stat is NULL, the current statuses of auxiliary variables remain unchanged.</p>
18 * <p>The array element r_prim[i], 1 <= i <= m (where m is the number of rows in the problem object), specifies a primal value of i-th auxiliary variable. If the parameter r_prim is NULL, the current primal values of auxiliary variables remain unchanged.</p>
19 * <p>The array element r_dual[i], 1 <= i <= m (where m is the number of rows in the problem object), specifies a dual value (reduced cost) of i-th auxiliary variable. If the parameter r_dual is NULL, the current dual values of auxiliary variables remain unchanged.</p>
20 * <p>The array element c_stat[j], 1 <= j <= n (where n is the number of columns in the problem object), specifies the status of j-th structural variable, which should be specified as follows:</p>
18 * <p>The array element r_prim[i], 1 &lt;= i &lt;= m (where m is the number of rows in the problem object), specifies a primal value of i-th auxiliary variable. If the parameter r_prim is NULL, the current primal values of auxiliary variables remain unchanged.</p>
19 * <p>The array element r_dual[i], 1 &lt;= i &lt;= m (where m is the number of rows in the problem object), specifies a dual value (reduced cost) of i-th auxiliary variable. If the parameter r_dual is NULL, the current dual values of auxiliary variables remain unchanged.</p>
20 * <p>The array element c_stat[j], 1 &lt;= j &lt;= n (where n is the number of columns in the problem object), specifies the status of j-th structural variable, which should be specified as follows:</p>
2121 * <p>GLP_BS - basic variable; GLP_NL - non-basic variable on lower bound; GLP_NU - non-basic variable on upper bound; GLP_NF - non-basic free variable; GLP_NS - non-basic fixed variable.</p>
2222 * <p>If the parameter c_stat is NULL, the current statuses of structural variables remain unchanged.</p>
23 * <p>The array element c_prim[j], 1 <= j <= n (where n is the number of columns in the problem object), specifies a primal value of j-th structural variable. If the parameter c_prim is NULL, the current primal values of structural variables remain unchanged.</p>
24 * <p>The array element c_dual[j], 1 <= j <= n (where n is the number of columns in the problem object), specifies a dual value (reduced cost) of j-th structural variable. If the parameter c_dual is NULL, the current dual values of structural variables remain unchanged. </p>
23 * <p>The array element c_prim[j], 1 &lt;= j &lt;= n (where n is the number of columns in the problem object), specifies a primal value of j-th structural variable. If the parameter c_prim is NULL, the current primal values of structural variables remain unchanged.</p>
24 * <p>The array element c_dual[j], 1 &lt;= j &lt;= n (where n is the number of columns in the problem object), specifies a dual value (reduced cost) of j-th structural variable. If the parameter c_dual is NULL, the current dual values of structural variables remain unchanged. </p>
2525 */
2626 public";
2727
4343 * <p>where y is an auxiliary variable of the row, alfa[j] is an influence coefficient, xN[j] is a non-basic variable.</p>
4444 * <p>The row is passed to the routine in sparse format. Ordinal numbers of non-basic variables are stored in locations ind[1], ..., ind[len], where numbers 1 to m denote auxiliary variables while numbers m+1 to m+n denote structural variables. Corresponding non-zero coefficients alfa[j] are stored in locations val[1], ..., val[len]. The arrays ind and val are ot changed on exit.</p>
4545 * <p>The parameters type and rhs specify the row type and its right-hand side as follows:</p>
46 * <p>type = GLP_LO: y = sum alfa[j] * xN[j] >= rhs</p>
47 * <p>type = GLP_UP: y = sum alfa[j] * xN[j] <= rhs</p>
46 * <p>type = GLP_LO: y = sum alfa[j] * xN[j] &gt;= rhs</p>
47 * <p>type = GLP_UP: y = sum alfa[j] * xN[j] &lt;= rhs</p>
4848 * <p>The parameter eps is an absolute tolerance (small positive number) used by the routine to skip small coefficients alfa[j] on performing the dual ratio test.</p>
4949 * <p>If the operation was successful, the routine stores the following information to corresponding location (if some parameter is NULL, its value is not stored):</p>
50 * <p>piv index in the array ind and val, 1 <= piv <= len, determining the non-basic variable, which would enter the adjacent basis;</p>
50 * <p>piv index in the array ind and val, 1 &lt;= piv &lt;= len, determining the non-basic variable, which would enter the adjacent basis;</p>
5151 * <p>x value of the non-basic variable in the current basis;</p>
5252 * <p>dx difference between values of the non-basic variable in the adjacent and current bases, dx = x.new - x.old;</p>
5353 * <p>y value of the row (i.e. of its auxiliary variable) in the current basis;</p>
5454 * <p>dy difference between values of the row in the adjacent and current bases, dy = y.new - y.old;</p>
55 * <p>dz difference between values of the objective function in the adjacent and current bases, dz = z.new - z.old. Note that in case of minimization dz >= 0, and in case of maximization dz <= 0, i.e. in the adjacent basis the objective function always gets worse (degrades). </p>
55 * <p>dz difference between values of the objective function in the adjacent and current bases, dz = z.new - z.old. Note that in case of minimization dz &gt;= 0, and in case of maximization dz &lt;= 0, i.e. in the adjacent basis the objective function always gets worse (degrades). </p>
5656 */
5757 public";
5858
177177 * <p>DESCRIPTION</p>
178178 * <p>The routine glp_set_row_bnds sets (changes) the type and bounds of i-th row (auxiliary variable) of the specified problem object.</p>
179179 * <p>Parameters type, lb, and ub specify the type, lower bound, and upper bound, respectively, as follows:</p>
180 * <p>Type Bounds Comments ------------------------------------------------------ GLP_FR -inf < x < +inf Free variable GLP_LO lb <= x < +inf Variable with lower bound GLP_UP -inf < x <= ub Variable with upper bound GLP_DB lb <= x <= ub Double-bounded variable GLP_FX x = lb Fixed variable</p>
180 * <p>Type Bounds Comments ------------------------------------------------------ GLP_FR -inf &lt; x &lt; +inf Free variable GLP_LO lb &lt;= x &lt; +inf Variable with lower bound GLP_UP -inf &lt; x &lt;= ub Variable with upper bound GLP_DB lb &lt;= x &lt;= ub Double-bounded variable GLP_FX x = lb Fixed variable</p>
181181 * <p>where x is the auxiliary variable associated with i-th row.</p>
182182 * <p>If the row has no lower bound, the parameter lb is ignored. If the row has no upper bound, the parameter ub is ignored. If the row is an equality constraint (i.e. the corresponding auxiliary variable is of fixed type), only the parameter lb is used while the parameter ub is ignored. </p>
183183 */
191191 * <p>DESCRIPTION</p>
192192 * <p>The routine glp_set_col_bnds sets (changes) the type and bounds of j-th column (structural variable) of the specified problem object.</p>
193193 * <p>Parameters type, lb, and ub specify the type, lower bound, and upper bound, respectively, as follows:</p>
194 * <p>Type Bounds Comments ------------------------------------------------------ GLP_FR -inf < x < +inf Free variable GLP_LO lb <= x < +inf Variable with lower bound GLP_UP -inf < x <= ub Variable with upper bound GLP_DB lb <= x <= ub Double-bounded variable GLP_FX x = lb Fixed variable</p>
194 * <p>Type Bounds Comments ------------------------------------------------------ GLP_FR -inf &lt; x &lt; +inf Free variable GLP_LO lb &lt;= x &lt; +inf Variable with lower bound GLP_UP -inf &lt; x &lt;= ub Variable with upper bound GLP_DB lb &lt;= x &lt;= ub Double-bounded variable GLP_FX x = lb Fixed variable</p>
195195 * <p>where x is the structural variable associated with j-th column.</p>
196196 * <p>If the column has no lower bound, the parameter lb is ignored. If the column has no upper bound, the parameter ub is ignored. If the column is of fixed type, only the parameter lb is used while the parameter ub is ignored. </p>
197197 */
216216 * <p>void glp_set_mat_row(glp_prob *lp, int i, int len, const int ind[], const double val[]);</p>
217217 * <p>DESCRIPTION</p>
218218 * <p>The routine glp_set_mat_row stores (replaces) the contents of i-th row of the constraint matrix of the specified problem object.</p>
219 * <p>Column indices and numeric values of new row elements must be placed in locations ind[1], ..., ind[len] and val[1], ..., val[len], where 0 <= len <= n is the new length of i-th row, n is the current number of columns in the problem object. Elements with identical column indices are not allowed. Zero elements are allowed, but they are not stored in the constraint matrix.</p>
219 * <p>Column indices and numeric values of new row elements must be placed in locations ind[1], ..., ind[len] and val[1], ..., val[len], where 0 &lt;= len &lt;= n is the new length of i-th row, n is the current number of columns in the problem object. Elements with identical column indices are not allowed. Zero elements are allowed, but they are not stored in the constraint matrix.</p>
220220 * <p>If the parameter len is zero, the parameters ind and/or val can be specified as NULL. </p>
221221 */
222222 public";
228228 * <p>void glp_set_mat_col(glp_prob *lp, int j, int len, const int ind[], const double val[]);</p>
229229 * <p>DESCRIPTION</p>
230230 * <p>The routine glp_set_mat_col stores (replaces) the contents of j-th column of the constraint matrix of the specified problem object.</p>
231 * <p>Row indices and numeric values of new column elements must be placed in locations ind[1], ..., ind[len] and val[1], ..., val[len], where 0 <= len <= m is the new length of j-th column, m is the current number of rows in the problem object. Elements with identical column indices are not allowed. Zero elements are allowed, but they are not stored in the constraint matrix.</p>
231 * <p>Row indices and numeric values of new column elements must be placed in locations ind[1], ..., ind[len] and val[1], ..., val[len], where 0 &lt;= len &lt;= m is the new length of j-th column, m is the current number of rows in the problem object. Elements with identical column indices are not allowed. Zero elements are allowed, but they are not stored in the constraint matrix.</p>
232232 * <p>If the parameter len is zero, the parameters ind and/or val can be specified as NULL. </p>
233233 */
234234 public";
252252 * <p>int glp_check_dup(int m, int n, int ne, const int ia[], const int ja[]);</p>
253253 * <p>DESCRIPTION</p>
254254 * <p>The routine glp_check_dup checks for duplicate elements (that is, elements with identical indices) in a sparse matrix specified in the coordinate format.</p>
255 * <p>The parameters m and n specifies, respectively, the number of rows and columns in the matrix, m >= 0, n >= 0.</p>
256 * <p>The parameter ne specifies the number of (structurally) non-zero elements in the matrix, ne >= 0.</p>
255 * <p>The parameters m and n specifies, respectively, the number of rows and columns in the matrix, m &gt;= 0, n &gt;= 0.</p>
256 * <p>The parameter ne specifies the number of (structurally) non-zero elements in the matrix, ne &gt;= 0.</p>
257257 * <p>Elements of the matrix are specified as doublets (ia[k],ja[k]) for k = 1,...,ne, where ia[k] is a row index, ja[k] is a column index.</p>
258258 * <p>The routine glp_check_dup can be used prior to a call to the routine glp_load_matrix to check that the constraint matrix to be loaded has no duplicate elements.</p>
259259 * <p>RETURNS</p>
280280 * <p>SYNOPSIS</p>
281281 * <p>void glp_del_rows(glp_prob *lp, int nrs, const int num[]);</p>
282282 * <p>DESCRIPTION</p>
283 * <p>The routine glp_del_rows deletes rows from the specified problem object. Ordinal numbers of rows to be deleted should be placed in locations num[1], ..., num[nrs], where nrs > 0.</p>
283 * <p>The routine glp_del_rows deletes rows from the specified problem object. Ordinal numbers of rows to be deleted should be placed in locations num[1], ..., num[nrs], where nrs &gt; 0.</p>
284284 * <p>Note that deleting rows involves changing ordinal numbers of other rows remaining in the problem object. New ordinal numbers of the remaining rows are assigned under the assumption that the original order of rows is not changed. </p>
285285 */
286286 public";
291291 * <p>SYNOPSIS</p>
292292 * <p>void glp_del_cols(glp_prob *lp, int ncs, const int num[]);</p>
293293 * <p>DESCRIPTION</p>
294 * <p>The routine glp_del_cols deletes columns from the specified problem object. Ordinal numbers of columns to be deleted should be placed in locations num[1], ..., num[ncs], where ncs > 0.</p>
294 * <p>The routine glp_del_cols deletes columns from the specified problem object. Ordinal numbers of columns to be deleted should be placed in locations num[1], ..., num[ncs], where ncs &gt; 0.</p>
295295 * <p>Note that deleting columns involves changing ordinal numbers of other columns remaining in the problem object. New ordinal numbers of the remaining columns are assigned under the assumption that the original order of columns is not changed. </p>
296296 */
297297 public";
493493 * <p>SYNOPSIS</p>
494494 * <p>int glp_get_mat_row(glp_prob *lp, int i, int ind[], double val[]);</p>
495495 * <p>DESCRIPTION</p>
496 * <p>The routine glp_get_mat_row scans (non-zero) elements of i-th row of the constraint matrix of the specified problem object and stores their column indices and numeric values to locations ind[1], ..., ind[len] and val[1], ..., val[len], respectively, where 0 <= len <= n is the number of elements in i-th row, n is the number of columns.</p>
496 * <p>The routine glp_get_mat_row scans (non-zero) elements of i-th row of the constraint matrix of the specified problem object and stores their column indices and numeric values to locations ind[1], ..., ind[len] and val[1], ..., val[len], respectively, where 0 &lt;= len &lt;= n is the number of elements in i-th row, n is the number of columns.</p>
497497 * <p>The parameter ind and/or val can be specified as NULL, in which case corresponding information is not stored.</p>
498498 * <p>RETURNS</p>
499499 * <p>The routine glp_get_mat_row returns the length len, i.e. the number of (non-zero) elements in i-th row. </p>
506506 * <p>SYNOPSIS</p>
507507 * <p>int glp_get_mat_col(glp_prob *lp, int j, int ind[], double val[]);</p>
508508 * <p>DESCRIPTION</p>
509 * <p>The routine glp_get_mat_col scans (non-zero) elements of j-th column of the constraint matrix of the specified problem object and stores their row indices and numeric values to locations ind[1], ..., ind[len] and val[1], ..., val[len], respectively, where 0 <= len <= m is the number of elements in j-th column, m is the number of rows.</p>
509 * <p>The routine glp_get_mat_col scans (non-zero) elements of j-th column of the constraint matrix of the specified problem object and stores their row indices and numeric values to locations ind[1], ..., ind[len] and val[1], ..., val[len], respectively, where 0 &lt;= len &lt;= m is the number of elements in j-th column, m is the number of rows.</p>
510510 * <p>The parameter ind or/and val can be specified as NULL, in which case corresponding information is not stored.</p>
511511 * <p>RETURNS</p>
512512 * <p>The routine glp_get_mat_col returns the length len, i.e. the number of (non-zero) elements in j-th column. </p>
803803 * <p>SYNOPSIS</p>
804804 * <p>int glp_get_unbnd_ray(glp_prob *lp);</p>
805805 * <p>RETURNS</p>
806 * <p>The routine glp_get_unbnd_ray returns the number k of a variable, which causes primal or dual unboundedness. If 1 <= k <= m, it is k-th auxiliary variable, and if m+1 <= k <= m+n, it is (k-m)-th structural variable, where m is the number of rows, n is the number of columns in the problem object. If such variable is not defined, the routine returns 0.</p>
806 * <p>The routine glp_get_unbnd_ray returns the number k of a variable, which causes primal or dual unboundedness. If 1 &lt;= k &lt;= m, it is k-th auxiliary variable, and if m+1 &lt;= k &lt;= m+n, it is (k-m)-th structural variable, where m is the number of rows, n is the number of columns in the problem object. If such variable is not defined, the routine returns 0.</p>
807807 * <p>COMMENTS</p>
808808 * <p>If it is not exactly known which version of the simplex solver detected unboundedness, i.e. whether the unboundedness is primal or dual, it is sufficient to check the status of the variable reported with the routine glp_get_row_stat or glp_get_col_stat. If the variable is non-basic, the unboundedness is primal, otherwise, if the variable is basic, the unboundedness is dual (the latter case means that the problem has no primal feasible dolution). </p>
809809 */
12631263 * <p>DESCRIPTION</p>
12641264 * <p>The routine glp_get_bhead returns the basis header information for the current basis associated with the specified problem object.</p>
12651265 * <p>RETURNS</p>
1266 * <p>If xB[k], 1 <= k <= m, is i-th auxiliary variable (1 <= i <= m), the routine returns i. Otherwise, if xB[k] is j-th structural variable (1 <= j <= n), the routine returns m+j. Here m is the number of rows and n is the number of columns in the problem object. </p>
1266 * <p>If xB[k], 1 &lt;= k &lt;= m, is i-th auxiliary variable (1 &lt;= i &lt;= m), the routine returns i. Otherwise, if xB[k] is j-th structural variable (1 &lt;= j &lt;= n), the routine returns m+j. Here m is the number of rows and n is the number of columns in the problem object. </p>
12671267 */
12681268 public";
12691269
12731273 * <p>SYNOPSIS</p>
12741274 * <p>int glp_get_row_bind(glp_prob *lp, int i);</p>
12751275 * <p>RETURNS</p>
1276 * <p>The routine glp_get_row_bind returns the index k of basic variable xB[k], 1 <= k <= m, which is i-th auxiliary variable, 1 <= i <= m, in the current basis associated with the specified problem object, where m is the number of rows. However, if i-th auxiliary variable is non-basic, the routine returns zero. </p>
1276 * <p>The routine glp_get_row_bind returns the index k of basic variable xB[k], 1 &lt;= k &lt;= m, which is i-th auxiliary variable, 1 &lt;= i &lt;= m, in the current basis associated with the specified problem object, where m is the number of rows. However, if i-th auxiliary variable is non-basic, the routine returns zero. </p>
12771277 */
12781278 public";
12791279
12831283 * <p>SYNOPSIS</p>
12841284 * <p>int glp_get_col_bind(glp_prob *lp, int j);</p>
12851285 * <p>RETURNS</p>
1286 * <p>The routine glp_get_col_bind returns the index k of basic variable xB[k], 1 <= k <= m, which is j-th structural variable, 1 <= j <= n, in the current basis associated with the specified problem object, where m is the number of rows, n is the number of columns. However, if j-th structural variable is non-basic, the routine returns zero. </p>
1286 * <p>The routine glp_get_col_bind returns the index k of basic variable xB[k], 1 &lt;= k &lt;= m, which is j-th structural variable, 1 &lt;= j &lt;= n, in the current basis associated with the specified problem object, where m is the number of rows, n is the number of columns. However, if j-th structural variable is non-basic, the routine returns zero. </p>
12871287 */
12881288 public";
12891289
13461346 * <p>SYNOPSIS</p>
13471347 * <p>int glp_eval_tab_row(glp_prob *lp, int k, int ind[], double val[]);</p>
13481348 * <p>DESCRIPTION</p>
1349 * <p>The routine glp_eval_tab_row computes a row of the current simplex tableau for the basic variable, which is specified by the number k: if 1 <= k <= m, x[k] is k-th auxiliary variable; if m+1 <= k <= m+n, x[k] is (k-m)-th structural variable, where m is number of rows, and n is number of columns. The current basis must be available.</p>
1350 * <p>The routine stores column indices and numerical values of non-zero elements of the computed row using sparse format to the locations ind[1], ..., ind[len] and val[1], ..., val[len], respectively, where 0 <= len <= n is number of non-zeros returned on exit.</p>
1349 * <p>The routine glp_eval_tab_row computes a row of the current simplex tableau for the basic variable, which is specified by the number k: if 1 &lt;= k &lt;= m, x[k] is k-th auxiliary variable; if m+1 &lt;= k &lt;= m+n, x[k] is (k-m)-th structural variable, where m is number of rows, and n is number of columns. The current basis must be available.</p>
1350 * <p>The routine stores column indices and numerical values of non-zero elements of the computed row using sparse format to the locations ind[1], ..., ind[len] and val[1], ..., val[len], respectively, where 0 &lt;= len &lt;= n is number of non-zeros returned on exit.</p>
13511351 * <p>Element indices stored in the array ind have the same sense as the index k, i.e. indices 1 to m denote auxiliary variables and indices m+1 to m+n denote structural ones (all these variables are obviously non-basic by definition).</p>
13521352 * <p>The computed row shows how the specified basic variable x[k] = xB[i] depends on non-basic variables:</p>
13531353 * <p>xB[i] = alfa[i,1]*xN[1] + alfa[i,2]*xN[2] + ... + alfa[i,n]*xN[n],</p>
13871387 * <p>SYNOPSIS</p>
13881388 * <p>int glp_eval_tab_col(glp_prob *lp, int k, int ind[], double val[]);</p>
13891389 * <p>DESCRIPTION</p>
1390 * <p>The routine glp_eval_tab_col computes a column of the current simplex table for the non-basic variable, which is specified by the number k: if 1 <= k <= m, x[k] is k-th auxiliary variable; if m+1 <= k <= m+n, x[k] is (k-m)-th structural variable, where m is number of rows, and n is number of columns. The current basis must be available.</p>
1391 * <p>The routine stores row indices and numerical values of non-zero elements of the computed column using sparse format to the locations ind[1], ..., ind[len] and val[1], ..., val[len] respectively, where 0 <= len <= m is number of non-zeros returned on exit.</p>
1390 * <p>The routine glp_eval_tab_col computes a column of the current simplex table for the non-basic variable, which is specified by the number k: if 1 &lt;= k &lt;= m, x[k] is k-th auxiliary variable; if m+1 &lt;= k &lt;= m+n, x[k] is (k-m)-th structural variable, where m is number of rows, and n is number of columns. The current basis must be available.</p>
1391 * <p>The routine stores row indices and numerical values of non-zero elements of the computed column using sparse format to the locations ind[1], ..., ind[len] and val[1], ..., val[len] respectively, where 0 &lt;= len &lt;= m is number of non-zeros returned on exit.</p>
13921392 * <p>Element indices stored in the array ind have the same sense as the index k, i.e. indices 1 to m denote auxiliary variables and indices m+1 to m+n denote structural ones (all these variables are obviously basic by the definition).</p>
13931393 * <p>The computed column shows how basic variables depend on the specified non-basic variable x[k] = xN[j]:</p>
13941394 * <p>xB[1] = ... + alfa[1,j]*xN[j] + ... xB[2] = ... + alfa[2,j]*xN[j] + ... . . . . . . xB[m] = ... + alfa[m,j]*xN[j] + ...</p>
14181418 * <p>This routine uses the system of equality constraints and the current basis in order to express the auxiliary variable x in (1) through the current non-basic variables (as if the transformed row were added to the problem object and its auxiliary variable were basic), i.e. the resultant row has the form:</p>
14191419 * <p>x = alfa[1]*xN[1] + alfa[2]*xN[2] + ... + alfa[n]*xN[n], (2)</p>
14201420 * <p>where xN[j] are non-basic (auxiliary or structural) variables, n is the number of columns in the LP problem object.</p>
1421 * <p>On exit the routine stores indices and numerical values of non-zero elements of the resultant row (2) in locations ind[1], ..., ind[len'] and val[1], ..., val[len'], where 0 <= len' <= n is the number of non-zero elements in the resultant row returned by the routine. Note that indices (numbers) of non-basic variables stored in the array ind correspond to original ordinal numbers of variables: indices 1 to m mean auxiliary variables and indices m+1 to m+n mean structural ones.</p>
1421 * <p>On exit the routine stores indices and numerical values of non-zero elements of the resultant row (2) in locations ind[1], ..., ind[len'] and val[1], ..., val[len'], where 0 &lt;= len' &lt;= n is the number of non-zero elements in the resultant row returned by the routine. Note that indices (numbers) of non-basic variables stored in the array ind correspond to original ordinal numbers of variables: indices 1 to m mean auxiliary variables and indices m+1 to m+n mean structural ones.</p>
14221422 * <p>RETURNS</p>
14231423 * <p>The routine returns len', which is the number of non-zero elements in the resultant row stored in the arrays ind and val.</p>
14241424 * <p>BACKGROUND</p>
14521452 * <p>This routine uses the system of equality constraints and the current basis in order to express the current basic variables through the structural variable x in (1) (as if the transformed column were added to the problem object and the variable x were non-basic), i.e. the resultant column has the form:</p>
14531453 * <p>xB[1] = ... + alfa[1]*x xB[2] = ... + alfa[2]*x (2) . . . . . . xB[m] = ... + alfa[m]*x</p>
14541454 * <p>where xB are basic (auxiliary and structural) variables, m is the number of rows in the problem object.</p>
1455 * <p>On exit the routine stores indices and numerical values of non-zero elements of the resultant column (2) in locations ind[1], ..., ind[len'] and val[1], ..., val[len'], where 0 <= len' <= m is the number of non-zero element in the resultant column returned by the routine. Note that indices (numbers) of basic variables stored in the array ind correspond to original ordinal numbers of variables: indices 1 to m mean auxiliary variables and indices m+1 to m+n mean structural ones.</p>
1455 * <p>On exit the routine stores indices and numerical values of non-zero elements of the resultant column (2) in locations ind[1], ..., ind[len'] and val[1], ..., val[len'], where 0 &lt;= len' &lt;= m is the number of non-zero element in the resultant column returned by the routine. Note that indices (numbers) of basic variables stored in the array ind correspond to original ordinal numbers of variables: indices 1 to m mean auxiliary variables and indices m+1 to m+n mean structural ones.</p>
14561456 * <p>RETURNS</p>
14571457 * <p>The routine returns len', which is the number of non-zero elements in the resultant column stored in the arrays ind and val.</p>
14581458 * <p>BACKGROUND</p>
14771477 * <p>The parameter eps is an absolute tolerance (small positive number) used by the routine to skip small alfa[j] of the row (*).</p>
14781478 * <p>The routine determines which basic variable (among specified in ind[1], ..., ind[len]) should leave the basis in order to keep primal feasibility.</p>
14791479 * <p>RETURNS</p>
1480 * <p>The routine glp_prim_rtest returns the index piv in the arrays ind and val corresponding to the pivot element chosen, 1 <= piv <= len. If the adjacent basic solution is primal unbounded and therefore the choice cannot be made, the routine returns zero.</p>
1480 * <p>The routine glp_prim_rtest returns the index piv in the arrays ind and val corresponding to the pivot element chosen, 1 &lt;= piv &lt;= len. If the adjacent basic solution is primal unbounded and therefore the choice cannot be made, the routine returns zero.</p>
14811481 * <p>COMMENTS</p>
14821482 * <p>If the non-basic variable x is presented in the LP problem object, the column (*) can be computed with the routine glp_eval_tab_col; otherwise it can be computed with the routine glp_transform_col. </p>
14831483 */
14981498 * <p>The parameter eps is an absolute tolerance (small positive number) used by the routine to skip small alfa[j] of the row (*).</p>
14991499 * <p>The routine determines which non-basic variable (among specified in ind[1], ..., ind[len]) should enter the basis in order to keep dual feasibility.</p>
15001500 * <p>RETURNS</p>
1501 * <p>The routine glp_dual_rtest returns the index piv in the arrays ind and val corresponding to the pivot element chosen, 1 <= piv <= len. If the adjacent basic solution is dual unbounded and therefore the choice cannot be made, the routine returns zero.</p>
1501 * <p>The routine glp_dual_rtest returns the index piv in the arrays ind and val corresponding to the pivot element chosen, 1 &lt;= piv &lt;= len. If the adjacent basic solution is dual unbounded and therefore the choice cannot be made, the routine returns zero.</p>
15021502 * <p>COMMENTS</p>
15031503 * <p>If the basic variable x is presented in the LP problem object, the row (*) can be computed with the routine glp_eval_tab_row; otherwise it can be computed with the routine glp_transform_row. </p>
15041504 */
15171517 * <p>where y is an auxiliary variable of the row, alfa[j] is an influence coefficient, xN[j] is a non-basic variable.</p>
15181518 * <p>The row is passed to the routine in sparse format. Ordinal numbers of non-basic variables are stored in locations ind[1], ..., ind[len], where numbers 1 to m denote auxiliary variables while numbers m+1 to m+n denote structural variables. Corresponding non-zero coefficients alfa[j] are stored in locations val[1], ..., val[len]. The arrays ind and val are ot changed on exit.</p>
15191519 * <p>The parameters type and rhs specify the row type and its right-hand side as follows:</p>
1520 * <p>type = GLP_LO: y = sum alfa[j] * xN[j] >= rhs</p>
1521 * <p>type = GLP_UP: y = sum alfa[j] * xN[j] <= rhs</p>
1520 * <p>type = GLP_LO: y = sum alfa[j] * xN[j] &gt;= rhs</p>
1521 * <p>type = GLP_UP: y = sum alfa[j] * xN[j] &lt;= rhs</p>
15221522 * <p>The parameter eps is an absolute tolerance (small positive number) used by the routine to skip small coefficients alfa[j] on performing the dual ratio test.</p>
15231523 * <p>If the operation was successful, the routine stores the following information to corresponding location (if some parameter is NULL, its value is not stored):</p>
1524 * <p>piv index in the array ind and val, 1 <= piv <= len, determining the non-basic variable, which would enter the adjacent basis;</p>
1524 * <p>piv index in the array ind and val, 1 &lt;= piv &lt;= len, determining the non-basic variable, which would enter the adjacent basis;</p>
15251525 * <p>x value of the non-basic variable in the current basis;</p>
15261526 * <p>dx difference between values of the non-basic variable in the adjacent and current bases, dx = x.new - x.old;</p>
15271527 * <p>y value of the row (i.e. of its auxiliary variable) in the current basis;</p>
15281528 * <p>dy difference between values of the row in the adjacent and current bases, dy = y.new - y.old;</p>
1529 * <p>dz difference between values of the objective function in the adjacent and current bases, dz = z.new - z.old. Note that in case of minimization dz >= 0, and in case of maximization dz <= 0, i.e. in the adjacent basis the objective function always gets worse (degrades). </p>
1529 * <p>dz difference between values of the objective function in the adjacent and current bases, dz = z.new - z.old. Note that in case of minimization dz &gt;= 0, and in case of maximization dz &lt;= 0, i.e. in the adjacent basis the objective function always gets worse (degrades). </p>
15301530 */
15311531 public";
15321532
15371537 * <p>void glp_analyze_bound(glp_prob *P, int k, double *limit1, int *var1, double *limit2, int *var2);</p>
15381538 * <p>DESCRIPTION</p>
15391539 * <p>The routine glp_analyze_bound analyzes the effect of varying the active bound of specified non-basic variable.</p>
1540 * <p>The non-basic variable is specified by the parameter k, where 1 <= k <= m means auxiliary variable of corresponding row while m+1 <= k <= m+n means structural variable (column).</p>
1540 * <p>The non-basic variable is specified by the parameter k, where 1 &lt;= k &lt;= m means auxiliary variable of corresponding row while m+1 &lt;= k &lt;= m+n means structural variable (column).</p>
15411541 * <p>Note that the current basic solution must be optimal, and the basis factorization must exist.</p>
15421542 * <p>Results of the analysis have the following meaning.</p>
15431543 * <p>value1 is the minimal value of the active bound, at which the basis still remains primal feasible and thus optimal. -DBL_MAX means that the active bound has no lower limit.</p>
15541554 * <p>void glp_analyze_coef(glp_prob *P, int k, double *coef1, int *var1, double *value1, double *coef2, int *var2, double *value2);</p>
15551555 * <p>DESCRIPTION</p>
15561556 * <p>The routine glp_analyze_coef analyzes the effect of varying the objective coefficient at specified basic variable.</p>
1557 * <p>The basic variable is specified by the parameter k, where 1 <= k <= m means auxiliary variable of corresponding row while m+1 <= k <= m+n means structural variable (column).</p>
1557 * <p>The basic variable is specified by the parameter k, where 1 &lt;= k &lt;= m means auxiliary variable of corresponding row while m+1 &lt;= k &lt;= m+n means structural variable (column).</p>
15581558 * <p>Note that the current basic solution must be optimal, and the basis factorization must exist.</p>
15591559 * <p>Results of the analysis have the following meaning.</p>
15601560 * <p>coef1 is the minimal value of the objective coefficient, at which the basis still remains dual feasible and thus optimal. -DBL_MAX means that the objective coefficient has no lower limit.</p>
19031903 * <p>SYNOPSIS</p>
19041904 * <p>void glp_del_vertices(glp_graph *G, int ndel, const int num[]);</p>
19051905 * <p>DESCRIPTION</p>
1906 * <p>The routine glp_del_vertices deletes vertices along with all incident arcs from the specified graph. Ordinal numbers of vertices to be deleted should be placed in locations num[1], ..., num[ndel], ndel > 0.</p>
1906 * <p>The routine glp_del_vertices deletes vertices along with all incident arcs from the specified graph. Ordinal numbers of vertices to be deleted should be placed in locations num[1], ..., num[ndel], ndel &gt; 0.</p>
19071907 * <p>Note that deleting vertices involves changing ordinal numbers of other vertices remaining in the graph. New ordinal numbers of the remaining vertices are assigned under the assumption that the original order of vertices is not changed. </p>
19081908 */
19091909 public";
19891989 * <p>int glp_weak_comp(glp_graph *G, int v_num);</p>
19901990 * <p>DESCRIPTION</p>
19911991 * <p>The routine glp_weak_comp finds all weakly connected components of the specified graph.</p>
1992 * <p>The parameter v_num specifies an offset of the field of type int in the vertex data block, to which the routine stores the number of a (weakly) connected component containing that vertex. If v_num < 0, no component numbers are stored.</p>
1993 * <p>The components are numbered in arbitrary order from 1 to nc, where nc is the total number of components found, 0 <= nc <= |V|.</p>
1992 * <p>The parameter v_num specifies an offset of the field of type int in the vertex data block, to which the routine stores the number of a (weakly) connected component containing that vertex. If v_num &lt; 0, no component numbers are stored.</p>
1993 * <p>The components are numbered in arbitrary order from 1 to nc, where nc is the total number of components found, 0 &lt;= nc &lt;= |V|.</p>
19941994 * <p>RETURNS</p>
19951995 * <p>The routine returns nc, the total number of components found. </p>
19961996 */
20032003 * <p>int glp_strong_comp(glp_graph *G, int v_num);</p>
20042004 * <p>DESCRIPTION</p>
20052005 * <p>The routine glp_strong_comp finds all strongly connected components of the specified graph.</p>
2006 * <p>The parameter v_num specifies an offset of the field of type int in the vertex data block, to which the routine stores the number of a strongly connected component containing that vertex. If v_num < 0, no component numbers are stored.</p>
2007 * <p>The components are numbered in arbitrary order from 1 to nc, where nc is the total number of components found, 0 <= nc <= |V|. However, the component numbering has the property that for every arc (i->j) in the graph the condition num(i) >= num(j) holds.</p>
2006 * <p>The parameter v_num specifies an offset of the field of type int in the vertex data block, to which the routine stores the number of a strongly connected component containing that vertex. If v_num &lt; 0, no component numbers are stored.</p>
2007 * <p>The components are numbered in arbitrary order from 1 to nc, where nc is the total number of components found, 0 &lt;= nc &lt;= |V|. However, the component numbering has the property that for every arc (i-&gt;j) in the graph the condition num(i) &gt;= num(j) holds.</p>
20082008 * <p>RETURNS</p>
20092009 * <p>The routine returns nc, the total number of components found. </p>
20102010 */
20172017 * <p>int glp_top_sort(glp_graph *G, int v_num);</p>
20182018 * <p>DESCRIPTION</p>
20192019 * <p>The routine glp_top_sort performs topological sorting of vertices of the specified acyclic digraph.</p>
2020 * <p>The parameter v_num specifies an offset of the field of type int in the vertex data block, to which the routine stores the vertex number assigned. If v_num < 0, vertex numbers are not stored.</p>
2021 * <p>The vertices are numbered from 1 to n, where n is the total number of vertices in the graph. The vertex numbering has the property that for every arc (i->j) in the graph the condition num(i) < num(j) holds. Special case num(i) = 0 means that vertex i is not assigned a number, because the graph is *not* acyclic.</p>
2020 * <p>The parameter v_num specifies an offset of the field of type int in the vertex data block, to which the routine stores the vertex number assigned. If v_num &lt; 0, vertex numbers are not stored.</p>
2021 * <p>The vertices are numbered from 1 to n, where n is the total number of vertices in the graph. The vertex numbering has the property that for every arc (i-&gt;j) in the graph the condition num(i) &lt; num(j) holds. Special case num(i) = 0 means that vertex i is not assigned a number, because the graph is *not* acyclic.</p>
20222022 * <p>RETURNS</p>
20232023 * <p>If the graph is acyclic and therefore all the vertices have been assigned numbers, the routine glp_top_sort returns zero. Otherwise, if the graph is not acyclic, the routine returns the number of vertices which have not been numbered, i.e. for which num(i) = 0. </p>
20242024 */
21192119 * <p>DESCRIPTION</p>
21202120 * <p>The routine glp_cpp solves the critical path problem represented in the form of the project network.</p>
21212121 * <p>The parameter G is a pointer to the graph object, which specifies the project network. This graph must be acyclic. Multiple arcs are allowed being considered as single arcs.</p>
2122 * <p>The parameter v_t specifies an offset of the field of type double in the vertex data block, which contains time t[i] >= 0 needed to perform corresponding job j. If v_t < 0, it is assumed that t[i] = 1 for all jobs.</p>
2123 * <p>The parameter v_es specifies an offset of the field of type double in the vertex data block, to which the routine stores earliest start time for corresponding job. If v_es < 0, this time is not stored.</p>
2124 * <p>The parameter v_ls specifies an offset of the field of type double in the vertex data block, to which the routine stores latest start time for corresponding job. If v_ls < 0, this time is not stored.</p>
2122 * <p>The parameter v_t specifies an offset of the field of type double in the vertex data block, which contains time t[i] &gt;= 0 needed to perform corresponding job j. If v_t &lt; 0, it is assumed that t[i] = 1 for all jobs.</p>
2123 * <p>The parameter v_es specifies an offset of the field of type double in the vertex data block, to which the routine stores earliest start time for corresponding job. If v_es &lt; 0, this time is not stored.</p>
2124 * <p>The parameter v_ls specifies an offset of the field of type double in the vertex data block, to which the routine stores latest start time for corresponding job. If v_ls &lt; 0, this time is not stored.</p>
21252125 * <p>RETURNS</p>
21262126 * <p>The routine glp_cpp returns the minimal project duration, that is, minimal time needed to perform all jobs in the project. </p>
21272127 */
23072307 * <p>DESCRIPTION</p>
23082308 * <p>The routine bfd_factorize computes the factorization of the basis matrix B specified by the routine col.</p>
23092309 * <p>The parameter bfd specified the basis factorization data structure created with the routine bfd_create_it.</p>
2310 * <p>The parameter m specifies the order of B, m > 0.</p>
2311 * <p>The array bh specifies the basis header: bh[j], 1 <= j <= m, is the number of j-th column of B in some original matrix. The array bh is optional and can be specified as NULL.</p>
2312 * <p>The formal routine col specifies the matrix B to be factorized. To obtain j-th column of A the routine bfd_factorize calls the routine col with the parameter j (1 <= j <= n). In response the routine col should store row indices and numerical values of non-zero elements of j-th column of B to locations ind[1,...,len] and val[1,...,len], respectively, where len is the number of non-zeros in j-th column returned on exit. Neither zero nor duplicate elements are allowed.</p>
2310 * <p>The parameter m specifies the order of B, m &gt; 0.</p>
2311 * <p>The array bh specifies the basis header: bh[j], 1 &lt;= j &lt;= m, is the number of j-th column of B in some original matrix. The array bh is optional and can be specified as NULL.</p>
2312 * <p>The formal routine col specifies the matrix B to be factorized. To obtain j-th column of A the routine bfd_factorize calls the routine col with the parameter j (1 &lt;= j &lt;= n). In response the routine col should store row indices and numerical values of non-zero elements of j-th column of B to locations ind[1,...,len] and val[1,...,len], respectively, where len is the number of non-zeros in j-th column returned on exit. Neither zero nor duplicate elements are allowed.</p>
23132313 * <p>The parameter info is a transit pointer passed to the routine col.</p>
23142314 * <p>RETURNS</p>
23152315 * <p>0 The factorization has been successfully computed.</p>
23482348 * <p>#include \"glpbfd.h\" int bfd_update_it(BFD *bfd, int j, int bh, int len, const int ind[], const double val[]);</p>
23492349 * <p>DESCRIPTION</p>
23502350 * <p>The routine bfd_update_it updates the factorization of the basis matrix B after replacing its j-th column by a new vector.</p>
2351 * <p>The parameter j specifies the number of column of B, which has been replaced, 1 <= j <= m, where m is the order of B.</p>
2351 * <p>The parameter j specifies the number of column of B, which has been replaced, 1 &lt;= j &lt;= m, where m is the order of B.</p>
23522352 * <p>The parameter bh specifies the basis header entry for the new column of B, which is the number of the new column in some original matrix. This parameter is optional and can be specified as 0.</p>
23532353 * <p>Row indices and numerical values of non-zero elements of the new column of B should be placed in locations ind[1], ..., ind[len] and val[1], ..., val[len], resp., where len is the number of non-zeros in the column. Neither zero nor duplicate elements are allowed.</p>
23542354 * <p>RETURNS</p>
24012401 * <p>DESCRIPTION</p>
24022402 * <p>The routine bfd_factorize computes the factorization of the basis matrix B specified by the routine col.</p>
24032403 * <p>The parameter bfd specified the basis factorization data structure created with the routine bfd_create_it.</p>
2404 * <p>The parameter m specifies the order of B, m > 0.</p>
2405 * <p>The array bh specifies the basis header: bh[j], 1 <= j <= m, is the number of j-th column of B in some original matrix. The array bh is optional and can be specified as NULL.</p>
2406 * <p>The formal routine col specifies the matrix B to be factorized. To obtain j-th column of A the routine bfd_factorize calls the routine col with the parameter j (1 <= j <= n). In response the routine col should store row indices and numerical values of non-zero elements of j-th column of B to locations ind[1,...,len] and val[1,...,len], respectively, where len is the number of non-zeros in j-th column returned on exit. Neither zero nor duplicate elements are allowed.</p>
2404 * <p>The parameter m specifies the order of B, m &gt; 0.</p>
2405 * <p>The array bh specifies the basis header: bh[j], 1 &lt;= j &lt;= m, is the number of j-th column of B in some original matrix. The array bh is optional and can be specified as NULL.</p>
2406 * <p>The formal routine col specifies the matrix B to be factorized. To obtain j-th column of A the routine bfd_factorize calls the routine col with the parameter j (1 &lt;= j &lt;= n). In response the routine col should store row indices and numerical values of non-zero elements of j-th column of B to locations ind[1,...,len] and val[1,...,len], respectively, where len is the number of non-zeros in j-th column returned on exit. Neither zero nor duplicate elements are allowed.</p>
24072407 * <p>The parameter info is a transit pointer passed to the routine col.</p>
24082408 * <p>RETURNS</p>
24092409 * <p>0 The factorization has been successfully computed.</p>
24422442 * <p>#include \"glpbfd.h\" int bfd_update_it(BFD *bfd, int j, int bh, int len, const int ind[], const double val[]);</p>
24432443 * <p>DESCRIPTION</p>
24442444 * <p>The routine bfd_update_it updates the factorization of the basis matrix B after replacing its j-th column by a new vector.</p>
2445 * <p>The parameter j specifies the number of column of B, which has been replaced, 1 <= j <= m, where m is the order of B.</p>
2445 * <p>The parameter j specifies the number of column of B, which has been replaced, 1 &lt;= j &lt;= m, where m is the order of B.</p>
24462446 * <p>The parameter bh specifies the basis header entry for the new column of B, which is the number of the new column in some original matrix. This parameter is optional and can be specified as 0.</p>
24472447 * <p>Row indices and numerical values of non-zero elements of the new column of B should be placed in locations ind[1], ..., ind[len] and val[1], ..., val[len], resp., where len is the number of non-zeros in the column. Neither zero nor duplicate elements are allowed.</p>
24482448 * <p>RETURNS</p>
26742674 * <p>#include \"glpdmp.h\" void *dmp_get_atom(DMP *pool, int size);</p>
26752675 * <p>DESCRIPTION</p>
26762676 * <p>The routine dmp_get_atom obtains a free atom (memory block) from the specified memory pool.</p>
2677 * <p>The parameter size is the atom size, in bytes, 1 <= size <= 256.</p>
2677 * <p>The parameter size is the atom size, in bytes, 1 &lt;= size &lt;= 256.</p>
26782678 * <p>Note that the free atom contains arbitrary data, not binary zeros.</p>
26792679 * <p>RETURNS</p>
26802680 * <p>The routine returns a pointer to the free atom obtained. </p>
26882688 * <p>#include \"glpdmp.h\" void dmp_free_atom(DMP *pool, void *atom, int size);</p>
26892689 * <p>DESCRIPTION</p>
26902690 * <p>The routine dmp_free_atom returns the specified atom (memory block) to the specified memory pool, making it free.</p>
2691 * <p>The parameter size is the atom size, in bytes, 1 <= size <= 256.</p>
2691 * <p>The parameter size is the atom size, in bytes, 1 &lt;= size &lt;= 256.</p>
26922692 * <p>Note that the atom can be returned only to the pool, from which it was obtained, and its size must be exactly the same as on obtaining it from the pool. </p>
26932693 */
26942694 public";
27342734 * <p>#include \"glpdmp.h\" void *dmp_get_atom(DMP *pool, int size);</p>
27352735 * <p>DESCRIPTION</p>
27362736 * <p>The routine dmp_get_atom obtains a free atom (memory block) from the specified memory pool.</p>
2737 * <p>The parameter size is the atom size, in bytes, 1 <= size <= 256.</p>
2737 * <p>The parameter size is the atom size, in bytes, 1 &lt;= size &lt;= 256.</p>
27382738 * <p>Note that the free atom contains arbitrary data, not binary zeros.</p>
27392739 * <p>RETURNS</p>
27402740 * <p>The routine returns a pointer to the free atom obtained. </p>
27482748 * <p>#include \"glpdmp.h\" void dmp_free_atom(DMP *pool, void *atom, int size);</p>
27492749 * <p>DESCRIPTION</p>
27502750 * <p>The routine dmp_free_atom returns the specified atom (memory block) to the specified memory pool, making it free.</p>
2751 * <p>The parameter size is the atom size, in bytes, 1 <= size <= 256.</p>
2751 * <p>The parameter size is the atom size, in bytes, 1 &lt;= size &lt;= 256.</p>
27522752 * <p>Note that the atom can be returned only to the pool, from which it was obtained, and its size must be exactly the same as on obtaining it from the pool. </p>
27532753 */
27542754 public";
36263626 * <p>DESCRIPTION</p>
36273627 * <p>The routine fhv_factorize computes the factorization of the basis matrix B specified by the routine col.</p>
36283628 * <p>The parameter fhv specified the basis factorization data structure created by the routine fhv_create_it.</p>
3629 * <p>The parameter m specifies the order of B, m > 0.</p>
3630 * <p>The formal routine col specifies the matrix B to be factorized. To obtain j-th column of A the routine fhv_factorize calls the routine col with the parameter j (1 <= j <= n). In response the routine col should store row indices and numerical values of non-zero elements of j-th column of B to locations ind[1,...,len] and val[1,...,len], respectively, where len is the number of non-zeros in j-th column returned on exit. Neither zero nor duplicate elements are allowed.</p>
3629 * <p>The parameter m specifies the order of B, m &gt; 0.</p>
3630 * <p>The formal routine col specifies the matrix B to be factorized. To obtain j-th column of A the routine fhv_factorize calls the routine col with the parameter j (1 &lt;= j &lt;= n). In response the routine col should store row indices and numerical values of non-zero elements of j-th column of B to locations ind[1,...,len] and val[1,...,len], respectively, where len is the number of non-zeros in j-th column returned on exit. Neither zero nor duplicate elements are allowed.</p>
36313631 * <p>The parameter info is a transit pointer passed to the routine col.</p>
36323632 * <p>RETURNS</p>
36333633 * <p>0 The factorization has been successfully computed.</p>
36883688 * <p>#include \"glpfhv.h\" int fhv_update_it(FHV *fhv, int j, int len, const int ind[], const double val[]);</p>
36893689 * <p>DESCRIPTION</p>
36903690 * <p>The routine fhv_update_it updates the factorization of the basis matrix B after replacing its j-th column by a new vector.</p>
3691 * <p>The parameter j specifies the number of column of B, which has been replaced, 1 <= j <= m, where m is the order of B.</p>
3691 * <p>The parameter j specifies the number of column of B, which has been replaced, 1 &lt;= j &lt;= m, where m is the order of B.</p>
36923692 * <p>Row indices and numerical values of non-zero elements of the new column of B should be placed in locations ind[1], ..., ind[len] and val[1], ..., val[len], resp., where len is the number of non-zeros in the column. Neither zero nor duplicate elements are allowed.</p>
36933693 * <p>RETURNS</p>
36943694 * <p>0 The factorization has been successfully updated.</p>
3695 * <p>FHV_ESING The adjacent basis matrix is structurally singular, since after changing j-th column of matrix V by the new column (see algorithm below) the case k1 > k2 occured.</p>
3695 * <p>FHV_ESING The adjacent basis matrix is structurally singular, since after changing j-th column of matrix V by the new column (see algorithm below) the case k1 &gt; k2 occured.</p>
36963696 * <p>FHV_ECHECK The factorization is inaccurate, since after transforming k2-th row of matrix U = P*V*Q, its diagonal element u[k2,k2] is zero or close to zero,</p>
36973697 * <p>FHV_ELIMIT Maximal number of H factors has been reached.</p>
36983698 * <p>FHV_EROOM Overflow of the sparse vector area.</p>
37403740 * <p>DESCRIPTION</p>
37413741 * <p>The routine fhv_factorize computes the factorization of the basis matrix B specified by the routine col.</p>
37423742 * <p>The parameter fhv specified the basis factorization data structure created by the routine fhv_create_it.</p>
3743 * <p>The parameter m specifies the order of B, m > 0.</p>
3744 * <p>The formal routine col specifies the matrix B to be factorized. To obtain j-th column of A the routine fhv_factorize calls the routine col with the parameter j (1 <= j <= n). In response the routine col should store row indices and numerical values of non-zero elements of j-th column of B to locations ind[1,...,len] and val[1,...,len], respectively, where len is the number of non-zeros in j-th column returned on exit. Neither zero nor duplicate elements are allowed.</p>
3743 * <p>The parameter m specifies the order of B, m &gt; 0.</p>
3744 * <p>The formal routine col specifies the matrix B to be factorized. To obtain j-th column of A the routine fhv_factorize calls the routine col with the parameter j (1 &lt;= j &lt;= n). In response the routine col should store row indices and numerical values of non-zero elements of j-th column of B to locations ind[1,...,len] and val[1,...,len], respectively, where len is the number of non-zeros in j-th column returned on exit. Neither zero nor duplicate elements are allowed.</p>
37453745 * <p>The parameter info is a transit pointer passed to the routine col.</p>
37463746 * <p>RETURNS</p>
37473747 * <p>0 The factorization has been successfully computed.</p>
38023802 * <p>#include \"glpfhv.h\" int fhv_update_it(FHV *fhv, int j, int len, const int ind[], const double val[]);</p>
38033803 * <p>DESCRIPTION</p>
38043804 * <p>The routine fhv_update_it updates the factorization of the basis matrix B after replacing its j-th column by a new vector.</p>
3805 * <p>The parameter j specifies the number of column of B, which has been replaced, 1 <= j <= m, where m is the order of B.</p>
3805 * <p>The parameter j specifies the number of column of B, which has been replaced, 1 &lt;= j &lt;= m, where m is the order of B.</p>
38063806 * <p>Row indices and numerical values of non-zero elements of the new column of B should be placed in locations ind[1], ..., ind[len] and val[1], ..., val[len], resp., where len is the number of non-zeros in the column. Neither zero nor duplicate elements are allowed.</p>
38073807 * <p>RETURNS</p>
38083808 * <p>0 The factorization has been successfully updated.</p>
3809 * <p>FHV_ESING The adjacent basis matrix is structurally singular, since after changing j-th column of matrix V by the new column (see algorithm below) the case k1 > k2 occured.</p>
3809 * <p>FHV_ESING The adjacent basis matrix is structurally singular, since after changing j-th column of matrix V by the new column (see algorithm below) the case k1 &gt; k2 occured.</p>
38103810 * <p>FHV_ECHECK The factorization is inaccurate, since after transforming k2-th row of matrix U = P*V*Q, its diagonal element u[k2,k2] is zero or close to zero,</p>
38113811 * <p>FHV_ELIMIT Maximal number of H factors has been reached.</p>
38123812 * <p>FHV_EROOM Overflow of the sparse vector area.</p>
43994399 * <p>For the given local bound for any integer feasible solution to the current subproblem the routine ios_round_bound returns an improved local bound for the same integer feasible solution.</p>
44004400 * <p>BACKGROUND</p>
44014401 * <p>Let the current subproblem has the following objective function:</p>
4402 * <p>z = sum c[j] * x[j] + s >= b, (1) j in J</p>
4402 * <p>z = sum c[j] * x[j] + s &gt;= b, (1) j in J</p>
44034403 * <p>where J = {j: c[j] is non-zero and integer, x[j] is integer}, s is the sum of terms corresponding to fixed variables, b is an initial local bound (minimization).</p>
44044404 * <p>From (1) it follows that:</p>
4405 * <p>d * sum (c[j] / d) * x[j] + s >= b, (2) j in J</p>
4405 * <p>d * sum (c[j] / d) * x[j] + s &gt;= b, (2) j in J</p>
44064406 * <p>or, equivalently,</p>
4407 * <p>sum (c[j] / d) * x[j] >= (b - s) / d = h, (3) j in J</p>
4407 * <p>sum (c[j] / d) * x[j] &gt;= (b - s) / d = h, (3) j in J</p>
44084408 * <p>where d = gcd(c[j]). Since the left-hand side of (3) is integer, h = (b - s) / d can be rounded up to the nearest integer:</p>
44094409 * <p>h' = ceil(h) = (b' - s) / d, (4)</p>
44104410 * <p>that gives an rounded, improved local bound:</p>
44114411 * <p>b' = d * h' + s. (5)</p>
4412 * <p>In case of maximization '>=' in (1) should be replaced by '<=' that leads to the following formula:</p>
4412 * <p>In case of maximization '&gt;=' in (1) should be replaced by '&lt;=' that leads to the following formula:</p>
44134413 * <p>h' = floor(h) = (b' - s) / d, (6)</p>
44144414 * <p>which should used in the same way as (4).</p>
44154415 * <p>NOTE: If b is a valid local bound for a child of the current subproblem, b' is also valid for that child subproblem. </p>
48134813 * <p>For the given local bound for any integer feasible solution to the current subproblem the routine ios_round_bound returns an improved local bound for the same integer feasible solution.</p>
48144814 * <p>BACKGROUND</p>
48154815 * <p>Let the current subproblem has the following objective function:</p>
4816 * <p>z = sum c[j] * x[j] + s >= b, (1) j in J</p>
4816 * <p>z = sum c[j] * x[j] + s &gt;= b, (1) j in J</p>
48174817 * <p>where J = {j: c[j] is non-zero and integer, x[j] is integer}, s is the sum of terms corresponding to fixed variables, b is an initial local bound (minimization).</p>
48184818 * <p>From (1) it follows that:</p>
4819 * <p>d * sum (c[j] / d) * x[j] + s >= b, (2) j in J</p>
4819 * <p>d * sum (c[j] / d) * x[j] + s &gt;= b, (2) j in J</p>
48204820 * <p>or, equivalently,</p>
4821 * <p>sum (c[j] / d) * x[j] >= (b - s) / d = h, (3) j in J</p>
4821 * <p>sum (c[j] / d) * x[j] &gt;= (b - s) / d = h, (3) j in J</p>
48224822 * <p>where d = gcd(c[j]). Since the left-hand side of (3) is integer, h = (b - s) / d can be rounded up to the nearest integer:</p>
48234823 * <p>h' = ceil(h) = (b' - s) / d, (4)</p>
48244824 * <p>that gives an rounded, improved local bound:</p>
48254825 * <p>b' = d * h' + s. (5)</p>
4826 * <p>In case of maximization '>=' in (1) should be replaced by '<=' that leads to the following formula:</p>
4826 * <p>In case of maximization '&gt;=' in (1) should be replaced by '&lt;=' that leads to the following formula:</p>
48274827 * <p>h' = floor(h) = (b' - s) / d, (6)</p>
48284828 * <p>which should used in the same way as (4).</p>
48294829 * <p>NOTE: If b is a valid local bound for a child of the current subproblem, b' is also valid for that child subproblem. </p>
55765576 * <p>. . . . . .</p>
55775577 * <p>a[m,1]*x[1] + a[m,2]*x[2] + ... + a[m,n]*x[n] = b[m]</p>
55785578 * <p>and non-negative variables</p>
5579 * <p>x[1] >= 0, x[2] >= 0, ..., x[n] >= 0</p>
5579 * <p>x[1] &gt;= 0, x[2] &gt;= 0, ..., x[n] &gt;= 0</p>
55805580 * <p>where: F is the objective function; x[1], ..., x[n] are (structural) variables; c[0] is a constant term of the objective function; c[1], ..., c[n] are objective coefficients; a[1,1], ..., a[m,n] are constraint coefficients; b[1], ..., b[n] are right-hand sides.</p>
55815581 * <p>The solution is three vectors x, y, and z, which are stored by the routine in the arrays x, y, and z, respectively. These vectors correspond to the best primal-dual point found during optimization. They are approximate solution of the following system (which is the Karush-Kuhn-Tucker optimality conditions):</p>
55825582 * <p>A*x = b (primal feasibility condition)</p>
55835583 * <p>A'*y + z = c (dual feasibility condition)</p>
55845584 * <p>x'*z = 0 (primal-dual complementarity condition)</p>
5585 * <p>x >= 0, z >= 0 (non-negativity condition)</p>
5585 * <p>x &gt;= 0, z &gt;= 0 (non-negativity condition)</p>
55865586 * <p>where: x[1], ..., x[n] are primal (structural) variables; y[1], ..., y[m] are dual variables (Lagrange multipliers) for equality constraints; z[1], ..., z[n] are dual variables (Lagrange multipliers) for non-negativity constraints.</p>
55875587 * <p>RETURNS</p>
55885588 * <p>0 LP has been successfully solved.</p>
56095609 * <p>. . . . . .</p>
56105610 * <p>a[m,1]*x[1] + a[m,2]*x[2] + ... + a[m,n]*x[n] = b[m]</p>
56115611 * <p>and non-negative variables</p>
5612 * <p>x[1] >= 0, x[2] >= 0, ..., x[n] >= 0</p>
5612 * <p>x[1] &gt;= 0, x[2] &gt;= 0, ..., x[n] &gt;= 0</p>
56135613 * <p>where: F is the objective function; x[1], ..., x[n] are (structural) variables; c[0] is a constant term of the objective function; c[1], ..., c[n] are objective coefficients; a[1,1], ..., a[m,n] are constraint coefficients; b[1], ..., b[n] are right-hand sides.</p>
56145614 * <p>The solution is three vectors x, y, and z, which are stored by the routine in the arrays x, y, and z, respectively. These vectors correspond to the best primal-dual point found during optimization. They are approximate solution of the following system (which is the Karush-Kuhn-Tucker optimality conditions):</p>
56155615 * <p>A*x = b (primal feasibility condition)</p>
56165616 * <p>A'*y + z = c (dual feasibility condition)</p>
56175617 * <p>x'*z = 0 (primal-dual complementarity condition)</p>
5618 * <p>x >= 0, z >= 0 (non-negativity condition)</p>
5618 * <p>x &gt;= 0, z &gt;= 0 (non-negativity condition)</p>
56195619 * <p>where: x[1], ..., x[n] are primal (structural) variables; y[1], ..., y[m] are dual variables (Lagrange multipliers) for equality constraints; z[1], ..., z[n] are dual variables (Lagrange multipliers) for non-negativity constraints.</p>
56205620 * <p>RETURNS</p>
56215621 * <p>0 LP has been successfully solved.</p>
57205720 * <p>DESCRIPTION</p>
57215721 * <p>The routine glp_set_row_bnds sets (changes) the type and bounds of i-th row (auxiliary variable) of the specified problem object.</p>
57225722 * <p>Parameters type, lb, and ub specify the type, lower bound, and upper bound, respectively, as follows:</p>
5723 * <p>Type Bounds Comments ------------------------------------------------------ GLP_FR -inf < x < +inf Free variable GLP_LO lb <= x < +inf Variable with lower bound GLP_UP -inf < x <= ub Variable with upper bound GLP_DB lb <= x <= ub Double-bounded variable GLP_FX x = lb Fixed variable</p>
5723 * <p>Type Bounds Comments ------------------------------------------------------ GLP_FR -inf &lt; x &lt; +inf Free variable GLP_LO lb &lt;= x &lt; +inf Variable with lower bound GLP_UP -inf &lt; x &lt;= ub Variable with upper bound GLP_DB lb &lt;= x &lt;= ub Double-bounded variable GLP_FX x = lb Fixed variable</p>
57245724 * <p>where x is the auxiliary variable associated with i-th row.</p>
57255725 * <p>If the row has no lower bound, the parameter lb is ignored. If the row has no upper bound, the parameter ub is ignored. If the row is an equality constraint (i.e. the corresponding auxiliary variable is of fixed type), only the parameter lb is used while the parameter ub is ignored. </p>
57265726 */
57345734 * <p>DESCRIPTION</p>
57355735 * <p>The routine glp_set_col_bnds sets (changes) the type and bounds of j-th column (structural variable) of the specified problem object.</p>
57365736 * <p>Parameters type, lb, and ub specify the type, lower bound, and upper bound, respectively, as follows:</p>
5737 * <p>Type Bounds Comments ------------------------------------------------------ GLP_FR -inf < x < +inf Free variable GLP_LO lb <= x < +inf Variable with lower bound GLP_UP -inf < x <= ub Variable with upper bound GLP_DB lb <= x <= ub Double-bounded variable GLP_FX x = lb Fixed variable</p>
5737 * <p>Type Bounds Comments ------------------------------------------------------ GLP_FR -inf &lt; x &lt; +inf Free variable GLP_LO lb &lt;= x &lt; +inf Variable with lower bound GLP_UP -inf &lt; x &lt;= ub Variable with upper bound GLP_DB lb &lt;= x &lt;= ub Double-bounded variable GLP_FX x = lb Fixed variable</p>
57385738 * <p>where x is the structural variable associated with j-th column.</p>
57395739 * <p>If the column has no lower bound, the parameter lb is ignored. If the column has no upper bound, the parameter ub is ignored. If the column is of fixed type, only the parameter lb is used while the parameter ub is ignored. </p>
57405740 */
57595759 * <p>void glp_set_mat_row(glp_prob *lp, int i, int len, const int ind[], const double val[]);</p>
57605760 * <p>DESCRIPTION</p>
57615761 * <p>The routine glp_set_mat_row stores (replaces) the contents of i-th row of the constraint matrix of the specified problem object.</p>
5762 * <p>Column indices and numeric values of new row elements must be placed in locations ind[1], ..., ind[len] and val[1], ..., val[len], where 0 <= len <= n is the new length of i-th row, n is the current number of columns in the problem object. Elements with identical column indices are not allowed. Zero elements are allowed, but they are not stored in the constraint matrix.</p>
5762 * <p>Column indices and numeric values of new row elements must be placed in locations ind[1], ..., ind[len] and val[1], ..., val[len], where 0 &lt;= len &lt;= n is the new length of i-th row, n is the current number of columns in the problem object. Elements with identical column indices are not allowed. Zero elements are allowed, but they are not stored in the constraint matrix.</p>
57635763 * <p>If the parameter len is zero, the parameters ind and/or val can be specified as NULL. </p>
57645764 */
57655765 public";
57715771 * <p>void glp_set_mat_col(glp_prob *lp, int j, int len, const int ind[], const double val[]);</p>
57725772 * <p>DESCRIPTION</p>
57735773 * <p>The routine glp_set_mat_col stores (replaces) the contents of j-th column of the constraint matrix of the specified problem object.</p>
5774 * <p>Row indices and numeric values of new column elements must be placed in locations ind[1], ..., ind[len] and val[1], ..., val[len], where 0 <= len <= m is the new length of j-th column, m is the current number of rows in the problem object. Elements with identical column indices are not allowed. Zero elements are allowed, but they are not stored in the constraint matrix.</p>
5774 * <p>Row indices and numeric values of new column elements must be placed in locations ind[1], ..., ind[len] and val[1], ..., val[len], where 0 &lt;= len &lt;= m is the new length of j-th column, m is the current number of rows in the problem object. Elements with identical column indices are not allowed. Zero elements are allowed, but they are not stored in the constraint matrix.</p>
57755775 * <p>If the parameter len is zero, the parameters ind and/or val can be specified as NULL. </p>
57765776 */
57775777 public";
57955795 * <p>int glp_check_dup(int m, int n, int ne, const int ia[], const int ja[]);</p>
57965796 * <p>DESCRIPTION</p>
57975797 * <p>The routine glp_check_dup checks for duplicate elements (that is, elements with identical indices) in a sparse matrix specified in the coordinate format.</p>
5798 * <p>The parameters m and n specifies, respectively, the number of rows and columns in the matrix, m >= 0, n >= 0.</p>
5799 * <p>The parameter ne specifies the number of (structurally) non-zero elements in the matrix, ne >= 0.</p>
5798 * <p>The parameters m and n specifies, respectively, the number of rows and columns in the matrix, m &gt;= 0, n &gt;= 0.</p>
5799 * <p>The parameter ne specifies the number of (structurally) non-zero elements in the matrix, ne &gt;= 0.</p>
58005800 * <p>Elements of the matrix are specified as doublets (ia[k],ja[k]) for k = 1,...,ne, where ia[k] is a row index, ja[k] is a column index.</p>
58015801 * <p>The routine glp_check_dup can be used prior to a call to the routine glp_load_matrix to check that the constraint matrix to be loaded has no duplicate elements.</p>
58025802 * <p>RETURNS</p>
58235823 * <p>SYNOPSIS</p>
58245824 * <p>void glp_del_rows(glp_prob *lp, int nrs, const int num[]);</p>
58255825 * <p>DESCRIPTION</p>
5826 * <p>The routine glp_del_rows deletes rows from the specified problem object. Ordinal numbers of rows to be deleted should be placed in locations num[1], ..., num[nrs], where nrs > 0.</p>
5826 * <p>The routine glp_del_rows deletes rows from the specified problem object. Ordinal numbers of rows to be deleted should be placed in locations num[1], ..., num[nrs], where nrs &gt; 0.</p>
58275827 * <p>Note that deleting rows involves changing ordinal numbers of other rows remaining in the problem object. New ordinal numbers of the remaining rows are assigned under the assumption that the original order of rows is not changed. </p>
58285828 */
58295829 public";
58345834 * <p>SYNOPSIS</p>
58355835 * <p>void glp_del_cols(glp_prob *lp, int ncs, const int num[]);</p>
58365836 * <p>DESCRIPTION</p>
5837 * <p>The routine glp_del_cols deletes columns from the specified problem object. Ordinal numbers of columns to be deleted should be placed in locations num[1], ..., num[ncs], where ncs > 0.</p>
5837 * <p>The routine glp_del_cols deletes columns from the specified problem object. Ordinal numbers of columns to be deleted should be placed in locations num[1], ..., num[ncs], where ncs &gt; 0.</p>
58385838 * <p>Note that deleting columns involves changing ordinal numbers of other columns remaining in the problem object. New ordinal numbers of the remaining columns are assigned under the assumption that the original order of columns is not changed. </p>
58395839 */
58405840 public";
60216021 * <p>SYNOPSIS</p>
60226022 * <p>int glp_get_mat_row(glp_prob *lp, int i, int ind[], double val[]);</p>
60236023 * <p>DESCRIPTION</p>
6024 * <p>The routine glp_get_mat_row scans (non-zero) elements of i-th row of the constraint matrix of the specified problem object and stores their column indices and numeric values to locations ind[1], ..., ind[len] and val[1], ..., val[len], respectively, where 0 <= len <= n is the number of elements in i-th row, n is the number of columns.</p>
6024 * <p>The routine glp_get_mat_row scans (non-zero) elements of i-th row of the constraint matrix of the specified problem object and stores their column indices and numeric values to locations ind[1], ..., ind[len] and val[1], ..., val[len], respectively, where 0 &lt;= len &lt;= n is the number of elements in i-th row, n is the number of columns.</p>
60256025 * <p>The parameter ind and/or val can be specified as NULL, in which case corresponding information is not stored.</p>
60266026 * <p>RETURNS</p>
60276027 * <p>The routine glp_get_mat_row returns the length len, i.e. the number of (non-zero) elements in i-th row. </p>
60346034 * <p>SYNOPSIS</p>
60356035 * <p>int glp_get_mat_col(glp_prob *lp, int j, int ind[], double val[]);</p>
60366036 * <p>DESCRIPTION</p>
6037 * <p>The routine glp_get_mat_col scans (non-zero) elements of j-th column of the constraint matrix of the specified problem object and stores their row indices and numeric values to locations ind[1], ..., ind[len] and val[1], ..., val[len], respectively, where 0 <= len <= m is the number of elements in j-th column, m is the number of rows.</p>
6037 * <p>The routine glp_get_mat_col scans (non-zero) elements of j-th column of the constraint matrix of the specified problem object and stores their row indices and numeric values to locations ind[1], ..., ind[len] and val[1], ..., val[len], respectively, where 0 &lt;= len &lt;= m is the number of elements in j-th column, m is the number of rows.</p>
60386038 * <p>The parameter ind or/and val can be specified as NULL, in which case corresponding information is not stored.</p>
60396039 * <p>RETURNS</p>
60406040 * <p>The routine glp_get_mat_col returns the length len, i.e. the number of (non-zero) elements in j-th column. </p>
63376337 * <p>SYNOPSIS</p>
63386338 * <p>int glp_get_unbnd_ray(glp_prob *lp);</p>
63396339 * <p>RETURNS</p>
6340 * <p>The routine glp_get_unbnd_ray returns the number k of a variable, which causes primal or dual unboundedness. If 1 <= k <= m, it is k-th auxiliary variable, and if m+1 <= k <= m+n, it is (k-m)-th structural variable, where m is the number of rows, n is the number of columns in the problem object. If such variable is not defined, the routine returns 0.</p>
6340 * <p>The routine glp_get_unbnd_ray returns the number k of a variable, which causes primal or dual unboundedness. If 1 &lt;= k &lt;= m, it is k-th auxiliary variable, and if m+1 &lt;= k &lt;= m+n, it is (k-m)-th structural variable, where m is the number of rows, n is the number of columns in the problem object. If such variable is not defined, the routine returns 0.</p>
63416341 * <p>COMMENTS</p>
63426342 * <p>If it is not exactly known which version of the simplex solver detected unboundedness, i.e. whether the unboundedness is primal or dual, it is sufficient to check the status of the variable reported with the routine glp_get_row_stat or glp_get_col_stat. If the variable is non-basic, the unboundedness is primal, otherwise, if the variable is basic, the unboundedness is dual (the latter case means that the problem has no primal feasible dolution). </p>
63436343 */
66806680 * <p>DESCRIPTION</p>
66816681 * <p>The routine glp_get_bhead returns the basis header information for the current basis associated with the specified problem object.</p>
66826682 * <p>RETURNS</p>
6683 * <p>If xB[k], 1 <= k <= m, is i-th auxiliary variable (1 <= i <= m), the routine returns i. Otherwise, if xB[k] is j-th structural variable (1 <= j <= n), the routine returns m+j. Here m is the number of rows and n is the number of columns in the problem object. </p>
6683 * <p>If xB[k], 1 &lt;= k &lt;= m, is i-th auxiliary variable (1 &lt;= i &lt;= m), the routine returns i. Otherwise, if xB[k] is j-th structural variable (1 &lt;= j &lt;= n), the routine returns m+j. Here m is the number of rows and n is the number of columns in the problem object. </p>
66846684 */
66856685 public";
66866686
66906690 * <p>SYNOPSIS</p>
66916691 * <p>int glp_get_row_bind(glp_prob *lp, int i);</p>
66926692 * <p>RETURNS</p>
6693 * <p>The routine glp_get_row_bind returns the index k of basic variable xB[k], 1 <= k <= m, which is i-th auxiliary variable, 1 <= i <= m, in the current basis associated with the specified problem object, where m is the number of rows. However, if i-th auxiliary variable is non-basic, the routine returns zero. </p>
6693 * <p>The routine glp_get_row_bind returns the index k of basic variable xB[k], 1 &lt;= k &lt;= m, which is i-th auxiliary variable, 1 &lt;= i &lt;= m, in the current basis associated with the specified problem object, where m is the number of rows. However, if i-th auxiliary variable is non-basic, the routine returns zero. </p>
66946694 */
66956695 public";
66966696
67006700 * <p>SYNOPSIS</p>
67016701 * <p>int glp_get_col_bind(glp_prob *lp, int j);</p>
67026702 * <p>RETURNS</p>
6703 * <p>The routine glp_get_col_bind returns the index k of basic variable xB[k], 1 <= k <= m, which is j-th structural variable, 1 <= j <= n, in the current basis associated with the specified problem object, where m is the number of rows, n is the number of columns. However, if j-th structural variable is non-basic, the routine returns zero. </p>
6703 * <p>The routine glp_get_col_bind returns the index k of basic variable xB[k], 1 &lt;= k &lt;= m, which is j-th structural variable, 1 &lt;= j &lt;= n, in the current basis associated with the specified problem object, where m is the number of rows, n is the number of columns. However, if j-th structural variable is non-basic, the routine returns zero. </p>
67046704 */
67056705 public";
67066706
67636763 * <p>SYNOPSIS</p>
67646764 * <p>int glp_eval_tab_row(glp_prob *lp, int k, int ind[], double val[]);</p>
67656765 * <p>DESCRIPTION</p>
6766 * <p>The routine glp_eval_tab_row computes a row of the current simplex tableau for the basic variable, which is specified by the number k: if 1 <= k <= m, x[k] is k-th auxiliary variable; if m+1 <= k <= m+n, x[k] is (k-m)-th structural variable, where m is number of rows, and n is number of columns. The current basis must be available.</p>
6767 * <p>The routine stores column indices and numerical values of non-zero elements of the computed row using sparse format to the locations ind[1], ..., ind[len] and val[1], ..., val[len], respectively, where 0 <= len <= n is number of non-zeros returned on exit.</p>
6766 * <p>The routine glp_eval_tab_row computes a row of the current simplex tableau for the basic variable, which is specified by the number k: if 1 &lt;= k &lt;= m, x[k] is k-th auxiliary variable; if m+1 &lt;= k &lt;= m+n, x[k] is (k-m)-th structural variable, where m is number of rows, and n is number of columns. The current basis must be available.</p>
6767 * <p>The routine stores column indices and numerical values of non-zero elements of the computed row using sparse format to the locations ind[1], ..., ind[len] and val[1], ..., val[len], respectively, where 0 &lt;= len &lt;= n is number of non-zeros returned on exit.</p>
67686768 * <p>Element indices stored in the array ind have the same sense as the index k, i.e. indices 1 to m denote auxiliary variables and indices m+1 to m+n denote structural ones (all these variables are obviously non-basic by definition).</p>
67696769 * <p>The computed row shows how the specified basic variable x[k] = xB[i] depends on non-basic variables:</p>
67706770 * <p>xB[i] = alfa[i,1]*xN[1] + alfa[i,2]*xN[2] + ... + alfa[i,n]*xN[n],</p>
68046804 * <p>SYNOPSIS</p>
68056805 * <p>int glp_eval_tab_col(glp_prob *lp, int k, int ind[], double val[]);</p>
68066806 * <p>DESCRIPTION</p>
6807 * <p>The routine glp_eval_tab_col computes a column of the current simplex table for the non-basic variable, which is specified by the number k: if 1 <= k <= m, x[k] is k-th auxiliary variable; if m+1 <= k <= m+n, x[k] is (k-m)-th structural variable, where m is number of rows, and n is number of columns. The current basis must be available.</p>
6808 * <p>The routine stores row indices and numerical values of non-zero elements of the computed column using sparse format to the locations ind[1], ..., ind[len] and val[1], ..., val[len] respectively, where 0 <= len <= m is number of non-zeros returned on exit.</p>
6807 * <p>The routine glp_eval_tab_col computes a column of the current simplex table for the non-basic variable, which is specified by the number k: if 1 &lt;= k &lt;= m, x[k] is k-th auxiliary variable; if m+1 &lt;= k &lt;= m+n, x[k] is (k-m)-th structural variable, where m is number of rows, and n is number of columns. The current basis must be available.</p>
6808 * <p>The routine stores row indices and numerical values of non-zero elements of the computed column using sparse format to the locations ind[1], ..., ind[len] and val[1], ..., val[len] respectively, where 0 &lt;= len &lt;= m is number of non-zeros returned on exit.</p>
68096809 * <p>Element indices stored in the array ind have the same sense as the index k, i.e. indices 1 to m denote auxiliary variables and indices m+1 to m+n denote structural ones (all these variables are obviously basic by the definition).</p>
68106810 * <p>The computed column shows how basic variables depend on the specified non-basic variable x[k] = xN[j]:</p>
68116811 * <p>xB[1] = ... + alfa[1,j]*xN[j] + ... xB[2] = ... + alfa[2,j]*xN[j] + ... . . . . . . xB[m] = ... + alfa[m,j]*xN[j] + ...</p>
68356835 * <p>This routine uses the system of equality constraints and the current basis in order to express the auxiliary variable x in (1) through the current non-basic variables (as if the transformed row were added to the problem object and its auxiliary variable were basic), i.e. the resultant row has the form:</p>
68366836 * <p>x = alfa[1]*xN[1] + alfa[2]*xN[2] + ... + alfa[n]*xN[n], (2)</p>
68376837 * <p>where xN[j] are non-basic (auxiliary or structural) variables, n is the number of columns in the LP problem object.</p>
6838 * <p>On exit the routine stores indices and numerical values of non-zero elements of the resultant row (2) in locations ind[1], ..., ind[len'] and val[1], ..., val[len'], where 0 <= len' <= n is the number of non-zero elements in the resultant row returned by the routine. Note that indices (numbers) of non-basic variables stored in the array ind correspond to original ordinal numbers of variables: indices 1 to m mean auxiliary variables and indices m+1 to m+n mean structural ones.</p>
6838 * <p>On exit the routine stores indices and numerical values of non-zero elements of the resultant row (2) in locations ind[1], ..., ind[len'] and val[1], ..., val[len'], where 0 &lt;= len' &lt;= n is the number of non-zero elements in the resultant row returned by the routine. Note that indices (numbers) of non-basic variables stored in the array ind correspond to original ordinal numbers of variables: indices 1 to m mean auxiliary variables and indices m+1 to m+n mean structural ones.</p>
68396839 * <p>RETURNS</p>
68406840 * <p>The routine returns len', which is the number of non-zero elements in the resultant row stored in the arrays ind and val.</p>
68416841 * <p>BACKGROUND</p>
68696869 * <p>This routine uses the system of equality constraints and the current basis in order to express the current basic variables through the structural variable x in (1) (as if the transformed column were added to the problem object and the variable x were non-basic), i.e. the resultant column has the form:</p>
68706870 * <p>xB[1] = ... + alfa[1]*x xB[2] = ... + alfa[2]*x (2) . . . . . . xB[m] = ... + alfa[m]*x</p>
68716871 * <p>where xB are basic (auxiliary and structural) variables, m is the number of rows in the problem object.</p>
6872 * <p>On exit the routine stores indices and numerical values of non-zero elements of the resultant column (2) in locations ind[1], ..., ind[len'] and val[1], ..., val[len'], where 0 <= len' <= m is the number of non-zero element in the resultant column returned by the routine. Note that indices (numbers) of basic variables stored in the array ind correspond to original ordinal numbers of variables: indices 1 to m mean auxiliary variables and indices m+1 to m+n mean structural ones.</p>
6872 * <p>On exit the routine stores indices and numerical values of non-zero elements of the resultant column (2) in locations ind[1], ..., ind[len'] and val[1], ..., val[len'], where 0 &lt;= len' &lt;= m is the number of non-zero element in the resultant column returned by the routine. Note that indices (numbers) of basic variables stored in the array ind correspond to original ordinal numbers of variables: indices 1 to m mean auxiliary variables and indices m+1 to m+n mean structural ones.</p>
68736873 * <p>RETURNS</p>
68746874 * <p>The routine returns len', which is the number of non-zero elements in the resultant column stored in the arrays ind and val.</p>
68756875 * <p>BACKGROUND</p>
68946894 * <p>The parameter eps is an absolute tolerance (small positive number) used by the routine to skip small alfa[j] of the row (*).</p>
68956895 * <p>The routine determines which basic variable (among specified in ind[1], ..., ind[len]) should leave the basis in order to keep primal feasibility.</p>
68966896 * <p>RETURNS</p>
6897 * <p>The routine glp_prim_rtest returns the index piv in the arrays ind and val corresponding to the pivot element chosen, 1 <= piv <= len. If the adjacent basic solution is primal unbounded and therefore the choice cannot be made, the routine returns zero.</p>
6897 * <p>The routine glp_prim_rtest returns the index piv in the arrays ind and val corresponding to the pivot element chosen, 1 &lt;= piv &lt;= len. If the adjacent basic solution is primal unbounded and therefore the choice cannot be made, the routine returns zero.</p>
68986898 * <p>COMMENTS</p>
68996899 * <p>If the non-basic variable x is presented in the LP problem object, the column (*) can be computed with the routine glp_eval_tab_col; otherwise it can be computed with the routine glp_transform_col. </p>
69006900 */
69156915 * <p>The parameter eps is an absolute tolerance (small positive number) used by the routine to skip small alfa[j] of the row (*).</p>
69166916 * <p>The routine determines which non-basic variable (among specified in ind[1], ..., ind[len]) should enter the basis in order to keep dual feasibility.</p>
69176917 * <p>RETURNS</p>
6918 * <p>The routine glp_dual_rtest returns the index piv in the arrays ind and val corresponding to the pivot element chosen, 1 <= piv <= len. If the adjacent basic solution is dual unbounded and therefore the choice cannot be made, the routine returns zero.</p>
6918 * <p>The routine glp_dual_rtest returns the index piv in the arrays ind and val corresponding to the pivot element chosen, 1 &lt;= piv &lt;= len. If the adjacent basic solution is dual unbounded and therefore the choice cannot be made, the routine returns zero.</p>
69196919 * <p>COMMENTS</p>
69206920 * <p>If the basic variable x is presented in the LP problem object, the row (*) can be computed with the routine glp_eval_tab_row; otherwise it can be computed with the routine glp_transform_row. </p>
69216921 */
69286928 * <p>void glp_analyze_bound(glp_prob *P, int k, double *limit1, int *var1, double *limit2, int *var2);</p>
69296929 * <p>DESCRIPTION</p>
69306930 * <p>The routine glp_analyze_bound analyzes the effect of varying the active bound of specified non-basic variable.</p>
6931 * <p>The non-basic variable is specified by the parameter k, where 1 <= k <= m means auxiliary variable of corresponding row while m+1 <= k <= m+n means structural variable (column).</p>
6931 * <p>The non-basic variable is specified by the parameter k, where 1 &lt;= k &lt;= m means auxiliary variable of corresponding row while m+1 &lt;= k &lt;= m+n means structural variable (column).</p>
69326932 * <p>Note that the current basic solution must be optimal, and the basis factorization must exist.</p>
69336933 * <p>Results of the analysis have the following meaning.</p>
69346934 * <p>value1 is the minimal value of the active bound, at which the basis still remains primal feasible and thus optimal. -DBL_MAX means that the active bound has no lower limit.</p>
69456945 * <p>void glp_analyze_coef(glp_prob *P, int k, double *coef1, int *var1, double *value1, double *coef2, int *var2, double *value2);</p>
69466946 * <p>DESCRIPTION</p>
69476947 * <p>The routine glp_analyze_coef analyzes the effect of varying the objective coefficient at specified basic variable.</p>
6948 * <p>The basic variable is specified by the parameter k, where 1 <= k <= m means auxiliary variable of corresponding row while m+1 <= k <= m+n means structural variable (column).</p>
6948 * <p>The basic variable is specified by the parameter k, where 1 &lt;= k &lt;= m means auxiliary variable of corresponding row while m+1 &lt;= k &lt;= m+n means structural variable (column).</p>
69496949 * <p>Note that the current basic solution must be optimal, and the basis factorization must exist.</p>
69506950 * <p>Results of the analysis have the following meaning.</p>
69516951 * <p>coef1 is the minimal value of the objective coefficient, at which the basis still remains dual feasible and thus optimal. -DBL_MAX means that the objective coefficient has no lower limit.</p>
75627562 * <p>SYNOPSIS</p>
75637563 * <p>void glp_del_vertices(glp_graph *G, int ndel, const int num[]);</p>
75647564 * <p>DESCRIPTION</p>
7565 * <p>The routine glp_del_vertices deletes vertices along with all incident arcs from the specified graph. Ordinal numbers of vertices to be deleted should be placed in locations num[1], ..., num[ndel], ndel > 0.</p>
7565 * <p>The routine glp_del_vertices deletes vertices along with all incident arcs from the specified graph. Ordinal numbers of vertices to be deleted should be placed in locations num[1], ..., num[ndel], ndel &gt; 0.</p>
75667566 * <p>Note that deleting vertices involves changing ordinal numbers of other vertices remaining in the graph. New ordinal numbers of the remaining vertices are assigned under the assumption that the original order of vertices is not changed. </p>
75677567 */
75687568 public";
78367836 * <p>int glp_weak_comp(glp_graph *G, int v_num);</p>
78377837 * <p>DESCRIPTION</p>
78387838 * <p>The routine glp_weak_comp finds all weakly connected components of the specified graph.</p>
7839 * <p>The parameter v_num specifies an offset of the field of type int in the vertex data block, to which the routine stores the number of a (weakly) connected component containing that vertex. If v_num < 0, no component numbers are stored.</p>
7840 * <p>The components are numbered in arbitrary order from 1 to nc, where nc is the total number of components found, 0 <= nc <= |V|.</p>
7839 * <p>The parameter v_num specifies an offset of the field of type int in the vertex data block, to which the routine stores the number of a (weakly) connected component containing that vertex. If v_num &lt; 0, no component numbers are stored.</p>
7840 * <p>The components are numbered in arbitrary order from 1 to nc, where nc is the total number of components found, 0 &lt;= nc &lt;= |V|.</p>
78417841 * <p>RETURNS</p>
78427842 * <p>The routine returns nc, the total number of components found. </p>
78437843 */
78507850 * <p>int glp_strong_comp(glp_graph *G, int v_num);</p>
78517851 * <p>DESCRIPTION</p>
78527852 * <p>The routine glp_strong_comp finds all strongly connected components of the specified graph.</p>
7853 * <p>The parameter v_num specifies an offset of the field of type int in the vertex data block, to which the routine stores the number of a strongly connected component containing that vertex. If v_num < 0, no component numbers are stored.</p>
7854 * <p>The components are numbered in arbitrary order from 1 to nc, where nc is the total number of components found, 0 <= nc <= |V|. However, the component numbering has the property that for every arc (i->j) in the graph the condition num(i) >= num(j) holds.</p>
7853 * <p>The parameter v_num specifies an offset of the field of type int in the vertex data block, to which the routine stores the number of a strongly connected component containing that vertex. If v_num &lt; 0, no component numbers are stored.</p>
7854 * <p>The components are numbered in arbitrary order from 1 to nc, where nc is the total number of components found, 0 &lt;= nc &lt;= |V|. However, the component numbering has the property that for every arc (i-&gt;j) in the graph the condition num(i) &gt;= num(j) holds.</p>
78557855 * <p>RETURNS</p>
78567856 * <p>The routine returns nc, the total number of components found. </p>
78577857 */
78747874 * <p>#include \"glplib.h\" void bigmul(int n, int m, unsigned short x[], unsigned short y[]);</p>
78757875 * <p>DESCRIPTION</p>
78767876 * <p>The routine bigmul multiplies unsigned integer numbers of arbitrary precision.</p>
7877 * <p>n is the number of digits of multiplicand, n >= 1;</p>
7878 * <p>m is the number of digits of multiplier, m >= 1;</p>
7877 * <p>n is the number of digits of multiplicand, n &gt;= 1;</p>
7878 * <p>m is the number of digits of multiplier, m &gt;= 1;</p>
78797879 * <p>x is an array containing digits of the multiplicand in elements x[m], x[m+1], ..., x[n+m-1]. Contents of x[0], x[1], ..., x[m-1] are ignored on entry.</p>
78807880 * <p>y is an array containing digits of the multiplier in elements y[0], y[1], ..., y[m-1].</p>
78817881 * <p>On exit digits of the product are stored in elements x[0], x[1], ..., x[n+m-1]. The array y is not changed. </p>
78897889 * <p>#include \"glplib.h\" void bigdiv(int n, int m, unsigned short x[], unsigned short y[]);</p>
78907890 * <p>DESCRIPTION</p>
78917891 * <p>The routine bigdiv divides one unsigned integer number of arbitrary precision by another with the algorithm described in [1].</p>
7892 * <p>n is the difference between the number of digits of dividend and the number of digits of divisor, n >= 0.</p>
7893 * <p>m is the number of digits of divisor, m >= 1.</p>
7892 * <p>n is the difference between the number of digits of dividend and the number of digits of divisor, n &gt;= 0.</p>
7893 * <p>m is the number of digits of divisor, m &gt;= 1.</p>
78947894 * <p>x is an array containing digits of the dividend in elements x[0], x[1], ..., x[n+m-1].</p>
78957895 * <p>y is an array containing digits of the divisor in elements y[0], y[1], ..., y[m-1]. The highest digit y[m-1] must be non-zero.</p>
78967896 * <p>On exit n+1 digits of the quotient are stored in elements x[m], x[m+1], ..., x[n+m], and m digits of the remainder are stored in elements x[0], x[1], ..., x[m-1]. The array y is changed but then restored.</p>
80208020 * <p>RETURNS</p>
80218021 * <p>The routine returns a pointer to the character string.</p>
80228022 * <p>EXAMPLES</p>
8023 * <p>strspx(\" Errare humanum est \") => \"Errarehumanumest\"</p>
8024 * <p>strspx(\" \") => \"\" </p>
8023 * <p>strspx(\" Errare humanum est \") =&gt; \"Errarehumanumest\"</p>
8024 * <p>strspx(\" \") =&gt; \"\" </p>
80258025 */
80268026 public";
80278027
80358035 * <p>RETURNS</p>
80368036 * <p>The routine returns a pointer to the character string.</p>
80378037 * <p>EXAMPLES</p>
8038 * <p>strtrim(\"Errare humanum est \") => \"Errare humanum est\"</p>
8039 * <p>strtrim(\" \") => \"\" </p>
8038 * <p>strtrim(\"Errare humanum est \") =&gt; \"Errare humanum est\"</p>
8039 * <p>strtrim(\" \") =&gt; \"\" </p>
80408040 */
80418041 public";
80428042
80508050 * <p>RETURNS</p>
80518051 * <p>The routine returns the pointer s.</p>
80528052 * <p>EXAMPLES</p>
8053 * <p>strrev(\"\") => \"\"</p>
8054 * <p>strrev(\"Today is Monday\") => \"yadnoM si yadoT\" </p>
8053 * <p>strrev(\"\") =&gt; \"\"</p>
8054 * <p>strrev(\"Today is Monday\") =&gt; \"yadnoM si yadoT\" </p>
80558055 */
80568056 public";
80578057
80758075 * <p>SYNOPSIS</p>
80768076 * <p>#include \"glplib.h\" int gcdn(int n, int x[]);</p>
80778077 * <p>RETURNS</p>
8078 * <p>The routine gcdn returns gcd(x[1], x[2], ..., x[n]), the greatest common divisor of n positive integers given, n > 0.</p>
8078 * <p>The routine gcdn returns gcd(x[1], x[2], ..., x[n]), the greatest common divisor of n positive integers given, n &gt; 0.</p>
80798079 * <p>BACKGROUND</p>
80808080 * <p>The routine gcdn is based on the following identity:</p>
80818081 * <p>gcd(x, y, z) = gcd(gcd(x, y), z).</p>
81048104 * <p>SYNOPSIS</p>
81058105 * <p>#include \"glplib.h\" int lcmn(int n, int x[]);</p>
81068106 * <p>RETURNS</p>
8107 * <p>The routine lcmn returns lcm(x[1], x[2], ..., x[n]), the least common multiple of n positive integers given, n > 0. In case of integer overflow the routine returns zero.</p>
8107 * <p>The routine lcmn returns lcm(x[1], x[2], ..., x[n]), the least common multiple of n positive integers given, n &gt; 0. In case of integer overflow the routine returns zero.</p>
81088108 * <p>BACKGROUND</p>
81098109 * <p>The routine lcmn is based on the following identity:</p>
81108110 * <p>lcmn(x, y, z) = lcm(lcm(x, y), z),</p>
81228122 * <p>EXAMPLES</p>
81238123 * <p>round2n(10.1) = 2^3 = 8 round2n(15.3) = 2^4 = 16 round2n(0.01) = 2^(-7) = 0.0078125</p>
81248124 * <p>BACKGROUND</p>
8125 * <p>Let x = f * 2^e, where 0.5 <= f < 1 is a normalized fractional part, e is an integer exponent. Then, obviously, 0.5 * 2^e <= x < 2^e, so if x - 0.5 * 2^e <= 2^e - x, we choose 0.5 * 2^e = 2^(e-1), and 2^e otherwise. The latter condition can be written as 2 * x <= 1.5 * 2^e or 2 * f * 2^e <= 1.5 * 2^e or, finally, f <= 0.75. </p>
8125 * <p>Let x = f * 2^e, where 0.5 &lt;= f &lt; 1 is a normalized fractional part, e is an integer exponent. Then, obviously, 0.5 * 2^e &lt;= x &lt; 2^e, so if x - 0.5 * 2^e &lt;= 2^e - x, we choose 0.5 * 2^e = 2^(e-1), and 2^e otherwise. The latter condition can be written as 2 * x &lt;= 1.5 * 2^e or 2 * f * 2^e &lt;= 1.5 * 2^e or, finally, f &lt;= 0.75. </p>
81268126 */
81278127 public";
81288128
81328132 * <p>SYNOPSIS</p>
81338133 * <p>#include \"glplib.h\" int fp2rat(double x, double eps, double *p, double *q);</p>
81348134 * <p>DESCRIPTION</p>
8135 * <p>Given a floating-point number 0 <= x < 1 the routine fp2rat finds its \"best\" rational approximation p / q, where p >= 0 and q > 0 are integer numbers, such that |x - p / q| <= eps.</p>
8135 * <p>Given a floating-point number 0 &lt;= x &lt; 1 the routine fp2rat finds its \"best\" rational approximation p / q, where p &gt;= 0 and q &gt; 0 are integer numbers, such that |x - p / q| &lt;= eps.</p>
81368136 * <p>RETURNS</p>
81378137 * <p>The routine fp2rat returns the number of iterations used to achieve the specified precision eps.</p>
81388138 * <p>EXAMPLES</p>
81528152 * <p>A[k] = b[k] * A[k-1] + a[k] * A[k-2],</p>
81538153 * <p>B[k] = b[k] * B[k-1] + a[k] * B[k-2].</p>
81548154 * <p>Once the condition</p>
8155 * <p>|x - f[k]| <= eps</p>
8155 * <p>|x - f[k]| &lt;= eps</p>
81568156 * <p>has been satisfied, the routine reports p = A[k] and q = B[k] as the final answer.</p>
81578157 * <p>In the table below here is some statistics obtained for one million random numbers uniformly distributed in the range [0, 1).</p>
81588158 * <p>eps max p mean p max q mean q max k mean k ------------------------------------------------------------- 1e-1 8 1.6 9 3.2 3 1.4 1e-2 98 6.2 99 12.4 5 2.4 1e-3 997 20.7 998 41.5 8 3.4 1e-4 9959 66.6 9960 133.5 10 4.4 1e-5 97403 211.7 97404 424.2 13 5.3 1e-6 479669 669.9 479670 1342.9 15 6.3 1e-7 1579030 2127.3 3962146 4257.8 16 7.3 1e-8 26188823 6749.4 26188824 13503.4 19 8.2</p>
81708170 * <p>DESCRIPTION</p>
81718171 * <p>The routine jday converts a calendar date, Gregorian calendar, to corresponding Julian day number j.</p>
81728172 * <p>From the given day d, month m, and year y, the Julian day number j is computed without using tables.</p>
8173 * <p>The routine is valid for 1 <= y <= 4000.</p>
8173 * <p>The routine is valid for 1 &lt;= y &lt;= 4000.</p>
81748174 * <p>RETURNS</p>
81758175 * <p>The routine jday returns the Julian day number, or negative value if the specified date is incorrect.</p>
81768176 * <p>REFERENCES</p>
81868186 * <p>DESCRIPTION</p>
81878187 * <p>The routine jdate converts a Julian day number j to corresponding calendar date, Gregorian calendar.</p>
81888188 * <p>The day d, month m, and year y are computed without using tables and stored in corresponding locations.</p>
8189 * <p>The routine is valid for 1721426 <= j <= 3182395.</p>
8189 * <p>The routine is valid for 1721426 &lt;= j &lt;= 3182395.</p>
81908190 * <p>RETURNS</p>
81918191 * <p>If the conversion is successful, the routine returns zero, otherwise non-zero.</p>
81928192 * <p>REFERENCES</p>
82018201 * <p>#include \"glplib.h\" void bigmul(int n, int m, unsigned short x[], unsigned short y[]);</p>
82028202 * <p>DESCRIPTION</p>
82038203 * <p>The routine bigmul multiplies unsigned integer numbers of arbitrary precision.</p>
8204 * <p>n is the number of digits of multiplicand, n >= 1;</p>
8205 * <p>m is the number of digits of multiplier, m >= 1;</p>
8204 * <p>n is the number of digits of multiplicand, n &gt;= 1;</p>
8205 * <p>m is the number of digits of multiplier, m &gt;= 1;</p>
82068206 * <p>x is an array containing digits of the multiplicand in elements x[m], x[m+1], ..., x[n+m-1]. Contents of x[0], x[1], ..., x[m-1] are ignored on entry.</p>
82078207 * <p>y is an array containing digits of the multiplier in elements y[0], y[1], ..., y[m-1].</p>
82088208 * <p>On exit digits of the product are stored in elements x[0], x[1], ..., x[n+m-1]. The array y is not changed. </p>
82168216 * <p>#include \"glplib.h\" void bigdiv(int n, int m, unsigned short x[], unsigned short y[]);</p>
82178217 * <p>DESCRIPTION</p>
82188218 * <p>The routine bigdiv divides one unsigned integer number of arbitrary precision by another with the algorithm described in [1].</p>
8219 * <p>n is the difference between the number of digits of dividend and the number of digits of divisor, n >= 0.</p>
8220 * <p>m is the number of digits of divisor, m >= 1.</p>
8219 * <p>n is the difference between the number of digits of dividend and the number of digits of divisor, n &gt;= 0.</p>
8220 * <p>m is the number of digits of divisor, m &gt;= 1.</p>
82218221 * <p>x is an array containing digits of the dividend in elements x[0], x[1], ..., x[n+m-1].</p>
82228222 * <p>y is an array containing digits of the divisor in elements y[0], y[1], ..., y[m-1]. The highest digit y[m-1] must be non-zero.</p>
82238223 * <p>On exit n+1 digits of the quotient are stored in elements x[m], x[m+1], ..., x[n+m], and m digits of the remainder are stored in elements x[0], x[1], ..., x[m-1]. The array y is changed but then restored.</p>
83478347 * <p>RETURNS</p>
83488348 * <p>The routine returns a pointer to the character string.</p>
83498349 * <p>EXAMPLES</p>
8350 * <p>strspx(\" Errare humanum est \") => \"Errarehumanumest\"</p>
8351 * <p>strspx(\" \") => \"\" </p>
8350 * <p>strspx(\" Errare humanum est \") =&gt; \"Errarehumanumest\"</p>
8351 * <p>strspx(\" \") =&gt; \"\" </p>
83528352 */
83538353 public";
83548354
83628362 * <p>RETURNS</p>
83638363 * <p>The routine returns a pointer to the character string.</p>
83648364 * <p>EXAMPLES</p>
8365 * <p>strtrim(\"Errare humanum est \") => \"Errare humanum est\"</p>
8366 * <p>strtrim(\" \") => \"\" </p>
8365 * <p>strtrim(\"Errare humanum est \") =&gt; \"Errare humanum est\"</p>
8366 * <p>strtrim(\" \") =&gt; \"\" </p>
83678367 */
83688368 public";
83698369
83778377 * <p>RETURNS</p>
83788378 * <p>The routine returns the pointer s.</p>
83798379 * <p>EXAMPLES</p>
8380 * <p>strrev(\"\") => \"\"</p>
8381 * <p>strrev(\"Today is Monday\") => \"yadnoM si yadoT\" </p>
8380 * <p>strrev(\"\") =&gt; \"\"</p>
8381 * <p>strrev(\"Today is Monday\") =&gt; \"yadnoM si yadoT\" </p>
83828382 */
83838383 public";
83848384
84028402 * <p>SYNOPSIS</p>
84038403 * <p>#include \"glplib.h\" int gcdn(int n, int x[]);</p>
84048404 * <p>RETURNS</p>
8405 * <p>The routine gcdn returns gcd(x[1], x[2], ..., x[n]), the greatest common divisor of n positive integers given, n > 0.</p>
8405 * <p>The routine gcdn returns gcd(x[1], x[2], ..., x[n]), the greatest common divisor of n positive integers given, n &gt; 0.</p>
84068406 * <p>BACKGROUND</p>
84078407 * <p>The routine gcdn is based on the following identity:</p>
84088408 * <p>gcd(x, y, z) = gcd(gcd(x, y), z).</p>
84318431 * <p>SYNOPSIS</p>
84328432 * <p>#include \"glplib.h\" int lcmn(int n, int x[]);</p>
84338433 * <p>RETURNS</p>
8434 * <p>The routine lcmn returns lcm(x[1], x[2], ..., x[n]), the least common multiple of n positive integers given, n > 0. In case of integer overflow the routine returns zero.</p>
8434 * <p>The routine lcmn returns lcm(x[1], x[2], ..., x[n]), the least common multiple of n positive integers given, n &gt; 0. In case of integer overflow the routine returns zero.</p>
84358435 * <p>BACKGROUND</p>
84368436 * <p>The routine lcmn is based on the following identity:</p>
84378437 * <p>lcmn(x, y, z) = lcm(lcm(x, y), z),</p>
84498449 * <p>EXAMPLES</p>
84508450 * <p>round2n(10.1) = 2^3 = 8 round2n(15.3) = 2^4 = 16 round2n(0.01) = 2^(-7) = 0.0078125</p>
84518451 * <p>BACKGROUND</p>
8452 * <p>Let x = f * 2^e, where 0.5 <= f < 1 is a normalized fractional part, e is an integer exponent. Then, obviously, 0.5 * 2^e <= x < 2^e, so if x - 0.5 * 2^e <= 2^e - x, we choose 0.5 * 2^e = 2^(e-1), and 2^e otherwise. The latter condition can be written as 2 * x <= 1.5 * 2^e or 2 * f * 2^e <= 1.5 * 2^e or, finally, f <= 0.75. </p>
8452 * <p>Let x = f * 2^e, where 0.5 &lt;= f &lt; 1 is a normalized fractional part, e is an integer exponent. Then, obviously, 0.5 * 2^e &lt;= x &lt; 2^e, so if x - 0.5 * 2^e &lt;= 2^e - x, we choose 0.5 * 2^e = 2^(e-1), and 2^e otherwise. The latter condition can be written as 2 * x &lt;= 1.5 * 2^e or 2 * f * 2^e &lt;= 1.5 * 2^e or, finally, f &lt;= 0.75. </p>
84538453 */
84548454 public";
84558455
84598459 * <p>SYNOPSIS</p>
84608460 * <p>#include \"glplib.h\" int fp2rat(double x, double eps, double *p, double *q);</p>
84618461 * <p>DESCRIPTION</p>
8462 * <p>Given a floating-point number 0 <= x < 1 the routine fp2rat finds its \"best\" rational approximation p / q, where p >= 0 and q > 0 are integer numbers, such that |x - p / q| <= eps.</p>
8462 * <p>Given a floating-point number 0 &lt;= x &lt; 1 the routine fp2rat finds its \"best\" rational approximation p / q, where p &gt;= 0 and q &gt; 0 are integer numbers, such that |x - p / q| &lt;= eps.</p>
84638463 * <p>RETURNS</p>
84648464 * <p>The routine fp2rat returns the number of iterations used to achieve the specified precision eps.</p>
84658465 * <p>EXAMPLES</p>
84798479 * <p>A[k] = b[k] * A[k-1] + a[k] * A[k-2],</p>
84808480 * <p>B[k] = b[k] * B[k-1] + a[k] * B[k-2].</p>
84818481 * <p>Once the condition</p>
8482 * <p>|x - f[k]| <= eps</p>
8482 * <p>|x - f[k]| &lt;= eps</p>
84838483 * <p>has been satisfied, the routine reports p = A[k] and q = B[k] as the final answer.</p>
84848484 * <p>In the table below here is some statistics obtained for one million random numbers uniformly distributed in the range [0, 1).</p>
84858485 * <p>eps max p mean p max q mean q max k mean k ------------------------------------------------------------- 1e-1 8 1.6 9 3.2 3 1.4 1e-2 98 6.2 99 12.4 5 2.4 1e-3 997 20.7 998 41.5 8 3.4 1e-4 9959 66.6 9960 133.5 10 4.4 1e-5 97403 211.7 97404 424.2 13 5.3 1e-6 479669 669.9 479670 1342.9 15 6.3 1e-7 1579030 2127.3 3962146 4257.8 16 7.3 1e-8 26188823 6749.4 26188824 13503.4 19 8.2</p>
84978497 * <p>DESCRIPTION</p>
84988498 * <p>The routine jday converts a calendar date, Gregorian calendar, to corresponding Julian day number j.</p>
84998499 * <p>From the given day d, month m, and year y, the Julian day number j is computed without using tables.</p>
8500 * <p>The routine is valid for 1 <= y <= 4000.</p>
8500 * <p>The routine is valid for 1 &lt;= y &lt;= 4000.</p>
85018501 * <p>RETURNS</p>
85028502 * <p>The routine jday returns the Julian day number, or negative value if the specified date is incorrect.</p>
85038503 * <p>REFERENCES</p>
85138513 * <p>DESCRIPTION</p>
85148514 * <p>The routine jdate converts a Julian day number j to corresponding calendar date, Gregorian calendar.</p>
85158515 * <p>The day d, month m, and year y are computed without using tables and stored in corresponding locations.</p>
8516 * <p>The routine is valid for 1721426 <= j <= 3182395.</p>
8516 * <p>The routine is valid for 1721426 &lt;= j &lt;= 3182395.</p>
85178517 * <p>RETURNS</p>
85188518 * <p>If the conversion is successful, the routine returns zero, otherwise non-zero.</p>
85198519 * <p>REFERENCES</p>
85418541 * <p>DESCRIPTION</p>
85428542 * <p>The routine lpf_factorize computes the factorization of the basis matrix B specified by the routine col.</p>
85438543 * <p>The parameter lpf specified the basis factorization data structure created with the routine lpf_create_it.</p>
8544 * <p>The parameter m specifies the order of B, m > 0.</p>
8545 * <p>The array bh specifies the basis header: bh[j], 1 <= j <= m, is the number of j-th column of B in some original matrix. The array bh is optional and can be specified as NULL.</p>
8546 * <p>The formal routine col specifies the matrix B to be factorized. To obtain j-th column of A the routine lpf_factorize calls the routine col with the parameter j (1 <= j <= n). In response the routine col should store row indices and numerical values of non-zero elements of j-th column of B to locations ind[1,...,len] and val[1,...,len], respectively, where len is the number of non-zeros in j-th column returned on exit. Neither zero nor duplicate elements are allowed.</p>
8544 * <p>The parameter m specifies the order of B, m &gt; 0.</p>
8545 * <p>The array bh specifies the basis header: bh[j], 1 &lt;= j &lt;= m, is the number of j-th column of B in some original matrix. The array bh is optional and can be specified as NULL.</p>
8546 * <p>The formal routine col specifies the matrix B to be factorized. To obtain j-th column of A the routine lpf_factorize calls the routine col with the parameter j (1 &lt;= j &lt;= n). In response the routine col should store row indices and numerical values of non-zero elements of j-th column of B to locations ind[1,...,len] and val[1,...,len], respectively, where len is the number of non-zeros in j-th column returned on exit. Neither zero nor duplicate elements are allowed.</p>
85478547 * <p>The parameter info is a transit pointer passed to the routine col.</p>
85488548 * <p>RETURNS</p>
85498549 * <p>0 The factorization has been successfully computed.</p>
85928592 * <p>1. Compute</p>
85938593 * <p>( f ) ( b ) ( ) = P' ( ) ( g ) ( 0 )</p>
85948594 * <p>2. Solve the system</p>
8595 * <p>( f1 ) ( L0 0 )-1 ( f ) ( L0 0 ) ( f1 ) ( f ) ( ) = ( ) ( ) => ( ) ( ) = ( ) ( g1 ) ( S I ) ( g ) ( S I ) ( g1 ) ( g )</p>
8595 * <p>( f1 ) ( L0 0 )-1 ( f ) ( L0 0 ) ( f1 ) ( f ) ( ) = ( ) ( ) =&gt; ( ) ( ) = ( ) ( g1 ) ( S I ) ( g ) ( S I ) ( g1 ) ( g )</p>
85968596 * <p>from which it follows that:</p>
8597 * <p>{ L0 * f1 = f f1 = inv(L0) * f { => { S * f1 + g1 = g g1 = g - S * f1</p>
8597 * <p>{ L0 * f1 = f f1 = inv(L0) * f { =&gt; { S * f1 + g1 = g g1 = g - S * f1</p>
85988598 * <p>3. Solve the system</p>
8599 * <p>( f2 ) ( U0 R )-1 ( f1 ) ( U0 R ) ( f2 ) ( f1 ) ( ) = ( ) ( ) => ( ) ( ) = ( ) ( g2 ) ( 0 C ) ( g1 ) ( 0 C ) ( g2 ) ( g1 )</p>
8599 * <p>( f2 ) ( U0 R )-1 ( f1 ) ( U0 R ) ( f2 ) ( f1 ) ( ) = ( ) ( ) =&gt; ( ) ( ) = ( ) ( g2 ) ( 0 C ) ( g1 ) ( 0 C ) ( g2 ) ( g1 )</p>
86008600 * <p>from which it follows that:</p>
8601 * <p>{ U0 * f2 + R * g2 = f1 f2 = inv(U0) * (f1 - R * g2) { => { C * g2 = g1 g2 = inv(C) * g1</p>
8601 * <p>{ U0 * f2 + R * g2 = f1 f2 = inv(U0) * (f1 - R * g2) { =&gt; { C * g2 = g1 g2 = inv(C) * g1</p>
86028602 * <p>4. Compute</p>
86038603 * <p>( x ) ( f2 ) ( ) = Q' ( ) ( y ) ( g2 ) </p>
86048604 */
86258625 * <p>1. Compute</p>
86268626 * <p>( f ) ( b ) ( ) = Q ( ) ( g ) ( 0 )</p>
86278627 * <p>2. Solve the system</p>
8628 * <p>( f1 ) ( U'0 0 )-1 ( f ) ( U'0 0 ) ( f1 ) ( f ) ( ) = ( ) ( ) => ( ) ( ) = ( ) ( g1 ) ( R' C') ( g ) ( R' C') ( g1 ) ( g )</p>
8628 * <p>( f1 ) ( U'0 0 )-1 ( f ) ( U'0 0 ) ( f1 ) ( f ) ( ) = ( ) ( ) =&gt; ( ) ( ) = ( ) ( g1 ) ( R' C') ( g ) ( R' C') ( g1 ) ( g )</p>
86298629 * <p>from which it follows that:</p>
8630 * <p>{ U'0 * f1 = f f1 = inv(U'0) * f { => { R' * f1 + C' * g1 = g g1 = inv(C') * (g - R' * f1)</p>
8630 * <p>{ U'0 * f1 = f f1 = inv(U'0) * f { =&gt; { R' * f1 + C' * g1 = g g1 = inv(C') * (g - R' * f1)</p>
86318631 * <p>3. Solve the system</p>
8632 * <p>( f2 ) ( L'0 S')-1 ( f1 ) ( L'0 S') ( f2 ) ( f1 ) ( ) = ( ) ( ) => ( ) ( ) = ( ) ( g2 ) ( 0 I ) ( g1 ) ( 0 I ) ( g2 ) ( g1 )</p>
8632 * <p>( f2 ) ( L'0 S')-1 ( f1 ) ( L'0 S') ( f2 ) ( f1 ) ( ) = ( ) ( ) =&gt; ( ) ( ) = ( ) ( g2 ) ( 0 I ) ( g1 ) ( 0 I ) ( g2 ) ( g1 )</p>
86338633 * <p>from which it follows that:</p>
8634 * <p>{ L'0 * f2 + S' * g2 = f1 { => f2 = inv(L'0) * ( f1 - S' * g2) { g2 = g1</p>
8634 * <p>{ L'0 * f2 + S' * g2 = f1 { =&gt; f2 = inv(L'0) * ( f1 - S' * g2) { g2 = g1</p>
86358635 * <p>4. Compute</p>
86368636 * <p>( x ) ( f2 ) ( ) = P ( ) ( y ) ( g2 ) </p>
86378637 */
86498649 * <p>#include \"glplpf.h\" int lpf_update_it(LPF *lpf, int j, int bh, int len, const int ind[], const double val[]);</p>
86508650 * <p>DESCRIPTION</p>
86518651 * <p>The routine lpf_update_it updates the factorization of the basis matrix B after replacing its j-th column by a new vector.</p>
8652 * <p>The parameter j specifies the number of column of B, which has been replaced, 1 <= j <= m, where m is the order of B.</p>
8652 * <p>The parameter j specifies the number of column of B, which has been replaced, 1 &lt;= j &lt;= m, where m is the order of B.</p>
86538653 * <p>The parameter bh specifies the basis header entry for the new column of B, which is the number of the new column in some original matrix. This parameter is optional and can be specified as 0.</p>
86548654 * <p>Row indices and numerical values of non-zero elements of the new column of B should be placed in locations ind[1], ..., ind[len] and val[1], ..., val[len], resp., where len is the number of non-zeros in the column. Neither zero nor duplicate elements are allowed.</p>
86558655 * <p>RETURNS</p>
86588658 * <p>LPF_ELIMIT Maximal number of additional rows and columns has been reached.</p>
86598659 * <p>BACKGROUND</p>
86608660 * <p>Let j-th column of the current basis matrix B have to be replaced by a new column a. This replacement is equivalent to removing the old j-th column by fixing it at zero and introducing the new column as follows:</p>
8661 * <p>( B F^| a ) ( B F^) ( | ) ( ) ---> ( G^ H^| 0 ) ( G^ H^) (-------+---) ( e'j 0 | 0 )</p>
8661 * <p>( B F^| a ) ( B F^) ( | ) ( ) ---&gt; ( G^ H^| 0 ) ( G^ H^) (-------+---) ( e'j 0 | 0 )</p>
86628662 * <p>where ej is a unit vector with 1 in j-th position which used to fix the old j-th column of B (at zero). Then using the main equality we have:</p>
86638663 * <p>( B F^| a ) ( B0 F | f ) ( | ) ( P 0 ) ( | ) ( Q 0 ) ( G^ H^| 0 ) = ( ) ( G H | g ) ( ) = (-------+---) ( 0 1 ) (-------+---) ( 0 1 ) ( e'j 0 | 0 ) ( v' w'| 0 )</p>
86648664 * <p>[ ( B0 F )| ( f ) ] [ ( B0 F ) | ( f ) ] [ P ( )| P ( ) ] ( Q 0 ) [ P ( ) Q| P ( ) ] = [ ( G H )| ( g ) ] ( ) = [ ( G H ) | ( g ) ] [------------+-------- ] ( 0 1 ) [-------------+---------] [ ( v' w')| 0 ] [ ( v' w') Q| 0 ]</p>
86658665 * <p>where:</p>
8666 * <p>( a ) ( f ) ( f ) ( a ) ( ) = P ( ) => ( ) = P' * ( ) ( 0 ) ( g ) ( g ) ( 0 )</p>
8667 * <p>( ej ) ( v ) ( v ) ( ej ) ( e'j 0 ) = ( v' w' ) Q => ( ) = Q' ( ) => ( ) = Q ( ) ( 0 ) ( w ) ( w ) ( 0 )</p>
8666 * <p>( a ) ( f ) ( f ) ( a ) ( ) = P ( ) =&gt; ( ) = P' * ( ) ( 0 ) ( g ) ( g ) ( 0 )</p>
8667 * <p>( ej ) ( v ) ( v ) ( ej ) ( e'j 0 ) = ( v' w' ) Q =&gt; ( ) = Q' ( ) =&gt; ( ) = Q ( ) ( 0 ) ( w ) ( w ) ( 0 )</p>
86688668 * <p>On the other hand:</p>
86698669 * <p>( B0| F f ) ( P 0 ) (---+------) ( Q 0 ) ( B0 new F ) ( ) ( G | H g ) ( ) = new P ( ) new Q ( 0 1 ) ( | ) ( 0 1 ) ( new G new H ) ( v'| w' 0 )</p>
86708670 * <p>where: ( G ) ( H g ) new F = ( F f ), new G = ( ), new H = ( ), ( v') ( w' 0 )</p>
86728672 * <p>The factorization structure for the new augmented matrix remains the same, therefore:</p>
86738673 * <p>( B0 new F ) ( L0 0 ) ( U0 new R ) new P ( ) new Q = ( ) ( ) ( new G new H ) ( new S I ) ( 0 new C )</p>
86748674 * <p>where:</p>
8675 * <p>new F = L0 * new R =></p>
8675 * <p>new F = L0 * new R =&gt;</p>
86768676 * <p>new R = inv(L0) * new F = inv(L0) * (F f) = ( R inv(L0)*f )</p>
8677 * <p>new G = new S * U0 =></p>
8677 * <p>new G = new S * U0 =&gt;</p>
86788678 * <p>( G ) ( S ) new S = new G * inv(U0) = ( ) * inv(U0) = ( ) ( v') ( v'*inv(U0) )</p>
8679 * <p>new H = new S * new R + new C =></p>
8679 * <p>new H = new S * new R + new C =&gt;</p>
86808680 * <p>new C = new H - new S * new R =</p>
86818681 * <p>( H g ) ( S ) = ( ) - ( ) * ( R inv(L0)*f ) = ( w' 0 ) ( v'*inv(U0) )</p>
86828682 * <p>( H - S*R g - S*inv(L0)*f ) ( C x ) = ( ) = ( ) ( w'- v'*inv(U0)*R -v'*inv(U0)*inv(L0)*f) ( y' z )</p>
87208720 * <p>DESCRIPTION</p>
87218721 * <p>The routine lpf_factorize computes the factorization of the basis matrix B specified by the routine col.</p>
87228722 * <p>The parameter lpf specified the basis factorization data structure created with the routine lpf_create_it.</p>
8723 * <p>The parameter m specifies the order of B, m > 0.</p>
8724 * <p>The array bh specifies the basis header: bh[j], 1 <= j <= m, is the number of j-th column of B in some original matrix. The array bh is optional and can be specified as NULL.</p>
8725 * <p>The formal routine col specifies the matrix B to be factorized. To obtain j-th column of A the routine lpf_factorize calls the routine col with the parameter j (1 <= j <= n). In response the routine col should store row indices and numerical values of non-zero elements of j-th column of B to locations ind[1,...,len] and val[1,...,len], respectively, where len is the number of non-zeros in j-th column returned on exit. Neither zero nor duplicate elements are allowed.</p>
8723 * <p>The parameter m specifies the order of B, m &gt; 0.</p>
8724 * <p>The array bh specifies the basis header: bh[j], 1 &lt;= j &lt;= m, is the number of j-th column of B in some original matrix. The array bh is optional and can be specified as NULL.</p>
8725 * <p>The formal routine col specifies the matrix B to be factorized. To obtain j-th column of A the routine lpf_factorize calls the routine col with the parameter j (1 &lt;= j &lt;= n). In response the routine col should store row indices and numerical values of non-zero elements of j-th column of B to locations ind[1,...,len] and val[1,...,len], respectively, where len is the number of non-zeros in j-th column returned on exit. Neither zero nor duplicate elements are allowed.</p>
87268726 * <p>The parameter info is a transit pointer passed to the routine col.</p>
87278727 * <p>RETURNS</p>
87288728 * <p>0 The factorization has been successfully computed.</p>
87518751 * <p>1. Compute</p>
87528752 * <p>( f ) ( b ) ( ) = P' ( ) ( g ) ( 0 )</p>
87538753 * <p>2. Solve the system</p>
8754 * <p>( f1 ) ( L0 0 )-1 ( f ) ( L0 0 ) ( f1 ) ( f ) ( ) = ( ) ( ) => ( ) ( ) = ( ) ( g1 ) ( S I ) ( g ) ( S I ) ( g1 ) ( g )</p>
8754 * <p>( f1 ) ( L0 0 )-1 ( f ) ( L0 0 ) ( f1 ) ( f ) ( ) = ( ) ( ) =&gt; ( ) ( ) = ( ) ( g1 ) ( S I ) ( g ) ( S I ) ( g1 ) ( g )</p>
87558755 * <p>from which it follows that:</p>
8756 * <p>{ L0 * f1 = f f1 = inv(L0) * f { => { S * f1 + g1 = g g1 = g - S * f1</p>
8756 * <p>{ L0 * f1 = f f1 = inv(L0) * f { =&gt; { S * f1 + g1 = g g1 = g - S * f1</p>
87578757 * <p>3. Solve the system</p>
8758 * <p>( f2 ) ( U0 R )-1 ( f1 ) ( U0 R ) ( f2 ) ( f1 ) ( ) = ( ) ( ) => ( ) ( ) = ( ) ( g2 ) ( 0 C ) ( g1 ) ( 0 C ) ( g2 ) ( g1 )</p>
8758 * <p>( f2 ) ( U0 R )-1 ( f1 ) ( U0 R ) ( f2 ) ( f1 ) ( ) = ( ) ( ) =&gt; ( ) ( ) = ( ) ( g2 ) ( 0 C ) ( g1 ) ( 0 C ) ( g2 ) ( g1 )</p>
87598759 * <p>from which it follows that:</p>
8760 * <p>{ U0 * f2 + R * g2 = f1 f2 = inv(U0) * (f1 - R * g2) { => { C * g2 = g1 g2 = inv(C) * g1</p>
8760 * <p>{ U0 * f2 + R * g2 = f1 f2 = inv(U0) * (f1 - R * g2) { =&gt; { C * g2 = g1 g2 = inv(C) * g1</p>
87618761 * <p>4. Compute</p>
87628762 * <p>( x ) ( f2 ) ( ) = Q' ( ) ( y ) ( g2 ) </p>
87638763 */
87848784 * <p>1. Compute</p>
87858785 * <p>( f ) ( b ) ( ) = Q ( ) ( g ) ( 0 )</p>
87868786 * <p>2. Solve the system</p>
8787 * <p>( f1 ) ( U'0 0 )-1 ( f ) ( U'0 0 ) ( f1 ) ( f ) ( ) = ( ) ( ) => ( ) ( ) = ( ) ( g1 ) ( R' C') ( g ) ( R' C') ( g1 ) ( g )</p>
8787 * <p>( f1 ) ( U'0 0 )-1 ( f ) ( U'0 0 ) ( f1 ) ( f ) ( ) = ( ) ( ) =&gt; ( ) ( ) = ( ) ( g1 ) ( R' C') ( g ) ( R' C') ( g1 ) ( g )</p>
87888788 * <p>from which it follows that:</p>
8789 * <p>{ U'0 * f1 = f f1 = inv(U'0) * f { => { R' * f1 + C' * g1 = g g1 = inv(C') * (g - R' * f1)</p>
8789 * <p>{ U'0 * f1 = f f1 = inv(U'0) * f { =&gt; { R' * f1 + C' * g1 = g g1 = inv(C') * (g - R' * f1)</p>
87908790 * <p>3. Solve the system</p>
8791 * <p>( f2 ) ( L'0 S')-1 ( f1 ) ( L'0 S') ( f2 ) ( f1 ) ( ) = ( ) ( ) => ( ) ( ) = ( ) ( g2 ) ( 0 I ) ( g1 ) ( 0 I ) ( g2 ) ( g1 )</p>
8791 * <p>( f2 ) ( L'0 S')-1 ( f1 ) ( L'0 S') ( f2 ) ( f1 ) ( ) = ( ) ( ) =&gt; ( ) ( ) = ( ) ( g2 ) ( 0 I ) ( g1 ) ( 0 I ) ( g2 ) ( g1 )</p>
87928792 * <p>from which it follows that:</p>
8793 * <p>{ L'0 * f2 + S' * g2 = f1 { => f2 = inv(L'0) * ( f1 - S' * g2) { g2 = g1</p>
8793 * <p>{ L'0 * f2 + S' * g2 = f1 { =&gt; f2 = inv(L'0) * ( f1 - S' * g2) { g2 = g1</p>
87948794 * <p>4. Compute</p>
87958795 * <p>( x ) ( f2 ) ( ) = P ( ) ( y ) ( g2 ) </p>
87968796 */
88038803 * <p>#include \"glplpf.h\" int lpf_update_it(LPF *lpf, int j, int bh, int len, const int ind[], const double val[]);</p>
88048804 * <p>DESCRIPTION</p>
88058805 * <p>The routine lpf_update_it updates the factorization of the basis matrix B after replacing its j-th column by a new vector.</p>
8806 * <p>The parameter j specifies the number of column of B, which has been replaced, 1 <= j <= m, where m is the order of B.</p>
8806 * <p>The parameter j specifies the number of column of B, which has been replaced, 1 &lt;= j &lt;= m, where m is the order of B.</p>
88078807 * <p>The parameter bh specifies the basis header entry for the new column of B, which is the number of the new column in some original matrix. This parameter is optional and can be specified as 0.</p>
88088808 * <p>Row indices and numerical values of non-zero elements of the new column of B should be placed in locations ind[1], ..., ind[len] and val[1], ..., val[len], resp., where len is the number of non-zeros in the column. Neither zero nor duplicate elements are allowed.</p>
88098809 * <p>RETURNS</p>
88128812 * <p>LPF_ELIMIT Maximal number of additional rows and columns has been reached.</p>
88138813 * <p>BACKGROUND</p>
88148814 * <p>Let j-th column of the current basis matrix B have to be replaced by a new column a. This replacement is equivalent to removing the old j-th column by fixing it at zero and introducing the new column as follows:</p>
8815 * <p>( B F^| a ) ( B F^) ( | ) ( ) ---> ( G^ H^| 0 ) ( G^ H^) (-------+---) ( e'j 0 | 0 )</p>
8815 * <p>( B F^| a ) ( B F^) ( | ) ( ) ---&gt; ( G^ H^| 0 ) ( G^ H^) (-------+---) ( e'j 0 | 0 )</p>
88168816 * <p>where ej is a unit vector with 1 in j-th position which used to fix the old j-th column of B (at zero). Then using the main equality we have:</p>
88178817 * <p>( B F^| a ) ( B0 F | f ) ( | ) ( P 0 ) ( | ) ( Q 0 ) ( G^ H^| 0 ) = ( ) ( G H | g ) ( ) = (-------+---) ( 0 1 ) (-------+---) ( 0 1 ) ( e'j 0 | 0 ) ( v' w'| 0 )</p>
88188818 * <p>[ ( B0 F )| ( f ) ] [ ( B0 F ) | ( f ) ] [ P ( )| P ( ) ] ( Q 0 ) [ P ( ) Q| P ( ) ] = [ ( G H )| ( g ) ] ( ) = [ ( G H ) | ( g ) ] [------------+-------- ] ( 0 1 ) [-------------+---------] [ ( v' w')| 0 ] [ ( v' w') Q| 0 ]</p>
88198819 * <p>where:</p>
8820 * <p>( a ) ( f ) ( f ) ( a ) ( ) = P ( ) => ( ) = P' * ( ) ( 0 ) ( g ) ( g ) ( 0 )</p>
8821 * <p>( ej ) ( v ) ( v ) ( ej ) ( e'j 0 ) = ( v' w' ) Q => ( ) = Q' ( ) => ( ) = Q ( ) ( 0 ) ( w ) ( w ) ( 0 )</p>
8820 * <p>( a ) ( f ) ( f ) ( a ) ( ) = P ( ) =&gt; ( ) = P' * ( ) ( 0 ) ( g ) ( g ) ( 0 )</p>
8821 * <p>( ej ) ( v ) ( v ) ( ej ) ( e'j 0 ) = ( v' w' ) Q =&gt; ( ) = Q' ( ) =&gt; ( ) = Q ( ) ( 0 ) ( w ) ( w ) ( 0 )</p>
88228822 * <p>On the other hand:</p>
88238823 * <p>( B0| F f ) ( P 0 ) (---+------) ( Q 0 ) ( B0 new F ) ( ) ( G | H g ) ( ) = new P ( ) new Q ( 0 1 ) ( | ) ( 0 1 ) ( new G new H ) ( v'| w' 0 )</p>
88248824 * <p>where: ( G ) ( H g ) new F = ( F f ), new G = ( ), new H = ( ), ( v') ( w' 0 )</p>
88268826 * <p>The factorization structure for the new augmented matrix remains the same, therefore:</p>
88278827 * <p>( B0 new F ) ( L0 0 ) ( U0 new R ) new P ( ) new Q = ( ) ( ) ( new G new H ) ( new S I ) ( 0 new C )</p>
88288828 * <p>where:</p>
8829 * <p>new F = L0 * new R =></p>
8829 * <p>new F = L0 * new R =&gt;</p>
88308830 * <p>new R = inv(L0) * new F = inv(L0) * (F f) = ( R inv(L0)*f )</p>
8831 * <p>new G = new S * U0 =></p>
8831 * <p>new G = new S * U0 =&gt;</p>
88328832 * <p>( G ) ( S ) new S = new G * inv(U0) = ( ) * inv(U0) = ( ) ( v') ( v'*inv(U0) )</p>
8833 * <p>new H = new S * new R + new C =></p>
8833 * <p>new H = new S * new R + new C =&gt;</p>
88348834 * <p>new C = new H - new S * new R =</p>
88358835 * <p>( H g ) ( S ) = ( ) - ( ) * ( R inv(L0)*f ) = ( w' 0 ) ( v'*inv(U0) )</p>
88368836 * <p>( H - S*R g - S*inv(L0)*f ) ( C x ) = ( ) = ( ) ( w'- v'*inv(U0)*R -v'*inv(U0)*inv(L0)*f) ( y' z )</p>
1000410004 * <p>GLP_UNDEF - dual solution is undefined; GLP_FEAS - dual solution is feasible; GLP_INFEAS - dual solution is infeasible; GLP_NOFEAS - no dual feasible solution exists.</p>
1000510005 * <p>If the parameter d_stat is NULL, the current status of dual basic solution remains unchanged.</p>
1000610006 * <p>The parameter obj_val is a pointer to the objective function value. If it is NULL, the current value of the objective function remains unchanged.</p>
10007 * <p>The array element r_stat[i], 1 <= i <= m (where m is the number of rows in the problem object), specifies the status of i-th auxiliary variable, which should be specified as follows:</p>
10007 * <p>The array element r_stat[i], 1 &lt;= i &lt;= m (where m is the number of rows in the problem object), specifies the status of i-th auxiliary variable, which should be specified as follows:</p>
1000810008 * <p>GLP_BS - basic variable; GLP_NL - non-basic variable on lower bound; GLP_NU - non-basic variable on upper bound; GLP_NF - non-basic free variable; GLP_NS - non-basic fixed variable.</p>
1000910009 * <p>If the parameter r_stat is NULL, the current statuses of auxiliary variables remain unchanged.</p>
10010 * <p>The array element r_prim[i], 1 <= i <= m (where m is the number of rows in the problem object), specifies a primal value of i-th auxiliary variable. If the parameter r_prim is NULL, the current primal values of auxiliary variables remain unchanged.</p>
10011 * <p>The array element r_dual[i], 1 <= i <= m (where m is the number of rows in the problem object), specifies a dual value (reduced cost) of i-th auxiliary variable. If the parameter r_dual is NULL, the current dual values of auxiliary variables remain unchanged.</p>
10012 * <p>The array element c_stat[j], 1 <= j <= n (where n is the number of columns in the problem object), specifies the status of j-th structural variable, which should be specified as follows:</p>
10010 * <p>The array element r_prim[i], 1 &lt;= i &lt;= m (where m is the number of rows in the problem object), specifies a primal value of i-th auxiliary variable. If the parameter r_prim is NULL, the current primal values of auxiliary variables remain unchanged.</p>
10011 * <p>The array element r_dual[i], 1 &lt;= i &lt;= m (where m is the number of rows in the problem object), specifies a dual value (reduced cost) of i-th auxiliary variable. If the parameter r_dual is NULL, the current dual values of auxiliary variables remain unchanged.</p>
10012 * <p>The array element c_stat[j], 1 &lt;= j &lt;= n (where n is the number of columns in the problem object), specifies the status of j-th structural variable, which should be specified as follows:</p>
1001310013 * <p>GLP_BS - basic variable; GLP_NL - non-basic variable on lower bound; GLP_NU - non-basic variable on upper bound; GLP_NF - non-basic free variable; GLP_NS - non-basic fixed variable.</p>
1001410014 * <p>If the parameter c_stat is NULL, the current statuses of structural variables remain unchanged.</p>
10015 * <p>The array element c_prim[j], 1 <= j <= n (where n is the number of columns in the problem object), specifies a primal value of j-th structural variable. If the parameter c_prim is NULL, the current primal values of structural variables remain unchanged.</p>
10016 * <p>The array element c_dual[j], 1 <= j <= n (where n is the number of columns in the problem object), specifies a dual value (reduced cost) of j-th structural variable. If the parameter c_dual is NULL, the current dual values of structural variables remain unchanged. </p>
10015 * <p>The array element c_prim[j], 1 &lt;= j &lt;= n (where n is the number of columns in the problem object), specifies a primal value of j-th structural variable. If the parameter c_prim is NULL, the current primal values of structural variables remain unchanged.</p>
10016 * <p>The array element c_dual[j], 1 &lt;= j &lt;= n (where n is the number of columns in the problem object), specifies a dual value (reduced cost) of j-th structural variable. If the parameter c_dual is NULL, the current dual values of structural variables remain unchanged. </p>
1001710017 */
1001810018 public";
1001910019
1011410114 * <p>DESCRIPTION</p>
1011510115 * <p>The routine luf_factorize computes LU-factorization of a specified square matrix A.</p>
1011610116 * <p>The parameter luf specifies LU-factorization program object created by the routine luf_create_it.</p>
10117 * <p>The parameter n specifies the order of A, n > 0.</p>
10118 * <p>The formal routine col specifies the matrix A to be factorized. To obtain j-th column of A the routine luf_factorize calls the routine col with the parameter j (1 <= j <= n). In response the routine col should store row indices and numerical values of non-zero elements of j-th column of A to locations ind[1,...,len] and val[1,...,len], respectively, where len is the number of non-zeros in j-th column returned on exit. Neither zero nor duplicate elements are allowed.</p>
10117 * <p>The parameter n specifies the order of A, n &gt; 0.</p>
10118 * <p>The formal routine col specifies the matrix A to be factorized. To obtain j-th column of A the routine luf_factorize calls the routine col with the parameter j (1 &lt;= j &lt;= n). In response the routine col should store row indices and numerical values of non-zero elements of j-th column of A to locations ind[1,...,len] and val[1,...,len], respectively, where len is the number of non-zeros in j-th column returned on exit. Neither zero nor duplicate elements are allowed.</p>
1011910119 * <p>The parameter info is a transit pointer passed to the routine col.</p>
1012010120 * <p>RETURNS</p>
1012110121 * <p>0 LU-factorization has been successfully computed.</p>
1012510125 * <p>In case of non-zero return code the factorization becomes invalid. It should not be used in other operations until the cause of failure has been eliminated and the factorization has been recomputed again with the routine luf_factorize.</p>
1012610126 * <p>REPAIRING SINGULAR MATRIX</p>
1012710127 * <p>If the routine luf_factorize returns non-zero code, it provides all necessary information that can be used for \"repairing\" the matrix A, where \"repairing\" means replacing linearly dependent columns of the matrix A by appropriate columns of the unity matrix. This feature is needed when this routine is used for factorizing the basis matrix within the simplex method procedure.</p>
10128 * <p>On exit linearly dependent columns of the (partially transformed) matrix U have numbers rank+1, rank+2, ..., n, where rank is estimated rank of the matrix A stored by the routine to the member luf->rank. The correspondence between columns of A and U is the same as between columns of V and U. Thus, linearly dependent columns of the matrix A have numbers qq_col[rank+1], qq_col[rank+2], ..., qq_col[n], where qq_col is the column-like representation of the permutation matrix Q. It is understood that each j-th linearly dependent column of the matrix U should be replaced by the unity vector, where all elements are zero except the unity diagonal element u[j,j]. On the other hand j-th row of the matrix U corresponds to the row of the matrix V (and therefore of the matrix A) with the number pp_row[j], where pp_row is the row-like representation of the permutation matrix P. Thus, each j-th linearly dependent column of the matrix U should be replaced by column of the unity matrix with the number pp_row[j].</p>
10128 * <p>On exit linearly dependent columns of the (partially transformed) matrix U have numbers rank+1, rank+2, ..., n, where rank is estimated rank of the matrix A stored by the routine to the member luf-&gt;rank. The correspondence between columns of A and U is the same as between columns of V and U. Thus, linearly dependent columns of the matrix A have numbers qq_col[rank+1], qq_col[rank+2], ..., qq_col[n], where qq_col is the column-like representation of the permutation matrix Q. It is understood that each j-th linearly dependent column of the matrix U should be replaced by the unity vector, where all elements are zero except the unity diagonal element u[j,j]. On the other hand j-th row of the matrix U corresponds to the row of the matrix V (and therefore of the matrix A) with the number pp_row[j], where pp_row is the row-like representation of the permutation matrix P. Thus, each j-th linearly dependent column of the matrix U should be replaced by column of the unity matrix with the number pp_row[j].</p>
1012910129 * <p>The code that repairs the matrix A may look like follows:</p>
10130 * <p>for (j = rank+1; j <= n; j++) { replace the column qq_col[j] of the matrix A by the column pp_row[j] of the unity matrix; }</p>
10130 * <p>for (j = rank+1; j &lt;= n; j++) { replace the column qq_col[j] of the matrix A by the column pp_row[j] of the unity matrix; }</p>
1013110131 * <p>where rank, pp_row, and qq_col are members of the structure LUF. </p>
1013210132 */
1013310133 public";
1023210232 * <p>DESCRIPTION</p>
1023310233 * <p>The routine luf_factorize computes LU-factorization of a specified square matrix A.</p>
1023410234 * <p>The parameter luf specifies LU-factorization program object created by the routine luf_create_it.</p>
10235 * <p>The parameter n specifies the order of A, n > 0.</p>
10236 * <p>The formal routine col specifies the matrix A to be factorized. To obtain j-th column of A the routine luf_factorize calls the routine col with the parameter j (1 <= j <= n). In response the routine col should store row indices and numerical values of non-zero elements of j-th column of A to locations ind[1,...,len] and val[1,...,len], respectively, where len is the number of non-zeros in j-th column returned on exit. Neither zero nor duplicate elements are allowed.</p>
10235 * <p>The parameter n specifies the order of A, n &gt; 0.</p>
10236 * <p>The formal routine col specifies the matrix A to be factorized. To obtain j-th column of A the routine luf_factorize calls the routine col with the parameter j (1 &lt;= j &lt;= n). In response the routine col should store row indices and numerical values of non-zero elements of j-th column of A to locations ind[1,...,len] and val[1,...,len], respectively, where len is the number of non-zeros in j-th column returned on exit. Neither zero nor duplicate elements are allowed.</p>
1023710237 * <p>The parameter info is a transit pointer passed to the routine col.</p>
1023810238 * <p>RETURNS</p>
1023910239 * <p>0 LU-factorization has been successfully computed.</p>
1024310243 * <p>In case of non-zero return code the factorization becomes invalid. It should not be used in other operations until the cause of failure has been eliminated and the factorization has been recomputed again with the routine luf_factorize.</p>
1024410244 * <p>REPAIRING SINGULAR MATRIX</p>
1024510245 * <p>If the routine luf_factorize returns non-zero code, it provides all necessary information that can be used for \"repairing\" the matrix A, where \"repairing\" means replacing linearly dependent columns of the matrix A by appropriate columns of the unity matrix. This feature is needed when this routine is used for factorizing the basis matrix within the simplex method procedure.</p>
10246 * <p>On exit linearly dependent columns of the (partially transformed) matrix U have numbers rank+1, rank+2, ..., n, where rank is estimated rank of the matrix A stored by the routine to the member luf->rank. The correspondence between columns of A and U is the same as between columns of V and U. Thus, linearly dependent columns of the matrix A have numbers qq_col[rank+1], qq_col[rank+2], ..., qq_col[n], where qq_col is the column-like representation of the permutation matrix Q. It is understood that each j-th linearly dependent column of the matrix U should be replaced by the unity vector, where all elements are zero except the unity diagonal element u[j,j]. On the other hand j-th row of the matrix U corresponds to the row of the matrix V (and therefore of the matrix A) with the number pp_row[j], where pp_row is the row-like representation of the permutation matrix P. Thus, each j-th linearly dependent column of the matrix U should be replaced by column of the unity matrix with the number pp_row[j].</p>
10246 * <p>On exit linearly dependent columns of the (partially transformed) matrix U have numbers rank+1, rank+2, ..., n, where rank is estimated rank of the matrix A stored by the routine to the member luf-&gt;rank. The correspondence between columns of A and U is the same as between columns of V and U. Thus, linearly dependent columns of the matrix A have numbers qq_col[rank+1], qq_col[rank+2], ..., qq_col[n], where qq_col is the column-like representation of the permutation matrix Q. It is understood that each j-th linearly dependent column of the matrix U should be replaced by the unity vector, where all elements are zero except the unity diagonal element u[j,j]. On the other hand j-th row of the matrix U corresponds to the row of the matrix V (and therefore of the matrix A) with the number pp_row[j], where pp_row is the row-like representation of the permutation matrix P. Thus, each j-th linearly dependent column of the matrix U should be replaced by column of the unity matrix with the number pp_row[j].</p>
1024710247 * <p>The code that repairs the matrix A may look like follows:</p>
10248 * <p>for (j = rank+1; j <= n; j++) { replace the column qq_col[j] of the matrix A by the column pp_row[j] of the unity matrix; }</p>
10248 * <p>for (j = rank+1; j &lt;= n; j++) { replace the column qq_col[j] of the matrix A by the column pp_row[j] of the unity matrix; }</p>
1024910249 * <p>where rank, pp_row, and qq_col are members of the structure LUF. </p>
1025010250 */
1025110251 public";
1350713507 * <p>lenr lenr[i], i = 1,2,...,n, is the number of non-zeros in row i.</p>
1350813508 * <p>OUTPUT PARAMETERS</p>
1350913509 * <p>ior ior[i], i = 1,2,...,n, gives the position on the original ordering of the row or column which is in position i in the permuted form.</p>
13510 * <p>ib ib[i], i = 1,2,...,num, is the row number in the permuted matrix of the beginning of block i, 1 <= num <= n.</p>
13510 * <p>ib ib[i], i = 1,2,...,num, is the row number in the permuted matrix of the beginning of block i, 1 &lt;= num &lt;= n.</p>
1351113511 * <p>WORKING ARRAYS</p>
1351213512 * <p>arp working array of length [1+n], where arp[0] is not used. arp[i] is one less than the number of unsearched edges leaving node i. At the end of the algorithm it is set to a permutation which puts the matrix in block lower triangular form.</p>
1351313513 * <p>ib working array of length [1+n], where ib[0] is not used. ib[i] is the position in the ordering of the start of the ith block. ib[n+1-i] holds the node number of the ith node on the stack.</p>
1353213532 * <p>DESCRIPTION</p>
1353313533 * <p>The routine ffalg implements the Ford-Fulkerson algorithm to find a maximal flow in the specified flow network.</p>
1353413534 * <p>INPUT PARAMETERS</p>
13535 * <p>nv is the number of nodes, nv >= 2.</p>
13536 * <p>na is the number of arcs, na >= 0.</p>
13535 * <p>nv is the number of nodes, nv &gt;= 2.</p>
13536 * <p>na is the number of arcs, na &gt;= 0.</p>
1353713537 * <p>tail[a], a = 1,...,na, is the index of tail node of arc a.</p>
1353813538 * <p>head[a], a = 1,...,na, is the index of head node of arc a.</p>
13539 * <p>s is the source node index, 1 <= s <= nv.</p>
13540 * <p>t is the sink node index, 1 <= t <= nv, t != s.</p>
13541 * <p>cap[a], a = 1,...,na, is the capacity of arc a, cap[a] >= 0.</p>
13539 * <p>s is the source node index, 1 &lt;= s &lt;= nv.</p>
13540 * <p>t is the sink node index, 1 &lt;= t &lt;= nv, t != s.</p>
13541 * <p>cap[a], a = 1,...,na, is the capacity of arc a, cap[a] &gt;= 0.</p>
1354213542 * <p>NOTE: Multiple arcs are allowed, but self-loops are not allowed.</p>
1354313543 * <p>OUTPUT PARAMETERS</p>
1354413544 * <p>x[a], a = 1,...,na, is optimal value of the flow through arc a.</p>
1359613596 * <p>lenr lenr[i], i = 1,2,...,n, is the number of non-zeros in row i.</p>
1359713597 * <p>OUTPUT PARAMETERS</p>
1359813598 * <p>ior ior[i], i = 1,2,...,n, gives the position on the original ordering of the row or column which is in position i in the permuted form.</p>
13599 * <p>ib ib[i], i = 1,2,...,num, is the row number in the permuted matrix of the beginning of block i, 1 <= num <= n.</p>
13599 * <p>ib ib[i], i = 1,2,...,num, is the row number in the permuted matrix of the beginning of block i, 1 &lt;= num &lt;= n.</p>
1360013600 * <p>WORKING ARRAYS</p>
1360113601 * <p>arp working array of length [1+n], where arp[0] is not used. arp[i] is one less than the number of unsearched edges leaving node i. At the end of the algorithm it is set to a permutation which puts the matrix in block lower triangular form.</p>
1360213602 * <p>ib working array of length [1+n], where ib[0] is not used. ib[i] is the position in the ordering of the start of the ith block. ib[n+1-i] holds the node number of the ith node on the stack.</p>
1376613766 * <p>DESCRIPTION</p>
1376713767 * <p>The routine okalg implements the out-of-kilter algorithm to find a minimal-cost circulation in the specified flow network.</p>
1376813768 * <p>INPUT PARAMETERS</p>
13769 * <p>nv is the number of nodes, nv >= 0.</p>
13770 * <p>na is the number of arcs, na >= 0.</p>
13769 * <p>nv is the number of nodes, nv &gt;= 0.</p>
13770 * <p>na is the number of arcs, na &gt;= 0.</p>
1377113771 * <p>tail[a], a = 1,...,na, is the index of tail node of arc a.</p>
1377213772 * <p>head[a], a = 1,...,na, is the index of head node of arc a.</p>
1377313773 * <p>low[a], a = 1,...,na, is an lower bound to the flow through arc a.</p>
1377513775 * <p>cost[a], a = 1,...,na, is a per-unit cost of the flow through arc a.</p>
1377613776 * <p>NOTES</p>
1377713777 * <p>1. Multiple arcs are allowed, but self-loops are not allowed.</p>
13778 * <p>2. It is required that 0 <= low[a] <= cap[a] for all arcs.</p>
13778 * <p>2. It is required that 0 &lt;= low[a] &lt;= cap[a] for all arcs.</p>
1377913779 * <p>3. Arc costs may have any sign.</p>
1378013780 * <p>OUTPUT PARAMETERS</p>
1378113781 * <p>x[a], a = 1,...,na, is optimal value of the flow through arc a.</p>
1380413804 * <p>DESCRIPTION</p>
1380513805 * <p>The routine ffalg implements the Ford-Fulkerson algorithm to find a maximal flow in the specified flow network.</p>
1380613806 * <p>INPUT PARAMETERS</p>
13807 * <p>nv is the number of nodes, nv >= 2.</p>
13808 * <p>na is the number of arcs, na >= 0.</p>
13807 * <p>nv is the number of nodes, nv &gt;= 2.</p>
13808 * <p>na is the number of arcs, na &gt;= 0.</p>
1380913809 * <p>tail[a], a = 1,...,na, is the index of tail node of arc a.</p>
1381013810 * <p>head[a], a = 1,...,na, is the index of head node of arc a.</p>
13811 * <p>s is the source node index, 1 <= s <= nv.</p>
13812 * <p>t is the sink node index, 1 <= t <= nv, t != s.</p>
13813 * <p>cap[a], a = 1,...,na, is the capacity of arc a, cap[a] >= 0.</p>
13811 * <p>s is the source node index, 1 &lt;= s &lt;= nv.</p>
13812 * <p>t is the sink node index, 1 &lt;= t &lt;= nv, t != s.</p>
13813 * <p>cap[a], a = 1,...,na, is the capacity of arc a, cap[a] &gt;= 0.</p>
1381413814 * <p>NOTE: Multiple arcs are allowed, but self-loops are not allowed.</p>
1381513815 * <p>OUTPUT PARAMETERS</p>
1381613816 * <p>x[a], a = 1,...,na, is optimal value of the flow through arc a.</p>
1401214012 * <p>#include \"glpnpp.h\" int npp_empty_row(NPP *npp, NPPROW *p);</p>
1401314013 * <p>DESCRIPTION</p>
1401414014 * <p>The routine npp_empty_row processes row p, which is empty, i.e. coefficients at all columns in this row are zero:</p>
14015 * <p>L[p] <= sum 0 x[j] <= U[p], (1)</p>
14016 * <p>where L[p] <= U[p].</p>
14015 * <p>L[p] &lt;= sum 0 x[j] &lt;= U[p], (1)</p>
14016 * <p>where L[p] &lt;= U[p].</p>
1401714017 * <p>RETURNS</p>
1401814018 * <p>0 - success;</p>
1401914019 * <p>1 - problem has no primal feasible solution.</p>
1402014020 * <p>PROBLEM TRANSFORMATION</p>
1402114021 * <p>If the following conditions hold:</p>
14022 * <p>L[p] <= +eps, U[p] >= -eps, (2)</p>
14022 * <p>L[p] &lt;= +eps, U[p] &gt;= -eps, (2)</p>
1402314023 * <p>where eps is an absolute tolerance for row value, the row p is redundant. In this case it can be replaced by equivalent redundant row, which is free (unbounded), and then removed from the problem. Otherwise, the row p is infeasible and, thus, the problem has no primal feasible solution.</p>
1402414024 * <p>RECOVERING BASIC SOLUTION</p>
1402514025 * <p>See the routine npp_free_row.</p>
1404214042 * <p>#include \"glpnpp.h\" int npp_implied_value(NPP *npp, NPPCOL *q, double s);</p>
1404314043 * <p>DESCRIPTION</p>
1404414044 * <p>For column q:</p>
14045 * <p>l[q] <= x[q] <= u[q], (1)</p>
14046 * <p>where l[q] < u[q], the routine npp_implied_value processes its implied value s[q]. If this implied value satisfies to the current column bounds and integrality condition, the routine fixes column q at the given point. Note that the column is kept in the problem in any case.</p>
14045 * <p>l[q] &lt;= x[q] &lt;= u[q], (1)</p>
14046 * <p>where l[q] &lt; u[q], the routine npp_implied_value processes its implied value s[q]. If this implied value satisfies to the current column bounds and integrality condition, the routine fixes column q at the given point. Note that the column is kept in the problem in any case.</p>
1404714047 * <p>RETURNS</p>
1404814048 * <p>0 - column has been fixed;</p>
1404914049 * <p>1 - implied value violates to current column bounds;</p>
1405014050 * <p>2 - implied value violates integrality condition.</p>
1405114051 * <p>ALGORITHM</p>
1405214052 * <p>Implied column value s[q] satisfies to the current column bounds if the following condition holds:</p>
14053 * <p>l[q] - eps <= s[q] <= u[q] + eps, (2)</p>
14053 * <p>l[q] - eps &lt;= s[q] &lt;= u[q] + eps, (2)</p>
1405414054 * <p>where eps is an absolute tolerance for column value. If the column is integral, the following condition also must hold:</p>
14055 * <p>|s[q] - floor(s[q]+0.5)| <= eps, (3)</p>
14055 * <p>|s[q] - floor(s[q]+0.5)| &lt;= eps, (3)</p>
1405614056 * <p>where floor(s[q]+0.5) is the nearest integer to s[q].</p>
1405714057 * <p>If both condition (2) and (3) are satisfied, the column can be fixed at the value s[q], or, if it is integral, at floor(s[q]+0.5). Otherwise, if s[q] violates (2) or (3), the problem has no feasible solution.</p>
1405814058 * <p>Note: If s[q] is close to l[q] or u[q], it seems to be reasonable to fix the column at its lower or upper bound, resp. rather than at the implied value. </p>
1407114071 * <p>#include \"glpnpp.h\" int npp_implied_lower(NPP *npp, NPPCOL *q, double l);</p>
1407214072 * <p>DESCRIPTION</p>
1407314073 * <p>For column q:</p>
14074 * <p>l[q] <= x[q] <= u[q], (1)</p>
14075 * <p>where l[q] < u[q], the routine npp_implied_lower processes its implied lower bound l'[q]. As the result the current column lower bound may increase. Note that the column is kept in the problem in any case.</p>
14074 * <p>l[q] &lt;= x[q] &lt;= u[q], (1)</p>
14075 * <p>where l[q] &lt; u[q], the routine npp_implied_lower processes its implied lower bound l'[q]. As the result the current column lower bound may increase. Note that the column is kept in the problem in any case.</p>
1407614076 * <p>RETURNS</p>
1407714077 * <p>0 - current column lower bound has not changed;</p>
1407814078 * <p>1 - current column lower bound has changed, but not significantly;</p>
1408114081 * <p>4 - implied lower bound violates current column upper bound.</p>
1408214082 * <p>ALGORITHM</p>
1408314083 * <p>If column q is integral, before processing its implied lower bound should be rounded up:</p>
14084 * <p>( floor(l'[q]+0.5), if |l'[q] - floor(l'[q]+0.5)| <= eps l'[q] := < (2) ( ceil(l'[q]), otherwise</p>
14084 * <p>( floor(l'[q]+0.5), if |l'[q] - floor(l'[q]+0.5)| &lt;= eps l'[q] := &lt; (2) ( ceil(l'[q]), otherwise</p>
1408514085 * <p>where floor(l'[q]+0.5) is the nearest integer to l'[q], ceil(l'[q]) is smallest integer not less than l'[q], and eps is an absolute tolerance for column value.</p>
1408614086 * <p>Processing implied column lower bound l'[q] includes the following cases:</p>
14087 * <p>1) if l'[q] < l[q] + eps, implied lower bound is redundant;</p>
14088 * <p>2) if l[q] + eps <= l[q] <= u[q] + eps, current column lower bound l[q] can be strengthened by replacing it with l'[q]. If in this case new column lower bound becomes close to current column upper bound u[q], the column can be fixed on its upper bound;</p>
14089 * <p>3) if l'[q] > u[q] + eps, implied lower bound violates current column upper bound u[q], in which case the problem has no primal feasible solution. </p>
14087 * <p>1) if l'[q] &lt; l[q] + eps, implied lower bound is redundant;</p>
14088 * <p>2) if l[q] + eps &lt;= l[q] &lt;= u[q] + eps, current column lower bound l[q] can be strengthened by replacing it with l'[q]. If in this case new column lower bound becomes close to current column upper bound u[q], the column can be fixed on its upper bound;</p>
14089 * <p>3) if l'[q] &gt; u[q] + eps, implied lower bound violates current column upper bound u[q], in which case the problem has no primal feasible solution. </p>
1409014090 */
1409114091 public";
1409214092
1409714097 * <p>#include \"glpnpp.h\" int npp_implied_upper(NPP *npp, NPPCOL *q, double u);</p>
1409814098 * <p>DESCRIPTION</p>
1409914099 * <p>For column q:</p>
14100 * <p>l[q] <= x[q] <= u[q], (1)</p>
14101 * <p>where l[q] < u[q], the routine npp_implied_upper processes its implied upper bound u'[q]. As the result the current column upper bound may decrease. Note that the column is kept in the problem in any case.</p>
14100 * <p>l[q] &lt;= x[q] &lt;= u[q], (1)</p>
14101 * <p>where l[q] &lt; u[q], the routine npp_implied_upper processes its implied upper bound u'[q]. As the result the current column upper bound may decrease. Note that the column is kept in the problem in any case.</p>
1410214102 * <p>RETURNS</p>
1410314103 * <p>0 - current column upper bound has not changed;</p>
1410414104 * <p>1 - current column upper bound has changed, but not significantly;</p>
1410714107 * <p>4 - implied upper bound violates current column lower bound.</p>
1410814108 * <p>ALGORITHM</p>
1410914109 * <p>If column q is integral, before processing its implied upper bound should be rounded down:</p>
14110 * <p>( floor(u'[q]+0.5), if |u'[q] - floor(l'[q]+0.5)| <= eps u'[q] := < (2) ( floor(l'[q]), otherwise</p>
14110 * <p>( floor(u'[q]+0.5), if |u'[q] - floor(l'[q]+0.5)| &lt;= eps u'[q] := &lt; (2) ( floor(l'[q]), otherwise</p>
1411114111 * <p>where floor(u'[q]+0.5) is the nearest integer to u'[q], floor(u'[q]) is largest integer not greater than u'[q], and eps is an absolute tolerance for column value.</p>
1411214112 * <p>Processing implied column upper bound u'[q] includes the following cases:</p>
14113 * <p>1) if u'[q] > u[q] - eps, implied upper bound is redundant;</p>
14114 * <p>2) if l[q] - eps <= u[q] <= u[q] - eps, current column upper bound u[q] can be strengthened by replacing it with u'[q]. If in this case new column upper bound becomes close to current column lower bound, the column can be fixed on its lower bound;</p>
14115 * <p>3) if u'[q] < l[q] - eps, implied upper bound violates current column lower bound l[q], in which case the problem has no primal feasible solution. </p>
14113 * <p>1) if u'[q] &gt; u[q] - eps, implied upper bound is redundant;</p>
14114 * <p>2) if l[q] - eps &lt;= u[q] &lt;= u[q] - eps, current column upper bound u[q] can be strengthened by replacing it with u'[q]. If in this case new column upper bound becomes close to current column lower bound, the column can be fixed on its lower bound;</p>
14115 * <p>3) if u'[q] &lt; l[q] - eps, implied upper bound violates current column lower bound l[q], in which case the problem has no primal feasible solution. </p>
1411614116 */
1411714117 public";
1411814118
1414814148 * <p>#include \"glpnpp.h\" int npp_analyze_row(NPP *npp, NPPROW *p);</p>
1414914149 * <p>DESCRIPTION</p>
1415014150 * <p>The routine npp_analyze_row performs analysis of row p of general format:</p>
14151 * <p>L[p] <= sum a[p,j] x[j] <= U[p], (1) j</p>
14152 * <p>l[j] <= x[j] <= u[j], (2)</p>
14153 * <p>where L[p] <= U[p] and l[j] <= u[j] for all a[p,j] != 0.</p>
14151 * <p>L[p] &lt;= sum a[p,j] x[j] &lt;= U[p], (1) j</p>
14152 * <p>l[j] &lt;= x[j] &lt;= u[j], (2)</p>
14153 * <p>where L[p] &lt;= U[p] and l[j] &lt;= u[j] for all a[p,j] != 0.</p>
1415414154 * <p>RETURNS</p>
1415514155 * <p>0x?0 - row lower bound does not exist or is redundant;</p>
1415614156 * <p>0x?1 - row lower bound can be active;</p>
1416314163 * <p>Analysis of row (1) is based on analysis of its implied lower and upper bounds, which are determined by bounds of corresponding columns (variables) as follows:</p>
1416414164 * <p>L'[p] = inf sum a[p,j] x[j] = j (3) = sum a[p,j] l[j] + sum a[p,j] u[j], j in Jp j in Jn</p>
1416514165 * <p>U'[p] = sup sum a[p,j] x[j] = (4) = sum a[p,j] u[j] + sum a[p,j] l[j], j in Jp j in Jn</p>
14166 * <p>Jp = {j: a[p,j] > 0}, Jn = {j: a[p,j] < 0}. (5)</p>
14167 * <p>(Note that bounds of all columns in row p are assumed to be correct, so L'[p] <= U'[p].)</p>
14166 * <p>Jp = {j: a[p,j] &gt; 0}, Jn = {j: a[p,j] &lt; 0}. (5)</p>
14167 * <p>(Note that bounds of all columns in row p are assumed to be correct, so L'[p] &lt;= U'[p].)</p>
1416814168 * <p>Analysis of row lower bound L[p] includes the following cases:</p>
14169 * <p>1) if L[p] > U'[p] + eps, where eps is an absolute tolerance for row value, row lower bound L[p] and implied row upper bound U'[p] are inconsistent, ergo, the problem has no primal feasible solution;</p>
14170 * <p>2) if U'[p] - eps <= L[p] <= U'[p] + eps, i.e. if L[p] =~ U'[p], the row is a forcing row on its lower bound (see description of the routine npp_forcing_row);</p>
14171 * <p>3) if L[p] > L'[p] + eps, row lower bound L[p] can be active (this conclusion does not account other rows in the problem);</p>
14172 * <p>4) if L[p] <= L'[p] + eps, row lower bound L[p] cannot be active, so it is redundant and can be removed (replaced by -oo).</p>
14169 * <p>1) if L[p] &gt; U'[p] + eps, where eps is an absolute tolerance for row value, row lower bound L[p] and implied row upper bound U'[p] are inconsistent, ergo, the problem has no primal feasible solution;</p>
14170 * <p>2) if U'[p] - eps &lt;= L[p] &lt;= U'[p] + eps, i.e. if L[p] =~ U'[p], the row is a forcing row on its lower bound (see description of the routine npp_forcing_row);</p>
14171 * <p>3) if L[p] &gt; L'[p] + eps, row lower bound L[p] can be active (this conclusion does not account other rows in the problem);</p>
14172 * <p>4) if L[p] &lt;= L'[p] + eps, row lower bound L[p] cannot be active, so it is redundant and can be removed (replaced by -oo).</p>
1417314173 * <p>Analysis of row upper bound U[p] is performed in a similar way and includes the following cases:</p>
14174 * <p>1) if U[p] < L'[p] - eps, row upper bound U[p] and implied row lower bound L'[p] are inconsistent, ergo the problem has no primal feasible solution;</p>
14175 * <p>2) if L'[p] - eps <= U[p] <= L'[p] + eps, i.e. if U[p] =~ L'[p], the row is a forcing row on its upper bound (see description of the routine npp_forcing_row);</p>
14176 * <p>3) if U[p] < U'[p] - eps, row upper bound U[p] can be active (this conclusion does not account other rows in the problem);</p>
14177 * <p>4) if U[p] >= U'[p] - eps, row upper bound U[p] cannot be active, so it is redundant and can be removed (replaced by +oo). </p>
14174 * <p>1) if U[p] &lt; L'[p] - eps, row upper bound U[p] and implied row lower bound L'[p] are inconsistent, ergo the problem has no primal feasible solution;</p>
14175 * <p>2) if L'[p] - eps &lt;= U[p] &lt;= L'[p] + eps, i.e. if U[p] =~ L'[p], the row is a forcing row on its upper bound (see description of the routine npp_forcing_row);</p>
14176 * <p>3) if U[p] &lt; U'[p] - eps, row upper bound U[p] can be active (this conclusion does not account other rows in the problem);</p>
14177 * <p>4) if U[p] &gt;= U'[p] - eps, row upper bound U[p] cannot be active, so it is redundant and can be removed (replaced by +oo). </p>
1417814178 */
1417914179 public";
1418014180
1419014190 * <p>#include \"glpnpp.h\" void npp_implied_bounds(NPP *npp, NPPROW *p);</p>
1419114191 * <p>DESCRIPTION</p>
1419214192 * <p>The routine npp_implied_bounds inspects general row (constraint) p:</p>
14193 * <p>L[p] <= sum a[p,j] x[j] <= U[p], (1)</p>
14194 * <p>l[j] <= x[j] <= u[j], (2)</p>
14195 * <p>where L[p] <= U[p] and l[j] <= u[j] for all a[p,j] != 0, to compute implied bounds of columns (variables x[j]) in this row.</p>
14193 * <p>L[p] &lt;= sum a[p,j] x[j] &lt;= U[p], (1)</p>
14194 * <p>l[j] &lt;= x[j] &lt;= u[j], (2)</p>
14195 * <p>where L[p] &lt;= U[p] and l[j] &lt;= u[j] for all a[p,j] != 0, to compute implied bounds of columns (variables x[j]) in this row.</p>
1419614196 * <p>The routine stores implied column bounds l'[j] and u'[j] in column descriptors (NPPCOL); it does not change current column bounds l[j] and u[j]. (Implied column bounds can be then used to strengthen the current column bounds; see the routines npp_implied_lower and npp_implied_upper).</p>
1419714197 * <p>ALGORITHM</p>
1419814198 * <p>Current column bounds (2) define implied lower and upper bounds of row (1) as follows:</p>
1419914199 * <p>L'[p] = inf sum a[p,j] x[j] = j (3) = sum a[p,j] l[j] + sum a[p,j] u[j], j in Jp j in Jn</p>
1420014200 * <p>U'[p] = sup sum a[p,j] x[j] = (4) = sum a[p,j] u[j] + sum a[p,j] l[j], j in Jp j in Jn</p>
14201 * <p>Jp = {j: a[p,j] > 0}, Jn = {j: a[p,j] < 0}. (5)</p>
14202 * <p>(Note that bounds of all columns in row p are assumed to be correct, so L'[p] <= U'[p].)</p>
14203 * <p>If L[p] > L'[p] and/or U[p] < U'[p], the lower and/or upper bound of row (1) can be active, in which case such row defines implied bounds of its variables.</p>
14204 * <p>Let x[k] be some variable having in row (1) coefficient a[p,k] != 0. Consider a case when row lower bound can be active (L[p] > L'[p]):</p>
14205 * <p>sum a[p,j] x[j] >= L[p] ==> j</p>
14206 * <p>sum a[p,j] x[j] + a[p,k] x[k] >= L[p] ==> j!=k (6) a[p,k] x[k] >= L[p] - sum a[p,j] x[j] ==> j!=k</p>
14207 * <p>a[p,k] x[k] >= L[p,k],</p>
14201 * <p>Jp = {j: a[p,j] &gt; 0}, Jn = {j: a[p,j] &lt; 0}. (5)</p>
14202 * <p>(Note that bounds of all columns in row p are assumed to be correct, so L'[p] &lt;= U'[p].)</p>
14203 * <p>If L[p] &gt; L'[p] and/or U[p] &lt; U'[p], the lower and/or upper bound of row (1) can be active, in which case such row defines implied bounds of its variables.</p>
14204 * <p>Let x[k] be some variable having in row (1) coefficient a[p,k] != 0. Consider a case when row lower bound can be active (L[p] &gt; L'[p]):</p>
14205 * <p>sum a[p,j] x[j] &gt;= L[p] ==&gt; j</p>
14206 * <p>sum a[p,j] x[j] + a[p,k] x[k] &gt;= L[p] ==&gt; j!=k (6) a[p,k] x[k] &gt;= L[p] - sum a[p,j] x[j] ==&gt; j!=k</p>
14207 * <p>a[p,k] x[k] &gt;= L[p,k],</p>
1420814208 * <p>where</p>
1420914209 * <p>L[p,k] = inf(L[p] - sum a[p,j] x[j]) = j!=k</p>
1421014210 * <p>= L[p] - sup sum a[p,j] x[j] = (7) j!=k</p>
1421114211 * <p>= L[p] - sum a[p,j] u[j] - sum a[p,j] l[j]. j in Jpk} j in Jnk}</p>
1421214212 * <p>Thus:</p>
14213 * <p>x[k] >= l'[k] = L[p,k] / a[p,k], if a[p,k] > 0, (8)</p>
14214 * <p>x[k] <= u'[k] = L[p,k] / a[p,k], if a[p,k] < 0. (9)</p>
14213 * <p>x[k] &gt;= l'[k] = L[p,k] / a[p,k], if a[p,k] &gt; 0, (8)</p>
14214 * <p>x[k] &lt;= u'[k] = L[p,k] / a[p,k], if a[p,k] &lt; 0. (9)</p>
1421514215 * <p>where l'[k] and u'[k] are implied lower and upper bounds of variable x[k], resp.</p>
14216 * <p>Now consider a similar case when row upper bound can be active (U[p] < U'[p]):</p>
14217 * <p>sum a[p,j] x[j] <= U[p] ==> j</p>
14218 * <p>sum a[p,j] x[j] + a[p,k] x[k] <= U[p] ==> j!=k (10) a[p,k] x[k] <= U[p] - sum a[p,j] x[j] ==> j!=k</p>
14219 * <p>a[p,k] x[k] <= U[p,k],</p>
14216 * <p>Now consider a similar case when row upper bound can be active (U[p] &lt; U'[p]):</p>
14217 * <p>sum a[p,j] x[j] &lt;= U[p] ==&gt; j</p>
14218 * <p>sum a[p,j] x[j] + a[p,k] x[k] &lt;= U[p] ==&gt; j!=k (10) a[p,k] x[k] &lt;= U[p] - sum a[p,j] x[j] ==&gt; j!=k</p>
14219 * <p>a[p,k] x[k] &lt;= U[p,k],</p>
1422014220 * <p>where:</p>
1422114221 * <p>U[p,k] = sup(U[p] - sum a[p,j] x[j]) = j!=k</p>
1422214222 * <p>= U[p] - inf sum a[p,j] x[j] = (11) j!=k</p>
1422314223 * <p>= U[p] - sum a[p,j] l[j] - sum a[p,j] u[j]. j in Jpk} j in Jnk}</p>
1422414224 * <p>Thus:</p>
14225 * <p>x[k] <= u'[k] = U[p,k] / a[p,k], if a[p,k] > 0, (12)</p>
14226 * <p>x[k] >= l'[k] = U[p,k] / a[p,k], if a[p,k] < 0. (13)</p>
14225 * <p>x[k] &lt;= u'[k] = U[p,k] / a[p,k], if a[p,k] &gt; 0, (12)</p>
14226 * <p>x[k] &gt;= l'[k] = U[p,k] / a[p,k], if a[p,k] &lt; 0. (13)</p>
1422714227 * <p>Note that in formulae (8), (9), (12), and (13) coefficient a[p,k] must not be too small in magnitude relatively to other non-zero coefficients in row (1), i.e. the following condition must hold:</p>
14228 * <p>|a[p,k]| >= eps * max(1, |a[p,j]|), (14) j</p>
14228 * <p>|a[p,k]| &gt;= eps * max(1, |a[p,j]|), (14) j</p>
1422914229 * <p>where eps is a relative tolerance for constraint coefficients. Otherwise the implied column bounds can be numerical inreliable. For example, using formula (8) for the following inequality constraint:</p>
14230 * <p>1e-12 x1 - x2 - x3 >= 0,</p>
14231 * <p>where x1 >= -1, x2, x3, >= 0, may lead to numerically unreliable conclusion that x1 >= 0.</p>
14230 * <p>1e-12 x1 - x2 - x3 &gt;= 0,</p>
14231 * <p>where x1 &gt;= -1, x2, x3, &gt;= 0, may lead to numerically unreliable conclusion that x1 &gt;= 0.</p>
1423214232 * <p>Using formulae (8), (9), (12), and (13) to compute implied bounds for one variable requires |J| operations, where J = {j: a[p,j] != 0}, because this needs computing L[p,k] and U[p,k]. Thus, computing implied bounds for all variables in row (1) would require |J|^2 operations, that is not a good technique. However, the total number of operations can be reduced to |J| as follows.</p>
14233 * <p>Let a[p,k] > 0. Then from (7) and (11) we have:</p>
14233 * <p>Let a[p,k] &gt; 0. Then from (7) and (11) we have:</p>
1423414234 * <p>L[p,k] = L[p] - (U'[p] - a[p,k] u[k]) =</p>
1423514235 * <p>= L[p] - U'[p] + a[p,k] u[k],</p>
1423614236 * <p>U[p,k] = U[p] - (L'[p] - a[p,k] l[k]) =</p>
1423814238 * <p>where L'[p] and U'[p] are implied row lower and upper bounds defined by formulae (3) and (4). Substituting these expressions into (8) and (12) gives:</p>
1423914239 * <p>l'[k] = L[p,k] / a[p,k] = u[k] + (L[p] - U'[p]) / a[p,k], (15)</p>
1424014240 * <p>u'[k] = U[p,k] / a[p,k] = l[k] + (U[p] - L'[p]) / a[p,k]. (16)</p>
14241 * <p>Similarly, if a[p,k] < 0, according to (7) and (11) we have:</p>
14241 * <p>Similarly, if a[p,k] &lt; 0, according to (7) and (11) we have:</p>
1424214242 * <p>L[p,k] = L[p] - (U'[p] - a[p,k] l[k]) =</p>
1424314243 * <p>= L[p] - U'[p] + a[p,k] l[k],</p>
1424414244 * <p>U[p,k] = U[p] - (L'[p] - a[p,k] u[k]) =</p>
1424614246 * <p>and substituting these expressions into (8) and (12) gives:</p>
1424714247 * <p>l'[k] = U[p,k] / a[p,k] = u[k] + (U[p] - L'[p]) / a[p,k], (17)</p>
1424814248 * <p>u'[k] = L[p,k] / a[p,k] = l[k] + (L[p] - U'[p]) / a[p,k]. (18)</p>
14249 * <p>Note that formulae (15)-(18) can be used only if L'[p] and U'[p] exist. However, if for some variable x[j] it happens that l[j] = -oo and/or u[j] = +oo, values of L'[p] (if a[p,j] > 0) and/or U'[p] (if a[p,j] < 0) are undefined. Consider, therefore, the most general situation, when some column bounds (2) may not exist.</p>
14249 * <p>Note that formulae (15)-(18) can be used only if L'[p] and U'[p] exist. However, if for some variable x[j] it happens that l[j] = -oo and/or u[j] = +oo, values of L'[p] (if a[p,j] &gt; 0) and/or U'[p] (if a[p,j] &lt; 0) are undefined. Consider, therefore, the most general situation, when some column bounds (2) may not exist.</p>
1425014250 * <p>Let:</p>
14251 * <p>J' = {j : (a[p,j] > 0 and l[j] = -oo) or (19) (a[p,j] < 0 and u[j] = +oo)}.</p>
14251 * <p>J' = {j : (a[p,j] &gt; 0 and l[j] = -oo) or (19) (a[p,j] &lt; 0 and u[j] = +oo)}.</p>
1425214252 * <p>Then (assuming that row upper bound U[p] can be active) the following three cases are possible:</p>
1425314253 * <p>1) |J'| = 0. In this case L'[p] exists, thus, for all variables x[j] in row (1) we can use formulae (16) and (17);</p>
14254 * <p>2) J' = {k}. In this case L'[p] = -oo, however, U[p,k] (11) exists, so for variable x[k] we can use formulae (12) and (13). Note that for all other variables x[j] (j != k) l'[j] = -oo (if a[p,j] < 0) or u'[j] = +oo (if a[p,j] > 0);</p>
14255 * <p>3) |J'| > 1. In this case for all variables x[j] in row [1] we have l'[j] = -oo (if a[p,j] < 0) or u'[j] = +oo (if a[p,j] > 0).</p>
14254 * <p>2) J' = {k}. In this case L'[p] = -oo, however, U[p,k] (11) exists, so for variable x[k] we can use formulae (12) and (13). Note that for all other variables x[j] (j != k) l'[j] = -oo (if a[p,j] &lt; 0) or u'[j] = +oo (if a[p,j] &gt; 0);</p>
14255 * <p>3) |J'| &gt; 1. In this case for all variables x[j] in row [1] we have l'[j] = -oo (if a[p,j] &lt; 0) or u'[j] = +oo (if a[p,j] &gt; 0).</p>
1425614256 * <p>Similarly, let:</p>
14257 * <p>J'' = {j : (a[p,j] > 0 and u[j] = +oo) or (20) (a[p,j] < 0 and l[j] = -oo)}.</p>
14257 * <p>J'' = {j : (a[p,j] &gt; 0 and u[j] = +oo) or (20) (a[p,j] &lt; 0 and l[j] = -oo)}.</p>
1425814258 * <p>Then (assuming that row lower bound L[p] can be active) the following three cases are possible:</p>
1425914259 * <p>1) |J''| = 0. In this case U'[p] exists, thus, for all variables x[j] in row (1) we can use formulae (15) and (18);</p>
14260 * <p>2) J'' = {k}. In this case U'[p] = +oo, however, L[p,k] (7) exists, so for variable x[k] we can use formulae (8) and (9). Note that for all other variables x[j] (j != k) l'[j] = -oo (if a[p,j] > 0) or u'[j] = +oo (if a[p,j] < 0);</p>
14261 * <p>3) |J''| > 1. In this case for all variables x[j] in row (1) we have l'[j] = -oo (if a[p,j] > 0) or u'[j] = +oo (if a[p,j] < 0). </p>
14260 * <p>2) J'' = {k}. In this case U'[p] = +oo, however, L[p,k] (7) exists, so for variable x[k] we can use formulae (8) and (9). Note that for all other variables x[j] (j != k) l'[j] = -oo (if a[p,j] &gt; 0) or u'[j] = +oo (if a[p,j] &lt; 0);</p>
14261 * <p>3) |J''| &gt; 1. In this case for all variables x[j] in row (1) we have l'[j] = -oo (if a[p,j] &gt; 0) or u'[j] = +oo (if a[p,j] &lt; 0). </p>
1426214262 */
1426314263 public";
1426414264
1427614276 * <p>If the specified row (constraint) is packing inequality (see below), the routine npp_is_packing returns non-zero. Otherwise, it returns zero.</p>
1427714277 * <p>PACKING INEQUALITIES</p>
1427814278 * <p>In canonical format the packing inequality is the following:</p>
14279 * <p>sum x[j] <= 1, (1) j in J</p>
14280 * <p>where all variables x[j] are binary. This inequality expresses the condition that in any integer feasible solution at most one variable from set J can take non-zero (unity) value while other variables must be equal to zero. W.l.o.g. it is assumed that |J| >= 2, because if J is empty or |J| = 1, the inequality (1) is redundant.</p>
14279 * <p>sum x[j] &lt;= 1, (1) j in J</p>
14280 * <p>where all variables x[j] are binary. This inequality expresses the condition that in any integer feasible solution at most one variable from set J can take non-zero (unity) value while other variables must be equal to zero. W.l.o.g. it is assumed that |J| &gt;= 2, because if J is empty or |J| = 1, the inequality (1) is redundant.</p>
1428114281 * <p>In general case the packing inequality may include original variables x[j] as well as their complements x~[j]:</p>
14282 * <p>sum x[j] + sum x~[j] <= 1, (2) j in Jp j in Jn</p>
14282 * <p>sum x[j] + sum x~[j] &lt;= 1, (2) j in Jp j in Jn</p>
1428314283 * <p>where Jp and Jn are not intersected. Therefore, using substitution x~[j] = 1 - x[j] gives the packing inequality in generalized format:</p>
14284 * <p>sum x[j] - sum x[j] <= 1 - |Jn|. (3) j in Jp j in Jn </p>
14284 * <p>sum x[j] - sum x[j] &lt;= 1 - |Jn|. (3) j in Jp j in Jn </p>
1428514285 */
1428614286 public";
1428714287
1429714297 * <p>#include \"glpnpp.h\" int npp_implied_packing(NPP *npp, NPPROW *row, int which, NPPCOL *var[], char set[]);</p>
1429814298 * <p>DESCRIPTION</p>
1429914299 * <p>The routine npp_implied_packing processes specified row (constraint) of general format:</p>
14300 * <p>L <= sum a[j] x[j] <= U. (1) j</p>
14300 * <p>L &lt;= sum a[j] x[j] &lt;= U. (1) j</p>
1430114301 * <p>If which = 0, only lower bound L, which must exist, is considered, while upper bound U is ignored. Similarly, if which = 1, only upper bound U, which must exist, is considered, while lower bound L is ignored. Thus, if the specified row is a double-sided inequality or equality constraint, this routine should be called twice for both lower and upper bounds.</p>
1430214302 * <p>The routine npp_implied_packing attempts to find a non-trivial (i.e. having not less than two binary variables) packing inequality:</p>
14303 * <p>sum x[j] - sum x[j] <= 1 - |Jn|, (2) j in Jp j in Jn</p>
14303 * <p>sum x[j] - sum x[j] &lt;= 1 - |Jn|, (2) j in Jp j in Jn</p>
1430414304 * <p>which is relaxation of the constraint (1) in the sense that any solution satisfying to that constraint also satisfies to the packing inequality (2). If such relaxation exists, the routine stores pointers to descriptors of corresponding binary variables and their flags, resp., to locations var[1], var[2], ..., var[len] and set[1], set[2], ..., set[len], where set[j] = 0 means that j in Jp and set[j] = 1 means that j in Jn.</p>
1430514305 * <p>RETURNS</p>
14306 * <p>The routine npp_implied_packing returns len, which is the total number of binary variables in the packing inequality found, len >= 2. However, if the relaxation does not exist, the routine returns zero.</p>
14306 * <p>The routine npp_implied_packing returns len, which is the total number of binary variables in the packing inequality found, len &gt;= 2. However, if the relaxation does not exist, the routine returns zero.</p>
1430714307 * <p>ALGORITHM</p>
1430814308 * <p>If which = 0, the constraint coefficients (1) are multiplied by -1 and b is assigned -L; if which = 1, the constraint coefficients (1) are not changed and b is assigned +U. In both cases the specified constraint gets the following format:</p>
14309 * <p>sum a[j] x[j] <= b. (3) j</p>
14309 * <p>sum a[j] x[j] &lt;= b. (3) j</p>
1431014310 * <p>(Note that (3) is a relaxation of (1), because one of bounds L or U is ignored.)</p>
14311 * <p>Let J be set of binary variables, Kp be set of non-binary (integer or continuous) variables with a[j] > 0, and Kn be set of non-binary variables with a[j] < 0. Then the inequality (3) can be written as follows:</p>
14312 * <p>sum a[j] x[j] <= b - sum a[j] x[j] - sum a[j] x[j]. (4) j in J j in Kp j in Kn</p>
14311 * <p>Let J be set of binary variables, Kp be set of non-binary (integer or continuous) variables with a[j] &gt; 0, and Kn be set of non-binary variables with a[j] &lt; 0. Then the inequality (3) can be written as follows:</p>
14312 * <p>sum a[j] x[j] &lt;= b - sum a[j] x[j] - sum a[j] x[j]. (4) j in J j in Kp j in Kn</p>
1431314313 * <p>To get rid of non-binary variables we can replace the inequality (4) by the following relaxed inequality:</p>
14314 * <p>sum a[j] x[j] <= b~, (5) j in J</p>
14314 * <p>sum a[j] x[j] &lt;= b~, (5) j in J</p>
1431514315 * <p>where:</p>
1431614316 * <p>b~ = sup(b - sum a[j] x[j] - sum a[j] x[j]) = j in Kp j in Kn</p>
1431714317 * <p>= b - inf sum a[j] x[j] - inf sum a[j] x[j] = (6) j in Kp j in Kn</p>
1431814318 * <p>= b - sum a[j] l[j] - sum a[j] u[j]. j in Kp j in Kn</p>
1431914319 * <p>Note that if lower bound l[j] (if j in Kp) or upper bound u[j] (if j in Kn) of some non-binary variable x[j] does not exist, then formally b = +oo, in which case further analysis is not performed.</p>
14320 * <p>Let Bp = {j in J: a[j] > 0}, Bn = {j in J: a[j] < 0}. To make all the inequality coefficients in (5) positive, we replace all x[j] in Bn by their complementaries, substituting x[j] = 1 - x~[j] for all j in Bn, that gives:</p>
14321 * <p>sum a[j] x[j] - sum a[j] x~[j] <= b~ - sum a[j]. (7) j in Bp j in Bn j in Bn</p>
14320 * <p>Let Bp = {j in J: a[j] &gt; 0}, Bn = {j in J: a[j] &lt; 0}. To make all the inequality coefficients in (5) positive, we replace all x[j] in Bn by their complementaries, substituting x[j] = 1 - x~[j] for all j in Bn, that gives:</p>
14321 * <p>sum a[j] x[j] - sum a[j] x~[j] &lt;= b~ - sum a[j]. (7) j in Bp j in Bn j in Bn</p>
1432214322 * <p>This inequality is a relaxation of the original constraint (1), and it is a binary knapsack inequality. Writing it in the standard format we have:</p>
14323 * <p>sum alfa[j] z[j] <= beta, (8) j in J</p>
14324 * <p>where: ( + a[j], if j in Bp, alfa[j] = < (9) ( - a[j], if j in Bn,</p>
14325 * <p>( x[j], if j in Bp, z[j] = < (10) ( 1 - x[j], if j in Bn,</p>
14323 * <p>sum alfa[j] z[j] &lt;= beta, (8) j in J</p>
14324 * <p>where: ( + a[j], if j in Bp, alfa[j] = &lt; (9) ( - a[j], if j in Bn,</p>
14325 * <p>( x[j], if j in Bp, z[j] = &lt; (10) ( 1 - x[j], if j in Bn,</p>
1432614326 * <p>beta = b~ - sum a[j]. (11) j in Bn</p>
1432714327 * <p>In the inequality (8) all coefficients are positive, therefore, the packing relaxation to be found for this inequality is the following:</p>
14328 * <p>sum z[j] <= 1. (12) j in P</p>
14328 * <p>sum z[j] &lt;= 1. (12) j in P</p>
1432914329 * <p>It is obvious that set P within J, which we would like to find, must satisfy to the following condition:</p>
14330 * <p>alfa[j] + alfa[k] > beta + eps for all j, k in P, j != k, (13)</p>
14331 * <p>where eps is an absolute tolerance for value of the linear form. Thus, it is natural to take P = {j: alpha[j] > (beta + eps) / 2}. Moreover, if in the equality (8) there exist coefficients alfa[k], for which alfa[k] <= (beta + eps) / 2, but which, nevertheless, satisfies to the condition (13) for all j in P, *one* corresponding variable z[k] (having, for example, maximal coefficient alfa[k]) can be included in set P, that allows increasing the number of binary variables in (12) by one.</p>
14330 * <p>alfa[j] + alfa[k] &gt; beta + eps for all j, k in P, j != k, (13)</p>
14331 * <p>where eps is an absolute tolerance for value of the linear form. Thus, it is natural to take P = {j: alpha[j] &gt; (beta + eps) / 2}. Moreover, if in the equality (8) there exist coefficients alfa[k], for which alfa[k] &lt;= (beta + eps) / 2, but which, nevertheless, satisfies to the condition (13) for all j in P, *one* corresponding variable z[k] (having, for example, maximal coefficient alfa[k]) can be included in set P, that allows increasing the number of binary variables in (12) by one.</p>
1433214332 * <p>Once the set P has been built, for the inequality (12) we need to perform back substitution according to (10) in order to express it through the original binary variables. As the result of such back substitution the relaxed packing inequality get its final format (2), where Jp = J intersect Bp, and Jn = J intersect Bn. </p>
1433314333 */
1433414334 public";
1434214342 * <p>If the specified row (constraint) is covering inequality (see below), the routine npp_is_covering returns non-zero. Otherwise, it returns zero.</p>
1434314343 * <p>COVERING INEQUALITIES</p>
1434414344 * <p>In canonical format the covering inequality is the following:</p>
14345 * <p>sum x[j] >= 1, (1) j in J</p>
14346 * <p>where all variables x[j] are binary. This inequality expresses the condition that in any integer feasible solution variables in set J cannot be all equal to zero at the same time, i.e. at least one variable must take non-zero (unity) value. W.l.o.g. it is assumed that |J| >= 2, because if J is empty, the inequality (1) is infeasible, and if |J| = 1, the inequality (1) is a forcing row.</p>
14345 * <p>sum x[j] &gt;= 1, (1) j in J</p>
14346 * <p>where all variables x[j] are binary. This inequality expresses the condition that in any integer feasible solution variables in set J cannot be all equal to zero at the same time, i.e. at least one variable must take non-zero (unity) value. W.l.o.g. it is assumed that |J| &gt;= 2, because if J is empty, the inequality (1) is infeasible, and if |J| = 1, the inequality (1) is a forcing row.</p>
1434714347 * <p>In general case the covering inequality may include original variables x[j] as well as their complements x~[j]:</p>
14348 * <p>sum x[j] + sum x~[j] >= 1, (2) j in Jp j in Jn</p>
14348 * <p>sum x[j] + sum x~[j] &gt;= 1, (2) j in Jp j in Jn</p>
1434914349 * <p>where Jp and Jn are not intersected. Therefore, using substitution x~[j] = 1 - x[j] gives the packing inequality in generalized format:</p>
14350 * <p>sum x[j] - sum x[j] >= 1 - |Jn|. (3) j in Jp j in Jn</p>
14350 * <p>sum x[j] - sum x[j] &gt;= 1 - |Jn|. (3) j in Jp j in Jn</p>
1435114351 * <p>(May note that the inequality (3) cuts off infeasible solutions, where x[j] = 0 for all j in Jp and x[j] = 1 for all j in Jn.)</p>
1435214352 * <p>NOTE: If |J| = 2, the inequality (3) is equivalent to packing inequality (see the routine npp_is_packing). </p>
1435314353 */
1436814368 * <p>PARTITIONING EQUALITIES</p>
1436914369 * <p>In canonical format the partitioning equality is the following:</p>
1437014370 * <p>sum x[j] = 1, (1) j in J</p>
14371 * <p>where all variables x[j] are binary. This equality expresses the condition that in any integer feasible solution exactly one variable in set J must take non-zero (unity) value while other variables must be equal to zero. W.l.o.g. it is assumed that |J| >= 2, because if J is empty, the inequality (1) is infeasible, and if |J| = 1, the inequality (1) is a fixing row.</p>
14371 * <p>where all variables x[j] are binary. This equality expresses the condition that in any integer feasible solution exactly one variable in set J must take non-zero (unity) value while other variables must be equal to zero. W.l.o.g. it is assumed that |J| &gt;= 2, because if J is empty, the inequality (1) is infeasible, and if |J| = 1, the inequality (1) is a fixing row.</p>
1437214372 * <p>In general case the partitioning equality may include original variables x[j] as well as their complements x~[j]:</p>
1437314373 * <p>sum x[j] + sum x~[j] = 1, (2) j in Jp j in Jn</p>
1437414374 * <p>where Jp and Jn are not intersected. Therefore, using substitution x~[j] = 1 - x[j] leads to the partitioning equality in generalized format:</p>
1472814728 * <p>#include \"glpnpp.h\" void npp_leq_row(NPP *npp, NPPROW *p);</p>
1472914729 * <p>DESCRIPTION</p>
1473014730 * <p>The routine npp_leq_row processes row p, which is 'not greater than' inequality constraint:</p>
14731 * <p>(L[p] <=) sum a[p,j] x[j] <= U[p], (1) j</p>
14732 * <p>where L[p] < U[p], and lower bound may not exist (L[p] = +oo).</p>
14731 * <p>(L[p] &lt;=) sum a[p,j] x[j] &lt;= U[p], (1) j</p>
14732 * <p>where L[p] &lt; U[p], and lower bound may not exist (L[p] = +oo).</p>
1473314733 * <p>PROBLEM TRANSFORMATION</p>
1473414734 * <p>Constraint (1) can be replaced by equality constraint:</p>
1473514735 * <p>sum a[p,j] x[j] + s = L[p], (2) j</p>
1473614736 * <p>where</p>
14737 * <p>0 <= s (<= U[p] - L[p]) (3)</p>
14737 * <p>0 &lt;= s (&lt;= U[p] - L[p]) (3)</p>
1473814738 * <p>is a non-negative slack variable.</p>
1473914739 * <p>Since in the primal system there appears column s having the only non-zero coefficient in row p, in the dual system there appears a new row:</p>
1474014740 * <p>(+1) pi[p] + lambda = 0, (4)</p>
1478414784 * <p>#include \"glpnpp.h\" void npp_ubnd_col(NPP *npp, NPPCOL *q);</p>
1478514785 * <p>DESCRIPTION</p>
1478614786 * <p>The routine npp_ubnd_col processes column q, which has upper bound:</p>
14787 * <p>(l[q] <=) x[q] <= u[q], (1)</p>
14788 * <p>where l[q] < u[q], and lower bound may not exist (l[q] = -oo).</p>
14787 * <p>(l[q] &lt;=) x[q] &lt;= u[q], (1)</p>
14788 * <p>where l[q] &lt; u[q], and lower bound may not exist (l[q] = -oo).</p>
1478914789 * <p>PROBLEM TRANSFORMATION</p>
1479014790 * <p>Column q can be replaced as follows:</p>
1479114791 * <p>x[q] = u[q] - s, (2)</p>
1479214792 * <p>where</p>
14793 * <p>0 <= s (<= u[q] - l[q]) (3)</p>
14793 * <p>0 &lt;= s (&lt;= u[q] - l[q]) (3)</p>
1479414794 * <p>is a non-negative variable.</p>
1479514795 * <p>Substituting x[q] from (2) into the objective row, we have:</p>
1479614796 * <p>z = sum c[j] x[j] + c0 = j</p>
1480014800 * <p>where</p>
1480114801 * <p>c~0 = c0 + c[q] u[q] (4)</p>
1480214802 * <p>is the constant term of the objective in the transformed problem. Similarly, substituting x[q] into constraint row i, we have:</p>
14803 * <p>L[i] <= sum a[i,j] x[j] <= U[i] ==> j</p>
14804 * <p>L[i] <= sum a[i,j] x[j] + a[i,q] x[q] <= U[i] ==> j!=q</p>
14805 * <p>L[i] <= sum a[i,j] x[j] + a[i,q] (u[q] - s) <= U[i] ==> j!=q</p>
14806 * <p>L~[i] <= sum a[i,j] x[j] - a[i,q] s <= U~[i], j!=q</p>
14803 * <p>L[i] &lt;= sum a[i,j] x[j] &lt;= U[i] ==&gt; j</p>
14804 * <p>L[i] &lt;= sum a[i,j] x[j] + a[i,q] x[q] &lt;= U[i] ==&gt; j!=q</p>
14805 * <p>L[i] &lt;= sum a[i,j] x[j] + a[i,q] (u[q] - s) &lt;= U[i] ==&gt; j!=q</p>
14806 * <p>L~[i] &lt;= sum a[i,j] x[j] - a[i,q] s &lt;= U~[i], j!=q</p>
1480714807 * <p>where</p>
1480814808 * <p>L~[i] = L[i] - a[i,q] u[q], U~[i] = U[i] - a[i,q] u[q] (5)</p>
1480914809 * <p>are lower and upper bounds of row i in the transformed problem, resp.</p>
1487714877 * <p>#include \"glpnpp.h\" void npp_implied_bounds(NPP *npp, NPPROW *p);</p>
1487814878 * <p>DESCRIPTION</p>
1487914879 * <p>The routine npp_implied_bounds inspects general row (constraint) p:</p>
14880 * <p>L[p] <= sum a[p,j] x[j] <= U[p], (1)</p>
14881 * <p>l[j] <= x[j] <= u[j], (2)</p>
14882 * <p>where L[p] <= U[p] and l[j] <= u[j] for all a[p,j] != 0, to compute implied bounds of columns (variables x[j]) in this row.</p>
14880 * <p>L[p] &lt;= sum a[p,j] x[j] &lt;= U[p], (1)</p>
14881 * <p>l[j] &lt;= x[j] &lt;= u[j], (2)</p>
14882 * <p>where L[p] &lt;= U[p] and l[j] &lt;= u[j] for all a[p,j] != 0, to compute implied bounds of columns (variables x[j]) in this row.</p>
1488314883 * <p>The routine stores implied column bounds l'[j] and u'[j] in column descriptors (NPPCOL); it does not change current column bounds l[j] and u[j]. (Implied column bounds can be then used to strengthen the current column bounds; see the routines npp_implied_lower and npp_implied_upper).</p>
1488414884 * <p>ALGORITHM</p>
1488514885 * <p>Current column bounds (2) define implied lower and upper bounds of row (1) as follows:</p>
1488614886 * <p>L'[p] = inf sum a[p,j] x[j] = j (3) = sum a[p,j] l[j] + sum a[p,j] u[j], j in Jp j in Jn</p>
1488714887 * <p>U'[p] = sup sum a[p,j] x[j] = (4) = sum a[p,j] u[j] + sum a[p,j] l[j], j in Jp j in Jn</p>
14888 * <p>Jp = {j: a[p,j] > 0}, Jn = {j: a[p,j] < 0}. (5)</p>
14889 * <p>(Note that bounds of all columns in row p are assumed to be correct, so L'[p] <= U'[p].)</p>
14890 * <p>If L[p] > L'[p] and/or U[p] < U'[p], the lower and/or upper bound of row (1) can be active, in which case such row defines implied bounds of its variables.</p>
14891 * <p>Let x[k] be some variable having in row (1) coefficient a[p,k] != 0. Consider a case when row lower bound can be active (L[p] > L'[p]):</p>
14892 * <p>sum a[p,j] x[j] >= L[p] ==> j</p>
14893 * <p>sum a[p,j] x[j] + a[p,k] x[k] >= L[p] ==> j!=k (6) a[p,k] x[k] >= L[p] - sum a[p,j] x[j] ==> j!=k</p>
14894 * <p>a[p,k] x[k] >= L[p,k],</p>
14888 * <p>Jp = {j: a[p,j] &gt; 0}, Jn = {j: a[p,j] &lt; 0}. (5)</p>
14889 * <p>(Note that bounds of all columns in row p are assumed to be correct, so L'[p] &lt;= U'[p].)</p>
14890 * <p>If L[p] &gt; L'[p] and/or U[p] &lt; U'[p], the lower and/or upper bound of row (1) can be active, in which case such row defines implied bounds of its variables.</p>
14891 * <p>Let x[k] be some variable having in row (1) coefficient a[p,k] != 0. Consider a case when row lower bound can be active (L[p] &gt; L'[p]):</p>
14892 * <p>sum a[p,j] x[j] &gt;= L[p] ==&gt; j</p>
14893 * <p>sum a[p,j] x[j] + a[p,k] x[k] &gt;= L[p] ==&gt; j!=k (6) a[p,k] x[k] &gt;= L[p] - sum a[p,j] x[j] ==&gt; j!=k</p>
14894 * <p>a[p,k] x[k] &gt;= L[p,k],</p>
1489514895 * <p>where</p>
1489614896 * <p>L[p,k] = inf(L[p] - sum a[p,j] x[j]) = j!=k</p>
1489714897 * <p>= L[p] - sup sum a[p,j] x[j] = (7) j!=k</p>
1489814898 * <p>= L[p] - sum a[p,j] u[j] - sum a[p,j] l[j]. j in Jpk} j in Jnk}</p>
1489914899 * <p>Thus:</p>
14900 * <p>x[k] >= l'[k] = L[p,k] / a[p,k], if a[p,k] > 0, (8)</p>
14901 * <p>x[k] <= u'[k] = L[p,k] / a[p,k], if a[p,k] < 0. (9)</p>
14900 * <p>x[k] &gt;= l'[k] = L[p,k] / a[p,k], if a[p,k] &gt; 0, (8)</p>
14901 * <p>x[k] &lt;= u'[k] = L[p,k] / a[p,k], if a[p,k] &lt; 0. (9)</p>
1490214902 * <p>where l'[k] and u'[k] are implied lower and upper bounds of variable x[k], resp.</p>
14903 * <p>Now consider a similar case when row upper bound can be active (U[p] < U'[p]):</p>
14904 * <p>sum a[p,j] x[j] <= U[p] ==> j</p>
14905 * <p>sum a[p,j] x[j] + a[p,k] x[k] <= U[p] ==> j!=k (10) a[p,k] x[k] <= U[p] - sum a[p,j] x[j] ==> j!=k</p>
14906 * <p>a[p,k] x[k] <= U[p,k],</p>
14903 * <p>Now consider a similar case when row upper bound can be active (U[p] &lt; U'[p]):</p>
14904 * <p>sum a[p,j] x[j] &lt;= U[p] ==&gt; j</p>
14905 * <p>sum a[p,j] x[j] + a[p,k] x[k] &lt;= U[p] ==&gt; j!=k (10) a[p,k] x[k] &lt;= U[p] - sum a[p,j] x[j] ==&gt; j!=k</p>
14906 * <p>a[p,k] x[k] &lt;= U[p,k],</p>
1490714907 * <p>where:</p>
1490814908 * <p>U[p,k] = sup(U[p] - sum a[p,j] x[j]) = j!=k</p>
1490914909 * <p>= U[p] - inf sum a[p,j] x[j] = (11) j!=k</p>
1491014910 * <p>= U[p] - sum a[p,j] l[j] - sum a[p,j] u[j]. j in Jpk} j in Jnk}</p>
1491114911 * <p>Thus:</p>
14912 * <p>x[k] <= u'[k] = U[p,k] / a[p,k], if a[p,k] > 0, (12)</p>
14913 * <p>x[k] >= l'[k] = U[p,k] / a[p,k], if a[p,k] < 0. (13)</p>
14912 * <p>x[k] &lt;= u'[k] = U[p,k] / a[p,k], if a[p,k] &gt; 0, (12)</p>
14913 * <p>x[k] &gt;= l'[k] = U[p,k] / a[p,k], if a[p,k] &lt; 0. (13)</p>
1491414914 * <p>Note that in formulae (8), (9), (12), and (13) coefficient a[p,k] must not be too small in magnitude relatively to other non-zero coefficients in row (1), i.e. the following condition must hold:</p>
14915 * <p>|a[p,k]| >= eps * max(1, |a[p,j]|), (14) j</p>
14915 * <p>|a[p,k]| &gt;= eps * max(1, |a[p,j]|), (14) j</p>
1491614916 * <p>where eps is a relative tolerance for constraint coefficients. Otherwise the implied column bounds can be numerical inreliable. For example, using formula (8) for the following inequality constraint:</p>
14917 * <p>1e-12 x1 - x2 - x3 >= 0,</p>
14918 * <p>where x1 >= -1, x2, x3, >= 0, may lead to numerically unreliable conclusion that x1 >= 0.</p>
14917 * <p>1e-12 x1 - x2 - x3 &gt;= 0,</p>
14918 * <p>where x1 &gt;= -1, x2, x3, &gt;= 0, may lead to numerically unreliable conclusion that x1 &gt;= 0.</p>
1491914919 * <p>Using formulae (8), (9), (12), and (13) to compute implied bounds for one variable requires |J| operations, where J = {j: a[p,j] != 0}, because this needs computing L[p,k] and U[p,k]. Thus, computing implied bounds for all variables in row (1) would require |J|^2 operations, that is not a good technique. However, the total number of operations can be reduced to |J| as follows.</p>
14920 * <p>Let a[p,k] > 0. Then from (7) and (11) we have:</p>
14920 * <p>Let a[p,k] &gt; 0. Then from (7) and (11) we have:</p>
1492114921 * <p>L[p,k] = L[p] - (U'[p] - a[p,k] u[k]) =</p>
1492214922 * <p>= L[p] - U'[p] + a[p,k] u[k],</p>
1492314923 * <p>U[p,k] = U[p] - (L'[p] - a[p,k] l[k]) =</p>
1492514925 * <p>where L'[p] and U'[p] are implied row lower and upper bounds defined by formulae (3) and (4). Substituting these expressions into (8) and (12) gives:</p>
1492614926 * <p>l'[k] = L[p,k] / a[p,k] = u[k] + (L[p] - U'[p]) / a[p,k], (15)</p>
1492714927 * <p>u'[k] = U[p,k] / a[p,k] = l[k] + (U[p] - L'[p]) / a[p,k]. (16)</p>
14928 * <p>Similarly, if a[p,k] < 0, according to (7) and (11) we have:</p>
14928 * <p>Similarly, if a[p,k] &lt; 0, according to (7) and (11) we have:</p>
1492914929 * <p>L[p,k] = L[p] - (U'[p] - a[p,k] l[k]) =</p>
1493014930 * <p>= L[p] - U'[p] + a[p,k] l[k],</p>
1493114931 * <p>U[p,k] = U[p] - (L'[p] - a[p,k] u[k]) =</p>
1493314933 * <p>and substituting these expressions into (8) and (12) gives:</p>
1493414934 * <p>l'[k] = U[p,k] / a[p,k] = u[k] + (U[p] - L'[p]) / a[p,k], (17)</p>
1493514935 * <p>u'[k] = L[p,k] / a[p,k] = l[k] + (L[p] - U'[p]) / a[p,k]. (18)</p>
14936 * <p>Note that formulae (15)-(18) can be used only if L'[p] and U'[p] exist. However, if for some variable x[j] it happens that l[j] = -oo and/or u[j] = +oo, values of L'[p] (if a[p,j] > 0) and/or U'[p] (if a[p,j] < 0) are undefined. Consider, therefore, the most general situation, when some column bounds (2) may not exist.</p>
14936 * <p>Note that formulae (15)-(18) can be used only if L'[p] and U'[p] exist. However, if for some variable x[j] it happens that l[j] = -oo and/or u[j] = +oo, values of L'[p] (if a[p,j] &gt; 0) and/or U'[p] (if a[p,j] &lt; 0) are undefined. Consider, therefore, the most general situation, when some column bounds (2) may not exist.</p>
1493714937 * <p>Let:</p>
14938 * <p>J' = {j : (a[p,j] > 0 and l[j] = -oo) or (19) (a[p,j] < 0 and u[j] = +oo)}.</p>
14938 * <p>J' = {j : (a[p,j] &gt; 0 and l[j] = -oo) or (19) (a[p,j] &lt; 0 and u[j] = +oo)}.</p>
1493914939 * <p>Then (assuming that row upper bound U[p] can be active) the following three cases are possible:</p>
1494014940 * <p>1) |J'| = 0. In this case L'[p] exists, thus, for all variables x[j] in row (1) we can use formulae (16) and (17);</p>
14941 * <p>2) J' = {k}. In this case L'[p] = -oo, however, U[p,k] (11) exists, so for variable x[k] we can use formulae (12) and (13). Note that for all other variables x[j] (j != k) l'[j] = -oo (if a[p,j] < 0) or u'[j] = +oo (if a[p,j] > 0);</p>
14942 * <p>3) |J'| > 1. In this case for all variables x[j] in row [1] we have l'[j] = -oo (if a[p,j] < 0) or u'[j] = +oo (if a[p,j] > 0).</p>
14941 * <p>2) J' = {k}. In this case L'[p] = -oo, however, U[p,k] (11) exists, so for variable x[k] we can use formulae (12) and (13). Note that for all other variables x[j] (j != k) l'[j] = -oo (if a[p,j] &lt; 0) or u'[j] = +oo (if a[p,j] &gt; 0);</p>
14942 * <p>3) |J'| &gt; 1. In this case for all variables x[j] in row [1] we have l'[j] = -oo (if a[p,j] &lt; 0) or u'[j] = +oo (if a[p,j] &gt; 0).</p>
1494314943 * <p>Similarly, let:</p>
14944 * <p>J'' = {j : (a[p,j] > 0 and u[j] = +oo) or (20) (a[p,j] < 0 and l[j] = -oo)}.</p>
14944 * <p>J'' = {j : (a[p,j] &gt; 0 and u[j] = +oo) or (20) (a[p,j] &lt; 0 and l[j] = -oo)}.</p>
1494514945 * <p>Then (assuming that row lower bound L[p] can be active) the following three cases are possible:</p>
1494614946 * <p>1) |J''| = 0. In this case U'[p] exists, thus, for all variables x[j] in row (1) we can use formulae (15) and (18);</p>
14947 * <p>2) J'' = {k}. In this case U'[p] = +oo, however, L[p,k] (7) exists, so for variable x[k] we can use formulae (8) and (9). Note that for all other variables x[j] (j != k) l'[j] = -oo (if a[p,j] > 0) or u'[j] = +oo (if a[p,j] < 0);</p>
14948 * <p>3) |J''| > 1. In this case for all variables x[j] in row (1) we have l'[j] = -oo (if a[p,j] > 0) or u'[j] = +oo (if a[p,j] < 0). </p>
14947 * <p>2) J'' = {k}. In this case U'[p] = +oo, however, L[p,k] (7) exists, so for variable x[k] we can use formulae (8) and (9). Note that for all other variables x[j] (j != k) l'[j] = -oo (if a[p,j] &gt; 0) or u'[j] = +oo (if a[p,j] &lt; 0);</p>
14948 * <p>3) |J''| &gt; 1. In this case for all variables x[j] in row (1) we have l'[j] = -oo (if a[p,j] &gt; 0) or u'[j] = +oo (if a[p,j] &lt; 0). </p>
1494914949 */
1495014950 public";
1495114951
1495614956 * <p>#include \"glpnpp.h\" int npp_empty_row(NPP *npp, NPPROW *p);</p>
1495714957 * <p>DESCRIPTION</p>
1495814958 * <p>The routine npp_empty_row processes row p, which is empty, i.e. coefficients at all columns in this row are zero:</p>
14959 * <p>L[p] <= sum 0 x[j] <= U[p], (1)</p>
14960 * <p>where L[p] <= U[p].</p>
14959 * <p>L[p] &lt;= sum 0 x[j] &lt;= U[p], (1)</p>
14960 * <p>where L[p] &lt;= U[p].</p>
1496114961 * <p>RETURNS</p>
1496214962 * <p>0 - success;</p>
1496314963 * <p>1 - problem has no primal feasible solution.</p>
1496414964 * <p>PROBLEM TRANSFORMATION</p>
1496514965 * <p>If the following conditions hold:</p>
14966 * <p>L[p] <= +eps, U[p] >= -eps, (2)</p>
14966 * <p>L[p] &lt;= +eps, U[p] &gt;= -eps, (2)</p>
1496714967 * <p>where eps is an absolute tolerance for row value, the row p is redundant. In this case it can be replaced by equivalent redundant row, which is free (unbounded), and then removed from the problem. Otherwise, the row p is infeasible and, thus, the problem has no primal feasible solution.</p>
1496814968 * <p>RECOVERING BASIC SOLUTION</p>
1496914969 * <p>See the routine npp_free_row.</p>
1499114991 * <p>#include \"glpnpp.h\" int npp_implied_value(NPP *npp, NPPCOL *q, double s);</p>
1499214992 * <p>DESCRIPTION</p>
1499314993 * <p>For column q:</p>
14994 * <p>l[q] <= x[q] <= u[q], (1)</p>
14995 * <p>where l[q] < u[q], the routine npp_implied_value processes its implied value s[q]. If this implied value satisfies to the current column bounds and integrality condition, the routine fixes column q at the given point. Note that the column is kept in the problem in any case.</p>
14994 * <p>l[q] &lt;= x[q] &lt;= u[q], (1)</p>
14995 * <p>where l[q] &lt; u[q], the routine npp_implied_value processes its implied value s[q]. If this implied value satisfies to the current column bounds and integrality condition, the routine fixes column q at the given point. Note that the column is kept in the problem in any case.</p>
1499614996 * <p>RETURNS</p>
1499714997 * <p>0 - column has been fixed;</p>
1499814998 * <p>1 - implied value violates to current column bounds;</p>
1499914999 * <p>2 - implied value violates integrality condition.</p>
1500015000 * <p>ALGORITHM</p>
1500115001 * <p>Implied column value s[q] satisfies to the current column bounds if the following condition holds:</p>
15002 * <p>l[q] - eps <= s[q] <= u[q] + eps, (2)</p>
15002 * <p>l[q] - eps &lt;= s[q] &lt;= u[q] + eps, (2)</p>
1500315003 * <p>where eps is an absolute tolerance for column value. If the column is integral, the following condition also must hold:</p>
15004 * <p>|s[q] - floor(s[q]+0.5)| <= eps, (3)</p>
15004 * <p>|s[q] - floor(s[q]+0.5)| &lt;= eps, (3)</p>
1500515005 * <p>where floor(s[q]+0.5) is the nearest integer to s[q].</p>
1500615006 * <p>If both condition (2) and (3) are satisfied, the column can be fixed at the value s[q], or, if it is integral, at floor(s[q]+0.5). Otherwise, if s[q] violates (2) or (3), the problem has no feasible solution.</p>
1500715007 * <p>Note: If s[q] is close to l[q] or u[q], it seems to be reasonable to fix the column at its lower or upper bound, resp. rather than at the implied value. </p>
1502515025 * <p>#include \"glpnpp.h\" int npp_implied_lower(NPP *npp, NPPCOL *q, double l);</p>
1502615026 * <p>DESCRIPTION</p>
1502715027 * <p>For column q:</p>
15028 * <p>l[q] <= x[q] <= u[q], (1)</p>
15029 * <p>where l[q] < u[q], the routine npp_implied_lower processes its implied lower bound l'[q]. As the result the current column lower bound may increase. Note that the column is kept in the problem in any case.</p>
15028 * <p>l[q] &lt;= x[q] &lt;= u[q], (1)</p>
15029 * <p>where l[q] &lt; u[q], the routine npp_implied_lower processes its implied lower bound l'[q]. As the result the current column lower bound may increase. Note that the column is kept in the problem in any case.</p>
1503015030 * <p>RETURNS</p>
1503115031 * <p>0 - current column lower bound has not changed;</p>
1503215032 * <p>1 - current column lower bound has changed, but not significantly;</p>
1503515035 * <p>4 - implied lower bound violates current column upper bound.</p>
1503615036 * <p>ALGORITHM</p>
1503715037 * <p>If column q is integral, before processing its implied lower bound should be rounded up:</p>
15038 * <p>( floor(l'[q]+0.5), if |l'[q] - floor(l'[q]+0.5)| <= eps l'[q] := < (2) ( ceil(l'[q]), otherwise</p>
15038 * <p>( floor(l'[q]+0.5), if |l'[q] - floor(l'[q]+0.5)| &lt;= eps l'[q] := &lt; (2) ( ceil(l'[q]), otherwise</p>
1503915039 * <p>where floor(l'[q]+0.5) is the nearest integer to l'[q], ceil(l'[q]) is smallest integer not less than l'[q], and eps is an absolute tolerance for column value.</p>
1504015040 * <p>Processing implied column lower bound l'[q] includes the following cases:</p>
15041 * <p>1) if l'[q] < l[q] + eps, implied lower bound is redundant;</p>
15042 * <p>2) if l[q] + eps <= l[q] <= u[q] + eps, current column lower bound l[q] can be strengthened by replacing it with l'[q]. If in this case new column lower bound becomes close to current column upper bound u[q], the column can be fixed on its upper bound;</p>
15043 * <p>3) if l'[q] > u[q] + eps, implied lower bound violates current column upper bound u[q], in which case the problem has no primal feasible solution. </p>
15041 * <p>1) if l'[q] &lt; l[q] + eps, implied lower bound is redundant;</p>
15042 * <p>2) if l[q] + eps &lt;= l[q] &lt;= u[q] + eps, current column lower bound l[q] can be strengthened by replacing it with l'[q]. If in this case new column lower bound becomes close to current column upper bound u[q], the column can be fixed on its upper bound;</p>
15043 * <p>3) if l'[q] &gt; u[q] + eps, implied lower bound violates current column upper bound u[q], in which case the problem has no primal feasible solution. </p>
1504415044 */
1504515045 public";
1504615046
1505115051 * <p>#include \"glpnpp.h\" int npp_implied_upper(NPP *npp, NPPCOL *q, double u);</p>
1505215052 * <p>DESCRIPTION</p>
1505315053 * <p>For column q:</p>
15054 * <p>l[q] <= x[q] <= u[q], (1)</p>
15055 * <p>where l[q] < u[q], the routine npp_implied_upper processes its implied upper bound u'[q]. As the result the current column upper bound may decrease. Note that the column is kept in the problem in any case.</p>
15054 * <p>l[q] &lt;= x[q] &lt;= u[q], (1)</p>
15055 * <p>where l[q] &lt; u[q], the routine npp_implied_upper processes its implied upper bound u'[q]. As the result the current column upper bound may decrease. Note that the column is kept in the problem in any case.</p>
1505615056 * <p>RETURNS</p>
1505715057 * <p>0 - current column upper bound has not changed;</p>
1505815058 * <p>1 - current column upper bound has changed, but not significantly;</p>
1506115061 * <p>4 - implied upper bound violates current column lower bound.</p>
1506215062 * <p>ALGORITHM</p>
1506315063 * <p>If column q is integral, before processing its implied upper bound should be rounded down:</p>
15064 * <p>( floor(u'[q]+0.5), if |u'[q] - floor(l'[q]+0.5)| <= eps u'[q] := < (2) ( floor(l'[q]), otherwise</p>
15064 * <p>( floor(u'[q]+0.5), if |u'[q] - floor(l'[q]+0.5)| &lt;= eps u'[q] := &lt; (2) ( floor(l'[q]), otherwise</p>
1506515065 * <p>where floor(u'[q]+0.5) is the nearest integer to u'[q], floor(u'[q]) is largest integer not greater than u'[q], and eps is an absolute tolerance for column value.</p>
1506615066 * <p>Processing implied column upper bound u'[q] includes the following cases:</p>
15067 * <p>1) if u'[q] > u[q] - eps, implied upper bound is redundant;</p>
15068 * <p>2) if l[q] - eps <= u[q] <= u[q] - eps, current column upper bound u[q] can be strengthened by replacing it with u'[q]. If in this case new column upper bound becomes close to current column lower bound, the column can be fixed on its lower bound;</p>
15069 * <p>3) if u'[q] < l[q] - eps, implied upper bound violates current column lower bound l[q], in which case the problem has no primal feasible solution. </p>
15067 * <p>1) if u'[q] &gt; u[q] - eps, implied upper bound is redundant;</p>
15068 * <p>2) if l[q] - eps &lt;= u[q] &lt;= u[q] - eps, current column upper bound u[q] can be strengthened by replacing it with u'[q]. If in this case new column upper bound becomes close to current column lower bound, the column can be fixed on its lower bound;</p>
15069 * <p>3) if u'[q] &lt; l[q] - eps, implied upper bound violates current column lower bound l[q], in which case the problem has no primal feasible solution. </p>
1507015070 */
1507115071 public";
1507215072
1512715127 * <p>#include \"glpnpp.h\" int npp_analyze_row(NPP *npp, NPPROW *p);</p>
1512815128 * <p>DESCRIPTION</p>
1512915129 * <p>The routine npp_analyze_row performs analysis of row p of general format:</p>
15130 * <p>L[p] <= sum a[p,j] x[j] <= U[p], (1) j</p>
15131 * <p>l[j] <= x[j] <= u[j], (2)</p>
15132 * <p>where L[p] <= U[p] and l[j] <= u[j] for all a[p,j] != 0.</p>
15130 * <p>L[p] &lt;= sum a[p,j] x[j] &lt;= U[p], (1) j</p>
15131 * <p>l[j] &lt;= x[j] &lt;= u[j], (2)</p>
15132 * <p>where L[p] &lt;= U[p] and l[j] &lt;= u[j] for all a[p,j] != 0.</p>
1513315133 * <p>RETURNS</p>
1513415134 * <p>0x?0 - row lower bound does not exist or is redundant;</p>
1513515135 * <p>0x?1 - row lower bound can be active;</p>
1514215142 * <p>Analysis of row (1) is based on analysis of its implied lower and upper bounds, which are determined by bounds of corresponding columns (variables) as follows:</p>
1514315143 * <p>L'[p] = inf sum a[p,j] x[j] = j (3) = sum a[p,j] l[j] + sum a[p,j] u[j], j in Jp j in Jn</p>
1514415144 * <p>U'[p] = sup sum a[p,j] x[j] = (4) = sum a[p,j] u[j] + sum a[p,j] l[j], j in Jp j in Jn</p>
15145 * <p>Jp = {j: a[p,j] > 0}, Jn = {j: a[p,j] < 0}. (5)</p>
15146 * <p>(Note that bounds of all columns in row p are assumed to be correct, so L'[p] <= U'[p].)</p>
15145 * <p>Jp = {j: a[p,j] &gt; 0}, Jn = {j: a[p,j] &lt; 0}. (5)</p>
15146 * <p>(Note that bounds of all columns in row p are assumed to be correct, so L'[p] &lt;= U'[p].)</p>
1514715147 * <p>Analysis of row lower bound L[p] includes the following cases:</p>
15148 * <p>1) if L[p] > U'[p] + eps, where eps is an absolute tolerance for row value, row lower bound L[p] and implied row upper bound U'[p] are inconsistent, ergo, the problem has no primal feasible solution;</p>
15149 * <p>2) if U'[p] - eps <= L[p] <= U'[p] + eps, i.e. if L[p] =~ U'[p], the row is a forcing row on its lower bound (see description of the routine npp_forcing_row);</p>
15150 * <p>3) if L[p] > L'[p] + eps, row lower bound L[p] can be active (this conclusion does not account other rows in the problem);</p>
15151 * <p>4) if L[p] <= L'[p] + eps, row lower bound L[p] cannot be active, so it is redundant and can be removed (replaced by -oo).</p>
15148 * <p>1) if L[p] &gt; U'[p] + eps, where eps is an absolute tolerance for row value, row lower bound L[p] and implied row upper bound U'[p] are inconsistent, ergo, the problem has no primal feasible solution;</p>
15149 * <p>2) if U'[p] - eps &lt;= L[p] &lt;= U'[p] + eps, i.e. if L[p] =~ U'[p], the row is a forcing row on its lower bound (see description of the routine npp_forcing_row);</p>
15150 * <p>3) if L[p] &gt; L'[p] + eps, row lower bound L[p] can be active (this conclusion does not account other rows in the problem);</p>
15151 * <p>4) if L[p] &lt;= L'[p] + eps, row lower bound L[p] cannot be active, so it is redundant and can be removed (replaced by -oo).</p>
1515215152 * <p>Analysis of row upper bound U[p] is performed in a similar way and includes the following cases:</p>
15153 * <p>1) if U[p] < L'[p] - eps, row upper bound U[p] and implied row lower bound L'[p] are inconsistent, ergo the problem has no primal feasible solution;</p>
15154 * <p>2) if L'[p] - eps <= U[p] <= L'[p] + eps, i.e. if U[p] =~ L'[p], the row is a forcing row on its upper bound (see description of the routine npp_forcing_row);</p>
15155 * <p>3) if U[p] < U'[p] - eps, row upper bound U[p] can be active (this conclusion does not account other rows in the problem);</p>
15156 * <p>4) if U[p] >= U'[p] - eps, row upper bound U[p] cannot be active, so it is redundant and can be removed (replaced by +oo). </p>
15153 * <p>1) if U[p] &lt; L'[p] - eps, row upper bound U[p] and implied row lower bound L'[p] are inconsistent, ergo the problem has no primal feasible solution;</p>
15154 * <p>2) if L'[p] - eps &lt;= U[p] &lt;= L'[p] + eps, i.e. if U[p] =~ L'[p], the row is a forcing row on its upper bound (see description of the routine npp_forcing_row);</p>
15155 * <p>3) if U[p] &lt; U'[p] - eps, row upper bound U[p] can be active (this conclusion does not account other rows in the problem);</p>
15156 * <p>4) if U[p] &gt;= U'[p] - eps, row upper bound U[p] cannot be active, so it is redundant and can be removed (replaced by +oo). </p>
1515715157 */
1515815158 public";
1515915159
1517815178 * <p>The routine npp_reduce_ineq_coef returns the number of coefficients reduced.</p>
1517915179 * <p>BACKGROUND</p>
1518015180 * <p>Consider an inequality constraint:</p>
15181 * <p>sum a[j] x[j] >= b. (1) j in J</p>
15182 * <p>(In case of '<=' inequality it can be transformed to '>=' format by multiplying both its sides by -1.) Let x[k] be a binary variable; other variables can be integer as well as continuous. We can write constraint (1) as follows:</p>
15183 * <p>a[k] x[k] + t[k] >= b, (2)</p>
15181 * <p>sum a[j] x[j] &gt;= b. (1) j in J</p>
15182 * <p>(In case of '&lt;=' inequality it can be transformed to '&gt;=' format by multiplying both its sides by -1.) Let x[k] be a binary variable; other variables can be integer as well as continuous. We can write constraint (1) as follows:</p>
15183 * <p>a[k] x[k] + t[k] &gt;= b, (2)</p>
1518415184 * <p>where:</p>
1518515185 * <p>t[k] = sum a[j] x[j]. (3) j in Jk}</p>
1518615186 * <p>Since x[k] is binary, constraint (2) is equivalent to disjunction of the following two constraints:</p>
15187 * <p>x[k] = 0, t[k] >= b (4)</p>
15187 * <p>x[k] = 0, t[k] &gt;= b (4)</p>
1518815188 * <p>OR</p>
15189 * <p>x[k] = 1, t[k] >= b - a[k]. (5)</p>
15189 * <p>x[k] = 1, t[k] &gt;= b - a[k]. (5)</p>
1519015190 * <p>Let also that for the partial sum t[k] be known some its implied lower bound inf t[k].</p>
15191 * <p>Case a[k] > 0. Let inf t[k] < b, since otherwise both constraints (4) and (5) and therefore constraint (2) are redundant. If inf t[k] > b - a[k], only constraint (5) is redundant, in which case it can be replaced with the following redundant and therefore equivalent constraint:</p>
15192 * <p>t[k] >= b - a'[k] = inf t[k], (6)</p>
15191 * <p>Case a[k] &gt; 0. Let inf t[k] &lt; b, since otherwise both constraints (4) and (5) and therefore constraint (2) are redundant. If inf t[k] &gt; b - a[k], only constraint (5) is redundant, in which case it can be replaced with the following redundant and therefore equivalent constraint:</p>
15192 * <p>t[k] &gt;= b - a'[k] = inf t[k], (6)</p>
1519315193 * <p>where:</p>
1519415194 * <p>a'[k] = b - inf t[k]. (7)</p>
1519515195 * <p>Thus, the original constraint (2) is equivalent to the following constraint with coefficient at variable x[k] changed:</p>
15196 * <p>a'[k] x[k] + t[k] >= b. (8)</p>
15197 * <p>From inf t[k] < b it follows that a'[k] > 0, i.e. the coefficient at x[k] keeps its sign. And from inf t[k] > b - a[k] it follows that a'[k] < a[k], i.e. the coefficient reduces in magnitude.</p>
15198 * <p>Case a[k] < 0. Let inf t[k] < b - a[k], since otherwise both constraints (4) and (5) and therefore constraint (2) are redundant. If inf t[k] > b, only constraint (4) is redundant, in which case it can be replaced with the following redundant and therefore equivalent constraint:</p>
15199 * <p>t[k] >= b' = inf t[k]. (9)</p>
15196 * <p>a'[k] x[k] + t[k] &gt;= b. (8)</p>
15197 * <p>From inf t[k] &lt; b it follows that a'[k] &gt; 0, i.e. the coefficient at x[k] keeps its sign. And from inf t[k] &gt; b - a[k] it follows that a'[k] &lt; a[k], i.e. the coefficient reduces in magnitude.</p>
15198 * <p>Case a[k] &lt; 0. Let inf t[k] &lt; b - a[k], since otherwise both constraints (4) and (5) and therefore constraint (2) are redundant. If inf t[k] &gt; b, only constraint (4) is redundant, in which case it can be replaced with the following redundant and therefore equivalent constraint:</p>
15199 * <p>t[k] &gt;= b' = inf t[k]. (9)</p>
1520015200 * <p>Rewriting constraint (5) as follows:</p>
15201 * <p>t[k] >= b - a[k] = b' - a'[k], (10)</p>
15201 * <p>t[k] &gt;= b - a[k] = b' - a'[k], (10)</p>
1520215202 * <p>where:</p>
1520315203 * <p>a'[k] = a[k] + b' - b = a[k] + inf t[k] - b, (11)</p>
1520415204 * <p>we can see that disjunction of constraint (9) and (10) is equivalent to disjunction of constraint (4) and (5), from which it follows that the original constraint (2) is equivalent to the following constraint with both coefficient at variable x[k] and right-hand side changed:</p>
15205 * <p>a'[k] x[k] + t[k] >= b'. (12)</p>
15206 * <p>From inf t[k] < b - a[k] it follows that a'[k] < 0, i.e. the coefficient at x[k] keeps its sign. And from inf t[k] > b it follows that a'[k] > a[k], i.e. the coefficient reduces in magnitude.</p>
15205 * <p>a'[k] x[k] + t[k] &gt;= b'. (12)</p>
15206 * <p>From inf t[k] &lt; b - a[k] it follows that a'[k] &lt; 0, i.e. the coefficient at x[k] keeps its sign. And from inf t[k] &gt; b it follows that a'[k] &gt; a[k], i.e. the coefficient reduces in magnitude.</p>
1520715207 * <p>PROBLEM TRANSFORMATION</p>
1520815208 * <p>In the routine npp_reduce_ineq_coef the following implied lower bound of the partial sum (3) is used:</p>
1520915209 * <p>inf t[k] = sum a[j] l[j] + sum a[j] u[j], (13) j in Jpk} k in Jnk}</p>
15210 * <p>where Jp = {j : a[j] > 0}, Jn = {j : a[j] < 0}, l[j] and u[j] are lower and upper bounds, resp., of variable x[j].</p>
15210 * <p>where Jp = {j : a[j] &gt; 0}, Jn = {j : a[j] &lt; 0}, l[j] and u[j] are lower and upper bounds, resp., of variable x[j].</p>
1521115211 * <p>In order to compute inf t[k] more efficiently, the following formula, which is equivalent to (13), is actually used:</p>
15212 * <p>( h - a[k] l[k] = h, if a[k] > 0, inf t[k] = < (14) ( h - a[k] u[k] = h - a[k], if a[k] < 0,</p>
15212 * <p>( h - a[k] l[k] = h, if a[k] &gt; 0, inf t[k] = &lt; (14) ( h - a[k] u[k] = h - a[k], if a[k] &lt; 0,</p>
1521315213 * <p>where:</p>
1521415214 * <p>h = sum a[j] l[j] + sum a[j] u[j] (15) j in Jp j in Jn</p>
1521515215 * <p>is the implied lower bound of row (1).</p>
15216 * <p>Reduction of positive coefficient (a[k] > 0) does not change value of h, since l[k] = 0. In case of reduction of negative coefficient (a[k] < 0) from (11) it follows that:</p>
15217 * <p>delta a[k] = a'[k] - a[k] = inf t[k] - b (> 0), (16)</p>
15216 * <p>Reduction of positive coefficient (a[k] &gt; 0) does not change value of h, since l[k] = 0. In case of reduction of negative coefficient (a[k] &lt; 0) from (11) it follows that:</p>
15217 * <p>delta a[k] = a'[k] - a[k] = inf t[k] - b (&gt; 0), (16)</p>
1521815218 * <p>so new value of h (accounting that u[k] = 1) can be computed as follows:</p>
1521915219 * <p>h := h + delta a[k] = h + (inf t[k] - b). (17)</p>
1522015220 * <p>RECOVERING SOLUTION</p>
1525615256 * <p>If the specified row (constraint) is packing inequality (see below), the routine npp_is_packing returns non-zero. Otherwise, it returns zero.</p>
1525715257 * <p>PACKING INEQUALITIES</p>
1525815258 * <p>In canonical format the packing inequality is the following:</p>
15259 * <p>sum x[j] <= 1, (1) j in J</p>
15260 * <p>where all variables x[j] are binary. This inequality expresses the condition that in any integer feasible solution at most one variable from set J can take non-zero (unity) value while other variables must be equal to zero. W.l.o.g. it is assumed that |J| >= 2, because if J is empty or |J| = 1, the inequality (1) is redundant.</p>
15259 * <p>sum x[j] &lt;= 1, (1) j in J</p>
15260 * <p>where all variables x[j] are binary. This inequality expresses the condition that in any integer feasible solution at most one variable from set J can take non-zero (unity) value while other variables must be equal to zero. W.l.o.g. it is assumed that |J| &gt;= 2, because if J is empty or |J| = 1, the inequality (1) is redundant.</p>
1526115261 * <p>In general case the packing inequality may include original variables x[j] as well as their complements x~[j]:</p>
15262 * <p>sum x[j] + sum x~[j] <= 1, (2) j in Jp j in Jn</p>
15262 * <p>sum x[j] + sum x~[j] &lt;= 1, (2) j in Jp j in Jn</p>
1526315263 * <p>where Jp and Jn are not intersected. Therefore, using substitution x~[j] = 1 - x[j] gives the packing inequality in generalized format:</p>
15264 * <p>sum x[j] - sum x[j] <= 1 - |Jn|. (3) j in Jp j in Jn </p>
15264 * <p>sum x[j] - sum x[j] &lt;= 1 - |Jn|. (3) j in Jp j in Jn </p>
1526515265 */
1526615266 public";
1526715267
1527615276 * <p>If the original inequality constraint was replaced by equivalent packing inequality, the routine npp_hidden_packing returns non-zero. Otherwise, it returns zero.</p>
1527715277 * <p>PROBLEM TRANSFORMATION</p>
1527815278 * <p>Consider an inequality constraint:</p>
15279 * <p>sum a[j] x[j] <= b, (1) j in J</p>
15280 * <p>where all variables x[j] are binary, and |J| >= 2. (In case of '>=' inequality it can be transformed to '<=' format by multiplying both its sides by -1.)</p>
15281 * <p>Let Jp = {j: a[j] > 0}, Jn = {j: a[j] < 0}. Performing substitution x[j] = 1 - x~[j] for all j in Jn, we have:</p>
15282 * <p>sum a[j] x[j] <= b ==> j in J</p>
15283 * <p>sum a[j] x[j] + sum a[j] x[j] <= b ==> j in Jp j in Jn</p>
15284 * <p>sum a[j] x[j] + sum a[j] (1 - x~[j]) <= b ==> j in Jp j in Jn</p>
15285 * <p>sum a[j] x[j] - sum a[j] x~[j] <= b - sum a[j]. j in Jp j in Jn j in Jn</p>
15286 * <p>Thus, meaning the transformation above, we can assume that in inequality (1) all coefficients a[j] are positive. Moreover, we can assume that a[j] <= b. In fact, let a[j] > b; then the following three cases are possible:</p>
15287 * <p>1) b < 0. In this case inequality (1) is infeasible, so the problem has no feasible solution (see the routine npp_analyze_row);</p>
15279 * <p>sum a[j] x[j] &lt;= b, (1) j in J</p>
15280 * <p>where all variables x[j] are binary, and |J| &gt;= 2. (In case of '&gt;=' inequality it can be transformed to '&lt;=' format by multiplying both its sides by -1.)</p>
15281 * <p>Let Jp = {j: a[j] &gt; 0}, Jn = {j: a[j] &lt; 0}. Performing substitution x[j] = 1 - x~[j] for all j in Jn, we have:</p>
15282 * <p>sum a[j] x[j] &lt;= b ==&gt; j in J</p>
15283 * <p>sum a[j] x[j] + sum a[j] x[j] &lt;= b ==&gt; j in Jp j in Jn</p>
15284 * <p>sum a[j] x[j] + sum a[j] (1 - x~[j]) &lt;= b ==&gt; j in Jp j in Jn</p>
15285 * <p>sum a[j] x[j] - sum a[j] x~[j] &lt;= b - sum a[j]. j in Jp j in Jn j in Jn</p>
15286 * <p>Thus, meaning the transformation above, we can assume that in inequality (1) all coefficients a[j] are positive. Moreover, we can assume that a[j] &lt;= b. In fact, let a[j] &gt; b; then the following three cases are possible:</p>
15287 * <p>1) b &lt; 0. In this case inequality (1) is infeasible, so the problem has no feasible solution (see the routine npp_analyze_row);</p>
1528815288 * <p>2) b = 0. In this case inequality (1) is a forcing inequality on its upper bound (see the routine npp_forcing row), from which it follows that all variables x[j] should be fixed at zero;</p>
15289 * <p>3) b > 0. In this case inequality (1) defines an implied zero upper bound for variable x[j] (see the routine npp_implied_bounds), from which it follows that x[j] should be fixed at zero.</p>
15289 * <p>3) b &gt; 0. In this case inequality (1) defines an implied zero upper bound for variable x[j] (see the routine npp_implied_bounds), from which it follows that x[j] should be fixed at zero.</p>
1529015290 * <p>It is assumed that all three cases listed above have been recognized by the routine npp_process_prob, which performs basic MIP processing prior to a call the routine npp_hidden_packing. So, if one of these cases occurs, we should just skip processing such constraint.</p>
15291 * <p>Thus, let 0 < a[j] <= b. Then it is obvious that constraint (1) is equivalent to packing inquality only if:</p>
15292 * <p>a[j] + a[k] > b + eps (2)</p>
15291 * <p>Thus, let 0 &lt; a[j] &lt;= b. Then it is obvious that constraint (1) is equivalent to packing inquality only if:</p>
15292 * <p>a[j] + a[k] &gt; b + eps (2)</p>
1529315293 * <p>for all j, k in J, j != k, where eps is an absolute tolerance for row (linear form) value. Checking the condition (2) for all j and k, j != k, requires time O(|J|^2). However, this time can be reduced to O(|J|), if use minimal a[j] and a[k], in which case it is sufficient to check the condition (2) only once.</p>
1529415294 * <p>Once the original inequality (1) is replaced by equivalent packing inequality, we need to perform back substitution x~[j] = 1 - x[j] for all j in Jn (see above).</p>
1529515295 * <p>RECOVERING SOLUTION</p>
1530915309 * <p>#include \"glpnpp.h\" int npp_implied_packing(NPP *npp, NPPROW *row, int which, NPPCOL *var[], char set[]);</p>
1531015310 * <p>DESCRIPTION</p>
1531115311 * <p>The routine npp_implied_packing processes specified row (constraint) of general format:</p>
15312 * <p>L <= sum a[j] x[j] <= U. (1) j</p>
15312 * <p>L &lt;= sum a[j] x[j] &lt;= U. (1) j</p>
1531315313 * <p>If which = 0, only lower bound L, which must exist, is considered, while upper bound U is ignored. Similarly, if which = 1, only upper bound U, which must exist, is considered, while lower bound L is ignored. Thus, if the specified row is a double-sided inequality or equality constraint, this routine should be called twice for both lower and upper bounds.</p>
1531415314 * <p>The routine npp_implied_packing attempts to find a non-trivial (i.e. having not less than two binary variables) packing inequality:</p>
15315 * <p>sum x[j] - sum x[j] <= 1 - |Jn|, (2) j in Jp j in Jn</p>
15315 * <p>sum x[j] - sum x[j] &lt;= 1 - |Jn|, (2) j in Jp j in Jn</p>
1531615316 * <p>which is relaxation of the constraint (1) in the sense that any solution satisfying to that constraint also satisfies to the packing inequality (2). If such relaxation exists, the routine stores pointers to descriptors of corresponding binary variables and their flags, resp., to locations var[1], var[2], ..., var[len] and set[1], set[2], ..., set[len], where set[j] = 0 means that j in Jp and set[j] = 1 means that j in Jn.</p>
1531715317 * <p>RETURNS</p>
15318 * <p>The routine npp_implied_packing returns len, which is the total number of binary variables in the packing inequality found, len >= 2. However, if the relaxation does not exist, the routine returns zero.</p>
15318 * <p>The routine npp_implied_packing returns len, which is the total number of binary variables in the packing inequality found, len &gt;= 2. However, if the relaxation does not exist, the routine returns zero.</p>
1531915319 * <p>ALGORITHM</p>
1532015320 * <p>If which = 0, the constraint coefficients (1) are multiplied by -1 and b is assigned -L; if which = 1, the constraint coefficients (1) are not changed and b is assigned +U. In both cases the specified constraint gets the following format:</p>
15321 * <p>sum a[j] x[j] <= b. (3) j</p>
15321 * <p>sum a[j] x[j] &lt;= b. (3) j</p>
1532215322 * <p>(Note that (3) is a relaxation of (1), because one of bounds L or U is ignored.)</p>
15323 * <p>Let J be set of binary variables, Kp be set of non-binary (integer or continuous) variables with a[j] > 0, and Kn be set of non-binary variables with a[j] < 0. Then the inequality (3) can be written as follows:</p>
15324 * <p>sum a[j] x[j] <= b - sum a[j] x[j] - sum a[j] x[j]. (4) j in J j in Kp j in Kn</p>
15323 * <p>Let J be set of binary variables, Kp be set of non-binary (integer or continuous) variables with a[j] &gt; 0, and Kn be set of non-binary variables with a[j] &lt; 0. Then the inequality (3) can be written as follows:</p>
15324 * <p>sum a[j] x[j] &lt;= b - sum a[j] x[j] - sum a[j] x[j]. (4) j in J j in Kp j in Kn</p>
1532515325 * <p>To get rid of non-binary variables we can replace the inequality (4) by the following relaxed inequality:</p>
15326 * <p>sum a[j] x[j] <= b~, (5) j in J</p>
15326 * <p>sum a[j] x[j] &lt;= b~, (5) j in J</p>
1532715327 * <p>where:</p>
1532815328 * <p>b~ = sup(b - sum a[j] x[j] - sum a[j] x[j]) = j in Kp j in Kn</p>
1532915329 * <p>= b - inf sum a[j] x[j] - inf sum a[j] x[j] = (6) j in Kp j in Kn</p>
1533015330 * <p>= b - sum a[j] l[j] - sum a[j] u[j]. j in Kp j in Kn</p>
1533115331 * <p>Note that if lower bound l[j] (if j in Kp) or upper bound u[j] (if j in Kn) of some non-binary variable x[j] does not exist, then formally b = +oo, in which case further analysis is not performed.</p>
15332 * <p>Let Bp = {j in J: a[j] > 0}, Bn = {j in J: a[j] < 0}. To make all the inequality coefficients in (5) positive, we replace all x[j] in Bn by their complementaries, substituting x[j] = 1 - x~[j] for all j in Bn, that gives:</p>
15333 * <p>sum a[j] x[j] - sum a[j] x~[j] <= b~ - sum a[j]. (7) j in Bp j in Bn j in Bn</p>
15332 * <p>Let Bp = {j in J: a[j] &gt; 0}, Bn = {j in J: a[j] &lt; 0}. To make all the inequality coefficients in (5) positive, we replace all x[j] in Bn by their complementaries, substituting x[j] = 1 - x~[j] for all j in Bn, that gives:</p>
15333 * <p>sum a[j] x[j] - sum a[j] x~[j] &lt;= b~ - sum a[j]. (7) j in Bp j in Bn j in Bn</p>
1533415334 * <p>This inequality is a relaxation of the original constraint (1), and it is a binary knapsack inequality. Writing it in the standard format we have:</p>
15335 * <p>sum alfa[j] z[j] <= beta, (8) j in J</p>
15336 * <p>where: ( + a[j], if j in Bp, alfa[j] = < (9) ( - a[j], if j in Bn,</p>
15337 * <p>( x[j], if j in Bp, z[j] = < (10) ( 1 - x[j], if j in Bn,</p>
15335 * <p>sum alfa[j] z[j] &lt;= beta, (8) j in J</p>
15336 * <p>where: ( + a[j], if j in Bp, alfa[j] = &lt; (9) ( - a[j], if j in Bn,</p>
15337 * <p>( x[j], if j in Bp, z[j] = &lt; (10) ( 1 - x[j], if j in Bn,</p>
1533815338 * <p>beta = b~ - sum a[j]. (11) j in Bn</p>
1533915339 * <p>In the inequality (8) all coefficients are positive, therefore, the packing relaxation to be found for this inequality is the following:</p>
15340 * <p>sum z[j] <= 1. (12) j in P</p>
15340 * <p>sum z[j] &lt;= 1. (12) j in P</p>
1534115341 * <p>It is obvious that set P within J, which we would like to find, must satisfy to the following condition:</p>
15342 * <p>alfa[j] + alfa[k] > beta + eps for all j, k in P, j != k, (13)</p>
15343 * <p>where eps is an absolute tolerance for value of the linear form. Thus, it is natural to take P = {j: alpha[j] > (beta + eps) / 2}. Moreover, if in the equality (8) there exist coefficients alfa[k], for which alfa[k] <= (beta + eps) / 2, but which, nevertheless, satisfies to the condition (13) for all j in P, *one* corresponding variable z[k] (having, for example, maximal coefficient alfa[k]) can be included in set P, that allows increasing the number of binary variables in (12) by one.</p>
15342 * <p>alfa[j] + alfa[k] &gt; beta + eps for all j, k in P, j != k, (13)</p>
15343 * <p>where eps is an absolute tolerance for value of the linear form. Thus, it is natural to take P = {j: alpha[j] &gt; (beta + eps) / 2}. Moreover, if in the equality (8) there exist coefficients alfa[k], for which alfa[k] &lt;= (beta + eps) / 2, but which, nevertheless, satisfies to the condition (13) for all j in P, *one* corresponding variable z[k] (having, for example, maximal coefficient alfa[k]) can be included in set P, that allows increasing the number of binary variables in (12) by one.</p>
1534415344 * <p>Once the set P has been built, for the inequality (12) we need to perform back substitution according to (10) in order to express it through the original binary variables. As the result of such back substitution the relaxed packing inequality get its final format (2), where Jp = J intersect Bp, and Jn = J intersect Bn. </p>
1534515345 */
1534615346 public";
1535415354 * <p>If the specified row (constraint) is covering inequality (see below), the routine npp_is_covering returns non-zero. Otherwise, it returns zero.</p>
1535515355 * <p>COVERING INEQUALITIES</p>
1535615356 * <p>In canonical format the covering inequality is the following:</p>
15357 * <p>sum x[j] >= 1, (1) j in J</p>
15358 * <p>where all variables x[j] are binary. This inequality expresses the condition that in any integer feasible solution variables in set J cannot be all equal to zero at the same time, i.e. at least one variable must take non-zero (unity) value. W.l.o.g. it is assumed that |J| >= 2, because if J is empty, the inequality (1) is infeasible, and if |J| = 1, the inequality (1) is a forcing row.</p>
15357 * <p>sum x[j] &gt;= 1, (1) j in J</p>
15358 * <p>where all variables x[j] are binary. This inequality expresses the condition that in any integer feasible solution variables in set J cannot be all equal to zero at the same time, i.e. at least one variable must take non-zero (unity) value. W.l.o.g. it is assumed that |J| &gt;= 2, because if J is empty, the inequality (1) is infeasible, and if |J| = 1, the inequality (1) is a forcing row.</p>
1535915359 * <p>In general case the covering inequality may include original variables x[j] as well as their complements x~[j]:</p>
15360 * <p>sum x[j] + sum x~[j] >= 1, (2) j in Jp j in Jn</p>
15360 * <p>sum x[j] + sum x~[j] &gt;= 1, (2) j in Jp j in Jn</p>
1536115361 * <p>where Jp and Jn are not intersected. Therefore, using substitution x~[j] = 1 - x[j] gives the packing inequality in generalized format:</p>
15362 * <p>sum x[j] - sum x[j] >= 1 - |Jn|. (3) j in Jp j in Jn</p>
15362 * <p>sum x[j] - sum x[j] &gt;= 1 - |Jn|. (3) j in Jp j in Jn</p>
1536315363 * <p>(May note that the inequality (3) cuts off infeasible solutions, where x[j] = 0 for all j in Jp and x[j] = 1 for all j in Jn.)</p>
1536415364 * <p>NOTE: If |J| = 2, the inequality (3) is equivalent to packing inequality (see the routine npp_is_packing). </p>
1536515365 */
1537615376 * <p>If the original inequality constraint was replaced by equivalent covering inequality, the routine npp_hidden_covering returns non-zero. Otherwise, it returns zero.</p>
1537715377 * <p>PROBLEM TRANSFORMATION</p>
1537815378 * <p>Consider an inequality constraint:</p>
15379 * <p>sum a[j] x[j] >= b, (1) j in J</p>
15380 * <p>where all variables x[j] are binary, and |J| >= 3. (In case of '<=' inequality it can be transformed to '>=' format by multiplying both its sides by -1.)</p>
15381 * <p>Let Jp = {j: a[j] > 0}, Jn = {j: a[j] < 0}. Performing substitution x[j] = 1 - x~[j] for all j in Jn, we have:</p>
15382 * <p>sum a[j] x[j] >= b ==> j in J</p>
15383 * <p>sum a[j] x[j] + sum a[j] x[j] >= b ==> j in Jp j in Jn</p>
15384 * <p>sum a[j] x[j] + sum a[j] (1 - x~[j]) >= b ==> j in Jp j in Jn</p>
15385 * <p>sum m a[j] x[j] - sum a[j] x~[j] >= b - sum a[j]. j in Jp j in Jn j in Jn</p>
15386 * <p>Thus, meaning the transformation above, we can assume that in inequality (1) all coefficients a[j] are positive. Moreover, we can assume that b > 0, because otherwise the inequality (1) would be redundant (see the routine npp_analyze_row). It is then obvious that constraint (1) is equivalent to covering inequality only if:</p>
15387 * <p>a[j] >= b, (2)</p>
15379 * <p>sum a[j] x[j] &gt;= b, (1) j in J</p>
15380 * <p>where all variables x[j] are binary, and |J| &gt;= 3. (In case of '&lt;=' inequality it can be transformed to '&gt;=' format by multiplying both its sides by -1.)</p>
15381 * <p>Let Jp = {j: a[j] &gt; 0}, Jn = {j: a[j] &lt; 0}. Performing substitution x[j] = 1 - x~[j] for all j in Jn, we have:</p>
15382 * <p>sum a[j] x[j] &gt;= b ==&gt; j in J</p>
15383 * <p>sum a[j] x[j] + sum a[j] x[j] &gt;= b ==&gt; j in Jp j in Jn</p>
15384 * <p>sum a[j] x[j] + sum a[j] (1 - x~[j]) &gt;= b ==&gt; j in Jp j in Jn</p>
15385 * <p>sum m a[j] x[j] - sum a[j] x~[j] &gt;= b - sum a[j]. j in Jp j in Jn j in Jn</p>
15386 * <p>Thus, meaning the transformation above, we can assume that in inequality (1) all coefficients a[j] are positive. Moreover, we can assume that b &gt; 0, because otherwise the inequality (1) would be redundant (see the routine npp_analyze_row). It is then obvious that constraint (1) is equivalent to covering inequality only if:</p>
15387 * <p>a[j] &gt;= b, (2)</p>
1538815388 * <p>for all j in J.</p>
1538915389 * <p>Once the original inequality (1) is replaced by equivalent covering inequality, we need to perform back substitution x~[j] = 1 - x[j] for all j in Jn (see above).</p>
1539015390 * <p>RECOVERING SOLUTION</p>
1540715407 * <p>PARTITIONING EQUALITIES</p>
1540815408 * <p>In canonical format the partitioning equality is the following:</p>
1540915409 * <p>sum x[j] = 1, (1) j in J</p>
15410 * <p>where all variables x[j] are binary. This equality expresses the condition that in any integer feasible solution exactly one variable in set J must take non-zero (unity) value while other variables must be equal to zero. W.l.o.g. it is assumed that |J| >= 2, because if J is empty, the inequality (1) is infeasible, and if |J| = 1, the inequality (1) is a fixing row.</p>
15410 * <p>where all variables x[j] are binary. This equality expresses the condition that in any integer feasible solution exactly one variable in set J must take non-zero (unity) value while other variables must be equal to zero. W.l.o.g. it is assumed that |J| &gt;= 2, because if J is empty, the inequality (1) is infeasible, and if |J| = 1, the inequality (1) is a fixing row.</p>
1541115411 * <p>In general case the partitioning equality may include original variables x[j] as well as their complements x~[j]:</p>
1541215412 * <p>sum x[j] + sum x~[j] = 1, (2) j in Jp j in Jn</p>
1541315413 * <p>where Jp and Jn are not intersected. Therefore, using substitution x~[j] = 1 - x[j] leads to the partitioning equality in generalized format:</p>
1565315653 * <p>PURPOSE</p>
1565415654 * <p>This subroutine determines the reachable set of a node through a given subset. The adjancy structure is assumed to be stored in a quotient graph format.</p>
1565515655 * <p>INPUT PARAMETERS</p>
15656 * <p>root - the given node not in the subset; (xadj, adjncy) - the adjancy structure pair; deg - the degree vector. deg[i] < 0 means the node belongs to the given subset.</p>
15656 * <p>root - the given node not in the subset; (xadj, adjncy) - the adjancy structure pair; deg - the degree vector. deg[i] &lt; 0 means the node belongs to the given subset.</p>
1565715657 * <p>OUTPUT PARAMETERS</p>
1565815658 * <p>(rchsze, rchset) - the reachable set; (nhdsze, nbrhd) - the neighborhood set.</p>
1565915659 * <p>UPDATED PARAMETERS</p>
15660 * <p>marker - the marker vector for reach and nbrhd sets. > 0 means the node is in reach set. < 0 means the node has been merged with others in the quotient or it is in nbrhd set. </p>
15660 * <p>marker - the marker vector for reach and nbrhd sets. &gt; 0 means the node is in reach set. &lt; 0 means the node has been merged with others in the quotient or it is in nbrhd set. </p>
1566115661 */
1566215662 public";
1566315663
1573715737 * <p>PURPOSE</p>
1573815738 * <p>This subroutine determines the reachable set of a node through a given subset. The adjancy structure is assumed to be stored in a quotient graph format.</p>
1573915739 * <p>INPUT PARAMETERS</p>
15740 * <p>root - the given node not in the subset; (xadj, adjncy) - the adjancy structure pair; deg - the degree vector. deg[i] < 0 means the node belongs to the given subset.</p>
15740 * <p>root - the given node not in the subset; (xadj, adjncy) - the adjancy structure pair; deg - the degree vector. deg[i] &lt; 0 means the node belongs to the given subset.</p>
1574115741 * <p>OUTPUT PARAMETERS</p>
1574215742 * <p>(rchsze, rchset) - the reachable set; (nhdsze, nbrhd) - the neighborhood set.</p>
1574315743 * <p>UPDATED PARAMETERS</p>
15744 * <p>marker - the marker vector for reach and nbrhd sets. > 0 means the node is in reach set. < 0 means the node has been merged with others in the quotient or it is in nbrhd set. </p>
15744 * <p>marker - the marker vector for reach and nbrhd sets. &gt; 0 means the node is in reach set. &lt; 0 means the node has been merged with others in the quotient or it is in nbrhd set. </p>
1574515745 */
1574615746 public";
1574715747
1585215852 for the Minimum Cost Flow Problem\", LIDS Report P-2146, MIT, Nov. 1992.</p>
1585315853 * <p>For inquiries about the original Fortran code, please contact:</p>
1585415854 * <p>Dimitri P. Bertsekas Laboratory for information and decision systems Massachusetts Institute of Technology Cambridge, MA 02139 (617) 253-7267, dimitrib@mit.edu</p>
15855 * <p>This code is the result of translation of the original Fortran code. The translation was made by Andrew Makhorin <mao@gnu.org>.</p>
15855 * <p>This code is the result of translation of the original Fortran code. The translation was made by Andrew Makhorin &lt;mao@gnu.org&gt;.</p>
1585615856 * <p>USER GUIDELINES</p>
1585715857 * <p>This routine is in the public domain to be used only for research purposes. It cannot be used as part of a commercial product, or to satisfy in any part commercial delivery requirements to government or industry, without prior agreement with the authors. Users are requested to acknowledge the authorship of the code, and the relaxation method.</p>
1585815858 * <p>No modification should be made to this code other than the minimal necessary to make it compatible with specific platforms.</p>
1609716097 * <p>#include \"glpscf.h\" SCF *scf_create_it(int n_max);</p>
1609816098 * <p>DESCRIPTION</p>
1609916099 * <p>The routine scf_create_it creates the factorization of matrix C, which initially has no rows and columns.</p>
16100 * <p>The parameter n_max specifies the maximal order of matrix C to be factorized, 1 <= n_max <= 32767.</p>
16100 * <p>The parameter n_max specifies the maximal order of matrix C to be factorized, 1 &lt;= n_max &lt;= 32767.</p>
1610116101 * <p>RETURNS</p>
1610216102 * <p>The routine scf_create_it returns a pointer to the structure SCF, which defines the factorization. </p>
1610316103 */
1620516205 * <p>#include \"glpscf.h\" SCF *scf_create_it(int n_max);</p>
1620616206 * <p>DESCRIPTION</p>
1620716207 * <p>The routine scf_create_it creates the factorization of matrix C, which initially has no rows and columns.</p>
16208 * <p>The parameter n_max specifies the maximal order of matrix C to be factorized, 1 <= n_max <= 32767.</p>
16208 * <p>The parameter n_max specifies the maximal order of matrix C to be factorized, 1 &lt;= n_max &lt;= 32767.</p>
1620916209 * <p>RETURNS</p>
1621016210 * <p>The routine scf_create_it returns a pointer to the structure SCF, which defines the factorization. </p>
1621116211 */
1649616496 * <p>DESCRIPTION</p>
1649716497 * <p>The routine spm_test_mat_e creates a test sparse matrix of E(n,c) class as described in the book: Ole 0sterby, Zahari Zlatev. Direct Methods for Sparse Matrices. Springer-Verlag, 1983.</p>
1649816498 * <p>Matrix of E(n,c) class is a symmetric positive definite matrix of the order n. It has the number 4 on its main diagonal and the number -1 on its four co-diagonals, two of which are neighbour to the main diagonal and two others are shifted from the main diagonal on the distance c.</p>
16499 * <p>It is necessary that n >= 3 and 2 <= c <= n-1.</p>
16499 * <p>It is necessary that n &gt;= 3 and 2 &lt;= c &lt;= n-1.</p>
1650016500 * <p>RETURNS</p>
1650116501 * <p>The routine returns a pointer to the matrix created. </p>
1650216502 */
1651016510 * <p>DESCRIPTION</p>
1651116511 * <p>The routine spm_test_mat_d creates a test sparse matrix of D(n,c) class as described in the book: Ole 0sterby, Zahari Zlatev. Direct Methods for Sparse Matrices. Springer-Verlag, 1983.</p>
1651216512 * <p>Matrix of D(n,c) class is a non-singular matrix of the order n. It has unity main diagonal, three co-diagonals above the main diagonal on the distance c, which are cyclically continued below the main diagonal, and a triangle block of the size 10x10 in the upper right corner.</p>
16513 * <p>It is necessary that n >= 14 and 1 <= c <= n-13.</p>
16513 * <p>It is necessary that n &gt;= 14 and 1 &lt;= c &lt;= n-13.</p>
1651416514 * <p>RETURNS</p>
1651516515 * <p>The routine returns a pointer to the matrix created. </p>
1651616516 */
1669516695 * <p>DESCRIPTION</p>
1669616696 * <p>The routine spm_test_mat_e creates a test sparse matrix of E(n,c) class as described in the book: Ole 0sterby, Zahari Zlatev. Direct Methods for Sparse Matrices. Springer-Verlag, 1983.</p>
1669716697 * <p>Matrix of E(n,c) class is a symmetric positive definite matrix of the order n. It has the number 4 on its main diagonal and the number -1 on its four co-diagonals, two of which are neighbour to the main diagonal and two others are shifted from the main diagonal on the distance c.</p>
16698 * <p>It is necessary that n >= 3 and 2 <= c <= n-1.</p>
16698 * <p>It is necessary that n &gt;= 3 and 2 &lt;= c &lt;= n-1.</p>
1669916699 * <p>RETURNS</p>
1670016700 * <p>The routine returns a pointer to the matrix created. </p>
1670116701 */
1670916709 * <p>DESCRIPTION</p>
1671016710 * <p>The routine spm_test_mat_d creates a test sparse matrix of D(n,c) class as described in the book: Ole 0sterby, Zahari Zlatev. Direct Methods for Sparse Matrices. Springer-Verlag, 1983.</p>
1671116711 * <p>Matrix of D(n,c) class is a non-singular matrix of the order n. It has unity main diagonal, three co-diagonals above the main diagonal on the distance c, which are cyclically continued below the main diagonal, and a triangle block of the size 10x10 in the upper right corner.</p>
16712 * <p>It is necessary that n >= 14 and 1 <= c <= n-13.</p>
16712 * <p>It is necessary that n &gt;= 14 and 1 &lt;= c &lt;= n-13.</p>
1671316713 * <p>RETURNS</p>
1671416714 * <p>The routine returns a pointer to the matrix created. </p>
1671516715 */
22 <modelVersion>4.0.0</modelVersion>
33 <groupId>org.gnu.glpk</groupId>
44 <artifactId>glpk-java</artifactId>
5 <version>1.0.34</version>
5 <version>1.0.36</version>
66 <prerequisites>
77 <maven>3.0.0</maven>
88 </prerequisites>
9999 <plugin>
100100 <groupId>org.apache.maven.plugins</groupId>
101101 <artifactId>maven-site-plugin</artifactId>
102 <version>3.2</version>
102 <version>3.3</version>
103 <configuration>
104 <skipDeploy>true</skipDeploy>
105 </configuration>
103106 </plugin>
104107 <plugin>
105108 <groupId>org.apache.maven.plugins</groupId>
00 # Build GLPK JNI DLL with Microsoft Visual Studio Express 2010
11 GLPKVERS=4_54
2 CFLAGS = /I. /I../swig /I$(GLPK_HOME)\src /nologo /W3 /O2 /Zi
2 CFLAGS = /I. /I../swig /I$(GLPK_HOME)\src /nologo /W3 /O2 /Zi \
3 -DGLPKPRELOAD
34
45 OBJSET = \
56 ..\swig\src\c\glpk_wrap.obj
00 #include "VerRsrc.h"
11 VS_VERSION_INFO VERSIONINFO
2 FILEVERSION 1,0,34,0
3 PRODUCTVERSION 1,0,34,0
2 FILEVERSION 1,0,36,0
3 PRODUCTVERSION 1,0,36,0
44 FILEFLAGSMASK 0
55 FILEFLAGS 0
66 FILEOS VOS__WINDOWS32
1313 BEGIN
1414 VALUE "CompanyName", "Xypron\0"
1515 VALUE "FileDescription", "JNI wrapper for GLPK\0"
16 VALUE "FileVersion", "1.0.34.0\0"
16 VALUE "FileVersion", "1.0.36.0\0"
1717 VALUE "InternalName", "glpk_4_54_java.dll\0"
1818 VALUE "LegalCopyright", "Heinrich Schuchardt, GPL v3"
1919 VALUE "OriginalFilename", "glpk_4_54_java.dll\0"
2020 VALUE "ProductName", "GLPK for Java - http://glpk-java.sourceforge.net\0"
21 VALUE "ProductVersion", "1.0.34.0\0"
21 VALUE "ProductVersion", "1.0.36.0\0"
2222 END
2323 END
2424 BLOCK "VarFileInfo"
00 # Build GLPK JNI DLL with Microsoft Visual Studio Express 2010
11 GLPKVERS=4_54
2 CFLAGS = /I. /I../swig /I$(GLPK_HOME)\src /nologo /W3 /O2 /Zi
2 CFLAGS = /I. /I../swig /I$(GLPK_HOME)\src /nologo /W3 /O2 /Zi \
3 -DGLPKPRELOAD
34
45 OBJSET = \
56 ..\swig\src\c\glpk_wrap.obj
00 #include "VerRsrc.h"
11 VS_VERSION_INFO VERSIONINFO
2 FILEVERSION 1,0,34,0
3 PRODUCTVERSION 1,0,34,0
2 FILEVERSION 1,0,36,0
3 PRODUCTVERSION 1,0,36,0
44 FILEFLAGSMASK 0
55 FILEFLAGS 0
66 FILEOS VOS_UNKNOWN
1313 BEGIN
1414 VALUE "CompanyName", "Xypron\0"
1515 VALUE "FileDescription", "JNI wrapper for GLPK\0"
16 VALUE "FileVersion", "1.0.34.0\0"
16 VALUE "FileVersion", "1.0.36.0\0"
1717 VALUE "InternalName", "glpk_4_54_java.dll\0"
1818 VALUE "LegalCopyright", "Heinrich Schuchardt, GPL v3"
1919 VALUE "OriginalFilename", "glpk_4_54_java.dll\0"
2020 VALUE "ProductName", "GLPK for Java - http://glpk-java.sourceforge.net\0"
21 VALUE "ProductVersion", "1.0.34.0\0"
21 VALUE "ProductVersion", "1.0.36.0\0"
2222 END
2323 END
2424 BLOCK "VarFileInfo"