aboutsummaryrefslogtreecommitdiff
path: root/math/sedumi
diff options
context:
space:
mode:
authorMaho Nakata <maho@FreeBSD.org>2008-10-06 03:06:17 +0000
committerMaho Nakata <maho@FreeBSD.org>2008-10-06 03:06:17 +0000
commit0b65a65c721919f9acdcc4b49c4b6192c1f7bc9d (patch)
tree25b7124ed5d29bac8b8511b1dc8b761a074fbca3 /math/sedumi
parent73a0f2a3eb5528815a5ed1db70ab612e8fe05376 (diff)
downloadports-0b65a65c721919f9acdcc4b49c4b6192c1f7bc9d.tar.gz
ports-0b65a65c721919f9acdcc4b49c4b6192c1f7bc9d.zip
Add math/sedumi
SeDuMi is a software package to solve optimization problems over symmetric cones. This includes linear, quadratic, second order conic and semidefinite optimization, and any combination of these. WWW: http://sedumi.mcmaster.ca/
Notes
Notes: svn path=/head/; revision=221262
Diffstat (limited to 'math/sedumi')
-rw-r--r--math/sedumi/Makefile51
-rw-r--r--math/sedumi/distinfo3
-rw-r--r--math/sedumi/files/patch-and_or318
-rw-r--r--math/sedumi/files/patch-posttransfo.m11
-rw-r--r--math/sedumi/files/patch-string.h40
-rw-r--r--math/sedumi/pkg-descr5
-rw-r--r--math/sedumi/pkg-plist154
7 files changed, 582 insertions, 0 deletions
diff --git a/math/sedumi/Makefile b/math/sedumi/Makefile
new file mode 100644
index 000000000000..ca70ac45cfdc
--- /dev/null
+++ b/math/sedumi/Makefile
@@ -0,0 +1,51 @@
+# New ports collection makefile for: sedumi
+# Date created: 2008/10/6
+# Whom: NAKATA, Maho <maho@FreeBSD.org>
+#
+# $FreeBSD$
+#
+
+PORTNAME= sedumi
+PORTVERSION= 1.1
+CATEGORIES= math
+MASTER_SITES= ${MASTER_SITE_LOCAL:S|%SUBDIR%|maho/sedumi|}
+# http://sedumi.mcmaster.ca/
+DISTNAME= SeDuMi_1_1R3
+
+MAINTAINER= maho@FreeBSD.org
+COMMENT= SeDuMi is an semidefinite programming solver on Matlab
+
+RUN_DEPENDS= octave:${PORTSDIR}/math/octave
+BUILD_DEPENDS= octave:${PORTSDIR}/math/octave
+
+USE_ZIP= yes
+WRKSRC= ${WRKDIR}/SeDuMi_1_1
+
+pre-patch:
+ @${LS} ${WRKSRC}/*.m ${WRKSRC}/*.c > ${WRKDIR}/FILELIST
+ @for i in `${CAT} ${WRKDIR}/FILELIST`; do \
+ cd ${WRKSRC} ; ${REINPLACE_CMD} -e 's# ##g' $$i ; \
+ done
+ @cd ${WRKSRC} ; ${RM} *.bak
+
+pre-build:
+ @cd ${WRKSRC} ; ${RM} *.dll *.orig
+
+do-build:
+ cd ${WRKSRC} ; octave install_sedumi.m
+ @cd ${WRKSRC} ; ${RM} *.c *.o
+
+do-install:
+ ${MKDIR} ${PREFIX}/sedumi
+ ${INSTALL_PROGRAM} ${WRKSRC}/*mex ${PREFIX}/sedumi
+ ${INSTALL_DATA} ${WRKSRC}/*m ${PREFIX}/sedumi
+.ifndef (NOPORTDOCS)
+ ${MKDIR} ${DOCSDIR}
+ ${INSTALL_DATA} ${WRKSRC}/*.txt ${DOCSDIR}
+ ${INSTALL_DATA} ${WRKSRC}/doc/* ${DOCSDIR}
+.endif
+.ifndef (NOPORTEXAMPLES)
+ ${MKDIR} ${EXAMPLESDIR}
+ ${INSTALL_DATA} ${WRKSRC}/examples/* ${EXAMPLESDIR}
+.endif
+.include <bsd.port.mk>
diff --git a/math/sedumi/distinfo b/math/sedumi/distinfo
new file mode 100644
index 000000000000..2267f9e5c6ee
--- /dev/null
+++ b/math/sedumi/distinfo
@@ -0,0 +1,3 @@
+MD5 (SeDuMi_1_1R3.zip) = 8fd979e599eb7e01dc585accc1573aa0
+SHA256 (SeDuMi_1_1R3.zip) = a81ca3a00b87e3a1cced26d8b340f90bb170e050513ec219acbc90da0a330b22
+SIZE (SeDuMi_1_1R3.zip) = 2235915
diff --git a/math/sedumi/files/patch-and_or b/math/sedumi/files/patch-and_or
new file mode 100644
index 000000000000..2d3675f769cf
--- /dev/null
+++ b/math/sedumi/files/patch-and_or
@@ -0,0 +1,318 @@
+--- checkpars.m 2008-10-06 10:28:27.000000000 +0900
++++ checkpars.m 2008-10-06 10:28:59.000000000 +0900
+@@ -41,7 +41,7 @@
+ % --------------------------------------------------
+ % Algorithm selection parameters
+ % --------------------------------------------------
+-if ~isfield(pars,'alg') | sum([0 1 2] == pars.alg) == 0
++if ~isfield(pars,'alg') || sum([0 1 2] == pars.alg) == 0
+ pars.alg = 2;
+ end
+ if ~isfield(pars,'beta') % 0.1 <= beta <= 0.9 (theoretically in (0,1))
+@@ -88,7 +88,7 @@
+ % --------------------------------------------------
+ % Initialization
+ % --------------------------------------------------
+-if ~isfield(pars,'mu') | pars.mu <= 0
++if ~isfield(pars,'mu') || pars.mu <= 0
+ pars.mu = 1;
+ end
+ % --------------------------------------------------
+
+--- getsymbada.m 2008-10-06 10:28:27.000000000 +0900
++++ getsymbada.m 2008-10-06 10:34:06.000000000 +0900
+@@ -42,7 +42,7 @@
+
+ Alpq = spones(extractA(At,Ablkjc,0,3,1,psdblkstart(1)));
+ Ablks = findblks(At,Ablkjc,3,[],psdblkstart);
+-if spars(Ablks)==1 | spars(Alpq)==1 | (~isempty(DAt.q) & spars(DAt.q)==1)
++if spars(Ablks)==1 || spars(Alpq)==1 || (~isempty(DAt.q) && spars(DAt.q)==1)
+ SYMBADA=sparse(ones(size(At,2),size(At,2)));
+ else
+ SYMBADA = Alpq' * Alpq + Ablks'*Ablks + DAt.q'*DAt.q;
+
+--- optstep.m 2008-10-06 10:28:27.000000000 +0900
++++ optstep.m 2008-10-06 10:30:28.000000000 +0900
+@@ -48,7 +48,7 @@
+ z0 = x0 / d.l(1);
+ %This value is never used.
+ %deptol = 1E-10 * max(x0,z0);
+- if (feasratio < -0.5) & (x0 < z0*z0)
++ if (feasratio < -0.5) && (x0 < z0*z0)
+ x0 = 0; % Try project onto direction.
+ end
+ % ------------------------------------------------------------
+@@ -82,7 +82,7 @@
+ % ----------------------------------------
+ % CHECK WHETHER x[B] >= 0 AND WHETHER RESIDUAL DID NOT DETERIORATE.
+ % ----------------------------------------
+- if (min(x) < 0.0) | ...
++ if (min(x) < 0.0) || ...
+ (norm(err.b,inf) > 5 * max(max(y0,1e-10 * x0) * R.maxb, y0 * R.maxRb))
+ x = []; % Incorrect guess of LP-basis
+ return
+@@ -111,7 +111,7 @@
+ cx = c'*x;
+ by = b'*y;
+ z0 = by - cx; %[JFS 9/2003: changed condition below
+- if (~isempty(lpNB) & (min(z(lpNB)) < 0.0)) | ...
++ if (~isempty(lpNB) && (min(z(lpNB)) < 0.0)) || ...
+ normzB > 5 * max(1E-10 * (x0+(x0==0)) * norm(c), min(y0,1e-8) * norm(R.c))
+ x = []; % Incorrect guess of LP-basis
+ return
+
+--- posttransfo.m 2008-10-06 10:28:27.000000000 +0900
++++ posttransfo.m 2008-10-06 10:34:23.000000000 +0900
+@@ -82,7 +82,7 @@
+ % ----------------------------------------
+ % Postprocess the SDP part
+ % ----------------------------------------
+-if pars.sdp==1 & isfield(prep,'sdp')
++if pars.sdp==1 && isfield(prep,'sdp')
+ xpf(1:K.f,1)=xp(1:K.f);
+ xp=xp(K.f+1:end);
+ Kf=K.f;
+
+--- pretransfo.m 2008-10-06 10:28:27.000000000 +0900
++++ pretransfo.m 2008-10-06 10:37:11.000000000 +0900
+@@ -43,14 +43,14 @@
+ K.f = 0;
+ elseif isempty(K.f)
+ K.f = 0;
+-elseif (K.f~= floor(K.f)) | (K.f < 0)
++elseif (K.f~= floor(K.f)) || (K.f < 0)
+ error('K.f should be nonnegative integer')
+ end
+ if ~isfield(K,'l') % K.l
+ K.l = 0;
+ elseif isempty(K.l)
+ K.l = 0;
+-elseif (K.l~= floor(K.l)) | (K.l < 0)
++elseif (K.l~= floor(K.l)) || (K.l < 0)
+ error('K.l should be nonnegative integer')
+ end
+ if ~isfield(K,'q') % K.q
+@@ -58,7 +58,7 @@
+ elseif sum(K.q) == 0
+ K.q = [];
+ elseif ~isempty(K.q)
+- if (min(K.q) < 2) | any(K.q~= floor(K.q))
++ if (min(K.q) < 2) || any(K.q~= floor(K.q))
+ error('K.q should contain only integers bigger than 1')
+ end
+ if size(K.q,1) > 1
+@@ -70,7 +70,7 @@
+ elseif sum(K.r) == 0
+ K.r = [];
+ elseif ~isempty(K.r)
+- if (min(K.r) < 3) | any(K.r~= floor(K.r))
++ if (min(K.r) < 3) || any(K.r~= floor(K.r))
+ error('K.r should contain only integers bigger than 2')
+ end
+ if size(K.r,1) > 1
+@@ -82,7 +82,7 @@
+ elseif sum(K.s) == 0
+ K.s = [];
+ elseif ~isempty(K.s)
+- if min(K.s < 1) | any(K.s~= floor(K.s))
++ if min(K.s < 1) || any(K.s~= floor(K.s))
+ error('K.s should contain only positive integers')
+ end
+ if size(K.s,1) > 1
+@@ -95,7 +95,7 @@
+ if ~isfield(K,'ycomplex') % K.ycomplex
+ K.ycomplex = [];
+ elseif ~isempty(K.ycomplex)
+- if (min(K.ycomplex) < 1) | (min(size(K.ycomplex)) > 1) | ...
++ if (min(K.ycomplex) < 1) || (min(size(K.ycomplex)) > 1) || ...
+ any(K.ycomplex~= floor(K.ycomplex))
+ error('K.ycomplex should be a list containing only positive integers')
+ end
+@@ -109,7 +109,7 @@
+ if ~isfield(K,'xcomplex') % K.xcomplex
+ K.xcomplex = [];
+ elseif ~isempty(K.xcomplex)
+- if (min(K.xcomplex) < 1) | (min(size(K.xcomplex))) > 1 | ...
++ if (min(K.xcomplex) < 1) || (min(size(K.xcomplex))) > 1 || ...
+ any(K.xcomplex~= floor(K.xcomplex))
+ error('K.xcomplex should be a list containing only positive integers')
+ end
+@@ -123,7 +123,7 @@
+ if ~isfield(K,'scomplex') % K.scomplex
+ K.scomplex = [];
+ elseif ~isempty(K.scomplex)
+- if min(K.scomplex) < 1 | min(size(K.scomplex)) > 1 | ...
++ if min(K.scomplex) < 1 || min(size(K.scomplex)) > 1 || ...
+ any(K.scomplex~= floor(K.scomplex))
+ error('K.scomplex should be a list containing only positive integers')
+ end
+@@ -138,7 +138,7 @@
+ % Check size of At,b,c (w.r.t. K)
+ % Let m = #eq-constraints, N = #variables (before transformations)
+ % ----------------------------------------
+-if (min(size(b)) > 1) | (min(size(c)) > 1)
++if (min(size(b)) > 1) || (min(size(c)) > 1)
+ error('Parameters b and c must be vectors')
+ end
+ m = min(size(At));
+@@ -175,16 +175,16 @@
+ % ------------------------------------------------------------
+ % Check for NaN and Inf
+ % ------------------------------------------------------------
+-if any(any(isnan(At))) | any(isnan(b)) | any(isnan(c))
++if any(any(isnan(At))) || any(isnan(b)) || any(isnan(c))
+ error('A,b,c data contains NaN values')
+ end
+-if any(any(isinf(At))) | any(isinf(b)) | any(isinf(c))
++if any(any(isinf(At))) || any(isinf(b)) || any(isinf(c))
+ error('A,b,c data contains Inf values')
+ end
+ % ------------------------------------------------------------
+ % Save the standardized data for further use if needed
+ % ------------------------------------------------------------
+-if isfield(pars,'errors') & pars.errors==1
++if isfield(pars,'errors') && pars.errors==1
+ origcoeff.At=At;
+ origcoeff.c=c;
+ origcoeff.b=b;
+@@ -271,7 +271,7 @@
+ if ~isfield(pars,'free')
+ pars.free=1;
+ end
+-if pars.free & K.l>0
++if pars.free && K.l>0
+ stest=c(K.f+1:K.f+K.l)-At(K.f+1:K.f+K.l,:)*rand(m,1);
+ %Now we detect if stest contains the same vector twice, or opposite
+ %vectors.
+
+--- sedumi.m 2008-10-06 10:28:27.000000000 +0900
++++ sedumi.m 2008-10-06 10:35:24.000000000 +0900
+@@ -293,10 +293,10 @@
+ my_fprintf(pars.fid,'Detected %i diagonal SDP block(s) with %i linear variables\n',blockcount,varcount);
+ end
+ end
+- if isfield(prep,'freeblock1') & length(prep.freeblock1)>0
++ if isfield(prep,'freeblock1') && length(prep.freeblock1)>0
+ my_fprintf(pars.fid,'Detected %i free variables in the linear part\n',length(prep.freeblock1));
+ end
+- if isfield(prep,'Kf') & prep.Kf>0
++ if isfield(prep,'Kf') && prep.Kf>0
+ switch pars.free
+ case 0
+ my_fprintf(pars.fid,'Split %i free variables\n',prep.Kf);
+@@ -384,9 +384,9 @@
+ keyboard
+ end
+
+- if pars.stepdif==2 & ...
+- (iter>20 | (iter>1 & (err.kcg + Lsd.kcg>3)) | ...
+- (iter>5 & abs(1-feasratio)<0.05) )
++ if pars.stepdif==2 && ...
++ (iter>20 || (iter>1 && (err.kcg + Lsd.kcg>3)) || ...
++ (iter>5 && abs(1-feasratio)<0.05) )
+ pars.stepdif=1;
+ end
+ % --------------------------------------------------
+@@ -438,7 +438,7 @@
+ meritOld = merit;
+ merit = (sum(R.w) + max(R.sd,0))^2 * y0 / R.b0;
+ rate = merit / meritOld;
+- if (rate >= 0.9999) & (wr.desc == 1)
++ if (rate >= 0.9999) && (wr.desc == 1)
+ % ------------------------------------------------------------
+ % STOP = -1 --> Stop due to numerical problems
+ % ------------------------------------------------------------
+@@ -470,7 +470,7 @@
+ % If we get in superlinear region of LP,
+ % try to guess optimal solution:
+ % ----------------------------------------
+- if lponly & (rate < 0.05)
++ if lponly && (rate < 0.05)
+ [xsol,ysol] = optstep(A,b,c, y0,y,d,v,dxmdz, ...
+ K,L,symLden,dense, Ablkjc,Aord,ADA,DAt, feasratio, R,pars);
+ if ~isempty(xsol)
+@@ -478,7 +478,7 @@
+ feasratio = 1 - 2*(xsol(1)==0);
+ break
+ end
+- elseif (by > 0) & (abs(1+feasratio) < 0.05) & (R.b0*y0 < 0.5)
++ elseif (by > 0) && (abs(1+feasratio) < 0.05) && (R.b0*y0 < 0.5)
+ if max(eigK(full(qreshape(Amul(A,dense,y,1),1,K)),K)) <= pars.eps * by
+ STOP = 3; % Means Farkas solution found !
+ break
+@@ -576,7 +576,7 @@
+ % If the quality of the Farkas solution is good and better than
+ % the approx. feasible soln, set x0=0: Farkas solution found.
+ % ------------------------------------------------------------
+- if (reldirinf < pars.eps) | (relinf > max(pars.bigeps, reldirinf))
++ if (reldirinf < pars.eps) || (relinf > max(pars.bigeps, reldirinf))
+ x0 = 0.0;
+ pinf = pdirinf;
+ dinf = ddirinf;
+@@ -654,7 +654,7 @@
+ my_fprintf(pars.fid, 'Failed: no sensible solution/direction found.\n');
+ info.numerr = 2;
+ elseif STOP == -1
+- if (pinf > -pars.eps * cx) & (dinf > pars.eps * by)
++ if (pinf > -pars.eps * cx) && (dinf > pars.eps * by)
+ info.numerr = 1;
+ else
+ info.numerr = 0;
+
+--- stepdif.m 2008-10-06 10:28:27.000000000 +0900
++++ stepdif.m 2008-10-06 10:35:37.000000000 +0900
+@@ -61,7 +61,7 @@
+ % CASE Rsd > 0: gap constraint locally part of merit.
+ % CASE Rsd < 0: gap constraint locally not part of merit.
+ % ------------------------------------------------------------
+-usegap = (R.sd > 0) | (R.sd == 0 & dRg > 0);
++usegap = (R.sd > 0) || (R.sd == 0 && dRg > 0);
+ if usegap
+ r0 = R.w(1)+R.w(2)+R.sd;
+ beta = (rdy0 * R.w(1) + rcdx)/ r0;
+diff -u widelen.m widelen.m
+--- widelen.m 2008-10-06 10:28:27.000000000 +0900
++++ widelen.m 2008-10-06 10:32:16.000000000 +0900
+@@ -71,7 +71,7 @@
+ % ------------------------------------------------------------
+ t = 0.0;
+ ntry = 0; % do loop at least once
+-while (t < 0.5 * tR) | ( (fullt-tR) + (1e-7 * fullt) < (tR - t) ) | ntry==0
++while (t < 0.5 * tR) || ( (fullt-tR) + (1e-7 * fullt) < (tR - t) ) || ntry==0
+ ntry = 1;
+ if tR == maxt % Bisection
+ tM = 0.1 * t + 0.9 * tR;
+@@ -105,7 +105,7 @@
+ % ALL:
+ wM.lab = [xM(1:K.l).*zM(1:K.l); detxz ./ lab2q; lab2q; psdeig(wM.s,K)];
+ [deltaM,hM,alphaM] = iswnbr(wM.lab, thetaSQR);
+- if (deltaM <= pars.beta) | ((tM < fullt / 10) & (deltaM < 1))
++ if (deltaM <= pars.beta) || ((tM < fullt / 10) && (deltaM < 1))
+ w = wM;
+ t = tM;
+ wr.h=hM;
+
+--- wregion.m 2008-10-06 10:45:27.000000000 +0900
++++ wregion.m 2008-10-06 10:45:48.000000000 +0900
+@@ -62,9 +62,9 @@
+ [uzc.u,zispos] = psdfactor(zc,K);
+ critval = max(y0, sqrt(min(d.l(1),1/d.l(1)))*v(1)); % >= y0
+ critval = max(1E-3, pars.cg.restol) * critval * R.maxRb;
+- if (~xispos) | (~zispos) | (errc.maxb > critval) ...
+- | ( (~isempty(uxc.tdet)) & (min(uxc.tdet) <= 0.0)) ...
+- | ( (~isempty(uzc.tdet)) & (min(uzc.tdet) <= 0.0))
++ if (~xispos) || (~zispos) || (errc.maxb > critval) ...
++ || ( (~isempty(uxc.tdet)) && (min(uxc.tdet) <= 0.0)) ...
++ || ( (~isempty(uzc.tdet)) && (min(uzc.tdet) <= 0.0))
+ STOP = -1; % Reject and terminate
+ dxmdz = [];
+ err = errc;
+@@ -121,7 +121,7 @@
+ % i.e. errb <= phi*(-dy0) * (1+t*dy0/y0) * maxRb
+ % ----------------------------------------
+ PHI = 0.5;
+- if dy0 < 0 & (PHI*dy0^2*R.maxRb)~=0
++ if dy0 < 0 && (PHI*dy0^2*R.maxRb)~=0
+ critval = - (PHI * dy0*R.maxRb + err.maxb)*y0c / (PHI*dy0^2*R.maxRb);
+ else
+ critval = 1;
diff --git a/math/sedumi/files/patch-posttransfo.m b/math/sedumi/files/patch-posttransfo.m
new file mode 100644
index 000000000000..71d858e70c04
--- /dev/null
+++ b/math/sedumi/files/patch-posttransfo.m
@@ -0,0 +1,11 @@
+--- posttransfo.m~ 2008-10-06 10:55:23.000000000 +0900
++++ posttransfo.m 2008-10-06 11:04:36.000000000 +0900
+@@ -83,7 +83,7 @@
+ % Postprocess the SDP part
+ % ----------------------------------------
+ if pars.sdp==1 && isfield(prep,'sdp')
+- xpf(1:K.f,1)=xp(1:K.f);
++ xpf=xp(1:K.f);
+ xp=xp(K.f+1:end);
+ Kf=K.f;
+ K.f=0;
diff --git a/math/sedumi/files/patch-string.h b/math/sedumi/files/patch-string.h
new file mode 100644
index 000000000000..c74fb2ed7957
--- /dev/null
+++ b/math/sedumi/files/patch-string.h
@@ -0,0 +1,40 @@
+--- iswnbr.c~ 2008-10-06 10:47:34.000000000 +0900
++++ iswnbr.c 2008-10-06 10:51:42.000000000 +0900
+@@ -39,6 +39,7 @@
+
+ #include <math.h>
+ #include <stdlib.h>
++#include <string.h>
+ #include "mex.h"
+
+ #define DELTA_OUT myplhs[0]
+--- quadadd.c~ 2008-10-06 10:47:34.000000000 +0900
++++ quadadd.c 2008-10-06 10:51:34.000000000 +0900
+@@ -39,6 +39,7 @@
+ */
+ #include <math.h>
+ #include "mex.h"
++#include <string.h>
+ #include "blksdp.h"
+
+ #define ZHI_OUT myplhs[0]
+--- vecsym.c~ 2008-10-06 10:47:34.000000000 +0900
++++ vecsym.c 2008-10-06 10:51:18.000000000 +0900
+@@ -39,6 +39,7 @@
+
+ #include <math.h>
+ #include "mex.h"
++#include <string.h>
+ #include "blksdp.h"
+
+ #define Y_OUT plhs[0]
+--- bwblkslv.c~ 2008-10-06 10:47:33.000000000 +0900
++++ bwblkslv.c 2008-10-06 10:51:12.000000000 +0900
+@@ -42,6 +42,7 @@
+ */
+
+ #include "mex.h"
++#include <string.h>
+ #include "blksdp.h"
+
+ #define Y_OUT plhs[0]
diff --git a/math/sedumi/pkg-descr b/math/sedumi/pkg-descr
new file mode 100644
index 000000000000..7a34b9d7e457
--- /dev/null
+++ b/math/sedumi/pkg-descr
@@ -0,0 +1,5 @@
+SeDuMi is a software package to solve optimization problems over symmetric
+cones. This includes linear, quadratic, second order conic and semidefinite
+optimization, and any combination of these.
+
+WWW: http://sedumi.mcmaster.ca/
diff --git a/math/sedumi/pkg-plist b/math/sedumi/pkg-plist
new file mode 100644
index 000000000000..7c68124852aa
--- /dev/null
+++ b/math/sedumi/pkg-plist
@@ -0,0 +1,154 @@
+sedumi/Amul.m
+sedumi/Contents.m
+sedumi/PopK.m
+sedumi/ada_pcg.m
+sedumi/adendotd.m
+sedumi/adendotd.mex
+sedumi/adenscale.mex
+sedumi/asmDxq.m
+sedumi/blkchol.m
+sedumi/blkchol.mex
+sedumi/bwblkslv.m
+sedumi/bwblkslv.mex
+sedumi/bwdpr1.m
+sedumi/bwdpr1.mex
+sedumi/cellK.m
+sedumi/checkpars.m
+sedumi/cholsplit.mex
+sedumi/choltmpsiz.mex
+sedumi/ddot.m
+sedumi/ddot.mex
+sedumi/deninfac.m
+sedumi/dpr1fact.m
+sedumi/dpr1fact.mex
+sedumi/eigK.m
+sedumi/eigK.mex
+sedumi/extractA.m
+sedumi/extractA.mex
+sedumi/eyeK.m
+sedumi/eyeK.mex
+sedumi/factorK.mex
+sedumi/findblks.m
+sedumi/findblks.mex
+sedumi/finsymbden.m
+sedumi/finsymbden.mex
+sedumi/frameit.m
+sedumi/fwblkslv.m
+sedumi/fwblkslv.mex
+sedumi/fwdpr1.m
+sedumi/fwdpr1.mex
+sedumi/getDAt.m
+sedumi/getDAtm.m
+sedumi/getada1.m
+sedumi/getada1.mex
+sedumi/getada2.m
+sedumi/getada2.mex
+sedumi/getada3.m
+sedumi/getada3.mex
+sedumi/getdense.m
+sedumi/getsymbada.m
+sedumi/givensrot.m
+sedumi/givensrot.mex
+sedumi/incorder.m
+sedumi/incorder.mex
+sedumi/install_sedumi.m
+sedumi/invcholfac.m
+sedumi/invcholfac.mex
+sedumi/iswnbr.m
+sedumi/iswnbr.mex
+sedumi/loopPcg.m
+sedumi/makereal.m
+sedumi/makereal.mex
+sedumi/mat.m
+sedumi/maxstep.m
+sedumi/my_fprintf.m
+sedumi/optstep.m
+sedumi/ordmmdmex.m
+sedumi/ordmmdmex.mex
+sedumi/partitA.m
+sedumi/partitA.mex
+sedumi/postprocessSDP.m
+sedumi/posttransfo.m
+sedumi/preprocessSDP.m
+sedumi/pretransfo.m
+sedumi/psdeig.m
+sedumi/psdeig.mex
+sedumi/psdfactor.m
+sedumi/psdfactor.mex
+sedumi/psdframeit.mex
+sedumi/psdinvjmul.m
+sedumi/psdinvjmul.mex
+sedumi/psdinvscale.mex
+sedumi/psdjmul.m
+sedumi/psdjmul.mex
+sedumi/psdscale.m
+sedumi/psdscale.mex
+sedumi/qblkmul.m
+sedumi/qblkmul.mex
+sedumi/qframeit.m
+sedumi/qframev.mex
+sedumi/qinvjmul.m
+sedumi/qinvsqrt.mex
+sedumi/qjmul.m
+sedumi/qrK.mex
+sedumi/qreshape.m
+sedumi/qreshape.mex
+sedumi/qscaleK.mex
+sedumi/quadadd.m
+sedumi/quadadd.mex
+sedumi/rotlorentz.m
+sedumi/sddir.m
+sedumi/sdfactor.m
+sedumi/sdinit.m
+sedumi/sedumi.m
+sedumi/sortnnz.m
+sedumi/sortnnz.mex
+sedumi/sparbwslv.m
+sedumi/sparfwslv.m
+sedumi/spars.m
+sedumi/sqrtinv.m
+sedumi/sqrtinv.mex
+sedumi/statsK.m
+sedumi/statsK.mex
+sedumi/stepdif.m
+sedumi/symbbwblk.mex
+sedumi/symbchol.m
+sedumi/symbcholden.m
+sedumi/symbfwblk.mex
+sedumi/symfctmex.m
+sedumi/symfctmex.mex
+sedumi/tdet.m
+sedumi/triumtriu.m
+sedumi/triumtriu.mex
+sedumi/trydif.m
+sedumi/updtransfo.m
+sedumi/urotorder.m
+sedumi/urotorder.mex
+sedumi/vec.m
+sedumi/veccomplex.m
+sedumi/vecsym.m
+sedumi/vecsym.mex
+sedumi/vectril.m
+sedumi/vectril.mex
+sedumi/whichcpx.m
+sedumi/whichcpx.mex
+sedumi/widelen.m
+sedumi/wrapPcg.m
+sedumi/wregion.m
+@dirrm sedumi
+%%PORTDOCS%%%%DOCSDIR%%/Changelog.txt
+%%PORTDOCS%%%%DOCSDIR%%/Install.txt
+%%PORTDOCS%%%%DOCSDIR%%/Readme.txt
+%%PORTDOCS%%%%DOCSDIR%%/SeDuMi_Guide_105R5.pdf
+%%PORTDOCS%%%%DOCSDIR%%/SeDuMi_Guide_105R5.ps
+%%PORTDOCS%%%%DOCSDIR%%/SeDuMi_Guide_11.pdf
+%%PORTDOCS%%%%DOCSDIR%%/SeDuMi_Guide_11.ps
+%%PORTDOCS%%%%DOCSDIR%%/Version.txt
+%%PORTDOCS%%@dirrm %%DOCSDIR%%
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/Examples.txt
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/OH_2Pi_STO-6GN9r12g1T2.mat
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/arch0.mat
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/control07.mat
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/nb.mat
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/trto3.mat
+%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%