Диапазоны с двойными номерами
У меня проблема с двойными числами внутри диапазонов. В частности:
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)
не был определен ранее, поэтому его нельзя было нигде использовать.