Диапазоны с двойными номерами - PullRequest
0 голосов
/ 10 февраля 2019

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

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

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

1 Ответ

0 голосов
/ 10 февраля 2019

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

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

...