[92470] trunk/dports/science
cal at macports.org
cal at macports.org
Sun Apr 29 09:29:03 PDT 2012
Revision: 92470
https://trac.macports.org/changeset/92470
Author: cal at macports.org
Date: 2012-04-29 09:29:02 -0700 (Sun, 29 Apr 2012)
Log Message:
-----------
new port: yorick-soy, closes #33904
Added Paths:
-----------
trunk/dports/science/yorick-soy/
trunk/dports/science/yorick-soy/Portfile
trunk/dports/science/yorick-soy/files/
trunk/dports/science/yorick-soy/files/patch-soy.i.diff
Added: trunk/dports/science/yorick-soy/Portfile
===================================================================
--- trunk/dports/science/yorick-soy/Portfile (rev 0)
+++ trunk/dports/science/yorick-soy/Portfile 2012-04-29 16:29:02 UTC (rev 92470)
@@ -0,0 +1,40 @@
+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
+# $Id$
+
+PortSystem 1.0
+PortGroup github 1.0
+
+set uname soy
+github.setup frigaut yorick-${uname} 1.4.0
+license GPL-2+
+categories science
+platforms darwin
+maintainers users.sourceforge.net:paumard openmaintainer
+description Sparse matrix operations for the Yorick language
+long_description Sparse Operations with Yorick is a plugin for Yorick (an \
+ interpreted computer language specialized for numerical \
+ and scientific problems) that allows performing efficient \
+ operations on sparse matrices.
+homepage http://maumae.net/yorick/doc/plugins.php
+
+checksums rmd160 95fc7d4dddc706e852be93e49fa08040cdc1a6ec \
+ sha256 555563db50c88b96b490ddb51fe5be72e874ca5363d3aa2cbf05804cb52c0622
+
+depends_lib-append path:bin/yorick:yorick
+
+# yorick isn't universal
+universal_variant no
+
+configure.cmd ${prefix}/bin/yorick
+configure.pre_args
+configure.args -batch make.i
+
+build.args-append CC=${configure.cc} \
+ PKG_CFLAGS=\"${configure.cflags}\" \
+ PKG_LDFLAGS=\"${configure.ldflags}\"
+
+post-destroot {
+ xinstall -d ${destroot}${prefix}/lib/yorick/packages/installed/
+ xinstall -m 644 ${worksrcpath}/${uname}.info \
+ ${destroot}${prefix}/lib/yorick/packages/installed/
+}
Property changes on: trunk/dports/science/yorick-soy/Portfile
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Added: trunk/dports/science/yorick-soy/files/patch-soy.i.diff
===================================================================
--- trunk/dports/science/yorick-soy/files/patch-soy.i.diff (rev 0)
+++ trunk/dports/science/yorick-soy/files/patch-soy.i.diff 2012-04-29 16:29:02 UTC (rev 92470)
@@ -0,0 +1,210 @@
+diff -u soy.i.orig soy.i
+--- soy.i.orig
++++ soy.i
+@@ -269,10 +269,13 @@ func ruoadd(a,b,ur=,un=)
+ /* DOCUMENT func ruoadd(a,b)
+ Addition of two square symmetric RUO matrices "a" and "b".
+ SEE ALSO: ruoadd_float.c, ruoadd_double.c (soy.c)
++ Modified by Marcos van Dam, April 2011.
++ Now adds diagonal matrices
+ */
+ {
+ if (typeof(*a.xn) != typeof(*b.xn)) error,"Mixed Data Types";
+ if (a.r != b.r) error,"Matrices have incompatible dimensions!";
++
+ argc = 5;
+ if (ur == []) ur = MR;
+ if (un == []) un = MN;
+@@ -284,10 +287,14 @@ func ruoadd(a,b,ur=,un=)
+ c.ix = &(array(long,ur));
+ c.jx = &(array(long,un));
+ c.xn = &(array(float,un));
+- c.xd = &(array(float,ur));
+- tt = array(float,a.n+b.n);
+- t = [&a,&b,&c,&tt,&s];
+- tmp = ruoadd_float(argc, &t);
++ if (a.n+b.n == 0){ // fix bug when adding two diagonal matrices
++ c.xd = &(*a.xd + *b.xd);
++ } else {
++ c.xd = &(array(float,ur));
++ tt = array(float,a.n+b.n);
++ t = [&a,&b,&c,&tt,&s];
++ tmp = ruoadd_float(argc, &t);
++ }
+ return c;}
+ else if (typeof(*a.xn) == "double") {
+ c = ruo_d();
+@@ -296,10 +303,14 @@ func ruoadd(a,b,ur=,un=)
+ c.ix = &(array(long,ur));
+ c.jx = &(array(long,un));
+ c.xn = &(array(double,un));
+- c.xd = &(array(double,ur));
+- tt = array(double,a.n+b.n);
+- t = [&a,&b,&c,&tt,&s];
+- tmp = ruoadd_double(argc, &t);
++ if (a.n+b.n == 0){ // fix bug when adding two diagonal matrices
++ c.xd = &(*a.xd + *b.xd);
++ } else {
++ c.xd = &(array(double,ur));
++ tt = array(double,a.n+b.n);
++ t = [&a,&b,&c,&tt,&s];
++ tmp = ruoadd_double(argc, &t);
++ }
+ return c;}
+ else error,"Unsupported Data Type";
+ }
+@@ -433,7 +444,7 @@ func rcotr(a)
+ at.t = a.t;
+ at.ix = &(array(long,ur));
+ at.jx = &(array(long,un));
+- if (a.n > 0){
++ if (a.n > 0){
+ sjx = long(sort((*a.jx)(1:a.n)));
+ hjx = (*a.jx)(sjx);
+ ax = array(long,a.c);
+@@ -523,7 +534,7 @@ func ruoinf(a)
+ {
+ if (typeof(*a.xn) == "float") x = array(float,a.r,a.r);
+ else if (typeof(*a.xn) == "double") x = array(double,a.r,a.r);
+- else error,"Unsupported Data Type";
++ else error,"Unsupported Data Type";
+ for (i=1; i<=a.r; i++) x(i,i) = (*a.xd)(i);
+ for (i=1; i<a.r; i++) {
+ if ((*a.ix)(i+1) > (*a.ix)(i)) {
+@@ -763,6 +774,8 @@ func save_ruo(a,fn)
+ Saves an RUO structure a to the binary file fn by converting
+ all of its elements to float (double) and putting them into a
+ single vector.
++ Modified by Marcos van Dam, April 2011.
++ Now saves diagonal matrices
+ */
+ {
+ r = a.r;
+@@ -770,16 +783,20 @@ func save_ruo(a,fn)
+ if (typeof(*a.xn) == "float") {
+ v = array(float,n*2+r*2+4);
+ v(1:2) = float([n,r]);
+- v(3:n+2) = (*a.xn)(1:n);
+- v(n+3:2*n+2) = float((*a.jx)(1:n));
++ if (n > 0){ // fixed bug if n == 0
++ v(3:n+2) = (*a.xn)(1:n);
++ v(n+3:2*n+2) = float((*a.jx)(1:n));
++ }
+ v(2*n+3:2*n+r+4) = float((*a.ix)(1:r+2));
+ v(2*n+r+5:2*n+2*r+4) = (*a.xd)(1:r);
+ }
+ else if (typeof(*a.xn) == "double") {
+ v = array(double,n*2+r*2+4);
+ v(1:2) = double([n,r]);
+- v(3:n+2) = (*a.xn)(1:n);
+- v(n+3:2*n+2) = double((*a.jx)(1:n));
++ if (n > 0){ // fixed bug if n == 0
++ v(3:n+2) = (*a.xn)(1:n);
++ v(n+3:2*n+2) = double((*a.jx)(1:n));
++ }
+ v(2*n+3:2*n+r+4) = double((*a.ix)(1:r+2));
+ v(2*n+r+5:2*n+2*r+4) = (*a.xd)(1:r);
+ }
+@@ -812,11 +829,11 @@ func restore_rco(fn, ur=, un=)
+ xn = v(4:a.n+3);
+ jx = long(v(a.n+4:2*a.n+3));
+ ix = long(v(2*a.n+4:2*a.n+a.r+5));
+-
++
+ (*a.xn)(1:a.n) = xn;
+ (*a.jx)(1:numberof(jx)) = jx;
+ (*a.ix)(1:numberof(ix)) = ix;
+-
++
+ return a;
+ }
+
+@@ -826,6 +843,8 @@ func restore_ruo(fn, ur=, un=)
+ Returns the RUO structure saved in the file fn by save_rco.
+ Modified by Marcos van Dam, August 2010.
+ Now pads out the pointers, so that the matrices can be manipulated
++ Modified by Marcos van Dam, April 2011.
++ Now restores diagonal matrices
+ */
+ {
+ if (ur == []) ur = MR;
+@@ -842,13 +861,14 @@ func restore_ruo(fn, ur=, un=)
+ a.xn = &(array(float,un));
+ a.xd = &(array(float,ur));
+
+- xn = v(3:a.n+2);
+- jx = long(v(a.n+3:2*a.n+2));
++ if (a.n > 0){ // fixed bug if n == 0
++ xn = v(3:a.n+2);
++ jx = long(v(a.n+3:2*a.n+2));
++ (*a.xn)(1:numberof(xn)) = xn;
++ (*a.jx)(1:numberof(jx)) = jx;
++ }
+ ix = long(v(2*a.n+3:2*a.n+a.r+4));
+ xd = v(2*a.n+a.r+5:2*a.n+2*a.r+4);
+-
+- (*a.xn)(1:numberof(xn)) = xn;
+- (*a.jx)(1:numberof(jx)) = jx;
+ (*a.ix)(1:numberof(ix)) = ix;
+ (*a.xd)(1:numberof(xd)) = xd;
+
+@@ -873,7 +893,7 @@ func rcodr(&a,r)
+ if (r == a.r) {
+ (*a.jx)(a.n-nel+1:a.n) *= 0;
+ (*a.xn)(a.n-nel+1:a.n) *= 0.0f;
+- (*a.ix)(a.r+1) = 0;
++ (*a.ix)(a.r+1) = 0;
+ } else if (r == 1) {
+ (*a.jx)(1:a.n-nel) = (*a.jx)(nel+1:a.n);
+ (*a.xn)(1:a.n-nel) = (*a.xn)(nel+1:a.n);
+@@ -885,7 +905,7 @@ func rcodr(&a,r)
+ //(*a.xn)((*a.ix)(r):a.n-nel-1) = (*a.xn)((*a.ix)(r+1):a.n-1); //orig
+ (*a.jx)((*a.ix)(r)+1:a.n) = (*a.jx)((*a.ix)(r)+1+nel:a.n+nel); //rev
+ (*a.xn)((*a.ix)(r)+1:a.n) = (*a.xn)((*a.ix)(r)+1+nel:a.n+nel); //rev
+-
++
+ (*a.ix)(r+1:a.r) = (*a.ix)(r+2:a.r+1)-nel;
+ (*a.ix)(a.r+1) = 0;
+ }
+@@ -981,7 +1001,7 @@ func ruo2rco(a)
+ u.xn = &(dxn);
+ u.n += u.r;
+ b = rcoadd(u,l);
+-
++
+ return b;
+ }
+ //==================================================================
+@@ -1101,14 +1121,14 @@ func spunit(n, precision=)
+ spidentity = spruo(double(unit(1)));
+ }
+ else {
+- spidentity = spruo(float(unit(1)));
++ spidentity = spruo(float(unit(1)));
+ }
+
+ spidentity.r = n;
+ (*spidentity.xd)(1:n) = 1;
+-
++
+ return spidentity;
+-}
++}
+
+
+ //==================================================================
+@@ -1125,7 +1145,7 @@ func spzeros(m, n, precision=)
+ else {
+ zero_row = sprco(array(float,[2,n,1]));
+ }
+-
++
+ for (row_counter=1;row_counter<=m;row_counter++){
+ if (row_counter == 1){
+ zero_matrix = zero_row;
+@@ -1135,4 +1155,4 @@ func spzeros(m, n, precision=)
+ }
+ }
+ return zero_matrix;
+-}
++}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20120429/9e71fc23/attachment.html>
More information about the macports-changes
mailing list