Я имел в виду, что если, к примеру, функция возвращает то Symmetric, то Diagonal (или ещё что-то из AbstractMatrix), то стабильной она не будет, то что конкретный Float64 внутри - не имеет значения.
Нет, дело не в этом. В самом простом варианте - если функция при каких-то условиях возвращает Symmetric, а при каких-то Diagonal при одном и том же типе входящих данных, то тогда она не будет type stable.
Так. 😸 Я может тогда не очень понимаю что значит стабильная функция. f(x)::Float64 ведь будет железно стабильна? А f(x::T)::T where T <: Real - скорее не будет.
если есть глобальные (для функции) переменные, которые могут поменять тип; если переменные внутри функции меняют тип; если функция возвращает разное значение на одном и том же типе при разных значениях аргумента — это всё плохо )