在sage中,我可以在变量x
中的字段上创建一个PolynomialRing
,如下所示:
A.<x> = PolynomialRing(GF(2))
如doc所示。你知道吗
我这里的问题纯粹是关于语法:什么是A.<x>
?在纯python中,这将是无效的语法(对吧?)?是否有相关的__something__
函数被调用?或者这里发生了什么?所有这些是怎么分配给A
(和x
)的呢?你知道吗
分解可得到:
sage: from dis import dis
sage: def f():
....: A.<x> = PolynomialRing(GF(2))
....: return A
....:
sage: dis(f)
2 0 LOAD_GLOBAL 0 (PolynomialRing)
3 LOAD_GLOBAL 1 (GF)
6 LOAD_GLOBAL 2 (Integer)
9 LOAD_CONST 1 (2)
12 CALL_FUNCTION 1
15 CALL_FUNCTION 1
18 LOAD_CONST 2 ('names')
21 LOAD_CONST 5 (('x',))
24 CALL_FUNCTION 257
27 STORE_FAST 0 (A)
30 LOAD_FAST 0 (A)
33 LOAD_ATTR 3 (_first_ngens)
36 LOAD_CONST 4 (1)
39 CALL_FUNCTION 1
42 UNPACK_SEQUENCE 1
45 STORE_FAST 1 (x)
3 48 LOAD_FAST 0 (A)
51 RETURN_VALUE
括号里是不是叫_first_ngens
?你知道吗
Here is an example of the syntax you need:
为了详细说明,Sage构建了一个preparser,它接受在数学上有意义的无效Python输入,并给出有效的Python。事实上,即使你不这么认为,它也有很多:
因此,该算法采用Sage任意精度
Integer
,而不是Pythonint
这看起来有点疯狂,但使我们能够使用“正常”的数学符号来定义符号函数,而不是以同样的方式
def
Python函数。你知道吗(最后,关于为什么在您最初的示例中使用这种语法,显然历史是这也是Magma的语法。)
相关问题 更多 >
编程相关推荐