Чтобы добавить поздний ответ в пул: Набор инструментов таблицы GNUmake содержит множество арифметических функций. Вы можете сложить, вычесть, умножить, разделить, взять модуль в базе 8,10 и 16. Также есть обычные бинарные операции and
, or
, xor
и not
. Числа могут быть около 60 цифр, но вы можете изменить это, если вам нужно больше. Этот код является чистым синтаксисом GNUmake и поэтому переносим между Windows и Unix, в отличие от сценариев оболочки - в случае, если вы хотите сократить число, могут быть более эффективные решения;), конечно.
Вот пример:
include gmtt/gmtt.mk
NUMBER_A := -12392834798732429827442389
NUMBER_B := 984398723982791273498234
$(info $(call add,$(NUMBER_A),$(NUMBER_B)))
$(info $(call sub,$(NUMBER_A),$(NUMBER_B)))
$(info $(call mul,$(NUMBER_A),$(NUMBER_B)))
$(info $(call div,$(NUMBER_A),$(NUMBER_B)))
$(info $(call mod,$(NUMBER_A),$(NUMBER_B)))
Выход:
$ make
-11408436074749638553944155
-13377233522715221100940623
-12199490762401735834920873237276176262117128241026
-12
-580050110938934545463581