Skip to content

Commit 2814cbe

Browse files
authored
Merge pull request #131 from Mojo-Numerics-and-Algorithms-group/pre-0.4
Prepare for V0.3.1
2 parents 360d79d + bfa5825 commit 2814cbe

File tree

10 files changed

+231
-747
lines changed

10 files changed

+231
-747
lines changed

numojo/core/ndarray.mojo

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,6 @@ struct NDArray[dtype: DType = DType.float64](
478478
var size_at_dim: Int = self.ndshape[i]
479479
slice_list.append(Slice(0, size_at_dim))
480480

481-
# self.__setitem__(slice_list=slice_list, val=val)
482481
var n_slices: Int = len(slice_list)
483482
var ndims: Int = 0
484483
var count: Int = 0
@@ -842,40 +841,42 @@ struct NDArray[dtype: DType = DType.float64](
842841
var n_slices: Int = slice_list.__len__()
843842
var slices = List[Slice]()
844843
for i in range(n_slices):
844+
if i >= self.ndim:
845+
raise Error("Error: Number of slices exceeds array dimensions")
846+
845847
var start: Int = 0
846-
var end: Int = 0
847-
if slice_list[i].start is None and slice_list[i].end is None:
848-
start = 0
849-
end = self.ndshape[i]
850-
temp = Slice(
851-
start=Optional(start),
852-
end=Optional(end),
853-
step=Optional(slice_list[i].step),
854-
)
855-
slices.append(temp)
856-
if slice_list[i].start is None and slice_list[i].end is not None:
857-
start = 0
858-
temp = Slice(
848+
var end: Int = self.ndshape[i]
849+
var step: Int = 1
850+
if slice_list[i].start is not None:
851+
start = slice_list[i].start.value()
852+
if start < 0:
853+
# start += self.ndshape[i]
854+
raise Error(
855+
"Error: Negative indexing in slices not supported"
856+
" currently"
857+
)
858+
859+
if slice_list[i].end is not None:
860+
end = slice_list[i].end.value()
861+
if end < 0:
862+
# end += self.ndshape[i] + 1
863+
raise Error(
864+
"Error: Negative indexing in slices not supported"
865+
" currently"
866+
)
867+
868+
step = slice_list[i].step
869+
if step == 0:
870+
raise Error("Error: Slice step cannot be zero")
871+
872+
slices.append(
873+
Slice(
859874
start=Optional(start),
860-
end=Optional(slice_list[i].end.value()),
861-
step=Optional(slice_list[i].step),
862-
)
863-
slices.append(temp)
864-
if slice_list[i].start is not None and slice_list[i].end is None:
865-
end = self.ndshape[i]
866-
temp = Slice(
867-
start=Optional(slice_list[i].start.value()),
868875
end=Optional(end),
869-
step=Optional(slice_list[i].step),
876+
step=Optional(step),
870877
)
871-
slices.append(temp)
872-
if (
873-
slice_list[i].start is not None
874-
and slice_list[i].end is not None
875-
):
876-
slices.append(slice_list[i])
877-
else:
878-
raise Error("Error: Undefined Slice")
878+
)
879+
879880
return slices^
880881

881882
fn __getitem__(self, owned *slices: Slice) raises -> Self:

numojo/core/ndarrayshape.mojo

Lines changed: 0 additions & 275 deletions
This file was deleted.

0 commit comments

Comments
 (0)