Mercurial > repos > public > sbplib_julia
comparison src/LazyTensors/tensor_mapping.jl @ 995:1ba8a398af9c refactor/lazy_tensors
Rename types
| author | Jonatan Werpers <jonatan@werpers.com> |
|---|---|
| date | Fri, 18 Mar 2022 21:14:47 +0100 |
| parents | 1f41cf9454f2 |
| children |
comparison
equal
deleted
inserted
replaced
| 994:55ab7801c45f | 995:1ba8a398af9c |
|---|---|
| 1 export TensorMapping | 1 export LazyTensor |
| 2 export apply | 2 export apply |
| 3 export apply_transpose | 3 export apply_transpose |
| 4 export range_dim, domain_dim | 4 export range_dim, domain_dim |
| 5 export range_size, domain_size | 5 export range_size, domain_size |
| 6 | 6 |
| 7 """ | 7 """ |
| 8 TensorMapping{T,R,D} | 8 LazyTensor{T,R,D} |
| 9 | 9 |
| 10 Describes a mapping of a `D` dimension tensor to an `R` dimension tensor. | 10 Describes a mapping of a `D` dimension tensor to an `R` dimension tensor. |
| 11 The action of the mapping is implemented through the method | 11 The action of the mapping is implemented through the method |
| 12 ```julia | 12 ```julia |
| 13 apply(t::TensorMapping{T,R,D}, v::AbstractArray{<:Any,D}, I::Vararg) where {R,D,T} | 13 apply(t::LazyTensor{T,R,D}, v::AbstractArray{<:Any,D}, I::Vararg) where {R,D,T} |
| 14 ``` | 14 ``` |
| 15 | 15 |
| 16 The size of the range and domain that the operator works with should be returned by | 16 The size of the range and domain that the operator works with should be returned by |
| 17 the functions | 17 the functions |
| 18 ```julia | 18 ```julia |
| 19 range_size(::TensorMapping) | 19 range_size(::LazyTensor) |
| 20 domain_size(::TensorMapping) | 20 domain_size(::LazyTensor) |
| 21 ``` | 21 ``` |
| 22 to allow querying for one or the other. | 22 to allow querying for one or the other. |
| 23 | 23 |
| 24 Optionally the action of the transpose may be defined through | 24 Optionally the action of the transpose may be defined through |
| 25 ```julia | 25 ```julia |
| 26 apply_transpose(t::TensorMapping{T,R,D}, v::AbstractArray{T,D}, I::Vararg) where {R,D,T} | 26 apply_transpose(t::LazyTensor{T,R,D}, v::AbstractArray{T,D}, I::Vararg) where {R,D,T} |
| 27 ``` | 27 ``` |
| 28 """ | 28 """ |
| 29 abstract type TensorMapping{T,R,D} end | 29 abstract type LazyTensor{T,R,D} end |
| 30 | 30 |
| 31 """ | 31 """ |
| 32 apply(t::TensorMapping{T,R,D}, v::AbstractArray{<:Any,D}, I::Vararg) where {R,D,T} | 32 apply(t::LazyTensor{T,R,D}, v::AbstractArray{<:Any,D}, I::Vararg) where {R,D,T} |
| 33 | 33 |
| 34 Return the result of the mapping for a given index. | 34 Return the result of the mapping for a given index. |
| 35 """ | 35 """ |
| 36 function apply end | 36 function apply end |
| 37 | 37 |
| 38 """ | 38 """ |
| 39 apply_transpose(t::TensorMapping{T,R,D}, v::AbstractArray{<:Any,R}, I::Vararg) where {R,D,T} | 39 apply_transpose(t::LazyTensor{T,R,D}, v::AbstractArray{<:Any,R}, I::Vararg) where {R,D,T} |
| 40 | 40 |
| 41 Return the result of the transposed mapping for a given index. | 41 Return the result of the transposed mapping for a given index. |
| 42 """ | 42 """ |
| 43 function apply_transpose end | 43 function apply_transpose end |
| 44 | 44 |
| 45 """ | 45 """ |
| 46 range_dim(::TensorMapping) | 46 range_dim(::LazyTensor) |
| 47 Return the dimension of the range space of a given mapping | 47 Return the dimension of the range space of a given mapping |
| 48 """ | 48 """ |
| 49 range_dim(::TensorMapping{T,R,D}) where {T,R,D} = R | 49 range_dim(::LazyTensor{T,R,D}) where {T,R,D} = R |
| 50 | 50 |
| 51 """ | 51 """ |
| 52 domain_dim(::TensorMapping) | 52 domain_dim(::LazyTensor) |
| 53 Return the dimension of the domain space of a given mapping | 53 Return the dimension of the domain space of a given mapping |
| 54 """ | 54 """ |
| 55 domain_dim(::TensorMapping{T,R,D}) where {T,R,D} = D | 55 domain_dim(::LazyTensor{T,R,D}) where {T,R,D} = D |
| 56 | 56 |
| 57 | 57 |
| 58 """ | 58 """ |
| 59 range_size(M::TensorMapping) | 59 range_size(M::LazyTensor) |
| 60 | 60 |
| 61 Return the range size for the mapping. | 61 Return the range size for the mapping. |
| 62 """ | 62 """ |
| 63 function range_size end | 63 function range_size end |
| 64 | 64 |
| 65 """ | 65 """ |
| 66 domain_size(M::TensorMapping) | 66 domain_size(M::LazyTensor) |
| 67 | 67 |
| 68 Return the domain size for the mapping. | 68 Return the domain size for the mapping. |
| 69 """ | 69 """ |
| 70 function domain_size end | 70 function domain_size end |
| 71 | 71 |
| 72 | 72 |
| 73 """ | 73 """ |
| 74 eltype(::TensorMapping{T}) | 74 eltype(::LazyTensor{T}) |
| 75 | 75 |
| 76 The type of elements the TensorMapping acts on. | 76 The type of elements the LazyTensor acts on. |
| 77 """ | 77 """ |
| 78 Base.eltype(::TensorMapping{T}) where T = T | 78 Base.eltype(::LazyTensor{T}) where T = T |
| 79 | 79 |
| 80 # TODO: Think about boundschecking! | 80 # TODO: Think about boundschecking! |
