narray 0.5.9.9 → 0.6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/src/ChangeLog +36 -0
- data/src/README.en +5 -6
- data/src/README.ja +4 -5
- data/src/SPEC.en +12 -9
- data/src/SPEC.ja +12 -9
- data/src/depend +1 -1
- data/src/extconf.rb +4 -19
- data/src/lib/narray_ext.rb +43 -2
- data/src/mkop.rb +11 -1
- data/src/na_func.c +92 -11
- data/src/na_linalg.c +2 -0
- data/src/narray.c +21 -12
- data/src/narray.h +3 -3
- data/src/narray_local.h +1 -0
- metadata +7 -48
- data/src/bench/all.rb +0 -88
- data/src/bench/bench.m +0 -61
- data/src/bench/bench.py +0 -89
- data/src/bench/bench.rb +0 -59
- data/src/bench/dummy.m +0 -0
- data/src/bench/dummy.py +0 -13
- data/src/bench/dummy.rb +0 -0
- data/src/test/statistics.rb +0 -22
- data/src/test/testarray.rb +0 -20
- data/src/test/testbit.rb +0 -27
- data/src/test/testcast.rb +0 -14
- data/src/test/testcomplex.rb +0 -35
- data/src/test/testfftw.rb +0 -16
- data/src/test/testindex.rb +0 -11
- data/src/test/testindexary.rb +0 -26
- data/src/test/testindexset.rb +0 -55
- data/src/test/testmask.rb +0 -40
- data/src/test/testmath.rb +0 -48
- data/src/test/testmath2.rb +0 -46
- data/src/test/testmatrix.rb +0 -13
- data/src/test/testmatrix2.rb +0 -42
- data/src/test/testmatrix3.rb +0 -19
- data/src/test/testminmax.rb +0 -46
- data/src/test/testobject.rb +0 -29
- data/src/test/testpow.rb +0 -19
- data/src/test/testrandom.rb +0 -23
- data/src/test/testround.rb +0 -11
- data/src/test/testsort.rb +0 -37
- data/src/test/teststr.rb +0 -13
- data/src/test/testtrans.rb +0 -18
- data/src/test/testwhere.rb +0 -27
    
        data/src/na_linalg.c
    CHANGED
    
    | @@ -32,6 +32,7 @@ typedef struct NARRAY_FUNCSET { | |
| 32 32 | 
             
              void (*sbt)();
         | 
| 33 33 | 
             
              void (*mul)();
         | 
| 34 34 | 
             
              void (*div)();
         | 
| 35 | 
            +
              void (*mod)();
         | 
| 35 36 | 
             
              void (*muladd)();
         | 
| 36 37 | 
             
              void (*mulsbt)();
         | 
| 37 38 | 
             
              void (*cmp)();
         | 
| @@ -590,6 +591,7 @@ void Init_na_linalg() | |
| 590 591 | 
             
                na_funcset[i].sbt = SbtUFuncs[i];
         | 
| 591 592 | 
             
                na_funcset[i].mul = MulUFuncs[i];
         | 
| 592 593 | 
             
                na_funcset[i].div = DivUFuncs[i];
         | 
| 594 | 
            +
                na_funcset[i].mod = ModUFuncs[i];
         | 
| 593 595 | 
             
                na_funcset[i].muladd = MulAddFuncs[i];
         | 
| 594 596 | 
             
                na_funcset[i].mulsbt = MulSbtFuncs[i];
         | 
| 595 597 | 
             
                na_funcset[i].cmp = CmpFuncs[i];
         | 
    
        data/src/narray.c
    CHANGED
    
    | @@ -101,7 +101,7 @@ static void | |
| 101 101 | 
             
            {
         | 
| 102 102 | 
             
              if ( ary->total > 0 ) {
         | 
| 103 103 | 
             
                if (ary->ref == Qnil || ary->ref == Qtrue) {  /* non reference */
         | 
| 104 | 
            -
                  xfree(ary->ptr); | 
| 104 | 
            +
                  xfree(ary->ptr);
         | 
| 105 105 | 
             
                }
         | 
| 106 106 | 
             
                xfree(ary->shape);
         | 
| 107 107 | 
             
            #ifdef DEBUG
         | 
| @@ -117,17 +117,22 @@ static void | |
| 117 117 | 
             
            struct NARRAY*
         | 
| 118 118 | 
             
             na_alloc_struct(int type, int rank, int *shape)
         | 
| 119 119 | 
             
            {
         | 
| 120 | 
            -
              int total=1;
         | 
| 120 | 
            +
              int total=1, total_bak;
         | 
| 121 121 | 
             
              int i, memsz;
         | 
| 122 122 | 
             
              struct NARRAY *ary;
         | 
| 123 123 |  | 
| 124 | 
            -
              for (i=0; i<rank; ++i)
         | 
| 125 | 
            -
                 | 
| 124 | 
            +
              for (i=0; i<rank; ++i) {
         | 
| 125 | 
            +
                total_bak = total;
         | 
| 126 | 
            +
                total = total_bak * shape[i];
         | 
| 127 | 
            +
                if (total>2147483647 || total/shape[i] != total_bak) {
         | 
| 128 | 
            +
                  rb_raise(rb_eArgError, "array size is too large");
         | 
| 129 | 
            +
                }
         | 
| 130 | 
            +
              }
         | 
| 126 131 |  | 
| 127 132 | 
             
              if (rank<=0 || total<=0) {
         | 
| 128 133 | 
             
                /* empty array */
         | 
| 129 134 | 
             
                ary = ALLOC(struct NARRAY);
         | 
| 130 | 
            -
                ary->rank  = | 
| 135 | 
            +
                ary->rank  =
         | 
| 131 136 | 
             
                ary->total = 0;
         | 
| 132 137 | 
             
                ary->shape = NULL;
         | 
| 133 138 | 
             
                ary->ptr   = NULL;
         | 
| @@ -136,6 +141,10 @@ struct NARRAY* | |
| 136 141 | 
             
              else {
         | 
| 137 142 | 
             
                memsz = na_sizeof[type] * total;
         | 
| 138 143 |  | 
| 144 | 
            +
                if (memsz>2147483647 || memsz/na_sizeof[type] != total) {
         | 
| 145 | 
            +
                  rb_raise(rb_eArgError, "allocation size is too large");
         | 
| 146 | 
            +
                }
         | 
| 147 | 
            +
             | 
| 139 148 | 
             
                /* Garbage Collection */
         | 
| 140 149 | 
             
            #ifdef NARRAY_GC
         | 
| 141 150 | 
             
                mem_count += memsz;
         | 
| @@ -231,7 +240,7 @@ VALUE | |
| 231 240 | 
             
              if (type==NA_ROBJ) {
         | 
| 232 241 | 
             
                rb_mem_clear((VALUE*)(na->ptr), na->total);
         | 
| 233 242 | 
             
              }
         | 
| 234 | 
            -
              return na_wrap_struct_class(na, klass); | 
| 243 | 
            +
              return na_wrap_struct_class(na, klass);
         | 
| 235 244 | 
             
            }
         | 
| 236 245 |  | 
| 237 246 |  | 
| @@ -257,7 +266,7 @@ VALUE | |
| 257 266 | 
             
              struct NARRAY *na;
         | 
| 258 267 |  | 
| 259 268 | 
             
              na = na_alloc_struct(type, 0, NULL);
         | 
| 260 | 
            -
              return na_wrap_struct_class(na, klass); | 
| 269 | 
            +
              return na_wrap_struct_class(na, klass);
         | 
| 261 270 | 
             
            }
         | 
| 262 271 |  | 
| 263 272 |  | 
| @@ -610,7 +619,7 @@ static VALUE | |
| 610 619 | 
             
                if ( len != str_len )
         | 
| 611 620 | 
             
                  rb_raise(rb_eArgError, "size mismatch");
         | 
| 612 621 | 
             
              }
         | 
| 613 | 
            -
             | 
| 622 | 
            +
             | 
| 614 623 | 
             
              v = na_make_object( type, rank, shape, cNArray );
         | 
| 615 624 | 
             
              GetNArray(v,ary);
         | 
| 616 625 | 
             
              memcpy( ary->ptr, RSTRING_PTR(str), ary->total*na_sizeof[type] );
         | 
| @@ -720,7 +729,7 @@ static VALUE | |
| 720 729 | 
             
            }
         | 
| 721 730 |  | 
| 722 731 |  | 
| 723 | 
            -
            /* singleton method: | 
| 732 | 
            +
            /* singleton method:
         | 
| 724 733 | 
             
               NArray.to_na( string, type, size1,size2,...,sizeN )
         | 
| 725 734 | 
             
               NArray.to_na( array )
         | 
| 726 735 | 
             
            */
         | 
| @@ -751,7 +760,7 @@ static VALUE | |
| 751 760 | 
             
            }
         | 
| 752 761 |  | 
| 753 762 |  | 
| 754 | 
            -
            /* singleton method: | 
| 763 | 
            +
            /* singleton method:
         | 
| 755 764 | 
             
               NArray[object]
         | 
| 756 765 | 
             
            */
         | 
| 757 766 | 
             
            static VALUE
         | 
| @@ -986,7 +995,7 @@ VALUE na_fill(VALUE self, volatile VALUE val) | |
| 986 995 | 
             
              if (a2->total != 1)
         | 
| 987 996 | 
             
                rb_raise(rb_eArgError, "single-element argument required");
         | 
| 988 997 |  | 
| 989 | 
            -
              SetFuncs[a1->type][a2->type]( a1->total, | 
| 998 | 
            +
              SetFuncs[a1->type][a2->type]( a1->total,
         | 
| 990 999 | 
             
            				a1->ptr, na_sizeof[a1->type],
         | 
| 991 1000 | 
             
            				a2->ptr, 0 );
         | 
| 992 1001 | 
             
              return self;
         | 
| @@ -1010,7 +1019,7 @@ VALUE | |
| 1010 1019 | 
             
              }
         | 
| 1011 1020 |  | 
| 1012 1021 | 
             
              GetNArray(self,ary);
         | 
| 1013 | 
            -
              IndGenFuncs[ary->type]( ary->total, | 
| 1022 | 
            +
              IndGenFuncs[ary->type]( ary->total,
         | 
| 1014 1023 | 
             
            			  ary->ptr, na_sizeof[ary->type],
         | 
| 1015 1024 | 
             
            			  start, step );
         | 
| 1016 1025 | 
             
              return self;
         | 
    
        data/src/narray.h
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            /*
         | 
| 2 2 | 
             
              narray.h
         | 
| 3 3 | 
             
              Numerical Array Extention for Ruby
         | 
| 4 | 
            -
                (C) Copyright 1999- | 
| 4 | 
            +
                (C) Copyright 1999-2011 by Masahiro TANAKA
         | 
| 5 5 |  | 
| 6 6 | 
             
              This program is free software.
         | 
| 7 7 | 
             
              You can distribute/modify this program
         | 
| @@ -23,8 +23,8 @@ | |
| 23 23 | 
             
            # include <sys/types.h>
         | 
| 24 24 | 
             
            #endif
         | 
| 25 25 |  | 
| 26 | 
            -
            #define NARRAY_VERSION "0. | 
| 27 | 
            -
            #define NARRAY_VERSION_CODE  | 
| 26 | 
            +
            #define NARRAY_VERSION "0.6.0.0"
         | 
| 27 | 
            +
            #define NARRAY_VERSION_CODE 600
         | 
| 28 28 |  | 
| 29 29 | 
             
            /*
         | 
| 30 30 | 
             
              Data types used in NArray :
         | 
    
        data/src/narray_local.h
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: narray
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
               | 
| 5 | 
            -
              segments: 
         | 
| 6 | 
            -
              - 0
         | 
| 7 | 
            -
              - 5
         | 
| 8 | 
            -
              - 9
         | 
| 9 | 
            -
              - 9
         | 
| 10 | 
            -
              version: 0.5.9.9
         | 
| 4 | 
            +
              version: 0.6.0.0
         | 
| 11 5 | 
             
            platform: ruby
         | 
| 12 6 | 
             
            authors: 
         | 
| 13 7 | 
             
            - Masahiro Tanaka
         | 
| @@ -15,11 +9,11 @@ autorequire: | |
| 15 9 | 
             
            bindir: bin
         | 
| 16 10 | 
             
            cert_chain: []
         | 
| 17 11 |  | 
| 18 | 
            -
            date:  | 
| 12 | 
            +
            date: 2011-08-27
         | 
| 19 13 | 
             
            default_executable: 
         | 
| 20 14 | 
             
            dependencies: []
         | 
| 21 15 |  | 
| 22 | 
            -
            description: 
         | 
| 16 | 
            +
            description: Numerical N-dimensional Array class
         | 
| 23 17 | 
             
            email: masa16.tanaka@gmail.com
         | 
| 24 18 | 
             
            executables: []
         | 
| 25 19 |  | 
| @@ -50,38 +44,7 @@ files: | |
| 50 44 | 
             
            - src/narray_local.h
         | 
| 51 45 | 
             
            - src/lib/narray_ext.rb
         | 
| 52 46 | 
             
            - src/lib/nmatrix.rb
         | 
| 53 | 
            -
             | 
| 54 | 
            -
            - src/test/testarray.rb
         | 
| 55 | 
            -
            - src/test/testbit.rb
         | 
| 56 | 
            -
            - src/test/testcast.rb
         | 
| 57 | 
            -
            - src/test/testcomplex.rb
         | 
| 58 | 
            -
            - src/test/testfftw.rb
         | 
| 59 | 
            -
            - src/test/testindex.rb
         | 
| 60 | 
            -
            - src/test/testindexary.rb
         | 
| 61 | 
            -
            - src/test/testindexset.rb
         | 
| 62 | 
            -
            - src/test/testmask.rb
         | 
| 63 | 
            -
            - src/test/testmath.rb
         | 
| 64 | 
            -
            - src/test/testmath2.rb
         | 
| 65 | 
            -
            - src/test/testmatrix.rb
         | 
| 66 | 
            -
            - src/test/testmatrix2.rb
         | 
| 67 | 
            -
            - src/test/testmatrix3.rb
         | 
| 68 | 
            -
            - src/test/testminmax.rb
         | 
| 69 | 
            -
            - src/test/testobject.rb
         | 
| 70 | 
            -
            - src/test/testpow.rb
         | 
| 71 | 
            -
            - src/test/testrandom.rb
         | 
| 72 | 
            -
            - src/test/testround.rb
         | 
| 73 | 
            -
            - src/test/testsort.rb
         | 
| 74 | 
            -
            - src/test/teststr.rb
         | 
| 75 | 
            -
            - src/test/testtrans.rb
         | 
| 76 | 
            -
            - src/test/testwhere.rb
         | 
| 77 | 
            -
            - src/bench/all.rb
         | 
| 78 | 
            -
            - src/bench/bench.m
         | 
| 79 | 
            -
            - src/bench/bench.py
         | 
| 80 | 
            -
            - src/bench/bench.rb
         | 
| 81 | 
            -
            - src/bench/dummy.m
         | 
| 82 | 
            -
            - src/bench/dummy.py
         | 
| 83 | 
            -
            - src/bench/dummy.rb
         | 
| 84 | 
            -
            has_rdoc: true
         | 
| 47 | 
            +
            has_rdoc: false
         | 
| 85 48 | 
             
            homepage: http://narray.rubyforge.org/
         | 
| 86 49 | 
             
            licenses: []
         | 
| 87 50 |  | 
| @@ -91,27 +54,23 @@ rdoc_options: [] | |
| 91 54 | 
             
            require_paths: 
         | 
| 92 55 | 
             
            - .
         | 
| 93 56 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement 
         | 
| 94 | 
            -
              none: false
         | 
| 95 57 | 
             
              requirements: 
         | 
| 96 58 | 
             
              - - ">="
         | 
| 97 59 | 
             
                - !ruby/object:Gem::Version 
         | 
| 98 | 
            -
                  segments: 
         | 
| 99 | 
            -
                  - 0
         | 
| 100 60 | 
             
                  version: "0"
         | 
| 61 | 
            +
              version: 
         | 
| 101 62 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 102 | 
            -
              none: false
         | 
| 103 63 | 
             
              requirements: 
         | 
| 104 64 | 
             
              - - ">="
         | 
| 105 65 | 
             
                - !ruby/object:Gem::Version 
         | 
| 106 | 
            -
                  segments: 
         | 
| 107 | 
            -
                  - 0
         | 
| 108 66 | 
             
                  version: "0"
         | 
| 67 | 
            +
              version: 
         | 
| 109 68 | 
             
            requirements: []
         | 
| 110 69 |  | 
| 111 70 | 
             
            rubyforge_project: narray
         | 
| 112 71 | 
             
            rubygems_version: 1.3.7
         | 
| 113 72 | 
             
            signing_key: 
         | 
| 114 | 
            -
            specification_version:  | 
| 73 | 
            +
            specification_version: 2
         | 
| 115 74 | 
             
            summary: N-dimensional Numerical Array class for Ruby
         | 
| 116 75 | 
             
            test_files: []
         | 
| 117 76 |  | 
    
        data/src/bench/all.rb
    DELETED
    
    | @@ -1,88 +0,0 @@ | |
| 1 | 
            -
            require "narray"
         | 
| 2 | 
            -
            T = (RUBY_VERSION<"1.8.0") ? Time : Process
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            ruby_narray = system( "ruby -r narray dummy.rb" )
         | 
| 5 | 
            -
            python_numeric = system( "python dummy.py numeric" )
         | 
| 6 | 
            -
            python_numarray = system( "python dummy.py numarray" )
         | 
| 7 | 
            -
            python_numpy = system( "python dummy.py numpy" )
         | 
| 8 | 
            -
            octave = system( "octave -qf dummy.m" )
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            def array_size
         | 
| 11 | 
            -
              list = [
         | 
| 12 | 
            -
                100000, 200000, 500000,
         | 
| 13 | 
            -
                1000000, 2000000, 5000000,
         | 
| 14 | 
            -
                10000000, 20000000, 50000000
         | 
| 15 | 
            -
              ]
         | 
| 16 | 
            -
              mlist = [
         | 
| 17 | 
            -
                150, 200, 300, 500, 700, 1000, 1500, 2000, 3000
         | 
| 18 | 
            -
                #300, 400, 700, 1000, 1400, 2000, 3000, 4000, 7000
         | 
| 19 | 
            -
              ]
         | 
| 20 | 
            -
             | 
| 21 | 
            -
              r = 50
         | 
| 22 | 
            -
              n = nil
         | 
| 23 | 
            -
              i = nil
         | 
| 24 | 
            -
              list.each_with_index do |n,i|
         | 
| 25 | 
            -
                a = NArray.float(n)
         | 
| 26 | 
            -
                b = NArray.float(n)
         | 
| 27 | 
            -
                t = bench_time(r) { c = a+b }
         | 
| 28 | 
            -
                break if t>0.5
         | 
| 29 | 
            -
              end
         | 
| 30 | 
            -
              [n, mlist[i], r*2]
         | 
| 31 | 
            -
            end
         | 
| 32 | 
            -
             | 
| 33 | 
            -
            def bench_time(n)
         | 
| 34 | 
            -
              t1 = T.times.utime
         | 
| 35 | 
            -
               for i in 1..n
         | 
| 36 | 
            -
                 yield
         | 
| 37 | 
            -
               end
         | 
| 38 | 
            -
              t = T.times.utime - t1
         | 
| 39 | 
            -
              puts " Time: %.2f sec\n" % [t]
         | 
| 40 | 
            -
              t
         | 
| 41 | 
            -
            end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
            n,m,r = array_size
         | 
| 44 | 
            -
            puts "array size = #{n}, repeat = #{r}\n\n"
         | 
| 45 | 
            -
             | 
| 46 | 
            -
            system "ruby   bench.rb          float  mul #{n} #{r}" if ruby_narray
         | 
| 47 | 
            -
            system "python bench.py numeric  float  mul #{n} #{r}" if python_numeric
         | 
| 48 | 
            -
            system "python bench.py numarray float  mul #{n} #{r}" if python_numarray
         | 
| 49 | 
            -
            system "python bench.py numpy    float  mul #{n} #{r}" if python_numpy
         | 
| 50 | 
            -
            system "octave -qf bench.m       float  mul #{n} #{r}" if octave         
         | 
| 51 | 
            -
            puts
         | 
| 52 | 
            -
             | 
| 53 | 
            -
            system "ruby   bench.rb          int  add #{n} #{r}" if ruby_narray	 
         | 
| 54 | 
            -
            system "python bench.py numeric  int  add #{n} #{r}" if python_numeric 
         | 
| 55 | 
            -
            system "python bench.py numarray int  add #{n} #{r}" if python_numarray
         | 
| 56 | 
            -
            system "python bench.py numpy    int  add #{n} #{r}" if python_numpy	 
         | 
| 57 | 
            -
            system "octave -qf bench.m       int  add #{n} #{r}" if octave         
         | 
| 58 | 
            -
            puts
         | 
| 59 | 
            -
             | 
| 60 | 
            -
            system "ruby   bench.rb          complex  mul #{n} #{r}" if ruby_narray	 
         | 
| 61 | 
            -
            system "python bench.py numeric  complex  mul #{n} #{r}" if python_numeric 
         | 
| 62 | 
            -
            system "python bench.py numarray complex  mul #{n} #{r}" if python_numarray
         | 
| 63 | 
            -
            system "python bench.py numpy    complex  mul #{n} #{r}" if python_numpy	 
         | 
| 64 | 
            -
            system "octave -qf bench.m       complex  mul #{n} #{r}" if octave         
         | 
| 65 | 
            -
            puts
         | 
| 66 | 
            -
             | 
| 67 | 
            -
            system "ruby   bench.rb          float_cross mul    #{m*2} #{r}" if ruby_narray	 
         | 
| 68 | 
            -
            system "python bench.py numeric  float_cross mul    #{m*2} #{r}" if python_numeric 
         | 
| 69 | 
            -
            system "python bench.py numarray float_cross mul    #{m*2} #{r}" if python_numarray
         | 
| 70 | 
            -
            system "python bench.py numpy    float_cross mul    #{m*2} #{r}" if python_numpy	 
         | 
| 71 | 
            -
            system "octave -qf bench.m       float_cross matmul #{m*2} #{r}" if octave         
         | 
| 72 | 
            -
            puts
         | 
| 73 | 
            -
             | 
| 74 | 
            -
            system "ruby   bench.rb          float_matrix mul    #{m} 4" if ruby_narray	 
         | 
| 75 | 
            -
            system "python bench.py numeric  float_matrix matmul #{m} 4" if python_numeric 
         | 
| 76 | 
            -
            system "python bench.py numarray float_matrix matmul #{m} 4" if python_numarray
         | 
| 77 | 
            -
            system "python bench.py numpy    float_matrix matmul #{m} 4" if python_numpy	 
         | 
| 78 | 
            -
            system "octave -qf bench.m       float_matrix matmul #{m} 4" if octave         
         | 
| 79 | 
            -
            puts
         | 
| 80 | 
            -
             | 
| 81 | 
            -
            system "ruby   bench.rb          float_solve solve #{m} 2" if ruby_narray	 
         | 
| 82 | 
            -
            system "python bench.py numeric  float_solve solve #{m} 2" if python_numeric 
         | 
| 83 | 
            -
            system "python bench.py numarray float_solve solve #{m} 2" if python_numarray
         | 
| 84 | 
            -
            system "python bench.py numpy    float_solve solve #{m} 2" if python_numpy	 
         | 
| 85 | 
            -
            system "octave -qf bench.m       float_solve solve #{m} 2" if octave         
         | 
| 86 | 
            -
            puts
         | 
| 87 | 
            -
             | 
| 88 | 
            -
            exit
         | 
    
        data/src/bench/bench.m
    DELETED
    
    | @@ -1,61 +0,0 @@ | |
| 1 | 
            -
            #! /bin/octave -qf
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            arg_list = argv();
         | 
| 4 | 
            -
            TYPE   = arg_list{1};
         | 
| 5 | 
            -
            OP     = arg_list{2};
         | 
| 6 | 
            -
            ARRSZ  = str2num(arg_list{3});
         | 
| 7 | 
            -
            REPEAT = str2num(arg_list{4});
         | 
| 8 | 
            -
            n = ARRSZ;
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            switch(TYPE)
         | 
| 11 | 
            -
              case "float"
         | 
| 12 | 
            -
                a = linspace(0,n-1,n);
         | 
| 13 | 
            -
                b = linspace(0,n-1,n);
         | 
| 14 | 
            -
              case "int"
         | 
| 15 | 
            -
                a = int32(linspace(0,n-1,n));
         | 
| 16 | 
            -
                b = int32(linspace(0,n-1,n));
         | 
| 17 | 
            -
              case "complex"
         | 
| 18 | 
            -
                a = complex(linspace(0,n-1,n));
         | 
| 19 | 
            -
                b = complex(linspace(0,n-1,n));
         | 
| 20 | 
            -
              case "float_cross"
         | 
| 21 | 
            -
                a = linspace(0,n-1,n)';
         | 
| 22 | 
            -
                b = linspace(0,n-1,n);
         | 
| 23 | 
            -
              case "float_matrix"
         | 
| 24 | 
            -
                a = linspace(0,n*n-1,n*n);
         | 
| 25 | 
            -
                a = rem(a, n+1) + 1;
         | 
| 26 | 
            -
                a = reshape(a,n,n);
         | 
| 27 | 
            -
                b = linspace(0,n*n-1,n*n);
         | 
| 28 | 
            -
                b = rem(b, n-1) + 1;
         | 
| 29 | 
            -
                b = reshape(b,n,n);
         | 
| 30 | 
            -
              case "float_solve"
         | 
| 31 | 
            -
                a = linspace(0,n*n-1,n*n);
         | 
| 32 | 
            -
                a = rem(a, n+1) + 1;
         | 
| 33 | 
            -
                a = reshape(a,n,n);
         | 
| 34 | 
            -
                b = reshape(linspace(1,n*n,n*n),n,n);
         | 
| 35 | 
            -
            endswitch
         | 
| 36 | 
            -
             | 
| 37 | 
            -
            [t1, u1, s1] = cputime ();
         | 
| 38 | 
            -
            switch(OP)
         | 
| 39 | 
            -
              case "add"
         | 
| 40 | 
            -
                for i = 1:REPEAT
         | 
| 41 | 
            -
                  c = a + b;
         | 
| 42 | 
            -
                endfor
         | 
| 43 | 
            -
              case "mul"
         | 
| 44 | 
            -
                for i = 1:REPEAT
         | 
| 45 | 
            -
                  c = a .* b;
         | 
| 46 | 
            -
                endfor
         | 
| 47 | 
            -
              case "matmul"
         | 
| 48 | 
            -
                for i = 1:REPEAT
         | 
| 49 | 
            -
                  c = a * b;
         | 
| 50 | 
            -
                endfor
         | 
| 51 | 
            -
                #size(c)
         | 
| 52 | 
            -
              case "solve"
         | 
| 53 | 
            -
                for i = 1:REPEAT
         | 
| 54 | 
            -
                  c = a \ b;
         | 
| 55 | 
            -
                endfor
         | 
| 56 | 
            -
                #size(c)
         | 
| 57 | 
            -
            endswitch
         | 
| 58 | 
            -
            [t2, u2, s2] = cputime ();
         | 
| 59 | 
            -
             | 
| 60 | 
            -
            printf ("Octave type=%s size=%d op=%s repeat=%d  Time: %.2f sec", 
         | 
| 61 | 
            -
            	TYPE,ARRSZ,OP,REPEAT,u2 - u1);
         | 
    
        data/src/bench/bench.py
    DELETED
    
    | @@ -1,89 +0,0 @@ | |
| 1 | 
            -
            import time
         | 
| 2 | 
            -
            import sys
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            MODULE = sys.argv[1]
         | 
| 5 | 
            -
            TYPE   = sys.argv[2]
         | 
| 6 | 
            -
            OP     = sys.argv[3]
         | 
| 7 | 
            -
            ARRSZ  = int(sys.argv[4])
         | 
| 8 | 
            -
            REPEAT = int(sys.argv[5])
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            if MODULE=="numeric":
         | 
| 11 | 
            -
                from Numeric import *
         | 
| 12 | 
            -
                from LinearAlgebra import *
         | 
| 13 | 
            -
            elif MODULE=="numarray":
         | 
| 14 | 
            -
                from numarray import *
         | 
| 15 | 
            -
                from LinearAlgebra import *
         | 
| 16 | 
            -
            elif MODULE=="numpy":
         | 
| 17 | 
            -
                from numpy import *
         | 
| 18 | 
            -
                from numpy.linalg import solve
         | 
| 19 | 
            -
             | 
| 20 | 
            -
            def bench_time(func,repeat=REPEAT):
         | 
| 21 | 
            -
              start = time.clock()
         | 
| 22 | 
            -
              for i in range(repeat):
         | 
| 23 | 
            -
                c = func()
         | 
| 24 | 
            -
                stop = time.clock()
         | 
| 25 | 
            -
              print "Python %s type=%s size=%d op=%s repeat=%d  Time: %.2f sec" % \
         | 
| 26 | 
            -
                  (MODULE,TYPE,ARRSZ,OP,REPEAT,stop-start)
         | 
| 27 | 
            -
              #print shape(c)
         | 
| 28 | 
            -
             | 
| 29 | 
            -
            n = ARRSZ
         | 
| 30 | 
            -
             | 
| 31 | 
            -
            if MODULE=="numpy":
         | 
| 32 | 
            -
                def bench_array(type=float):
         | 
| 33 | 
            -
                    return arange(ARRSZ,dtype=type)
         | 
| 34 | 
            -
                
         | 
| 35 | 
            -
                if TYPE=="float":
         | 
| 36 | 
            -
                    a = bench_array(float)
         | 
| 37 | 
            -
                    b = bench_array(float)
         | 
| 38 | 
            -
                elif TYPE=="int":
         | 
| 39 | 
            -
                    a = bench_array(int)
         | 
| 40 | 
            -
                    b = bench_array(int)
         | 
| 41 | 
            -
                elif TYPE=="complex":
         | 
| 42 | 
            -
                    a = bench_array(complex)
         | 
| 43 | 
            -
                    b = bench_array(complex)
         | 
| 44 | 
            -
                elif TYPE=="float_cross":
         | 
| 45 | 
            -
                    a = reshape(arange(ARRSZ,dtype=float),(ARRSZ,1))
         | 
| 46 | 
            -
                    b = reshape(arange(ARRSZ,dtype=float),(1,ARRSZ))
         | 
| 47 | 
            -
                elif TYPE=="float_matrix":
         | 
| 48 | 
            -
                    a = reshape(arange(ARRSZ**2,dtype=float),(ARRSZ,ARRSZ))
         | 
| 49 | 
            -
                    b = reshape(arange(ARRSZ**2,dtype=float),(ARRSZ,ARRSZ))
         | 
| 50 | 
            -
                elif TYPE=="float_solve":
         | 
| 51 | 
            -
                    a = reshape(arange(n**2,dtype=float)%(n+1)+1,(n,n))
         | 
| 52 | 
            -
                    b = reshape(arange(n**2,dtype=float)+1,(n,n))
         | 
| 53 | 
            -
            else:
         | 
| 54 | 
            -
                def bench_array(type=float):
         | 
| 55 | 
            -
                    return arrayrange(ARRSZ).astype(type)
         | 
| 56 | 
            -
                if TYPE=="float":
         | 
| 57 | 
            -
                    a = bench_array(Float64)
         | 
| 58 | 
            -
                    b = bench_array(Float64)
         | 
| 59 | 
            -
                elif TYPE=="int":
         | 
| 60 | 
            -
                    a = bench_array(Int32)
         | 
| 61 | 
            -
                    b = bench_array(Int32)
         | 
| 62 | 
            -
                elif TYPE=="complex":
         | 
| 63 | 
            -
                    a = bench_array(Complex64)
         | 
| 64 | 
            -
                    b = bench_array(Complex64)
         | 
| 65 | 
            -
                elif TYPE=="float_cross":
         | 
| 66 | 
            -
                    a = reshape(arrayrange(ARRSZ),(ARRSZ,1)).astype(Float64)
         | 
| 67 | 
            -
                    b = reshape(arrayrange(ARRSZ),(1,ARRSZ)).astype(Float64)
         | 
| 68 | 
            -
                elif TYPE=="float_matrix":
         | 
| 69 | 
            -
                    a = reshape(arrayrange(ARRSZ**2),(ARRSZ,ARRSZ)).astype(Float64)
         | 
| 70 | 
            -
                    b = reshape(arrayrange(ARRSZ**2),(ARRSZ,ARRSZ)).astype(Float64)
         | 
| 71 | 
            -
                elif TYPE=="float_solve":
         | 
| 72 | 
            -
                    a = reshape(arrayrange(n*n)%(n+1)+1,(n,n)).astype(Float64)
         | 
| 73 | 
            -
                    b = reshape(arrayrange(n*n)+1,(n,n)).astype(Float64)
         | 
| 74 | 
            -
                dot = matrixmultiply
         | 
| 75 | 
            -
                solve = solve_linear_equations
         | 
| 76 | 
            -
             | 
| 77 | 
            -
            def lambda_add(a=a,b=b):    c = a+b; return c;
         | 
| 78 | 
            -
            def lambda_mul(a=a,b=b):    c = a*b; return c;
         | 
| 79 | 
            -
            def lambda_matmul(a=a,b=b): c = dot(a,b); return c;
         | 
| 80 | 
            -
            def lambda_solve(a=a,b=b):  c = solve(a,b); return c;
         | 
| 81 | 
            -
             | 
| 82 | 
            -
            if OP=="add":
         | 
| 83 | 
            -
                bench_time(lambda_add)
         | 
| 84 | 
            -
            elif OP=="mul":
         | 
| 85 | 
            -
                bench_time(lambda_mul)
         | 
| 86 | 
            -
            elif OP=="matmul":
         | 
| 87 | 
            -
                bench_time(lambda_matmul)
         | 
| 88 | 
            -
            elif OP=="solve":
         | 
| 89 | 
            -
                bench_time(lambda_solve)
         |