Mercurial > repos > public > sbplib_julia
comparison src/LazyTensors/lazy_tensor_operations.jl @ 359:ba46a952a450 refactor/remove_dynamic_size_tensormapping
Remove unnecessary type parameters
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Mon, 28 Sep 2020 22:36:41 +0200 |
parents | 7fe43d902a27 |
children | 8414c2334393 946516954c85 |
comparison
equal
deleted
inserted
replaced
357:e22b061f5299 | 359:ba46a952a450 |
---|---|
15 export LazyTensorMappingApplication | 15 export LazyTensorMappingApplication |
16 | 16 |
17 Base.:*(tm::TensorMapping{T,R,D}, o::AbstractArray{T,D}) where {T,R,D} = LazyTensorMappingApplication(tm,o) | 17 Base.:*(tm::TensorMapping{T,R,D}, o::AbstractArray{T,D}) where {T,R,D} = LazyTensorMappingApplication(tm,o) |
18 Base.getindex(ta::LazyTensorMappingApplication{T,R,D}, I::Vararg{Index,R}) where {T,R,D} = apply(ta.t, ta.o, I...) | 18 Base.getindex(ta::LazyTensorMappingApplication{T,R,D}, I::Vararg{Index,R}) where {T,R,D} = apply(ta.t, ta.o, I...) |
19 Base.getindex(ta::LazyTensorMappingApplication{T,R,D}, I::Vararg{Int,R}) where {T,R,D} = apply(ta.t, ta.o, Index{Unknown}.(I)...) | 19 Base.getindex(ta::LazyTensorMappingApplication{T,R,D}, I::Vararg{Int,R}) where {T,R,D} = apply(ta.t, ta.o, Index{Unknown}.(I)...) |
20 Base.size(ta::LazyTensorMappingApplication{T,R,D}) where {T,R,D} = range_size(ta.t) | 20 Base.size(ta::LazyTensorMappingApplication) = range_size(ta.t) |
21 # TODO: What else is needed to implement the AbstractArray interface? | 21 # TODO: What else is needed to implement the AbstractArray interface? |
22 | 22 |
23 # # We need the associativity to be a→b→c = a→(b→c), which is the case for '→' | 23 # # We need the associativity to be a→b→c = a→(b→c), which is the case for '→' |
24 Base.:*(a::TensorMapping{T,R,D}, b::TensorMapping{T,D,K}, args::Union{TensorMapping{T}, AbstractArray{T}}...) where {T,R,D,K} = foldr(*,(a,b,args...)) | 24 Base.:*(a::TensorMapping{T,R,D}, b::TensorMapping{T,D,K}, args::Union{TensorMapping{T}, AbstractArray{T}}...) where {T,R,D,K} = foldr(*,(a,b,args...)) |
25 # # Should we overload some other infix binary opesrator? | 25 # # Should we overload some other infix binary opesrator? |
47 Base.adjoint(tmt::LazyTensorMappingTranspose) = tmt.tm | 47 Base.adjoint(tmt::LazyTensorMappingTranspose) = tmt.tm |
48 | 48 |
49 apply(tmt::LazyTensorMappingTranspose{T,R,D}, v::AbstractArray{T,R}, I::Vararg{Index,D}) where {T,R,D} = apply_transpose(tmt.tm, v, I...) | 49 apply(tmt::LazyTensorMappingTranspose{T,R,D}, v::AbstractArray{T,R}, I::Vararg{Index,D}) where {T,R,D} = apply_transpose(tmt.tm, v, I...) |
50 apply_transpose(tmt::LazyTensorMappingTranspose{T,R,D}, v::AbstractArray{T,D}, I::Vararg{Index,R}) where {T,R,D} = apply(tmt.tm, v, I...) | 50 apply_transpose(tmt::LazyTensorMappingTranspose{T,R,D}, v::AbstractArray{T,D}, I::Vararg{Index,R}) where {T,R,D} = apply(tmt.tm, v, I...) |
51 | 51 |
52 range_size(tmt::LazyTensorMappingTranspose{T,R,D}) where {T,R,D} = domain_size(tmt.tm) | 52 range_size(tmt::LazyTensorMappingTranspose) = domain_size(tmt.tm) |
53 domain_size(tmt::LazyTensorMappingTranspose{T,R,D}) where {T,R,D} = range_size(tmt.tm) | 53 domain_size(tmt::LazyTensorMappingTranspose) = range_size(tmt.tm) |
54 | 54 |
55 | 55 |
56 struct LazyTensorMappingBinaryOperation{Op,T,R,D,T1<:TensorMapping{T,R,D},T2<:TensorMapping{T,R,D}} <: TensorMapping{T,D,R} | 56 struct LazyTensorMappingBinaryOperation{Op,T,R,D,T1<:TensorMapping{T,R,D},T2<:TensorMapping{T,R,D}} <: TensorMapping{T,D,R} |
57 tm1::T1 | 57 tm1::T1 |
58 tm2::T2 | 58 tm2::T2 |