<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8128425028760243409</id><updated>2012-02-17T03:54:22.782+09:00</updated><title type='text'>Hirotaka Niitsuma</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://niitsuma.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128425028760243409/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://niitsuma.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>niitsuma</name><uri>http://www.blogger.com/profile/13631225277264843435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8128425028760243409.post-8305165937652136087</id><published>2010-05-17T15:12:00.003+09:00</published><updated>2010-05-18T14:11:01.209+09:00</updated><title type='text'>Stalin can not optimize stream</title><content type='html'>I rewrite this code in stream style&lt;br /&gt;&lt;br /&gt;Re: A fast scheme implementation?&lt;br /&gt;http://newsgroups.derkeiler.com/Archive/Comp/comp.lang.scheme/2007-12/msg00061.html&lt;br /&gt;ftp://ftp.ecn.purdue.edu/qobi/integ.tgz&lt;br /&gt;&lt;br /&gt;It is seem to stalin does not optimize stream base loop. &lt;br /&gt;But in another CPU, stalin's result smiler to integ2-c.&lt;br /&gt;&lt;br /&gt;--------code----------&lt;br /&gt;(define the-empty-stream '())&lt;br /&gt;&lt;br /&gt;(define stream-null? null?)&lt;br /&gt;&lt;br /&gt;(define (stream-car stream) (car stream))&lt;br /&gt;&lt;br /&gt;(define (stream-cdr stream) (force (cdr stream)))&lt;br /&gt;&lt;br /&gt;(define (stream-ref s n)&lt;br /&gt;  (if (= n 0)&lt;br /&gt;      (stream-car s)&lt;br /&gt;      (stream-ref (stream-cdr s) (- n 1))))&lt;br /&gt;&lt;br /&gt;;; SICP prob 3.50 stream-map&lt;br /&gt;(define (stream-map proc . argstreams)&lt;br /&gt;  (if (stream-null? (car argstreams))&lt;br /&gt;      the-empty-stream&lt;br /&gt;      (&lt;br /&gt;       ;cons-stream&lt;br /&gt;       cons &lt;br /&gt;       (apply proc (map stream-car argstreams))&lt;br /&gt;       (delay (apply stream-map&lt;br /&gt;       (cons proc (map stream-cdr argstreams))))&lt;br /&gt;       )&lt;br /&gt;))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;; sicp prob 3.55&lt;br /&gt;&lt;br /&gt;(define (partial-sums s)&lt;br /&gt;  (cons&lt;br /&gt;   (stream-car s)&lt;br /&gt;   (delay &lt;br /&gt;     (add-streams (stream-cdr s)&lt;br /&gt;                (partial-sums s)))))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(define (add-streams s1 s2)&lt;br /&gt;  (stream-map + s1 s2))&lt;br /&gt;&lt;br /&gt;(define (sum-of-squares-stream s1 s2)&lt;br /&gt;   (partial-sums (stream-map - s1 s2))&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;(define (integers-starting-from n)&lt;br /&gt;  (cons n (delay (integers-starting-from (+ n 1)))))&lt;br /&gt;&lt;br /&gt;(define integers (integers-starting-from 1))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;;;;;;;end util;;;;;;;;;;&lt;br /&gt;&lt;br /&gt;(define (integrate-1D L U F)&lt;br /&gt; (let ((D (/ (- U L) 8.0)))&lt;br /&gt;  (* (+ (* (F L) 0.5)&lt;br /&gt; (F (+ L D))&lt;br /&gt; (F (+ L (* 2.0 D)))&lt;br /&gt; (F (+ L (* 3.0 D)))&lt;br /&gt; (F (+ L (* 4.0 D)))&lt;br /&gt; (F (- U (* 3.0 D)))&lt;br /&gt; (F (- U (* 2.0 D)))&lt;br /&gt; (F (- U D))&lt;br /&gt; (* (F U) 0.5))&lt;br /&gt;     D)))&lt;br /&gt;&lt;br /&gt;(define (integrate-2D L1 U1 L2 U2 F)&lt;br /&gt; (integrate-1D L2 U2 (lambda (y) (integrate-1D L1 U1 (lambda (x) (F x y))) )))&lt;br /&gt;&lt;br /&gt;(define (zark U V)&lt;br /&gt; (integrate-2D 0.0 U 0.0 V (lambda (X Y) (* X Y)) ))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(define (zark-i I)&lt;br /&gt;  (zark (* I 1.0) (* I 2.0)))&lt;br /&gt;&lt;br /&gt;(define r-stream &lt;br /&gt;  (stream-map zark-i integers))&lt;br /&gt;&lt;br /&gt;(define (i-fun I)&lt;br /&gt;  (let ((I2 (* (* I I) 1.0))) (* I2 I2)))&lt;br /&gt;&lt;br /&gt;(define i-stream &lt;br /&gt;  (stream-map i-fun integers))&lt;br /&gt;&lt;br /&gt;(define r-total-stream&lt;br /&gt;   (partial-sums r-stream)&lt;br /&gt;)&lt;br /&gt;  &lt;br /&gt;(define i-total-stream&lt;br /&gt;  (partial-sums i-stream)&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt; (begin&lt;br /&gt;   (display (stream-ref &lt;br /&gt;   (sum-of-squares-stream   r-total-stream  i-total-stream) 1000))&lt;br /&gt; (newline))&lt;br /&gt;&lt;br /&gt;--------code----------&lt;br /&gt;Th following result shows that stalin does not optimize this code. Computation time is same to C &lt;br /&gt;&lt;br /&gt;$ more /proc/cpuinfo&lt;br /&gt;model name : Intel(R) Celeron(R) CPU        E3300  @ 2.50GHz&lt;br /&gt;&lt;br /&gt;$ time ./integ-stream&lt;br /&gt;0.0&lt;br /&gt;&lt;br /&gt;real 0m1.905s&lt;br /&gt;user 0m1.760s&lt;br /&gt;sys 0m0.110s&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$ time ./integ-c&lt;br /&gt;0.000000&lt;br /&gt;&lt;br /&gt;real 0m1.767s&lt;br /&gt;user 0m1.700s&lt;br /&gt;sys 0m0.000s&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$ time ./integ&lt;br /&gt;0.0&lt;br /&gt;&lt;br /&gt;real 0m0.299s&lt;br /&gt;user 0m0.230s&lt;br /&gt;sys 0m0.000s&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;./run&lt;br /&gt;&lt;br /&gt;Stalin Version&lt;br /&gt;0.11&lt;br /&gt;GCC Version&lt;br /&gt;Using built-in specs.&lt;br /&gt;Target: x86_64-linux-gnu&lt;br /&gt;Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.4.1-4ubuntu9' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --disable-werror --with-arch-32=i486 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu&lt;br /&gt;Thread model: posix&lt;br /&gt;gcc version 4.4.1 (Ubuntu 4.4.1-4ubuntu9) &lt;br /&gt;Stalin integ&lt;br /&gt;0.0&lt;br /&gt;0.200u 0.000s 0:00.16 125.0% 0+0k 0+0io 0pf+0w&lt;br /&gt;Stalin integ-stream&lt;br /&gt;0.0&lt;br /&gt;1.610u 0.080s 0:01.73 97.6% 0+0k 0+0io 0pf+0w&lt;br /&gt;Stalin integ2&lt;br /&gt;0.0&lt;br /&gt;0.040u 0.000s 0:00.04 100.0% 0+0k 0+0io 0pf+0w&lt;br /&gt;Stalin integ3&lt;br /&gt;0.0&lt;br /&gt;0.290u 0.000s 0:00.29 100.0% 0+0k 0+0io 0pf+0w&lt;br /&gt;GCC integ-c&lt;br /&gt;0.000000&lt;br /&gt;3.020u 0.000s 0:03.06 98.6% 0+0k 0+0io 0pf+0w&lt;br /&gt;GCC integ2-c&lt;br /&gt;0.000000&lt;br /&gt;0.230u 0.000s 0:00.21 109.5% 0+0k 0+0io 0pf+0w&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$ more /proc/cpuinfo&lt;br /&gt;model name : Intel(R) Pentium(R) 4 CPU 3.00GHz&lt;br /&gt;&lt;br /&gt;$time ./integ&lt;br /&gt;0.0&lt;br /&gt;&lt;br /&gt;real 0m0.277s&lt;br /&gt;user 0m0.276s&lt;br /&gt;&lt;br /&gt;$ time ./integ-c &lt;br /&gt;0.000000&lt;br /&gt;&lt;br /&gt;real 0m35.566s&lt;br /&gt;user 0m35.274s&lt;br /&gt;sys 0m0.084s&lt;br /&gt;&lt;br /&gt;$ time ./integ-stream &lt;br /&gt;0.0&lt;br /&gt;&lt;br /&gt;real 0m4.235s&lt;br /&gt;user 0m3.764s&lt;br /&gt;sys 0m0.220s&lt;br /&gt;&lt;br /&gt;./run &lt;br /&gt;&lt;br /&gt;Stalin Version&lt;br /&gt;0.11&lt;br /&gt;GCC Version&lt;br /&gt;Using built-in specs.&lt;br /&gt;Target: i486-linux-gnu&lt;br /&gt;Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.4.3-4ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i486 --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu&lt;br /&gt;Thread model: posix&lt;br /&gt;gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) &lt;br /&gt;Stalin integ&lt;br /&gt;0.0&lt;br /&gt;0.284u 0.000s 0:00.28 100.0% 0+0k 0+0io 0pf+0w&lt;br /&gt;Stalin integ-stream&lt;br /&gt;0.0&lt;br /&gt;3.540u 0.164s 0:03.77 98.1% 0+0k 0+0io 0pf+0w&lt;br /&gt;Stalin integ2&lt;br /&gt;0.0&lt;br /&gt;0.080u 0.004s 0:00.08 100.0% 0+0k 0+0io 0pf+0w&lt;br /&gt;Stalin integ3&lt;br /&gt;0.0&lt;br /&gt;0.588u 0.000s 0:00.58 100.0% 0+0k 0+0io 0pf+0w&lt;br /&gt;GCC integ-c&lt;br /&gt;0.000000&lt;br /&gt;31.649u 0.036s 0:31.98 99.0% 0+0k 0+0io 0pf+0w&lt;br /&gt;GCC integ2-c&lt;br /&gt;0.000000&lt;br /&gt;1.248u 0.000s 0:01.28 96.8% 0+0k 0+0io 0pf+0w&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128425028760243409-8305165937652136087?l=niitsuma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niitsuma.blogspot.com/feeds/8305165937652136087/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128425028760243409&amp;postID=8305165937652136087' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128425028760243409/posts/default/8305165937652136087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128425028760243409/posts/default/8305165937652136087'/><link rel='alternate' type='text/html' href='http://niitsuma.blogspot.com/2010/05/stalin-can-not-optimize-stream.html' title='Stalin can not optimize stream'/><author><name>niitsuma</name><uri>http://www.blogger.com/profile/13631225277264843435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8128425028760243409.post-8579046880391889784</id><published>2009-01-30T05:40:00.010+09:00</published><updated>2009-02-05T11:41:12.663+09:00</updated><title type='text'>lisp-&gt; python interface via json and embeding</title><content type='html'>moved to &lt;a href="http://www2s.biglobe.ne.jp/~niitsuma/pyjsonrpcembd.html" &gt;http://www2s.biglobe.ne.jp/~niitsuma/pyjsonrpcembd.html&lt;/a&gt;&lt;br /&gt;in Japanse http://d.hatena.ne.jp/niitsuma/20080209/1233260146&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128425028760243409-8579046880391889784?l=niitsuma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niitsuma.blogspot.com/feeds/8579046880391889784/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128425028760243409&amp;postID=8579046880391889784' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128425028760243409/posts/default/8579046880391889784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128425028760243409/posts/default/8579046880391889784'/><link rel='alternate' type='text/html' href='http://niitsuma.blogspot.com/2009/01/lisp-python-interface-via-json.html' title='lisp-&gt; python interface via json and embeding'/><author><name>niitsuma</name><uri>http://www.blogger.com/profile/13631225277264843435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8128425028760243409.post-2424423807609183902</id><published>2009-01-29T21:40:00.005+09:00</published><updated>2009-01-29T21:56:17.539+09:00</updated><title type='text'>python embedding simple example</title><content type='html'>http://docs.python.org/extending/embedding.html&lt;br /&gt;In some environment, this example fail to import python file multiple.py .&lt;br /&gt;The following provides another example of assessing to python function's result and augments from C. &lt;br /&gt;&lt;br /&gt;--------------------------&lt;br /&gt;#include &lt;Python.h&gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;   PyObject *pName, *pModule, *pDict, *pFunc;&lt;br /&gt;   PyObject *pArgs, *pValue;&lt;br /&gt;  &lt;br /&gt;  Py_Initialize();&lt;br /&gt;&lt;br /&gt; //def myfun&lt;br /&gt;  PyRun_SimpleString(&lt;br /&gt;     "def myfun(a):\n"&lt;br /&gt;     "\tprint a\n"&lt;br /&gt;     "\treturn a*a\n"     &lt;br /&gt;       );&lt;br /&gt;  &lt;br /&gt;//extract interface to myfun&lt;br /&gt;  pName = PyString_FromString( "__main__");&lt;br /&gt;  pModule = PyImport_Import(pName);&lt;br /&gt;  Py_DECREF(pName);&lt;br /&gt;  &lt;br /&gt;  pFunc = PyObject_GetAttrString(pModule, "myfun");&lt;br /&gt;  pArgs = PyTuple_New(1);&lt;br /&gt;  pValue = PyInt_FromLong(atoi("3"));&lt;br /&gt;  PyTuple_SetItem(pArgs, 0, pValue);&lt;br /&gt;&lt;br /&gt;//execute myfun&lt;br /&gt;  pValue = PyObject_CallObject(pFunc, pArgs);&lt;br /&gt;  Py_DECREF(pArgs);&lt;br /&gt;//get result&lt;br /&gt;  printf("Result of call: %ld\n", PyInt_AsLong(pValue));&lt;br /&gt;  Py_DECREF(pValue);&lt;br /&gt;&lt;br /&gt;//simple do&lt;br /&gt;  PyRun_SimpleString("print myfun(3)\n");&lt;br /&gt;//finalize&lt;br /&gt;  Py_DECREF(pModule);&lt;br /&gt;  Py_Finalize();&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128425028760243409-2424423807609183902?l=niitsuma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niitsuma.blogspot.com/feeds/2424423807609183902/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128425028760243409&amp;postID=2424423807609183902' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128425028760243409/posts/default/2424423807609183902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128425028760243409/posts/default/2424423807609183902'/><link rel='alternate' type='text/html' href='http://niitsuma.blogspot.com/2009/01/python-ebeding-simple-example.html' title='python embedding simple example'/><author><name>niitsuma</name><uri>http://www.blogger.com/profile/13631225277264843435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8128425028760243409.post-4439184524446623850</id><published>2008-02-01T16:19:00.001+09:00</published><updated>2008-02-01T16:46:18.515+09:00</updated><title type='text'>Interface python.numarray and c++ using boost.python and cmake</title><content type='html'>Let us call the following c++ functions from python&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;pre class="program"&gt;&lt;br /&gt;#include &lt;span class="synConstant"&gt;&amp;lt;boost/python.hpp&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="synPreProc"&gt;#include &lt;/span&gt;&lt;span class="synConstant"&gt;&amp;lt;boost/python/numeric.hpp&amp;gt;&lt;/span&gt;&lt;br /&gt;using namespace boost::python;&lt;br /&gt;&lt;br /&gt;&lt;span class="synType"&gt;char&lt;/span&gt; &lt;span class="synType"&gt;const&lt;/span&gt;* say_yes(){&lt;span class="synStatement"&gt;return&lt;/span&gt; &lt;span class="synConstant"&gt;"YES!!"&lt;/span&gt;;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="synComment"&gt;// See if we can invoke array() from C++&lt;/span&gt;&lt;br /&gt;object new_array()&lt;br /&gt;{&lt;br /&gt;&lt;span class="synStatement"&gt;return&lt;/span&gt; numeric::array(make_tuple(&lt;br /&gt;     make_tuple(&lt;span class="synConstant"&gt;1&lt;/span&gt;,&lt;span class="synConstant"&gt;2.2&lt;/span&gt;,&lt;span class="synConstant"&gt;3&lt;/span&gt;)&lt;br /&gt;   , make_tuple(&lt;span class="synConstant"&gt;4&lt;/span&gt;,&lt;span class="synConstant"&gt;5&lt;/span&gt;,&lt;span class="synConstant"&gt;6&lt;/span&gt;)&lt;br /&gt;   , make_tuple(&lt;span class="synConstant"&gt;7&lt;/span&gt;,&lt;span class="synConstant"&gt;8&lt;/span&gt;,&lt;span class="synConstant"&gt;9&lt;/span&gt;)&lt;br /&gt;),&lt;span class="synConstant"&gt;'d'&lt;/span&gt;);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="synComment"&gt;// test argument conversion&lt;/span&gt;&lt;br /&gt;&lt;span class="synType"&gt;void&lt;/span&gt; take_array(numeric::array x){x[make_tuple(&lt;span class="synConstant"&gt;0&lt;/span&gt;,&lt;span class="synConstant"&gt;0&lt;/span&gt;)]= &lt;span class="synConstant"&gt;0.5&lt;/span&gt;;}&lt;br /&gt;&lt;br /&gt;BOOST_PYTHON_MODULE(libboopy)&lt;br /&gt;{&lt;br /&gt;def(&lt;span class="synConstant"&gt;"yes"&lt;/span&gt;, say_yes);&lt;br /&gt;def(&lt;span class="synConstant"&gt;"new_array"&lt;/span&gt;, new_array);&lt;br /&gt;def(&lt;span class="synConstant"&gt;"take_array"&lt;/span&gt;, take_array);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;This c++ code can compile&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cmake .&lt;br /&gt;$ make&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;with  file CMakeLists.txt&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;INCLUDE_DIRECTORIES(  /usr/include/python2.4       )&lt;br /&gt;ADD_LIBRARY(boopy  SHARED boopy.cpp )&lt;br /&gt;TARGET_LINK_LIBRARIES(boopy boost_python python2.4 )&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;Then libboopy.so is genereated. libboopy.so can call from python as the fllowing&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;pre class="syntax-highlight"&gt;&lt;span class="synStatement"&gt;def&lt;/span&gt; &lt;span class="synIdentifier"&gt;boopy_test&lt;/span&gt;():&lt;br /&gt;    &lt;span class="synPreProc"&gt;import&lt;/span&gt; sys&lt;br /&gt;    &lt;span class="synPreProc"&gt;import&lt;/span&gt; numarray&lt;br /&gt;    &lt;span class="synPreProc"&gt;import&lt;/span&gt; libboopy&lt;br /&gt;    &lt;span class="synStatement"&gt;print&lt;/span&gt; libboopy.yes()&lt;br /&gt;    x =  libboopy.new_array()&lt;br /&gt;  　&lt;span class="synStatement"&gt;print&lt;/span&gt; x&lt;br /&gt;    libboopy.take_array(x)&lt;br /&gt;    &lt;span class="synStatement"&gt;print&lt;/span&gt; x&lt;br /&gt;    z=numarray.array([[0,1],[1,3]], numarray.Float)&lt;br /&gt;    &lt;span class="synStatement"&gt;print&lt;/span&gt; z &lt;br /&gt;    libboopy.take_array(z) # note here&lt;br /&gt;    &lt;span class="synStatement"&gt;print&lt;/span&gt; z&lt;br /&gt;&lt;br /&gt;&lt;span class="synStatement"&gt;if&lt;/span&gt; __name__ == '&lt;span class="synConstant"&gt;__main__&lt;/span&gt;':&lt;br /&gt;    &lt;span class="synStatement"&gt;print&lt;/span&gt; "&lt;span class="synConstant"&gt;running...&lt;/span&gt;"&lt;br /&gt;    &lt;span class="synPreProc"&gt;import&lt;/span&gt; sys&lt;br /&gt;    boopy_test()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;output is&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;YES!!&lt;br /&gt;[[ 1.   2.2  3. ]&lt;br /&gt; [ 4.   5.   6. ]&lt;br /&gt; [ 7.   8.   9. ]]&lt;br /&gt;[[ 0.5  2.2  3. ]&lt;br /&gt; [ 4.   5.   6. ]&lt;br /&gt; [ 7.   8.   9. ]]&lt;br /&gt;[[ 0.  1.]&lt;br /&gt; [ 1.  3.]]&lt;br /&gt;[[ 0.5  1. ]&lt;br /&gt; [ 1.   3. ]]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;hr&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128425028760243409-4439184524446623850?l=niitsuma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niitsuma.blogspot.com/feeds/4439184524446623850/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128425028760243409&amp;postID=4439184524446623850' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128425028760243409/posts/default/4439184524446623850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128425028760243409/posts/default/4439184524446623850'/><link rel='alternate' type='text/html' href='http://niitsuma.blogspot.com/2008/02/interface-pythonnumarray-and-c-using.html' title='Interface python.numarray and c++ using boost.python and cmake'/><author><name>niitsuma</name><uri>http://www.blogger.com/profile/13631225277264843435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8128425028760243409.post-3572665154827396293</id><published>2008-01-30T15:18:00.000+09:00</published><updated>2008-01-30T15:33:02.445+09:00</updated><title type='text'>BIAS - Basic Image AlgorithmS Library on ubuntu</title><content type='html'>&lt;a href="http://http//www.mip.informatik.uni-kiel.de/%7Ewwwadmin/Software/"&gt;BIAS - Basic Image AlgorithmS Library&lt;/a&gt; can be installed by the following simple procedure to ubuntu 7.10 linux&lt;br /&gt;&lt;ol&gt;&lt;li&gt;sudo  apt-get install g++ checkinstall cmake libglew-dev libglut-dev libmagick++9-dev libcv-dev lapack3-dev libf2c2-dev uuid-dev libxmu-dev libxxf86vm-dev libgsl0-dev&lt;/li&gt;&lt;li&gt;wget http://www.mip.informatik.uni-kiel.de/~wwwadmin/&lt;br /&gt;Software/Download/BIAS-2.5.0.tar.gz&lt;/li&gt;&lt;li&gt;tar zxf BIAS-2.5.0.tar.gz&lt;/li&gt;&lt;li&gt;cd BIAS-2.5.0&lt;/li&gt;&lt;li&gt;ccmake .&lt;/li&gt;&lt;ol&gt;&lt;li&gt;enable use gsl&lt;/li&gt;&lt;li&gt;disaple wxWidgets&lt;/li&gt;&lt;li&gt;[c]onfigre then [g]enerate&lt;/li&gt;&lt;li&gt;close ccmake&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;make -k&lt;br /&gt;&lt;/li&gt;&lt;li&gt;sudo checkinstall (or sudo make install)&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;maybe    apt-get install libwxgtk-dev libwxbase-dev also required&lt;br /&gt;&lt;br /&gt;in japanese http://d.hatena.ne.jp/niitsuma/20080107/1201322983&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128425028760243409-3572665154827396293?l=niitsuma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niitsuma.blogspot.com/feeds/3572665154827396293/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128425028760243409&amp;postID=3572665154827396293' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128425028760243409/posts/default/3572665154827396293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128425028760243409/posts/default/3572665154827396293'/><link rel='alternate' type='text/html' href='http://niitsuma.blogspot.com/2008/01/bias-basic-image-algorithms-library-on.html' title='BIAS - Basic Image AlgorithmS Library on ubuntu'/><author><name>niitsuma</name><uri>http://www.blogger.com/profile/13631225277264843435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
