# [Ride v5] Математические функции
⚠️ Это документация Стандартной библиотеки версии 5. Рекомендуем использовать версию 6. Перейти к версии 6
| Название | Описание | Сложность |
|---|---|---|
| fraction(Int, Int, Int): Int | Умножает два целых числа и делит на третье без переполнения | 14 |
| fraction(Int, Int, Int, Union): Int | Умножает два целых числа и делит на третье без переполнения, применяя указанный метод округления | 17 |
| fraction(BigInt, BigInt, BigInt): BigInt | Умножает два больших целых числа и делит на третье без переполнения | 128 |
| fraction(BigInt, BigInt, BigInt, Union): BigInt | Умножает два больших целых числа и делит на третье без переполнения, применяя указанный метод округления | 128 |
| log(Int, Int, Int, Int, Int, Union): Int | Вычисляет логарифм числа по заданному основанию | 100 |
| log(BigInt, Int, BigInt, Int, Int, Union): BigInt | Вычисляет логарифм числа по заданному основанию с высокой точностью | 200 |
| median(List[Int]): Int | Возвращает медиану списка целых чисел | 20 |
| median(List[BigInt]): BigInt | Возвращает медиану списка больших целых чисел | 160 |
| pow(Int, Int, Int, Int, Int, Union): Int | Возводит число в степень | 100 |
| pow(BigInt, Int, BigInt, Int, Int, Union): BigInt | Возводит число в степень с высокой точностью | 200 |
# fraction(Int, Int, Int): Int
Умножает целые числа a и b и делит на целое число c без переполнения.
Результат a × b / c не должен превышать максимальное целочисленное значение 9 223 372 036 854 755 807.
Используется метод округления DOWN, см. Переменные округления ниже.
fraction(a: Int, b: Int, c: Int): Int
# Параметры
| Параметр | Описание |
|---|---|
a: Int | Целое a |
b: Int | Целое b |
c: Int | Целое c |
# Примеры
Пусть:
a = 100 000 000 000,
b = 50 000 000 000 000,
c = 2 500 000.
Следующее выражение с операторами * and / вызывает ошибку переполнения:
a × b /c # ошибка, поскольку a × b превышает максимальное целочисленное значение
Использование функции fraction не приводит к переполнению:
fraction(a, b, c) # Результат: 2 000 000 000 000 000 000
# fraction(Int, Int, Int, Union): Int
Умножает целые числа a и b и делит на целое число c без переполнения, применяя указанный метод округления.
Результат a × b / c не должен превышать максимальное целочисленное значение 9 223 372 036 854 755 807.
fraction(a: Int, b: Int, c: Int, round: DOWN|CEILING|FLOOR|HALFUP|HALFEVEN): Int
# Параметры
| Параметр | Описание |
|---|---|
a: Int | Целое a |
b: Int | Целое b |
c: Int | Целое c |
round: DOWN|CEILING|FLOOR|HALFUP|HALFEVEN | Одна из переменных округления |
# fraction(BigInt, BigInt, BigInt): BigInt
Умножает большие целые числа a и b и делит на большое целое число c без переполнения.
Результат a × b / c не должен превышать максимальное значение большого целого.
Используется метод округления DOWN, см. Переменные округления ниже.
fraction(a: BigInt, b: BigInt, c: BigInt): BigInt
# Параметры
| Параметр | Описание |
|---|---|
a: BigInt | Большое целое a |
b: BigInt | Большое целое b |
c: BigInt | Большое целое c |
# fraction(BigInt, BigInt, BigInt, Union): BigInt
Умножает большие целые числа a и b и делит на большое целое число c без переполнения, применяя указанный метод округления.
Результат a × b / c не должен превышать максимальное значение большого целого.
fraction(a: BigInt, b: BigInt, c: BigInt, round: DOWN|CEILING|FLOOR|HALFUP|HALFEVEN): BigInt
# Параметры
| Параметр | Описание |
|---|---|
a: BigInt | Большое целое a |
b: BigInt | Большое целое b |
c: BigInt | Большое целое c |
round: DOWN|CEILING|FLOOR|HALFUP|HALFEVEN | Одна из переменных округления |
# log(Int, Int, Int, Int, Int, Union): Int
Вычисляет logba.
log(value: Int, vp: Int, base: Int, bp: Int, rp: Int, round: DOWN|CEILING|FLOOR|HALFUP|HALFEVEN): Int
В Ride нет типа данных с плавающей точкой. Поэтому, чтобы вычислить log2,716,25, нужно указать value = 1625, vp = 2 и base = 27, bp = 1.
Еще примеры:
| a | value | vp |
|---|---|---|
| 16,25 | 1625 | 2 |
| 5 | 5 | 0 |
| 5,00 | 500 | 2 |
Если функция log возвращает, например, 2807, а параметр rp = 3, это значит, что результат вычисления равен 2,807; в числе 2807 последние 3 цифры — дробная часть.
# Параметры
| Параметр | Описание |
|---|---|
value: Int | Число a без десятичной точки |
vp: Int | Количество знаков после запятой у a, от 0 до 8 включительно |
base: Int | Основание логарифма b без десятичной точки |
bp: Int | Количество знаков после запятой у b, от 0 до 8 включительно |
rp: Int | Количество знаков после запятой у результата, от 0 до 8 включительно. Задает точность вычисления |
round: DOWN|CEILING|FLOOR|HALFUP|HALFEVEN | Одна из переменных округления |
# Примеры
log2,716,25 = 2,807035421...
log(1625, 2, 27, 1, 2, HALFUP) # Функция возвращает 281, поэтому результат: 2.81
log(1625, 2, 27, 1, 5, HALFUP) # Функция возвращает 280703542, поэтому результат: 2.80704
log(0, 0, 2, 0, 0, HALFUP) # Результат: -Infinity
# log(BigInt, Int, BigInt, Int, Int, Union): BigInt
Вычисляет logba с высокой точностью.
log(value: BigInt, ep: Int, base: BigInt, bp: Int, rp: Int, round: DOWN|CEILING|FLOOR|HALFUP|HALFEVEN): BigInt
В Ride нет типа данных с плавающей точкой. Поэтому, чтобы вычислить log2,716,25, нужно указать value = 1625, vp = 2 и base = 27, bp = 1.
Если функция log возвращает, например, 2807035420964590265, а параметр rp = 18, это значит, что результат вычисления равен 2,807035420964590265; в числе 2807035420964590265 последние 18 цифр — дробная часть.
# Параметры
| Параметр | Описание |
|---|---|
value: BigInt | Число a без десятичной точки |
vp: Int | Количество знаков после запятой у a, от 0 до 18 включительно |
base: BigInt | Основание логарифма b без десятичной точки |
bp: Int | Количество знаков после запятой у b, от 0 до 18 включительно |
rp: Int | Количество знаков после запятой у результата, от 0 до 18 включительно. Задает точность вычисления |
round: DOWN|CEILING|FLOOR|HALFUP|HALFEVEN | Одна из переменных округления |
# median(List[Int]): Int
Возвращает медиану списка целых чисел. Завершается ошибкой, если список пустой.
median(arr: List[Int]): Int
# Параметры
| Параметр | Описание |
|---|---|
arr: List[Int] | Список целых чисел |
# Примеры
median([1, 2, 3]) # Возвращает 2
median([2, 4, 9, 20]) # Возвращает 6
median([-2, -4, -9, -20]) # Возвращает -7
# median(List[BigInt]): BigInt
Возвращает медиану списка больших целых чисел. Завершается ошибкой, если список пустой или содержит более 100 элементов.
median(arr: List[BigInt]): BigInt
# Параметры
| Параметр | Описание |
|---|---|
arr: List[BigInt] | Список больших целых чисел |
# pow(Int, Int, Int, Int, Int, Union): Int
Вычисляет ab.
pow(base: Int, bp: Int, exponent: Int, ep: Int, rp: Int, round: DOWN|CEILING|FLOOR|HALFUP|HALFEVEN): Int
В Ride нет типа данных с плавающей точкой. Поэтому, чтобы вычислить 16,252,7, нужно указать base = 1625, bp = 2 и exponent = 27, ep = 1.
Если функция pow возвращает, например, 18591057, а параметр rp = 4, это значит, что результат вычисления равен 1859,1057; в числе 18591057 последние 4 цифры — дробная часть.
# Параметры
| Параметр | Описание |
|---|---|
base: Int | Число a без десятичной точки |
bp: Int | Количество знаков после запятой у a, от 0 до 8 включительно |
exponent: Int | Показатель степени b без десятичной точки |
ep: Int | Количество знаков после запятой у b, от 0 до 8 включительно |
rp: Int | Количество знаков после запятой у результата, от 0 до 8 включительно. Задает точность вычисления |
round: DOWN|CEILING|FLOOR|HALFUP|HALFEVEN | Одна из переменных округления |
# Примеры
16.252.7 = 1859,1057168...
pow(1625, 2, 27, 1, 2, HALFUP) # function returns 185911, so the result is: 1859.11
pow(1625, 2, 27, 1, 5, HALFUP) # function returns 185910572, so, the result is: 1859.10572
# pow(BigInt, Int, BigInt, Int, Int, Union): BigInt
Вычисляет ab с высокой точностью.
pow(base: BigInt, bp: Int, exponent: BigInt, ep: Int, rp: Int, round: DOWN|CEILING|FLOOR|HALFUP|HALFEVEN): BigInt
В Ride нет типа данных с плавающей точкой. Поэтому, чтобы вычислить 16,252,7, нужно указать base = 1625, bp = 2 и exponent = 27, ep = 1.
Если функция pow возвращает, например, 1859105716849757217692, а параметр rp = 18, это значит, что результат вычисления равен 1859,105716849757217692; в числе 1859105716849757217692 последние 18 цифр — дробная часть.
# Параметры
| Параметр | Описание |
|---|---|
base: BigInt | Число a без десятичной точки |
bp: Int | Количество знаков после запятой у a, от 0 до 18 включительно |
exponent: BigInt | Показатель степени b без десятичной точки |
ep: Int | Количество знаков после запятой у b, от 0 до 18 включительно |
rp: Int | Количество знаков после запятой у результата, от 0 до 18 включительно. Задает точность вычисления |
round: DOWN|CEILING|FLOOR|HALFUP|HALFEVEN | Одна из переменных округления |
# Переменные округления
Переменные округления соответствуют методам округления.
Переменные округления используются только в качестве параметров функций fraction, log, pow.
| Название | Описание |
|---|---|
| DOWN | Округление к меньшему по модулю (к нулю) |
| CEILING | Округление вверх (к положительной бесконечности) |
| FLOOR | Округление вниз (к отрицательной бесконечности) |
| HALFUP | Округление к ближайшему целому, ±0,5 округляется к большему по модулю |
| HALFEVEN | Округление к ближайшему целому, ±0,5 округляется к четному числу |
# Примеры
| Число/Метод округления | DOWN | CEILING | FLOOR | HALFUP | HALFEVEN |
|---|---|---|---|---|---|
| 5.5 | 5 | 6 | 5 | 6 | 6 |
| 2.5 | 2 | 3 | 2 | 3 | 2 |
| 1.6 | 1 | 2 | 1 | 2 | 2 |
| 1.1 | 1 | 2 | 1 | 1 | 1 |
| 1.0 | 1 | 1 | 1 | 1 | 1 |
| -1.0 | -1 | -1 | -1 | -1 | -1 |
| -1.1 | -1 | -1 | -2 | -1 | -1 |
| -1.6 | -1 | -1 | -2 | -2 | -2 |
| -2.5 | -2 | -2 | -3 | -3 | -2 |
| -5.5 | -5 | -5 | -6 | -6 | -6 |