Mercurial > repos > public > sbplib_julia
comparison src/LazyTensors/lazy_array.jl @ 1355:102ebdaf7c11 feature/variable_derivatives
Merge default
| author | Jonatan Werpers <jonatan@werpers.com> |
|---|---|
| date | Wed, 08 Feb 2023 21:21:28 +0100 |
| parents | 6fd97b5ed3e5 |
| children | c5cf32fab163 |
comparison
equal
deleted
inserted
replaced
| 1210:fa0800591306 | 1355:102ebdaf7c11 |
|---|---|
| 26 size::NTuple{D,Int} | 26 size::NTuple{D,Int} |
| 27 end | 27 end |
| 28 export LazyFunctionArray | 28 export LazyFunctionArray |
| 29 | 29 |
| 30 function LazyFunctionArray(f::F, size::NTuple{D,Int}) where {F<:Function,D} | 30 function LazyFunctionArray(f::F, size::NTuple{D,Int}) where {F<:Function,D} |
| 31 T = typeof(f(ones(D)...)) | 31 T = typeof(f(ones(Int, D)...)) |
| 32 return LazyFunctionArray{F,T,D}(f,size) | 32 return LazyFunctionArray{F,T,D}(f,size) |
| 33 end | 33 end |
| 34 | 34 |
| 35 Base.size(lfa::LazyFunctionArray) = lfa.size | 35 Base.size(lfa::LazyFunctionArray) = lfa.size |
| 36 | 36 |
| 91 Base.@propagate_inbounds *̃(a::T, b::AbstractArray{T,D}) where {T,D} = LazyElementwiseOperation{T,D,:*}(a,b) | 91 Base.@propagate_inbounds *̃(a::T, b::AbstractArray{T,D}) where {T,D} = LazyElementwiseOperation{T,D,:*}(a,b) |
| 92 Base.@propagate_inbounds /̃(a::T, b::AbstractArray{T,D}) where {T,D} = LazyElementwiseOperation{T,D,:/}(a,b) | 92 Base.@propagate_inbounds /̃(a::T, b::AbstractArray{T,D}) where {T,D} = LazyElementwiseOperation{T,D,:/}(a,b) |
| 93 | 93 |
| 94 | 94 |
| 95 | 95 |
| 96 # NOTE: Är det knas att vi har till exempel * istället för .* ?? | 96 # Overload +,-,*,/ for LazyArrays |
| 97 # Oklart om det ens går att lösa.. | 97 # Element wise operation for `*` and `/` are not overloaded for due to conflicts with the behavior |
| 98 # of regular `*` and `/` for AbstractArrays. Use tilde versions instead. | |
| 98 Base.@propagate_inbounds Base.:+(a::LazyArray{T,D}, b::LazyArray{T,D}) where {T,D} = a +̃ b | 99 Base.@propagate_inbounds Base.:+(a::LazyArray{T,D}, b::LazyArray{T,D}) where {T,D} = a +̃ b |
| 100 Base.@propagate_inbounds Base.:-(a::LazyArray{T,D}, b::LazyArray{T,D}) where {T,D} = a -̃ b | |
| 101 | |
| 99 Base.@propagate_inbounds Base.:+(a::LazyArray{T,D}, b::AbstractArray{T,D}) where {T,D} = a +̃ b | 102 Base.@propagate_inbounds Base.:+(a::LazyArray{T,D}, b::AbstractArray{T,D}) where {T,D} = a +̃ b |
| 103 Base.@propagate_inbounds Base.:-(a::LazyArray{T,D}, b::AbstractArray{T,D}) where {T,D} = a -̃ b | |
| 104 | |
| 100 Base.@propagate_inbounds Base.:+(a::AbstractArray{T,D}, b::LazyArray{T,D}) where {T,D} = a +̃ b | 105 Base.@propagate_inbounds Base.:+(a::AbstractArray{T,D}, b::LazyArray{T,D}) where {T,D} = a +̃ b |
| 101 | |
| 102 Base.@propagate_inbounds Base.:-(a::LazyArray{T,D}, b::LazyArray{T,D}) where {T,D} = a -̃ b | |
| 103 Base.@propagate_inbounds Base.:-(a::LazyArray{T,D}, b::AbstractArray{T,D}) where {T,D} = a -̃ b | |
| 104 Base.@propagate_inbounds Base.:-(a::AbstractArray{T,D}, b::LazyArray{T,D}) where {T,D} = a -̃ b | 106 Base.@propagate_inbounds Base.:-(a::AbstractArray{T,D}, b::LazyArray{T,D}) where {T,D} = a -̃ b |
| 105 | 107 |
| 106 # Element wise operation for `*` and `\` are not overloaded due to conflicts with the behavior | 108 Base.@propagate_inbounds Base.:+(a::LazyArray{T,D}, b::T) where {T,D} = a +̃ b |
| 107 # of regular `*` and `/` for AbstractArrays. Use tilde versions instead. | 109 Base.@propagate_inbounds Base.:-(a::LazyArray{T,D}, b::T) where {T,D} = a -̃ b |
| 110 | |
| 111 Base.@propagate_inbounds Base.:+(a::T, b::LazyArray{T,D}) where {T,D} = a +̃ b | |
| 112 Base.@propagate_inbounds Base.:-(a::T, b::LazyArray{T,D}) where {T,D} = a -̃ b | |
| 108 | 113 |
| 109 export +̃, -̃, *̃, /̃ | 114 export +̃, -̃, *̃, /̃ |
