comparison src/LazyTensors/lazy_tensor_operations.jl @ 399:3b4b1758a8ad feature/lazy_linear_map

Add a check for permuted indecies.
author Jonatan Werpers <jonatan@werpers.com>
date Sun, 04 Oct 2020 21:37:00 +0200
parents 7ad644d112de
children c640f37d1c74
comparison
equal deleted inserted replaced
394:7ad644d112de 399:3b4b1758a8ad
112 """ 112 """
113 struct LazyLinearMap{T,R,D, RD, AA<:AbstractArray{T,RD}} <: TensorMapping{T,R,D} 113 struct LazyLinearMap{T,R,D, RD, AA<:AbstractArray{T,RD}} <: TensorMapping{T,R,D}
114 A::AA 114 A::AA
115 range_indicies::NTuple{R,Int} 115 range_indicies::NTuple{R,Int}
116 domain_indicies::NTuple{D,Int} 116 domain_indicies::NTuple{D,Int}
117
118 function LazyLinearMap(A::AA, range_indicies::NTuple{R,Int}, domain_indicies::NTuple{D,Int}) where {T,R,D, RD, AA<:AbstractArray{T,RD}}
119 if !issorted(range_indicies) || !issorted(domain_indicies)
120 throw(DomainError("range_indicies and domain_indicies must be sorted in ascending order"))
121 end
122
123 return new{T,R,D,RD,AA}(A,range_indicies,domain_indicies)
124 end
117 end 125 end
118 export LazyLinearMap 126 export LazyLinearMap
119 127
120 range_size(llm::LazyLinearMap) = size(llm.A)[[llm.range_indicies...]] 128 range_size(llm::LazyLinearMap) = size(llm.A)[[llm.range_indicies...]]
121 domain_size(llm::LazyLinearMap) = size(llm.A)[[llm.domain_indicies...]] 129 domain_size(llm::LazyLinearMap) = size(llm.A)[[llm.domain_indicies...]]