# [Ride v4 и v3] Математические функции
⚠️ Это документация Стандартной библиотеки версии 4 и 3. Рекомендуем использовать версию 6. Перейти к версии 6
| Название | Описание | Сложность |
|---|---|---|
| fraction | Умножает два целых числа и делит на третье без переполнения | 1 |
| log | Вычисляет логарифм числа по заданному основанию | 100 |
| median | Возвращает медиану списка целых чисел | 20 |
| pow | Возводит число в степень | 100 |
# fraction
Умножает целые числа a и b и делит на целое число c без переполнения.
Результат a × b / c не должен превышать максимальное целочисленное значение 9 223 372 036 854 755 807.
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
# log
Вычисляет logba.
log(value: Int, ep: Int, base: Int, bp: Int, rp: Int, round: UP|DOWN|CEILING|FLOOR|HALFUP|HALFDOWN|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 |
base: Int | Основание логарифма b без десятичной точки |
bp: Int | Количество знаков после запятой у b |
rp: Int | Количество знаков после запятой у результата, от 0 до 8 включительно. Задает точность вычисления |
round: UP|DOWN|CEILING|FLOOR|HALFUP|HALFDOWN|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
# median
Возвращает медиану списка целых чисел. Список не может быть пустым, иначе скрипт завершится с ошибкой.
Функция
medianдобавлена в Стандартной библиотеке версии 4.
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
# pow
Вычисляет ab.
pow(base: Int, bp: Int, exponent: Int, ep: Int, rp: Int, round: UP|DOWN|CEILING|FLOOR|HALFUP|HALFDOWN|HALFEVEN): Int
В Ride нет типа данных с плавающей точкой. Поэтому, чтобы вычислить 16,252,7, нужно указать base = 1625, bp = 2 и exponent = 27, ep = 1.
Если функция pow возвращает, например, 18591057, а параметр rp = 4, это значит, что результат вычисления равен 1859,1057; в числе 18591057 последние 4 цифры — дробная часть.
# Параметры
| Parameter | Description |
|---|---|
base: Int | Число a без десятичной точки |
bp: Int | Количество знаков после запятой у a |
exponent: Int | Показатель степени b без десятичной точки |
ep: Int | Количество знаков после запятой у b |
rp: Int | Количество знаков после запятой у результата, от 0 до 8 включительно. Задает точность вычисления |
round: UP|DOWN|CEILING|FLOOR|HALFUP|HALFDOWN|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
# Переменные округления
Переменные округления соответствуют методам округления.
Переменные округления используются только в качестве параметров функций log и pow.
| Название | Описание |
|---|---|
| CEILING | Округление вверх (к положительной бесконечности) |
| DOWN | Округление к меньшему по модулю (к нулю) |
| FLOOR | Округление вниз (к отрицательной бесконечности) |
| HALFDOWN | Округление к ближайшему целому, ±0,5 округляется к меньшему по модулю |
| HALFEVEN | Округление к ближайшему четному числу |
| HALFUP | Округление к ближайшему целому, ±0,5 округляется к большему по модулю |
| UP | Округление к большему по модулю (от нуля) |
# Примеры
| Число/Метод округления | UP | DOWN | CEILING | FLOOR | HALFUP | HALFDOWN | HALFEVEN |
|---|---|---|---|---|---|---|---|
| 5.5 | 6 | 5 | 6 | 5 | 6 | 5 | 6 |
| 2.5 | 3 | 2 | 3 | 2 | 3 | 2 | 2 |
| 1.6 | 2 | 1 | 2 | 1 | 2 | 2 | 2 |
| 1.1 | 2 | 1 | 2 | 1 | 1 | 1 | 1 |
| 1.0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| -1.0 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
| -1.1 | -2 | -1 | -1 | -2 | -1 | -1 | -1 |
| -1.6 | -2 | -1 | -1 | -2 | -2 | -2 | -2 |
| -2.5 | -3 | -2 | -2 | -3 | -3 | -2 | -2 |
| -5.5 | -6 | -5 | -5 | -6 | -6 | -5 | -6 |