xnd 0.2.0dev6 → 0.2.0dev7

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.
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