You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Symbolic expressions can be seen as programs for applying functions to numerics and symbolics. Non-numeric non-symbolics (NNNS, most of the rest of Sage) are usually not handled by symbolic functions, although they often allow the same operations and many of the functions. The manual workaround is to evaluate the expression "on x" and then to substitute x with the respective NNNS. We propose that BuiltinFunction automates this process.
Part of this is already duplicated in rings.arith but the need arises with symbolic functions returning polynomials, e.g. #16813. At the moment BuiltinFunction simply converts the NNNS argument, losing the type information.
Practically, BuiltinFunction should eval with x, try substitution, and throw an error if the substitution leads to unknown methods of the NNNS. I.e.
sage: elliptic_f (x, 1)
log(tan(1/4*pi + 1/2*x))
sage: elliptic_f (polygen(CC), 1)
...
AttributeError: cannot apply function to argument x: argument does not know how to do log
(coming from this exception)
AttributeError: 'Polynomial_generic_dense_field' object has no attribute 'log'
Symbolic expressions can be seen as programs for applying functions to numerics and symbolics. Non-numeric non-symbolics (NNNS, most of the rest of Sage) are usually not handled by symbolic functions, although they often allow the same operations and many of the functions. The manual workaround is to evaluate the expression "on
x
" and then to substitutex
with the respective NNNS. We propose thatBuiltinFunction
automates this process.Part of this is already duplicated in
rings.arith
but the need arises with symbolic functions returning polynomials, e.g. #16813. At the momentBuiltinFunction
simply converts the NNNS argument, losing the type information.Practically,
BuiltinFunction
should eval withx
, try substitution, and throw an error if the substitution leads to unknown methods of the NNNS. I.e.Depends on #20312
CC: @jdemeyer
Component: symbolics
Issue created by migration from https://trac.sagemath.org/ticket/18832
The text was updated successfully, but these errors were encountered: