необязательный аргумент указателя в программировании функций pari gp

посмотрите на этот пример, пожалуйста

f(a,{e})={ispower(a,3,&e)}

я сделал это, чтобы сохранить результат в e, но когда я вызываю функцию как f (27, t), программа не сохраняет 3 в t, никакой помощи


person Nour-eddine RAHMANI    schedule 20.12.2020    source источник


Ответы (1)


У вас не может быть необязательных аргументов указателя на ваши собственные функции (по крайней мере, не в версии 2.11).

Если вы измените свое определение f, чтобы вернуть значение e по значению:

f(a)={my(e); [ispower(a,3,&e), e]}

Теперь f(27) возвращает массив [1, 3].

В последней версии 2.13 предполагается способ передачи параметров по ссылке: см. https://pari.math.u-bordeaux.fr/archives/pari-announce-20/msg00006.html

Однако синтаксис предполагает, что вам нужно будет определить f(a, ~e) = ispower(a,3,&e), и вам все равно нужно будет использовать его как f(a, ~t) или, возможно, f(a, &t), чтобы получить значение в t. (и, честно говоря, я не уверен, что это сработает - цель улучшения 2.13 - разрешить вызов по ссылке карт и списков, которые в предыдущей версии были скопированы вызовом по значению).

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

person Andrew    schedule 21.12.2020