Spec-Zone.ru › Fish 3.7

math - выполнение математических вычислений

Резюме

math [(-s | --scale) N] [(-b | --base) BASE] EXPRESSION ...

Описание

math выполняет математические вычисления. Он поддерживает простые операции, такие как сложение, вычитание и т. д., а также функции, такие как abs(), sqrt() и ln().

По умолчанию вывод отображается с точностью до 6 десятичных знаков. Чтобы изменить количество десятичных знаков, используйте опцию --scale, включая --scale=0 для целочисленного вывода. Конечные нули всегда будут обрезаны.

Обратите внимание, что расширение параметров происходит до оценки выражений. Это может быть очень полезно для выполнения вычислений, связанных с переменными оболочки или выводом подстановки команд, но это также означает, что скобки (()) и символ звездочки (*) символа подстановки должны быть экранированы или заключены в кавычки. x также можно использовать для обозначения умножения, но после него должен следовать пробел, чтобы отличить его от шестнадцатеричных чисел.

Скобки для функций необязательны - math sin pi печатает 0. Однако запятая связывается с внутренней функцией, поэтому math pow sin 3, 5 является ошибкой, так как она пытается передать sin аргументы 3 и 5. В случае сомнений используйте скобки.

math игнорирует пробелы между аргументами и принимает на вход несколько аргументов (внутри соединенных пробелом), поэтому math 2 +2 и math "2 +    2" работают одинаково. math 2 2 является ошибкой.

Доступны следующие параметры:

-s N или --scale N

Устанавливает масштаб результата. N должно быть целым числом или словом «max» для максимального масштаба. Масштаб 0 приводит к усечению результатов, а не к округлению. Любая дробная часть отбрасывается. Так 3/2 возвращает 1 вместо 2, которое 1.5 обычно бы округлило. Это для совместимости с bc, которая была основой этой команды до fish 3.0.0. Значения масштаба, большие нуля, приводят к тому, что результат округляется по обычным правилам до указанного числа десятичных знаков.

-b BASE или --base BASE

Устанавливает числовую систему, используемую для вывода (math всегда понимает шестнадцатеричные числа как входные данные). В настоящее время он понимает «hex» или «16» для шестнадцатеричных и «octal» или «8» для восьмеричных и подразумевает масштаб 0 (другие масштабы приводят к ошибке), поэтому он усечёт результат до целого числа. В будущем это может измениться. Шестнадцатеричные числа будут выведены с префиксом 0x. Восьмеричные числа будут иметь префикс 0, но не распознаются math как входные данные.

-h или --help

Отображает справку по использованию этой команды.

Значения возврата

Если выражение успешно вычисляется и не переполняется/не недополняется или не возвращает NaN, возвращаемое status значение равно нулю (успех), иначе единице.

Синтаксис

math знает некоторые операторы, константы, функции и может (конечно) читать числа.

Для чисел . всегда является разделителем радикса независимо от локали - 2.5, а не 2,5. Также доступны научная запись (10e5) и шестнадцатеричная запись (0xFF).

math позволяет использовать нижние подчеркивания как визуальные разделители для группирования цифр. Например, вы можете написать 1_000_000, 0x_89_AB_CD_EF и 1.234_567_e89.

Операторы

math знает следующие операторы:

+

для сложения

-

для вычитания

* or x

для умножения. * — это символ подстановки, и его нужно экранировать или заключить в кавычки, x нужно дополнить пробелом или он будет выглядеть как 0x шестнадцатеричная запись.

/

для деления

^

для возведения в степень

%

для вычисления остатка от деления

( or )

для группировки. Их необходимо экранировать или заключить в кавычки, потому что () обозначает подстановку команды.

Все они используются инфиксным способом - 5 + 2, а не + 5 2.

Константы

math знает следующие константы:

e

число Эйлера

pi

π, вы это знаете. Половина от Тaу

tau

равно 2π или числу радиан в окружности

Используйте их без ведущего $ - pi - 3 должно быть примерно 0.

Функции

math поддерживает следующие функции:

abs

модуль, со знаком плюс

acos

арккосинус

asin

арксинус

atan

арктангенс

atan2

арктангенс двух переменных

bitand, bitor and bitxor

выполняет побитовые операции. Эти операции отбросят любые дробные части и интерпретируют остальное как целое число.

Примечание: bitnot и bitnand не существуют. Это связано с тем, что числа в математике не имеют разрядности в смысле бит, и эти операции обязательно учитывают ведущие нули.

Если вам нужно изменить знак определенного числа, вы можете сделать это с помощью исключения с маской, например:

> math --base=hex bitxor 0x0F, 0xFF
0xF0

> math --base=hex bitxor 0x2, 0x3
# Here we mask with 0x3 == 0b111, so our number is 3 bits wide
# Only the 1 bit isn't set.
0x1
ceil

округляет число до ближайшего целого вверх

cos

косинус

cosh

гиперболический косинус

exp

экспоненциальная функция по основанию е

fac

факториал — также известен как x! (x * (x - 1) * (x - 2) * ... * 1)

floor

округляет число до ближайшего целого вниз

ln

логарифм по основанию е

log or log10

логарифм по основанию 10

log2

логарифм по основанию 2

max

возвращает наибольшее из заданных чисел — принимает произвольное количество аргументов (но не менее одного)

min

возвращает наименьшее из заданных чисел — принимает произвольное количество аргументов (но не менее одного)

ncr

функция сочетаний «из n по r» — сколько подмножеств размера r можно взять из n (порядок не важен)

npr

число подмножеств размера r, которые можно взять из множества из n элементов (включая различные порядки)

pow(x,y)

возвращает x в степени y (и может быть записано как x ^ y)

round

округляет до ближайшего целого числа, удаляя от 0

sin

синус

sinh

гиперболический синус

sqrt

квадратный корень — (также может быть записан как x ^ 0.5)

tan

тангенс

tanh

гиперболический тангенс

Все тригонометрические функции используют радианы (масштаб с основанием пи, а не 360°).

Примеры

math 1+1 выводит 2.

math $status - 128 выводит числовой код завершения последней команды минус 128.

math 10 / 6 выводит 1.666667.

math -s0 10.0 / 6.0 выводит 1.

math -s3 10 / 6 выводит 1.666.

math "sin(pi)" выводит 0.

math 5 \* 2 или math "5 * 2" или math 5 "*" 2 все выдают 10.

math 0xFF выводит 255, math 0 x 3 выводит 0 (потому что он вычисляет 0 умножить на 3).

math bitand 0xFE, 0x2e выводит 46.

math "bitor(9,2)" выводит 11.

math --base=hex 192 печатает 0xc0.

math 'ncr(49,6)' выводит 13983816 — это количество возможных вариантов в лотерее «6 из 49».

math max 5,2,3,1 выводит 5.

Примечания по совместимости

Релизы Fish 1.x и 2.x полагались на команду bc для обработки выражений math. Начиная с версии fish 3.0.0, fish использует библиотеку tinyexpr и вычисляет выражение без участия каких-либо внешних команд.

Вам не нужно использовать -- перед выражением, даже если оно начинается со знака минус, который в противном случае может быть интерпретирован как недопустимый параметр. Если вы вставите -- перед выражением, это заставит остановку сканирования параметров, как и для любой другой команды, и оно не будет частью выражения.

© 2005-2009 Axel Liljencrantz, 2009-2023 fish-shell contributors
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/3.7/cmds/math.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API