Арифметические выражения в AMPL очень похожи на арифметические выражения других компьютерных языков. Литеральные числа состоят из необязательного знака, предшествующего последовательности цифр, (необязательно) десятичной точки (например, -17 или 2.71828 или +.3). В конце литерала также может быть экспонента, состоящая из буквы d, D, e или E и необязательного знака, за которым следуют цифры (1e30 или 7.66439D-07).
Литералы, параметры и переменные объединяются в выражения с помощью стандартных операций +, -, *, / и ^. Возведение в степень имеет более высокий приоритет, чем умножение и деление. Умножение и деление имеют более высокий приоритет, чем сложение и вычитание. Последовательность операций для этой группы имеет левый приоритет, за исключением возведения в степень, которая группируется справа. Скобки могут быть использованы для изменения приоритета.
Div, mod, less
Арифметические выражения также могут использовать операторы:
- div - возвращает усеченное частное, когда его левый операнд делится на его правый операнд;
- mod - вычисляет остаток;
- less - возвращает свой левый операнд минус правый операнд, если результат положительный. Или ноль в противном случае.
Ниже приведен список арифметических операторов поддерживаемых AMPL:
Принятая запись | Альтернативная запись | Тип операнда | Тип результата |
+ - less | arithmetic | arithmetic | |
sum, prod, min, max | arithmetic | arithmetic | |
* / div mod | arithmetic | arithmetic | |
+ - ( unary ) | arithmetic | arithmetic | |
^ | ** | arithmetic | arithmetic |
card, ord | arithmetic | arithmetic |
Экспонирование являются правоассоциативным. Остальные операторы левоассоциативны.