@@ -62,8 +62,8 @@ AffineQuasiVector(A, x::AffineQuasiVector, b) = AffineQuasiVector(A*x.A, x.x, A*
62
62
axes (A:: AbstractAffineQuasiVector ) = axes (A. x)
63
63
64
64
affine_getindex (A, k) = A. A* A. x[k] .+ A. b
65
- Base. unsafe_getindex (A:: AbstractAffineQuasiVector , k) = A. A* Base. unsafe_getindex (A. x,k) .+ A. b
66
- getindex (A:: AbstractAffineQuasiVector , k:: Number ) = affine_getindex (A, k)
65
+ Base. unsafe_getindex (A:: AbstractAffineQuasiVector{T} , k) where T = convert (T, A. A* Base. unsafe_getindex (A. x,k) .+ A. b) :: T
66
+ getindex (A:: AbstractAffineQuasiVector{T} , k:: Number ) where T = convert (T, affine_getindex (A, k)) :: T
67
67
function getindex (A:: AbstractAffineQuasiVector , k:: Inclusion )
68
68
@boundscheck A. x[k] # throws bounds error if k ≠ x
69
69
A
@@ -120,12 +120,20 @@ AffineMap(domain::AbstractQuasiVector{T}, range::AbstractQuasiVector{V}) where {
120
120
union (d:: AffineMap ) = d. range
121
121
measure (x:: Inclusion{<:Any,<:AbstractInterval} ) = last (x)- first (x)
122
122
123
- function getproperty (A:: AffineMap , d:: Symbol )
124
- domain, range = getfield (A, :domain ), getfield (A, :range )
125
- d == :x && return domain
126
- d == :A && return measure (range)/ measure (domain)
127
- d == :b && return (last (domain)* first (range) - first (domain)* last (range))/ measure (domain)
128
- getfield (A, d)
123
+ function affinemap_A (m:: AffineMap{<:Number,<:Inclusion{<:Number},<:Inclusion{<:Number}} )
124
+ domain, range = getfield (m, :domain ), getfield (m, :range )
125
+ measure (range)/ measure (domain)
126
+ end
127
+ function affinemap_b (m:: AffineMap{<:Number,<:Inclusion{<:Number},<:Inclusion{<:Number}} )
128
+ domain, range = getfield (m, :domain ), getfield (m, :range )
129
+ (last (domain)* first (range) - first (domain)* last (range))/ measure (domain)
130
+ end
131
+
132
+ function getproperty (m:: AffineMap , d:: Symbol )
133
+ d == :x && return getfield (m, :domain )
134
+ d == :A && return affinemap_A (m)
135
+ d == :b && return affinemap_b (m)
136
+ getfield (m, d)
129
137
end
130
138
131
139
function getindex (A:: AffineMap{T} , k:: Number ) where T
0 commit comments