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