Mercurial > repos > public > sbplib_julia
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...]] |