@@ -62,8 +62,8 @@ AffineQuasiVector(A, x::AffineQuasiVector, b) = AffineQuasiVector(A*x.A, x.x, A*
6262axes (A:: AbstractAffineQuasiVector ) = axes (A. x)
6363
6464affine_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
6767function getindex (A:: AbstractAffineQuasiVector , k:: Inclusion )
6868 @boundscheck A. x[k] # throws bounds error if k ≠ x
6969 A
@@ -120,12 +120,20 @@ AffineMap(domain::AbstractQuasiVector{T}, range::AbstractQuasiVector{V}) where {
120120union (d:: AffineMap ) = d. range
121121measure (x:: Inclusion{<:Any,<:AbstractInterval} ) = last (x)- first (x)
122122
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)
129137end
130138
131139function getindex (A:: AffineMap{T} , k:: Number ) where T
0 commit comments