xnd 0.2.0dev6 → 0.2.0dev7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -0
  3. data/Rakefile +1 -1
  4. data/ext/ruby_xnd/GPATH +0 -0
  5. data/ext/ruby_xnd/GRTAGS +0 -0
  6. data/ext/ruby_xnd/GTAGS +0 -0
  7. data/ext/ruby_xnd/extconf.rb +8 -5
  8. data/ext/ruby_xnd/gc_guard.c +53 -2
  9. data/ext/ruby_xnd/gc_guard.h +8 -2
  10. data/ext/ruby_xnd/include/overflow.h +147 -0
  11. data/ext/ruby_xnd/include/ruby_xnd.h +62 -0
  12. data/ext/ruby_xnd/include/xnd.h +590 -0
  13. data/ext/ruby_xnd/lib/libxnd.a +0 -0
  14. data/ext/ruby_xnd/lib/libxnd.so +1 -0
  15. data/ext/ruby_xnd/lib/libxnd.so.0 +1 -0
  16. data/ext/ruby_xnd/lib/libxnd.so.0.2.0dev3 +0 -0
  17. data/ext/ruby_xnd/ruby_xnd.c +556 -47
  18. data/ext/ruby_xnd/ruby_xnd.h +2 -1
  19. data/ext/ruby_xnd/xnd/Makefile +80 -0
  20. data/ext/ruby_xnd/xnd/config.h +26 -0
  21. data/ext/ruby_xnd/xnd/config.h.in +3 -0
  22. data/ext/ruby_xnd/xnd/config.log +421 -0
  23. data/ext/ruby_xnd/xnd/config.status +1023 -0
  24. data/ext/ruby_xnd/xnd/configure +376 -8
  25. data/ext/ruby_xnd/xnd/configure.ac +48 -7
  26. data/ext/ruby_xnd/xnd/doc/xnd/index.rst +3 -1
  27. data/ext/ruby_xnd/xnd/doc/xnd/{types.rst → xnd.rst} +3 -18
  28. data/ext/ruby_xnd/xnd/libxnd/Makefile +142 -0
  29. data/ext/ruby_xnd/xnd/libxnd/Makefile.in +43 -3
  30. data/ext/ruby_xnd/xnd/libxnd/Makefile.vc +19 -3
  31. data/ext/ruby_xnd/xnd/libxnd/bitmaps.c +42 -3
  32. data/ext/ruby_xnd/xnd/libxnd/bitmaps.o +0 -0
  33. data/ext/ruby_xnd/xnd/libxnd/bounds.c +366 -0
  34. data/ext/ruby_xnd/xnd/libxnd/bounds.o +0 -0
  35. data/ext/ruby_xnd/xnd/libxnd/contrib.h +98 -0
  36. data/ext/ruby_xnd/xnd/libxnd/contrib/bfloat16.h +213 -0
  37. data/ext/ruby_xnd/xnd/libxnd/copy.c +155 -4
  38. data/ext/ruby_xnd/xnd/libxnd/copy.o +0 -0
  39. data/ext/ruby_xnd/xnd/libxnd/cuda/cuda_memory.cu +121 -0
  40. data/ext/ruby_xnd/xnd/libxnd/cuda/cuda_memory.h +58 -0
  41. data/ext/ruby_xnd/xnd/libxnd/equal.c +195 -7
  42. data/ext/ruby_xnd/xnd/libxnd/equal.o +0 -0
  43. data/ext/ruby_xnd/xnd/libxnd/inline.h +32 -0
  44. data/ext/ruby_xnd/xnd/libxnd/libxnd.a +0 -0
  45. data/ext/ruby_xnd/xnd/libxnd/libxnd.so +1 -0
  46. data/ext/ruby_xnd/xnd/libxnd/libxnd.so.0 +1 -0
  47. data/ext/ruby_xnd/xnd/libxnd/libxnd.so.0.2.0dev3 +0 -0
  48. data/ext/ruby_xnd/xnd/libxnd/shape.c +207 -0
  49. data/ext/ruby_xnd/xnd/libxnd/shape.o +0 -0
  50. data/ext/ruby_xnd/xnd/libxnd/split.c +2 -2
  51. data/ext/ruby_xnd/xnd/libxnd/split.o +0 -0
  52. data/ext/ruby_xnd/xnd/libxnd/tests/Makefile +39 -0
  53. data/ext/ruby_xnd/xnd/libxnd/xnd.c +613 -91
  54. data/ext/ruby_xnd/xnd/libxnd/xnd.h +145 -4
  55. data/ext/ruby_xnd/xnd/libxnd/xnd.o +0 -0
  56. data/ext/ruby_xnd/xnd/python/test_xnd.py +1125 -50
  57. data/ext/ruby_xnd/xnd/python/xnd/__init__.py +609 -124
  58. data/ext/ruby_xnd/xnd/python/xnd/_version.py +1 -0
  59. data/ext/ruby_xnd/xnd/python/xnd/_xnd.c +1652 -101
  60. data/ext/ruby_xnd/xnd/python/xnd/libxnd.a +0 -0
  61. data/ext/ruby_xnd/xnd/python/xnd/libxnd.so +1 -0
  62. data/ext/ruby_xnd/xnd/python/xnd/libxnd.so.0 +1 -0
  63. data/ext/ruby_xnd/xnd/python/xnd/libxnd.so.0.2.0dev3 +0 -0
  64. data/ext/ruby_xnd/xnd/python/xnd/pyxnd.h +1 -1
  65. data/ext/ruby_xnd/xnd/python/xnd/util.h +25 -0
  66. data/ext/ruby_xnd/xnd/python/xnd/xnd.h +590 -0
  67. data/ext/ruby_xnd/xnd/python/xnd_randvalue.py +106 -6
  68. data/ext/ruby_xnd/xnd/python/xnd_support.py +4 -0
  69. data/ext/ruby_xnd/xnd/setup.py +46 -4
  70. data/lib/ruby_xnd.so +0 -0
  71. data/lib/xnd.rb +39 -3
  72. data/lib/xnd/version.rb +2 -2
  73. data/xnd.gemspec +2 -1
  74. metadata +58 -5
