Julia. Язык программирования. Быстрый старт. Вадим Никитин

Читать онлайн.
Название Julia. Язык программирования. Быстрый старт
Автор произведения Вадим Никитин
Жанр
Серия
Издательство
Год выпуска 2023
isbn



Скачать книгу

чисел превышающих числовой диапазон типа также будут заменены на специальные значения:

      julia> 4.2^1000

      Inf

      julia> -4.2^1000

      –Inf

      Специальные значения

      Существует три определенных стандартных значения с плавающей точкой, которые не соответствуют ни одной точке на линии вещественных чисел:

      По стандарту IEEE 754, эти значения с плавающей точкой являются результатами определенных арифметических операций:

      julia> 1/0

      Inf

      julia> -5/0

      –Inf

      julia> 0.000001/0

      Inf

      julia> 0/0

      NaN

      julia> 1/Inf

      0.0

      julia> 1/-Inf

      –0.0

      julia> -1/Inf

      –0.0

      julia> -1/-Inf

      0.0

      julia> 500 + Inf

      Inf

      julia> 500 – Inf

      –Inf

      julia> Inf + Inf

      Inf

      julia> -Inf -Inf

      –Inf

      julia> Inf – Inf

      NaN

      julia> Inf * Inf

      Inf

      julia> Inf*-Inf

      –Inf

      julia> -Inf * -Inf

      Inf

      julia> Inf / Inf

      NaN

      julia> Inf /-Inf

      NaN

      julia> -Inf /Inf

      NaN

      julia> -Inf /-Inf

      NaN

      julia> 0 * Inf

      NaN

      julia> 0 *-Inf

      NaN

      Тип NaN

      NaN не равно, не меньше и не больше чего-либо, включая самого себя:

      julia> NaN == NaN

      false

      julia> NaN != NaN

      true

      julia> NaN < NaN

      false

      julia> NaN > NaN

      false

      Это может вызвать проблемы, например при работе с массивами:

      julia> [1 NaN] == [1 NaN]

      false

      Функции Julia для работы со специальными значениями:

      Функция isequal() считает NaNs равными друг другу:

      julia> isequal(NaN, NaN)

      true

      julia> isequal([1 NaN], [1 NaN])

      true

      julia> isequal(NaN, NaN32)

      true

      Функцию isequal() можно также использовать для различения знаковых нулей:

      julia> -0.0 == 0.0

      true

      julia> isequal(-0.0, 0.0)

      false

      Машинный эпсилон

      Большинство реальных чисел не могут быть точно представлены числами с плавающей точкой, поэтому для многих целей важно знать расстояние между двумя соседними представляемыми числами с плавающей точкой, которое часто называют машинным эпсилоном.

      Функция eps() в Julia дает расстояние между 1.0 и следующим большим значением с плавающей точкой, при использовании в качестве аргумента типа числа с плавающей точкой:

      julia> eps(Float16)

      Float16(0.000977)

      julia> eps(Float32)

      1.1920929f-7

      julia> eps(Float64)

      2.220446049250313e-16

      julia> eps(BigFloat)

      1.727233711018888925077270372560079914223200072887256277004740694033718360632485e-77

      Функция eps также может принимать в качестве аргумента значение с плавающей точкой, и выдавать абсолютную разницу между этим значением и следующим представимым значением с плавающей точкой. Другими словами, eps(x) выдает значение того же типа, что и x, такое, что x + eps(x) является следующим представимым значением с плавающей точкой, большим, чем x. Тип значения при этом также учитывается:

      julia> eps(1.0)

      2.220446049250313e-16

      julia>