narray 0.5.9.9 → 0.6.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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/bench/bench.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
require 'narray'
|
2
|
-
T = (RUBY_VERSION<"1.8.0") ? Time : Process
|
3
|
-
|
4
|
-
TYPE = ARGV[0]
|
5
|
-
OP = ARGV[1]
|
6
|
-
ARRSZ = Integer(ARGV[2])
|
7
|
-
REPEAT = Integer(ARGV[3])
|
8
|
-
|
9
|
-
def bench_array(type=Float)
|
10
|
-
[ NArray.new(type,ARRSZ).indgen!,
|
11
|
-
NArray.new(type,ARRSZ).indgen! ]
|
12
|
-
end
|
13
|
-
|
14
|
-
def bench_time(n=REPEAT)
|
15
|
-
t1 = T.times.utime
|
16
|
-
for i in 1..n
|
17
|
-
yield
|
18
|
-
end
|
19
|
-
t = T.times.utime - t1
|
20
|
-
printf "Ruby NArray type=%s size=%d op=%s repeat=%d Time: %.2f sec\n",
|
21
|
-
TYPE,ARRSZ,OP,REPEAT,t
|
22
|
-
end
|
23
|
-
|
24
|
-
n = ARRSZ
|
25
|
-
|
26
|
-
case TYPE
|
27
|
-
when "float"
|
28
|
-
a,b = bench_array(Float)
|
29
|
-
when "int"
|
30
|
-
a,b = bench_array(Integer)
|
31
|
-
when "complex"
|
32
|
-
a,b = bench_array(Complex)
|
33
|
-
when "float_cross"
|
34
|
-
a = NArray.float(n,1).indgen!
|
35
|
-
b = NArray.float(1,n).indgen!
|
36
|
-
when "float_matrix"
|
37
|
-
a = NArray.float(n,n).indgen!
|
38
|
-
a = a % (n+1) + 1
|
39
|
-
a = NMatrix.ref(a)#.transpose
|
40
|
-
b = NArray.float(n,n).indgen!
|
41
|
-
b = b % (n-1) + 1
|
42
|
-
b = NMatrix.ref(b)#.transpose
|
43
|
-
when "float_solve"
|
44
|
-
a = NMatrix.float(n,n).indgen!(1).transpose
|
45
|
-
b = NArray.float(n,n).indgen!
|
46
|
-
b = b % (n+1) + 1
|
47
|
-
b = NMatrix.ref(b).transpose
|
48
|
-
end
|
49
|
-
|
50
|
-
c = 0
|
51
|
-
|
52
|
-
case OP
|
53
|
-
when "add"
|
54
|
-
bench_time{ c = a+b }
|
55
|
-
when "mul"
|
56
|
-
bench_time{ c = a*b }
|
57
|
-
when "solve"
|
58
|
-
bench_time{ c = a/b }
|
59
|
-
end
|
data/src/bench/dummy.m
DELETED
File without changes
|
data/src/bench/dummy.py
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
import sys
|
2
|
-
|
3
|
-
MODULE = sys.argv[1]
|
4
|
-
|
5
|
-
if MODULE=="numeric":
|
6
|
-
from Numeric import *
|
7
|
-
from LinearAlgebra import *
|
8
|
-
elif MODULE=="numarray":
|
9
|
-
from numarray import *
|
10
|
-
from LinearAlgebra import *
|
11
|
-
elif MODULE=="numpy":
|
12
|
-
from numpy import *
|
13
|
-
from numpy.linalg import solve
|
data/src/bench/dummy.rb
DELETED
File without changes
|
data/src/test/statistics.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
require "narray"
|
2
|
-
include NMath
|
3
|
-
|
4
|
-
x = NArray[65, 63, 67, 64, 68, 62, 70, 66, 68, 67, 69, 71]
|
5
|
-
y = NArray[68, 66, 68, 65, 69, 66, 68, 65, 71, 67, 68, 70]
|
6
|
-
|
7
|
-
def test str, x, y=nil
|
8
|
-
print str," #=> "
|
9
|
-
p eval(str)
|
10
|
-
end
|
11
|
-
|
12
|
-
test "x",x,y
|
13
|
-
test "y",x,y
|
14
|
-
test "covariance(x,y)",x,y
|
15
|
-
|
16
|
-
a = covariance(x,y)
|
17
|
-
|
18
|
-
test "x.stddev",x
|
19
|
-
|
20
|
-
test "x.sort",x
|
21
|
-
test "x.median",x
|
22
|
-
test "(x+y.newrank!(0)).median(0)",x,y
|
data/src/test/testarray.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'narray'
|
2
|
-
|
3
|
-
a = NArray.float(3,3).indgen
|
4
|
-
|
5
|
-
p NArray[a,[100,101]]
|
6
|
-
|
7
|
-
b = NArray[ [ [ 0.0, 1.0, 2.0 ],
|
8
|
-
[ 3.0, 4.0, 5.0 ],
|
9
|
-
[ 6.0, 7.0, 8.0 ] ],
|
10
|
-
[100,101] ]
|
11
|
-
p b
|
12
|
-
|
13
|
-
a = NArray.float(2,2).indgen
|
14
|
-
|
15
|
-
b = NArray[ a,[a] ]
|
16
|
-
p b
|
17
|
-
|
18
|
-
b = NArray[ [ 0.0, 1.0 ],
|
19
|
-
[ [ 0.0, 1.0 ] ] ]
|
20
|
-
p b
|
data/src/test/testbit.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require "narray"
|
2
|
-
|
3
|
-
a = NArray.byte(10).indgen!
|
4
|
-
|
5
|
-
def test a, str
|
6
|
-
print str," #=>\n"
|
7
|
-
p eval(str)
|
8
|
-
end
|
9
|
-
|
10
|
-
test a, "a"
|
11
|
-
test a, "a & 1"
|
12
|
-
test a, "a & 2"
|
13
|
-
test a, "a & -1"
|
14
|
-
|
15
|
-
test a, "a | 1"
|
16
|
-
test a, "a | 2"
|
17
|
-
test a, "a | -1"
|
18
|
-
|
19
|
-
test a, "a ^ 1"
|
20
|
-
test a, "a ^ 2"
|
21
|
-
test a, "a ^ -1"
|
22
|
-
|
23
|
-
test a, "~a"
|
24
|
-
|
25
|
-
a = NArray.int(10).indgen!
|
26
|
-
test a, "a"
|
27
|
-
test a, "~a"
|
data/src/test/testcast.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
require 'narray'
|
2
|
-
|
3
|
-
def test a,b
|
4
|
-
print a," #=> "
|
5
|
-
p b
|
6
|
-
end
|
7
|
-
|
8
|
-
a = NArray.int(3,3).indgen!
|
9
|
-
|
10
|
-
test "a",a
|
11
|
-
test "a+1.5",a+1.5
|
12
|
-
test "1.5+a",1.5+a
|
13
|
-
test "a+NArray[1.2,3.4,5.6]",a+NArray[1.2,3.4,5.6]
|
14
|
-
test "a+NArray[Complex(0.5,1.5)]",a+NArray[Complex(0.5,1.5)]
|
data/src/test/testcomplex.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'narray'
|
2
|
-
|
3
|
-
def testop(a,b)
|
4
|
-
print "a = "; p a
|
5
|
-
print "b = "; p b
|
6
|
-
print "a+b = "; p a+b
|
7
|
-
print "a-b = "; p a-b
|
8
|
-
print "a*b = "; p a*b
|
9
|
-
print "a/b = "; p a/b
|
10
|
-
print "a**b = "; p a**b
|
11
|
-
end
|
12
|
-
|
13
|
-
a = NArray.complex(4,1).indgen!.sbt!(-1) + 0.25.im
|
14
|
-
b = NArray.complex(1,3).indgen!.add!(-0.5).mul!(0.5.im)
|
15
|
-
testop(a,b)
|
16
|
-
|
17
|
-
# compare a/b with real-number operation
|
18
|
-
# a = NArray(4,1).indgen!.sbt!(-1)
|
19
|
-
# b = NArray(1,3).fill!(1)
|
20
|
-
# c = b*b + b*b
|
21
|
-
# p ( (a*b + 0*b)/c )
|
22
|
-
# p ( (0*b - a*b)/c )
|
23
|
-
|
24
|
-
def testimag(a)
|
25
|
-
print "a.real = "
|
26
|
-
p a.real
|
27
|
-
print "a.imag = "
|
28
|
-
p a.imag
|
29
|
-
print "a.angle = "
|
30
|
-
p a.angle
|
31
|
-
print "a.conj = "
|
32
|
-
p a.conj
|
33
|
-
end
|
34
|
-
|
35
|
-
testimag a
|
data/src/test/testfftw.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'narray'
|
2
|
-
|
3
|
-
x = NArray.complex(1024,1024).indgen!
|
4
|
-
|
5
|
-
p x
|
6
|
-
puts 'executing fftw ...'
|
7
|
-
t1 = Time.times.utime
|
8
|
-
y = FFTW.fftw( x, 1 )
|
9
|
-
t2 = Time.times.utime
|
10
|
-
print "time: ",t2 - t1,"\n"
|
11
|
-
p y
|
12
|
-
|
13
|
-
exit
|
14
|
-
|
15
|
-
x = NArray.complex(128,128).indgen!
|
16
|
-
10000.times{ x = FFTW.fftw( x, 1 ) }
|
data/src/test/testindex.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require 'narray'
|
2
|
-
|
3
|
-
a = NArray.float(3,3).indgen!
|
4
|
-
|
5
|
-
print "a #=> "; p a
|
6
|
-
print "a[1, -1] #=> "; p a[1, -1]
|
7
|
-
print "a[1, 2..0] #=> "; p a[1, 2..0]
|
8
|
-
print "a[1...2, 0..1] #=> "; p a[1...2, 0..1] # without rank-reduce
|
9
|
-
print "a[true, 0..1] #=> "; p a[true, 0..1]
|
10
|
-
print "a[0..5] #=> "; p a[0..5]
|
11
|
-
|
data/src/test/testindexary.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'narray'
|
2
|
-
|
3
|
-
a = NArray.new(NArray::DFLOAT,5,5).indgen!
|
4
|
-
print "a #=> "; p a
|
5
|
-
|
6
|
-
idx = [2,0,1]
|
7
|
-
print "\nidx #=> "
|
8
|
-
p idx
|
9
|
-
|
10
|
-
print "\na[idx,idx] # Index Array\n #=> "
|
11
|
-
p a[idx,idx]
|
12
|
-
|
13
|
-
idx = NArray.to_na(idx)
|
14
|
-
idx += 10
|
15
|
-
print "\nidx #=> "
|
16
|
-
p idx
|
17
|
-
|
18
|
-
print "\na[idx] #=> "
|
19
|
-
p a[idx]
|
20
|
-
|
21
|
-
print "\na[1,[]] # Empty Array\n #=> "
|
22
|
-
p a[1,[]]
|
23
|
-
|
24
|
-
print "\nFollowing will fail...\n\n"
|
25
|
-
print "a[idx,0] #=> \n"
|
26
|
-
p a[idx,0]
|
data/src/test/testindexset.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'narray'
|
2
|
-
|
3
|
-
a = NArray.float(3,3).indgen!
|
4
|
-
|
5
|
-
print "a #=> "; p a
|
6
|
-
|
7
|
-
print "\na[[]] = [] # Do nothing \na #=> ";
|
8
|
-
a[[]] = []; p a
|
9
|
-
|
10
|
-
print "\na[1,1] = 0 # 1-element replace\na #=> ";
|
11
|
-
b=a.dup; b[1,1] = 0
|
12
|
-
p b
|
13
|
-
|
14
|
-
print "\na[0..-1, 1] = 0 # Range replace\na #=> ";
|
15
|
-
b=a.dup; b[0..-1, 1] = 0
|
16
|
-
p b
|
17
|
-
|
18
|
-
print "\na[1,2..0] = [100,101,102] # Array replace\na #=> ";
|
19
|
-
b=a.dup; b[1,2..0] = [100,101,102]
|
20
|
-
p b
|
21
|
-
|
22
|
-
print "\na[0,1] = [100,101,102] # Specifing Starting point \na #=> ";
|
23
|
-
b=a.dup; b[0,1] = [100,101,102]
|
24
|
-
p b
|
25
|
-
|
26
|
-
print "\na[1,0] = [[100],[101],[102]] # Specifing Starting point \na #=> ";
|
27
|
-
b=a.dup; b[1,0] = [[100],[101],[102]]
|
28
|
-
p b
|
29
|
-
|
30
|
-
print "\na[true,1] = [100,101,102] # `true' means entire range\na #=> ";
|
31
|
-
b=a.dup; b[true,1] = [100,101,102]
|
32
|
-
p b
|
33
|
-
|
34
|
-
print "\na[true,true] = [[100,101,102]] \na #=> ";
|
35
|
-
b=a.dup; b[true,true] = [[100,101,102]]
|
36
|
-
p b
|
37
|
-
|
38
|
-
|
39
|
-
print "\nFollowing will fail ...\n"
|
40
|
-
|
41
|
-
print "\na[true,1] = [[100,101,102]] \na #=> ";
|
42
|
-
b=a.dup; b[true,1] = [[100,101,102]]
|
43
|
-
p b
|
44
|
-
|
45
|
-
print "\na[true,1] = [[100],[101],[102]] \na #=> ";
|
46
|
-
b=a.dup; b[true,1] = [[100],[101],[102]]
|
47
|
-
p b
|
48
|
-
|
49
|
-
print "\na[true,true] = [100,101,102] \na #=> ";
|
50
|
-
b=a.dup; b[true,true] = [100,101,102]
|
51
|
-
p b
|
52
|
-
|
53
|
-
print "\na[1,0] = [100,101,102] \na #=> ";
|
54
|
-
b=a.dup; b[1,0] = [100,101,102]
|
55
|
-
p b
|
data/src/test/testmask.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
require "narray"
|
2
|
-
|
3
|
-
a = NArray.byte(10)
|
4
|
-
a[2..4] = 1
|
5
|
-
p a.class, a.count_true, a.count_false
|
6
|
-
|
7
|
-
begin
|
8
|
-
a = NArray.float(10)
|
9
|
-
a[2..4] = 1
|
10
|
-
p a.class, a.count_true, a.count_false
|
11
|
-
rescue
|
12
|
-
print a.class," -- Exception raised as expected. The message was: ", $!,"\n"
|
13
|
-
end
|
14
|
-
|
15
|
-
#-------------------
|
16
|
-
print "\n--- test masking (float) ---\n"
|
17
|
-
|
18
|
-
a = NArray.float(5,3).indgen!
|
19
|
-
b = (a-2)*2
|
20
|
-
c = a.lt(b)
|
21
|
-
p c, c.typecode
|
22
|
-
|
23
|
-
p a, b, a.mask( c ), a[c]
|
24
|
-
|
25
|
-
#a[c] = ( NArray.int(c.length).indgen!+100 )
|
26
|
-
#p a
|
27
|
-
|
28
|
-
a[c] = 10000
|
29
|
-
p a
|
30
|
-
|
31
|
-
#-------------------
|
32
|
-
print "\n--- test masking (complex) ---\n"
|
33
|
-
p a = NArray.complex(5).indgen! + Complex::I
|
34
|
-
|
35
|
-
m = NArray.byte(5)
|
36
|
-
m[true] = [0,0,1,1,0]
|
37
|
-
|
38
|
-
p a[m]
|
39
|
-
a[m] = 100.0
|
40
|
-
p a
|
data/src/test/testmath.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
require 'narray'
|
2
|
-
include NMath
|
3
|
-
|
4
|
-
def pr x
|
5
|
-
x.each{|i|
|
6
|
-
if i.kind_of?(Complex)
|
7
|
-
printf("%.3f%+.3fi ",i.real,i.image)
|
8
|
-
else
|
9
|
-
printf("%.3f ",i)
|
10
|
-
end
|
11
|
-
}
|
12
|
-
print "\n"
|
13
|
-
end
|
14
|
-
|
15
|
-
def testmath(x)
|
16
|
-
print "x = "
|
17
|
-
pr x
|
18
|
-
print "sqrt(x) = "
|
19
|
-
pr sqrt(x)
|
20
|
-
print "sin(x) = "
|
21
|
-
pr sin(x)
|
22
|
-
print "cos(x) = "
|
23
|
-
pr cos(x)
|
24
|
-
print "tan(x) = "
|
25
|
-
pr tan(x)
|
26
|
-
print "sinh(x) = "
|
27
|
-
pr sinh(x)
|
28
|
-
print "cosh(x) = "
|
29
|
-
pr cosh(x)
|
30
|
-
print "tanh(x) = "
|
31
|
-
pr tanh(x)
|
32
|
-
print "exp(x) = "
|
33
|
-
pr exp(x)
|
34
|
-
print "log(x) = "
|
35
|
-
pr log(x)
|
36
|
-
print "log10(x) = "
|
37
|
-
pr log10(x)
|
38
|
-
print "atan(x) = "
|
39
|
-
pr atan(x)
|
40
|
-
print "atan(tan(x)) = "
|
41
|
-
pr atan(tan(x))
|
42
|
-
end
|
43
|
-
|
44
|
-
testmath NArray.sfloat(6).indgen.div!(2)
|
45
|
-
testmath NArray.float(6).indgen.div!(2)
|
46
|
-
|
47
|
-
testmath NArray.scomplex(6).indgen.div!(2)-2 - 1.im
|
48
|
-
testmath NArray.complex(6).indgen!/5-0.5# - 0.3.im
|
data/src/test/testmath2.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
require "narray"
|
2
|
-
include NMath
|
3
|
-
|
4
|
-
def testm x,name
|
5
|
-
f = "a#{name}(#{name}(x))"
|
6
|
-
print "\n### #{f} ###\n"
|
7
|
-
y = eval(f)
|
8
|
-
p y
|
9
|
-
#d = x-y
|
10
|
-
#p d.abs
|
11
|
-
end
|
12
|
-
|
13
|
-
PI=Math::PI
|
14
|
-
|
15
|
-
i = NArray.complex(1)
|
16
|
-
i.imag=1
|
17
|
-
|
18
|
-
n=7
|
19
|
-
x = NArray.complex(n).random!(1)
|
20
|
-
x.imag= NArray.float(n).random!(1)
|
21
|
-
|
22
|
-
p x
|
23
|
-
testm x,"sin"
|
24
|
-
testm x,"cos"
|
25
|
-
testm x,"tan"
|
26
|
-
testm x,"sinh"
|
27
|
-
testm x,"cosh"
|
28
|
-
testm x,"tanh"
|
29
|
-
testm x,"sec"
|
30
|
-
testm x,"sech"
|
31
|
-
|
32
|
-
p cot(1)
|
33
|
-
|
34
|
-
exit
|
35
|
-
|
36
|
-
a= -i * log( sqrt(1-x**2)*i + x )
|
37
|
-
b= -i * log( sqrt(x**2-1) + x )
|
38
|
-
p a
|
39
|
-
p b
|
40
|
-
p a-b
|
41
|
-
|
42
|
-
a= -i * log( sqrt(1-x**2) + x*i )
|
43
|
-
b= -i * log( (-sqrt(x**2-1) + x)*i )
|
44
|
-
p a
|
45
|
-
p b
|
46
|
-
p a-b
|