@@ -33,9 +33,10 @@
33
33
  # Python NDarray and functions for generating test cases.
34
34
 
35
35
  from itertools import accumulate, count, product
36
- from random import randrange
36
+ from random import randrange, shuffle
37
37
  from collections import namedtuple
38
38
  from xnd_support import R
39
+ from ndtypes import ndt
39
40
 
40
41
 
41
42
  # ======================================================================
@@ -59,6 +60,32 @@ EMPTY_TEST_CASES = [
59
60
  ]
60
61
 
61
62
 
63
+ # ======================================================================
64
+ # Max type for exact conversions
65
+ # ======================================================================
66
+
67
+ maxtype = {
68
+ ndt("int8"): ndt("int64"),
69
+ ndt("int16"): ndt("int64"),
70
+ ndt("int32"): ndt("int64"),
71
+ ndt("int64"): ndt("int64"),
72
+
73
+ ndt("uint8"): ndt("uint64"),
74
+ ndt("uint16"): ndt("uint64"),
75
+ ndt("uint32"): ndt("uint64"),
76
+ ndt("uint64"): ndt("uint64"),
77
+
78
+ ndt("bfloat16"): ndt("float64"),
79
+ ndt("float16"): ndt("float64"),
80
+ ndt("float32"): ndt("float64"),
81
+ ndt("float64"): ndt("float64"),
82
+
83
+ ndt("complex32"): ndt("complex128"),
84
+ ndt("complex64"): ndt("complex128"),
85
+ ndt("complex128"): ndt("complex128"),
86
+ }
87
+
88
+
62
89
  # ======================================================================
63
90
  # Typed values
64
91
  # ======================================================================
