1
1
"""
2
- OneElement(val, ind, axes) <: AbstractArray
3
- Extremely simple `struct` used for the gradient of scalar `getindex`.
2
+ OneElement(val, ind, axesorsize) <: AbstractArray
3
+
4
+ Represents an array with the specified axes (if its a tuple of `AbstractUnitRange`s)
5
+ or size (if its a tuple of `Integer`s), with a single entry set to `val` and all others equal to zero,
6
+ specified by `ind``.
4
7
"""
5
8
struct OneElement{T,N,I,A} <: AbstractArray{T,N}
6
9
val:: T
@@ -10,10 +13,26 @@ struct OneElement{T,N,I,A} <: AbstractArray{T,N}
10
13
end
11
14
12
15
OneElement (val, inds:: NTuple{N,Int} , sz:: NTuple{N,Integer} ) where N = OneElement (val, inds, oneto .(sz))
13
- OneElement (val, inds:: Int , sz:: Int ) = OneElement (val, (inds,), (sz,))
16
+ """
17
+ OneElement(val, ind::Int, n::Int)
18
+
19
+ Creates a length `n` vector where the `ind` entry is equal to `val`, and all other entries are zero.
20
+ """
21
+ OneElement (val, ind:: Int , len:: Int ) = OneElement (val, (ind,), (len,))
22
+ """
23
+ OneElement(ind::Int, n::Int)
24
+
25
+ Creates a length `n` vector where the `ind` entry is equal to `1`, and all other entries are zero.
26
+ """
14
27
OneElement (inds:: Int , sz:: Int ) = OneElement (1 , inds, sz)
15
28
OneElement {T} (val, inds:: NTuple{N,Int} , sz:: NTuple{N,Integer} ) where {T,N} = OneElement (convert (T,val), inds, oneto .(sz))
16
29
OneElement {T} (val, inds:: Int , sz:: Int ) where T = OneElement {T} (val, (inds,), (sz,))
30
+
31
+ """
32
+ OneElement{T}(val, ind::Int, n::Int)
33
+
34
+ Creates a length `n` vector where the `ind` entry is equal to `one(T)`, and all other entries are zero.
35
+ """
17
36
OneElement {T} (inds:: Int , sz:: Int ) where T = OneElement (one (T), inds, sz)
18
37
19
38
Base. size (A:: OneElement ) = map (length, A. axes)
0 commit comments