Диапазоны с двойными номерами

У меня проблема с двойными числами внутри диапазонов. В частности:

using ForwardDiff: Dual
t = Dual.((0.0,10.0),0)
(t[1]:1/60:t[2])[end]

Проблема, кажется, в том, что [end] использования last что тогда, что вычислить количество шагов, поэтому что-то пытается преобразовать в Integer и терпит неудачу. Кто-нибудь знает способ обойти это?

1 ответ

Вы можете исправить это так:

using ForwardDiff: Dual, value
t = Dual.((0.0,10.0),0)
Base.Integer(x::Dual) = Integer(value(x))
(t[1]:1/60:t[2])[end]

Но, вероятно, сопровождающие DualNumbers.jl должны решить, является ли это предполагаемым поведением вообще. Я бы сказал, да, как Dual не является подтипом Integer, И это не должно ничего ломать как метод Integer(::Dual) не был определен ранее, поэтому его нельзя было нигде использовать.

Другие вопросы по тегам