[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