JuliaApproximation / DomainSets.jl

A Julia package for describing domains as continuous sets of elements
MIT License
72 stars 12 forks source link

boundingbox does not work for Balls with BigFloat StaticVectors #114

Closed zsunberg closed 2 years ago

zsunberg commented 2 years ago
julia> boundingbox(Ball(1.0, SA[BigFloat(1), BigFloat(2)]))
ERROR: setindex!() with non-isbitstype eltype is not supported by StaticArrays. Consider using SizedArray.
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:33
 [2] setindex!
   @ ~/.julia/packages/StaticArrays/6QFsp/src/MArray.jl:39 [inlined]
 [3] corners(d::DomainSets.FixedIntervalProduct{2, BigFloat, ChebyshevInterval{BigFloat}})
   @ DomainSets ~/.julia/dev/DomainSets/src/domains/cube.jl:19
 [4] map_boundingbox_generic(box::DomainSets.FixedIntervalProduct{2, BigFloat, ChebyshevInterval{BigFloat}}, fmap::DomainSets.GenericAffineMap{SVector{2, BigFloat}, BigFloat, SVector{2, BigFloat}})
   @ DomainSets ~/.julia/dev/DomainSets/src/domains/boundingbox.jl:72
 [5] map_boundingbox(box::DomainSets.FixedIntervalProduct{2, BigFloat, ChebyshevInterval{BigFloat}}, fmap::DomainSets.GenericAffineMap{SVector{2, BigFloat}, BigFloat, SVector{2, BigFloat}})
   @ DomainSets ~/.julia/dev/DomainSets/src/domains/boundingbox.jl:66
 [6] boundingbox(d::DomainSets.GenericBall{SVector{2, BigFloat}, :closed, BigFloat})
   @ DomainSets ~/.julia/dev/DomainSets/src/domains/ball.jl:239
 [7] top-level scope
   @ REPL[49]:1
daanhb commented 2 years ago

I think this line should become

    corners = [zeros(numtype(d),dimension(d)) for i in 1:2^N]

That avoids creating an MArray, which apparently is not writable with BigFloat's (in spite of being mutable).