@@ -207,6 +234,22 @@ DTYPE_EMPTY_TEST_CASES = [
207
234
  (R['x': 0, 'y': 2 * [3 * [4 * [5 * [None]]]]], "{x: int64, y: 2 * 3 * Some(4 * 5 * ?float64)}"),
208
235
  (R['x': 0, 'y': 2 * [3 * [4 * [5 * [None]]]]], "{x: int64, y: 2 * 3 * ref(4 * 5 * ?float64)}"),
209
236
 
237
+ # Unions
238
+ (('X', 0), "[X of int64]"),
239
+ (('X', 0), "[X of int8 | Y of int64]"),
240
+ (('X', 0), "[X of int8 | Y of {a: complex128, b: string}]"),
241
+
242
+ # Optional unions
243
+ (None, "?[X of complex64]"),
244
+ (None, "?[X of int8]"),
245
+ (None, "?[X of int8 | Y of int64]"),
246
+ (None, "?[X of uint16 | Y of {z: complex64}]"),
247
+ (None, "?[X of uint16 | Y of {z: complex64, pack=1}]"),
248
+ (None, "?[X of 0 * bytes]"),
249
+ (None, "?[X of 0 * bytes | Y of 0 * string]"),
250
+ (None, "?[X of 1 * bytes | Y of {y: 2 * complex128, z: 3 * string}]"),
251
+ (None, "?[X of 1 * bytes | Y of 2 * {a: complex128, b: 10 * 2 * string, z: 3 * string}]"),
252
+
210
253
  # Primitive types
211
254
  (False, "bool"),
212
255
  (0, "bool"),
@@ -863,6 +906,13 @@ EQUAL_TEST_CASES = [
863
906
  # Definition of generalized slicing and indexing
864
907
  # ======================================================================
865
908
 
909
+ def have_none(lst):
910
+ if isinstance(lst, (list, tuple)):
911
+ return any(have_none(item) for item in lst)
912
+ if isinstance(lst, dict):
913
+ return any(have_none(item) for item in lst.values())
914
+ return lst is None
915
+
866
916
  def maxlevel(lst):
867
917
  """Return maximum nesting depth"""
868
918
  maxlev = 0
@@ -889,17 +939,22 @@ def getitem(lst, indices):
889
939
  if isinstance(i, int):
890
940
  return getitem(item, indices)
891
941
 
942
+ # Empty slice: check if all subsequent indices are in range for the
943
+ # full slice, raise IndexError otherwise. This is NumPy's behavior.
892
944
  if not item:
893
- # Empty slice: check if all subsequent indices are in range for the
894
- # full slice, raise IndexError otherwise. This is NumPy's behavior.
895
- _ = [getitem(x, indices) for x in lst]
945
+ if lst:
946
+ _ = getitem(lst, (slice(None),) + indices)
947
+ elif any(isinstance(k, int) for k in indices):
948
+ raise IndexError
896
949
  return []
897
950
 
898
951
  return [getitem(x, indices) for x in item]
899
952
 
900
953
  class NDArray(list):
901
954
  """A simple wrapper for using generalized slicing/indexing on a list."""
902
- def __init__(self, value):
955
+ def __init__(self, value, dtype=None):
956
+ if dtype is not None and dtype != "int64":
957
+ raise ValueError("the only supported dtype is 'int64'")
903
958
  list.__init__(self, value)
904
959
  self.maxlevel = maxlevel(value)
905
960
 
@@ -1006,6 +1061,14 @@ def rslice(ndim):
1006
1061
  step = None if randrange(5) == 4 else step
1007
1062
  return slice(start, stop, step)
1008
1063
 
1064
+ def rslice_neg(ndim):
1065
+ start = randrange(-ndim-1, ndim+1)
1066
+ stop = randrange(-ndim-1, ndim+1)
1067
+ step = 0
1068
+ while step == 0:
1069
+ step = randrange(-ndim-1, ndim+1)
1070
+ return slice(start, stop, step)
1071
+
1009
1072
  def multislice(ndim):
1010
1073
  return tuple(rslice(ndim) for _ in range(randrange(1, ndim+1)))
1011
1074
 
@@ -1041,14 +1104,26 @@ def mixed_index(max_ndim):
1041
1104
  indices = []
1042
1105
  for i in range(1, ndim+1):
1043
1106
  if randrange(2):
1044
- indices.append(randrange(max_ndim))
1107
+ indices.append(randrange(-max_ndim, max_ndim))
1045
1108
  else:
1046
1109
  indices.append(rslice(ndim))
1047
1110
  return tuple(indices)
1048
1111
 
1112
+ def mixed_index_neg(max_ndim):
1113
+ ndim = randrange(1, max_ndim+1)
1114
+ indices = []
1115
+ for i in range(1, ndim+1):
1116
+ if randrange(2):
1117
+ indices.append(randrange(-max_ndim, max_ndim))
1118
+ else:
1119
+ indices.append(rslice_neg(ndim))
1120
+ return tuple(indices)
1121
+
1049
1122
  def mixed_indices(max_ndim):
1050
1123
  for i in range(5):
1051
1124
  yield mixed_index(max_ndim)
1125
+ for i in range(5):
1126
+ yield mixed_index_neg(max_ndim)
1052
1127
 
1053
1128
  def itos(indices):
1054
1129
  return ", ".join(str(i) if isinstance(i, int) else "%s:%s:%s" %
@@ -1099,6 +1174,7 @@ def column(i, r, q, m, ms):
1099
1174
  schedule(step(i, r, q), ms)) + \
1100
1175
  column(i+1, r, q, m, ms)
1101
1176
 
1177
+
1102
1178
  # ======================================================================
1103
1179
  # Split an xnd object into N subtrees
1104
1180
  # ======================================================================
@@ -1119,3 +1195,27 @@ def split_xnd(x, n, max_outer=None):
1119
1195
  return [x[i] for i in indices_list]
1120
1196
 
1121
1197
 
1198
+ # ======================================================================
1199
+ # Random reshape
1200
+ # ======================================================================
1201
+
1202
+ def prod(lst):
1203
+ p = 1
1204
+ for v in lst:
1205
+ p *= v
1206
+ return p
1207
+
1208
+ def randshape(shape):
1209
+ if not shape:
1210
+ return []
1211
+ s = list(shape)
1212
+ shuffle(s)
1213
+ N = len(s)
1214
+ result = []
1215
+ while N > 0:
1216
+ n = randrange(1, N+1)
1217
+ t = s[:n]
1218
+ s = s[n:]
1219
+ result.append(prod(t))
1220
+ N -= n
1221
+ return result
@@ -90,6 +90,10 @@ def assertEqualWithEx(self, func, x, y):
90
90
 
91
91
  if xerr is None is yerr:
92
92
  self.assertEqual(xres, yres, msg="x: %s y: %s" % (x.type, y))
93
+ elif xerr is TypeError and yerr is None and isinstance(y, tuple) and len(y) == 2:
94
+ # Tagged unions like ('Int', 0) have len() in the Python representation
95
+ # but are scalars in xnd.
96
+ pass
93
97
  else:
94
98
  self.assertEqual(xerr, yerr, msg="x: %s y: %s" % (x.type, y))
95
99
 
@@ -42,6 +42,7 @@ from glob import glob
42
42
  import platform
43
43
  import subprocess
44
44
  import shutil
45
+ import argparse
45
46
  import warnings
46
47
 
47
48
  try:
@@ -82,6 +83,15 @@ Links
82
83
 
83
84
  warnings.simplefilter("ignore", UserWarning)
84
85
 
86
+
87
+ # Pre-parse and remove the '-j' argument from sys.argv.
88
+ parser = argparse.ArgumentParser()
89
+ parser.add_argument('-j', default=None)
90
+ values, rest = parser.parse_known_args()
91
+ PARALLEL = values.j
92
+ sys.argv = sys.argv[:1] + rest
93
+
94
+
85
95
  if sys.platform == "darwin":
86
96
  LIBNAME = "libxnd.dylib"
87
97
  LIBSONAME = "libxnd.0.dylib"
@@ -209,6 +219,27 @@ elif len(sys.argv) == 2:
209
219
  else:
210
220
  pass
211
221
 
222
+ def configure(configure_includes, configure_libs):
223
+ os.chmod("./configure", 0x1ed) # pip removes execute permissions.
224
+ make = "make -j%d" % int(PARALLEL) if PARALLEL else "make"
225
+ os.system("./configure --with-includes='%s' --with-libs='%s' && %s" %
226
+ (configure_includes, configure_libs, make))
227
+
228
+ def get_config_vars():
229
+ f = open("config.h")
230
+ config_vars = {}
231
+ for line in f:
232
+ if line.startswith("#define"):
233
+ l = line.split()
234
+ try:
235
+ config_vars[l[1]] = int(l[2])
236
+ except ValueError:
237
+ pass
238
+ elif line.startswith("/* #undef"):
239
+ l = line.split()
240
+ config_vars[l[2]] = 0
241
+ f.close()
242
+ return config_vars
212
243
 
213
244
  def xnd_ext():
214
245
  include_dirs = ["libxnd", "ndtypes/python/ndtypes"] + INCLUDES
@@ -235,6 +266,11 @@ def xnd_ext():
235
266
  os.chdir("..")
236
267
 
237
268
  else:
269
+ if BUILD_ALL:
270
+ configure(CONFIGURE_INCLUDES, CONFIGURE_LIBS)
271
+
272
+ config_vars = get_config_vars()
273
+
238
274
  extra_compile_args = ["-Wextra", "-Wno-missing-field-initializers", "-std=c11"]
239
275
  if sys.platform == "darwin":
240
276
  libraries = ["ndtypes", "xnd"]
@@ -245,10 +281,16 @@ def xnd_ext():
245
281
  extra_link_args = []
246
282
  runtime_library_dirs = ["$ORIGIN"]
247
283
 
248
- if BUILD_ALL:
249
- os.system(
250
- "./configure --with-includes='%s' --with-libs='%s' && make" %
251
- (CONFIGURE_INCLUDES, CONFIGURE_LIBS))
284
+ if config_vars["HAVE_CUDA"]:
285
+ libraries += ["cudart"]
286
+
287
+ for d in [
288
+ "/usr/cuda/lib",
289
+ "/usr/cuda/lib64",
290
+ "/usr/local/cuda/lib/",
291
+ "/usr/local/cuda/lib64"]:
292
+ if os.path.isdir(d):
293
+ library_dirs.append(d)
252
294
 
253
295
  return Extension (
254
296
  "xnd._xnd",
Binary file
data/lib/xnd.rb CHANGED
@@ -87,6 +87,14 @@ class XND < RubyXND
87
87
  @data.map!(&block)
88
88
  end
89
89
 
90
+ def == other
91
+ if other.is_a?(XND::T)
92
+ @data == other.data
93
+ else
94
+ @data == other
95
+ end
96
+ end
97
+
90
98
  def [] *index
91
99
  @data[index]
92
100
  end
@@ -277,8 +285,22 @@ class XND < RubyXND
277
285
  end
278
286
  end
279
287
  end
288
+
289
+ class << self
290
+ def empty type, device: nil
291
+ if device
292
+ name, no = device.split ":"
293
+ no = (no == "managed" ? -1 : no.to_i)
294
+ device = [name, no]
295
+ end
296
+
297
+ RubyXND.empty type, device
298
+ end
299
+ end
300
+
280
301
 
281
- def initialize data, type: nil, dtype: nil, levels: nil, typedef: nil, dtypedef: nil
302
+ def initialize data, type: nil, dtype: nil, levels: nil, typedef: nil,
303
+ dtypedef: nil, device: nil
282
304
  if [type, dtype, levels, typedef, dtypedef].count(nil) < 2
283
305
  raise ArgumentError, "the 'type', 'dtype', 'levels' and 'typedef' arguments are "
284
306
  "mutually exclusive."
@@ -307,8 +329,22 @@ class XND < RubyXND
307
329
  data = TypeInference.convert_xnd_t_to_ruby_array data
308
330
  end
309
331
 
310
- super(type, data)
332
+ if device
333
+ name, no = device.split ":"
334
+ no = (no == "managed" ? -1 : no.to_i)
335
+ device = [name, no]
336
+ end
337
+
338
+ super(type, data, device)
339
+ end
340
+
341
+ def reshape shape, order: nil
342
+ _reshape(shape, order)
343
+ end
344
+
345
+ def transpose permute: nil
346
+ _transpose(permute)
311
347
  end
312
348
 
313
349
  alias :to_a :value
314
- end
350
+ end # class XND
@@ -1,6 +1,6 @@
1
1
  class RubyXND
2
2
  # VERSION number should be the version of libxnd this is built against.
3
- VERSION = "0.2.0dev6"
3
+ VERSION = "0.2.0dev7"
4
4
  # Working commit in xnd repo
5
- COMMIT = "31ec2d8501af442e1a5054d9531a5e2cefb242cb"
5
+ COMMIT = '6f305cd40d90b4f3fc2fe51ae144b433d186a6cc'
6
6
  end
@@ -40,9 +40,10 @@ Gem::Specification.new do |spec|
40
40
 
41
41
  spec.add_development_dependency 'minitest', '~> 5.11'
42
42
  spec.add_development_dependency 'minitest-hooks'
43
+ spec.add_development_dependency 'minitest-fail-fast'
43
44
  spec.add_development_dependency 'rake-compiler'
44
45
  spec.add_development_dependency 'pry'
45
46
  spec.add_development_dependency 'pry-byebug'
46
47
 
47
- spec.add_runtime_dependency 'ndtypes', '>= 0.2.0dev5'
48
+ spec.add_runtime_dependency 'ndtypes', '>= 0.2.0dev6'
48
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xnd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0dev6
4
+ version: 0.2.0dev7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sameer Deshmukh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-16 00:00:00.000000000 Z
11
+ date: 2019-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest-fail-fast
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake-compiler
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +100,14 @@ dependencies:
86
100
  requirements:
87
101
  - - ">="
88
102
  - !ruby/object:Gem::Version
89
- version: 0.2.0dev5
103
+ version: 0.2.0dev6
90
104
  type: :runtime
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - ">="
95
109
  - !ruby/object:Gem::Version
96
- version: 0.2.0dev5
110
+ version: 0.2.0dev6
97
111
  description: 'XND is a library for typed data arrays in Ruby. It is a wrapper over
98
112
  the libxnd C library.
99
113
 
@@ -110,11 +124,21 @@ files:
110
124
  - History.md
111
125
  - README.md
112
126
  - Rakefile
127
+ - ext/ruby_xnd/GPATH
128
+ - ext/ruby_xnd/GRTAGS
129
+ - ext/ruby_xnd/GTAGS
113
130
  - ext/ruby_xnd/extconf.rb
114
131
  - ext/ruby_xnd/float_pack_unpack.c
115
132
  - ext/ruby_xnd/float_pack_unpack.h
116
133
  - ext/ruby_xnd/gc_guard.c
117
134
  - ext/ruby_xnd/gc_guard.h
135
+ - ext/ruby_xnd/include/overflow.h
136
+ - ext/ruby_xnd/include/ruby_xnd.h
137
+ - ext/ruby_xnd/include/xnd.h
138
+ - ext/ruby_xnd/lib/libxnd.a
139
+ - ext/ruby_xnd/lib/libxnd.so
140
+ - ext/ruby_xnd/lib/libxnd.so.0
141
+ - ext/ruby_xnd/lib/libxnd.so.0.2.0dev3
118
142
  - ext/ruby_xnd/memory_block_object.c
119
143
  - ext/ruby_xnd/memory_block_object.h
120
144
  - ext/ruby_xnd/ruby_xnd.c
@@ -126,10 +150,14 @@ files:
126
150
  - ext/ruby_xnd/xnd/INSTALL.txt
127
151
  - ext/ruby_xnd/xnd/LICENSE.txt
128
152
  - ext/ruby_xnd/xnd/MANIFEST.in
153
+ - ext/ruby_xnd/xnd/Makefile
129
154
  - ext/ruby_xnd/xnd/Makefile.in
130
155
  - ext/ruby_xnd/xnd/README.rst
131
156
  - ext/ruby_xnd/xnd/config.guess
157
+ - ext/ruby_xnd/xnd/config.h
132
158
  - ext/ruby_xnd/xnd/config.h.in
159
+ - ext/ruby_xnd/xnd/config.log
160
+ - ext/ruby_xnd/xnd/config.status
133
161
  - ext/ruby_xnd/xnd/config.sub
134
162
  - ext/ruby_xnd/xnd/configure
135
163
  - ext/ruby_xnd/xnd/configure.ac
@@ -145,17 +173,34 @@ files:
145
173
  - ext/ruby_xnd/xnd/doc/xnd/buffer-protocol.rst
146
174
  - ext/ruby_xnd/xnd/doc/xnd/index.rst
147
175
  - ext/ruby_xnd/xnd/doc/xnd/quickstart.rst
148
- - ext/ruby_xnd/xnd/doc/xnd/types.rst
176
+ - ext/ruby_xnd/xnd/doc/xnd/xnd.rst
149
177
  - ext/ruby_xnd/xnd/install-sh
178
+ - ext/ruby_xnd/xnd/libxnd/Makefile
150
179
  - ext/ruby_xnd/xnd/libxnd/Makefile.in
151
180
  - ext/ruby_xnd/xnd/libxnd/Makefile.vc
152
181
  - ext/ruby_xnd/xnd/libxnd/bitmaps.c
182
+ - ext/ruby_xnd/xnd/libxnd/bitmaps.o
183
+ - ext/ruby_xnd/xnd/libxnd/bounds.c
184
+ - ext/ruby_xnd/xnd/libxnd/bounds.o
153
185
  - ext/ruby_xnd/xnd/libxnd/contrib.h
186
+ - ext/ruby_xnd/xnd/libxnd/contrib/bfloat16.h
154
187
  - ext/ruby_xnd/xnd/libxnd/copy.c
188
+ - ext/ruby_xnd/xnd/libxnd/copy.o
189
+ - ext/ruby_xnd/xnd/libxnd/cuda/cuda_memory.cu
190
+ - ext/ruby_xnd/xnd/libxnd/cuda/cuda_memory.h
155
191
  - ext/ruby_xnd/xnd/libxnd/equal.c
192
+ - ext/ruby_xnd/xnd/libxnd/equal.o
156
193
  - ext/ruby_xnd/xnd/libxnd/inline.h
194
+ - ext/ruby_xnd/xnd/libxnd/libxnd.a
195
+ - ext/ruby_xnd/xnd/libxnd/libxnd.so
196
+ - ext/ruby_xnd/xnd/libxnd/libxnd.so.0
197
+ - ext/ruby_xnd/xnd/libxnd/libxnd.so.0.2.0dev3
157
198
  - ext/ruby_xnd/xnd/libxnd/overflow.h
199
+ - ext/ruby_xnd/xnd/libxnd/shape.c
200
+ - ext/ruby_xnd/xnd/libxnd/shape.o
158
201
  - ext/ruby_xnd/xnd/libxnd/split.c
202
+ - ext/ruby_xnd/xnd/libxnd/split.o
203
+ - ext/ruby_xnd/xnd/libxnd/tests/Makefile
159
204
  - ext/ruby_xnd/xnd/libxnd/tests/Makefile.in
160
205
  - ext/ruby_xnd/xnd/libxnd/tests/Makefile.vc
161
206
  - ext/ruby_xnd/xnd/libxnd/tests/README.txt
@@ -164,13 +209,20 @@ files:
164
209
  - ext/ruby_xnd/xnd/libxnd/tests/test_fixed.c
165
210
  - ext/ruby_xnd/xnd/libxnd/xnd.c
166
211
  - ext/ruby_xnd/xnd/libxnd/xnd.h
212
+ - ext/ruby_xnd/xnd/libxnd/xnd.o
167
213
  - ext/ruby_xnd/xnd/python/test_xnd.py
168
214
  - ext/ruby_xnd/xnd/python/xnd/__init__.py
215
+ - ext/ruby_xnd/xnd/python/xnd/_version.py
169
216
  - ext/ruby_xnd/xnd/python/xnd/_xnd.c
170
217
  - ext/ruby_xnd/xnd/python/xnd/contrib/pretty.py
171
218
  - ext/ruby_xnd/xnd/python/xnd/docstrings.h
219
+ - ext/ruby_xnd/xnd/python/xnd/libxnd.a
220
+ - ext/ruby_xnd/xnd/python/xnd/libxnd.so
221
+ - ext/ruby_xnd/xnd/python/xnd/libxnd.so.0
222
+ - ext/ruby_xnd/xnd/python/xnd/libxnd.so.0.2.0dev3
172
223
  - ext/ruby_xnd/xnd/python/xnd/pyxnd.h
173
224
  - ext/ruby_xnd/xnd/python/xnd/util.h
225
+ - ext/ruby_xnd/xnd/python/xnd/xnd.h
174
226
  - ext/ruby_xnd/xnd/python/xnd_randvalue.py
175
227
  - ext/ruby_xnd/xnd/python/xnd_support.py
176
228
  - ext/ruby_xnd/xnd/setup.py
@@ -181,6 +233,7 @@ files:
181
233
  - ext/ruby_xnd/xnd/vcbuild/vcbuild64.bat
182
234
  - ext/ruby_xnd/xnd/vcbuild/vcclean.bat
183
235
  - ext/ruby_xnd/xnd/vcbuild/vcdistclean.bat
236
+ - lib/ruby_xnd.so
184
237
  - lib/xnd.rb
185
238
  - lib/xnd/version.rb
186
239
  - xnd.gemspec