Olivier Hénot

Results 83 comments of Olivier Hénot

To add to this issue: the division operator `/` does not have this problem and `*` has the extra allocations only when multiplying two intervals. See the MWE: ```Julia module...

As I mentioned on discourse, unfortunately the macro `@inline` does not always prevent the extra allocations. Here is yet an other behaviour: ```Julia module MyModule using IntervalArithmetic *(Interval(1), Interval(1)) #

The following operation is very slow and may be related to this issue: ```Julia using IntervalArithmetic, BenchmarkTools A = Interval.(rand(100, 100)) @btime $A * $A; # 184.122 ms (6000020 allocations:...

Thank you for your feedback. Are you referring to this paper [Fast interval matrix multiplication](https://link.springer.com/article/10.1007/s11075-011-9524-z)?

Thanks for the link. I went through the five rounding modes: ```Julia using IntervalArithmetic, BenchmarkTools A = Interval.(rand(100, 100)); setrounding(Interval, :fast); @btime $A*$A; # 69.620 ms (8 allocations: 156.66 KiB)...

Yes I did try it on a large project but it did not work. Somehow, sometimes (e.g. for `setrounding(Interval, :tight)`), the inlining of `*` is lost. Additionally, in the MWE...

I see. No I did not try it; I'll give it a shot perhaps next week then.

Sorry for the late feedback. I used `@inline` in front of the following functions: - https://github.com/JuliaIntervals/IntervalArithmetic.jl/blob/a3dc27f52939812742754e1df50a65c7608679c5/src/intervals/rounding.jl#L134-L135 - https://github.com/JuliaIntervals/IntervalArithmetic.jl/blob/a3dc27f52939812742754e1df50a65c7608679c5/src/intervals/rounding.jl#L175-L180 - https://github.com/JuliaIntervals/IntervalArithmetic.jl/blob/a3dc27f52939812742754e1df50a65c7608679c5/src/intervals/rounding.jl#L278 No luck.

Do you mean these? https://github.com/JuliaIntervals/IntervalArithmetic.jl/blob/a3dc27f52939812742754e1df50a65c7608679c5/src/intervals/arithmetic.jl#L110-L136 These functions were already preceded by the `@inline`macro so I did not change it. Am I missing something?