椭圆曲线的复数乘法 #
希尔伯特类多项式 是_HCP cm_j_变量 命令(_O) discriminants_with_bounded_class_number cm_j变量和订单 带有类别编号的最大基本光盘 is_cm_j_变量
罗伯特·布拉德肖 约翰·克雷莫纳 威廉·斯坦
-
sage.schemes.elliptic_curves.cm。 订单类别编号 ( D0(数字0) , 小时0 , (f) ) # 返回类编号h(f**2*D0),给定h(D0)=h0。 输入: D0(数字0) (integer)–负基本判别式 小时0 (integer)–(最大)虚二阶鉴别器的类数 D0(数字0) (f) (integer)–正整数
输出: (integer)虚二阶鉴别器的类数 D0*f**2号 算法: 我们使用该公式计算订单的类号 \(\mathcal {O}(O)_ {D} \) 根据 最大阶 \(\mathcal {O}_ {D_0}\) ; 看见 [考克斯1989年] 定理7.24:
\[h(D)=\压裂{h(D_0)f}{[\mathcal {O}(O)_ {D_0}^\次数:\mathcal {O}(O)_ {D} ^\时间]}\prod_{p\,|\,f}\左(1-\左(\frac{D_0}{p}\右)\frac}{1}{p{right)\] 示例: 圣人: #需要sage.libs.pari 圣人: 从 sage.schemes.elliptic_curves.cm软件 进口 订单类别编号 圣人: D0(数字0) = - 4 圣人: 小时 = D0(数字0) . 类_编号 () 圣人: [ 订单类别编号 ( D0(数字0) , 小时 , (f) ) 对于 (f) 在里面 srange(范围) ( 1 , 20 )] [1, 1, 2, 2, 2, 4, 4, 4, 6, 4, 6, 8, 6, 8, 8, 8, 8, 12, 10] 圣人: 全部的 ([ 订单类别编号 ( D0 , 小时 , (f) ) == ( D0(数字0) * (f) ** 2 ) . 类_编号 () 对于 (f) 在里面 srange(范围) ( 1 , 20 )]) 真的
-
sage.schemes.elliptic_curves.cm。 cm_j_变量 ( 证明 = 无 ) # 返回所有CM的列表 \(j) -字段中的不变量 \(K\) . 输入: K –数字字段 证明 –(默认值:proof.number_field())
输出: (列表)–CM列表 \(j) -字段中的不变量 \(K\) . 示例: 圣人: cm_j_变量 ( QQ(QQ) ) [-262537412640768000, -147197952000, -884736000, -12288000, -884736, -32768, -3375, 0, 1728, 8000, 54000, 287496, 16581375] 在虚二次域上,没有超过 \(QQ\) : 圣人: cm_j_变量 ( 象限域 ( - 1 , “我” )) #需要sage.rings.number_field [-262537412640768000, -147197952000, -884736000, -12288000, -884736, -32768, -3375, 0, 1728, 8000, 54000, 287496, 16581375] 在实际的二次型字段上,可能会有更多,例如: 圣人: 伦恩 ( cm_j_变量 ( 象限域 ( 5 , “a” ))) #需要sage.rings.number_field 31 在许多更高阶的数字字段K上,这也适用: 圣人: #需要sage.rings.number_field 圣人: x个 = 一夫多妻制 ( ZZ公司 , “x” ) 圣人: K .< 一 > = 数字字段 ( x个 ^ 三 - 2 ) 圣人: cm_j_变量 ( K ) [-262537412640768000, -147197952000, -884736000, -884736, -32768, 8000, -3375, 16581375, 1728, 287496, 0, 54000, -12288000, 31710790944000*a^2+39953093016000*a+50337742902000] 圣人: K .< 一 > = 数字字段 ( x个 ^ 4 - 2 ) 圣人: 伦恩 ( cm_j_变量 ( K )) 23
-
sage.schemes.elliptic_curves.cm。 cm_j变量和订单 ( 证明 = 无 ) # 返回所有CM的列表 \(j) -字段中的不变量 \(K\) 以及相关订单。 输入: K –数字字段 证明 –(默认值:proof.number_field())
输出: (list)三元组列表 \((D,f,j)\) 哪里 \(j) 是CM \(j) -中的不变量 \(K\) 用二次基本判别式 \(D\) 和导体 \(f) . 示例: 圣人: cm_j变量和订单 ( QQ(QQ) ) [(-3, 3, -12288000), (-3, 2, 54000), (-3, 1, 0), (-4, 2, 287496), (-4, 1, 1728), (-7, 2, 16581375), (-7, 1, -3375), (-8, 1, 8000), (-11, 1, -32768), (-19, 1, -884736), (-43, 1, -884736000), (-67, 1, -147197952000), (-163, 1, -262537412640768000)] 在一个假想的二次场上没有超过 \(QQ\) : 圣人: cm_j变量和订单 ( 象限域 ( - 1 , “我” )) #需要sage.rings.number_field [(-163, 1, -262537412640768000), (-67, 1, -147197952000), (-43, 1, -884736000), (-19, 1, -884736), (-11, 1, -32768), (-8, 1, 8000), (-7, 1, -3375), (-7, 2, 16581375), (-4, 1, 1728), (-4,2287496),(-3,1,0),(-3,254000),(-3,3-1228800)] 在实际的二次域上,可能会有更多: 圣人: v(v) = cm_j变量和订单 ( 象限域 ( 5 , “a” )); 伦恩 ( v(v) ) #需要sage.rings.number_field 31 圣人: [( D类 , (f) ) 对于 D类 , (f) , j个 在里面 v(v) 如果 j个 不 在里面 QQ(QQ) ] #需要sage.rings.number_field [(-235, 1), (-235, 1), (-115, 1), (-115, 1), (-40, 1), (-40, 1), (-35, 1), (-35, 1), (-20, 1), (-20, 1), (-15, 1), (-15, 1), (-15, 2), (-15, 2), (-4, 5), (-4, 5), (-3, 5), (-3, 5)] 在许多更高阶的数字字段K上,这也适用: 圣人: x个 = 一夫多妻制 ( ZZ公司 , “x” ) 圣人: K .< 一 > = 数字字段 ( x个 ^ 三 - 2 ) #需要sage.rings.number_field 圣人: cm_j变量和订单 ( K ) #需要sage.rings.number_field [(-163, 1, -262537412640768000), (-67, 1, -147197952000), (-43, 1, -884736000), (-19, 1, -884736), (-11, 1, -32768), (-8, 1, 8000), (-7, 1, -3375), (-7, 2, 16581375), (-4, 1, 1728), (-4, 2, 287496), (-3, 1, 0), (-3, 2, 54000), (-3, 3, -12288000), (-3,63170790944000*a^2+39953093016000*a+50337742902000)]
-
sage.schemes.elliptic_curves.cm。 命令(_O) ( 证明 = 无 ) # 返回所有对的列表 \((D,f)\) 其中有CM订单 鉴别的 \(D f ^2) 等级号为h \(D\) 基础 区别。 输入: \(小时) –正整数 证明 –(默认值:proof.number_field())
输出: 2元组列表 \((D,f)\) 按字典顺序排序 \((|D|,f)\)
示例: 圣人: 命令(_O) ( 0 ) [] 圣人: v(v) = 命令(_O) ( 1 ); v(v) [(-3, 1), (-3, 2), (-3, 3), (-4, 1), (-4, 2), (-7, 1), (-7, 2), (-8, 1), (-11, 1), (-19, 1), (-43, 1), (-67, 1), (-163, 1)] 圣人: 类型 ( v(v) [ 0 ][ 0 ]), 类型 ( v(v) [ 0 ][ 1 ]) (<…'sage.rings.integrate.integer“>,<…'shage.rings.integer.integer”>) 圣人: #需要sage.libs.pari 圣人: v(v) = 命令(_O) ( 2 ); v(v) [(-3, 4), (-3, 5), (-3, 7), (-4, 3), (-4, 4), (-4, 5), (-7, 4), (-8, 2), (-8,3)、(-11,3)、(-15,1)、(-15,2)、(-20,1)、(-24,1)、(-35,1), (-40, 1), (-51, 1), (-52, 1), (-88, 1), (-91, 1), (-115, 1), (-123, 1), (-148, 1), (-187, 1), (-232, 1), (-235, 1), (-267, 1), (-403, 1), (-427, 1)] 圣人: 伦恩 ( v(v) ) 29 圣人: 设置 ([ 希尔伯特类多项式 ( D类 * (f) ^ 2 ) . 度 () 对于 D类 , (f) 在里面 v(v) ]) {2} 可实现最高100度的任何程度,但速度可能较慢: 圣人: #需要sage.libs.pari 圣人: 命令(_O) ( 三 ) [(-3, 6), (-3, 9), (-11, 2), (-19, 2), (-23, 1), (-23, 2), (-31, 1), (-31, 2), (-43, 2), (-59, 1), (-67, 2), (-83, 1), (-107, 1), (-139, 1), (-163, 2), (-211, 1), (-283, 1), (-307, 1), (-331, 1), (-379, 1), (-499, 1), (-547, 1), (-643, 1), (-883, 1), (-907, 1)] 圣人: 伦恩 ( 命令(_O) ( 4 )) 84
-
sage.schemes.elliptic_curves.cm。 discriminants_with_bounded_class_number ( hmax公司 , B类 = 无 , 证明 = 无 ) # 返回带有关键字类号的字典 \(h\le hmax\) 并重视 所有配对的列表 \((D_0,f)\) ,使用 \(D_0<0) 一个基本的判别词 那个 \(D=D_0f^2\) 具有类编号 \(小时) .如果可选绑定 \(B\) 给出了, 只返回那些带有 \(|D|\le B\) . 输入: hmax公司 –整数 \(B\) –integer或None; 如果无,则返回所有对 证明 –此代码调用PARI函数 pari:qfb类号 ,所以它 可能会给出错误的答案 证明``==``假 (尽管仅适用于 判别式大于 \(2\cdot10^{10}\) ). 默认值为 的当前值 证明编号字段() .
输出: 词典
注意 万一 \(B\) 没有给出,那么 hmax公司 必须不超过100; 我们 使用中的表格 [沃特金斯2004年] 和 【Klaise 2012】 计算 一 \(B\) 它囊括了所有 \(小时) 高达 \(hmax\) . 示例: 圣人: #需要sage.libs.pari 圣人: 从 sage.schemes.elliptic_curves.cm公司 进口 带边界类编号的判别符 圣人: v(v) = discriminants_with_bounded_class_number ( 三 ) 圣人: 已排序 ( v(v) ) [1, 2, 3] 圣人: v(v) [ 1 ] [(-3, 1), (-3, 2), (-3, 3), (-4, 1), (-4, 2), (-7, 1), (-7, 2), (-8, 1), (-11, 1), (-19, 1), (-43, 1), (-67, 1), (-163, 1)] 圣人: v(v) [ 2 ] [(-3, 4), (-3, 5), (-3, 7), (-4, 3), (-4, 4), (-4, 5), (-7, 4), (-8, 2), (-8, 3), (-11, 3), (-15, 1), (-15, 2), (-20, 1), (-24, 1), (-35, 1), (-40, 1), (-51, 1), (-52, 1), (-88, 1), (-91, 1), (-115, 1), (-123, 1), (-148, 1), (-187, 1), (-232, 1), (-235, 1), (-267, 1), (-403, 1), (-427, 1)] 圣人: v(v) [ 三 ] [(-3, 6), (-3, 9), (-11, 2), (-19, 2), (-23, 1), (-23, 2), (-31, 1), (-31, 2), (-43, 2), (-59, 1), (-67, 2), (-83, 1), (-107, 1), (-139, 1), (-163, 2), (-211, 1), (-283, 1), (-307, 1), (-331, 1), (-379, 1), (-499, 1), (-547, 1), (-643, 1), (-883, 1), (-907, 1)] 圣人: v(v) = discriminants_with_bounded_class_number ( 8 , 证明 = False(错误) ) 圣人: 已排序 ( 伦恩 ( v(v) [ 小时 ]) 对于 小时 在里面 v(v) ) [13, 25, 29, 29, 38, 84, 101, 208] 查找最多50个判别式的所有类号: 圣人: 圣人 . 计划 . 椭圆曲线 . 厘米 . discriminants_with_bounded_class_number ( hmax公司 = 5 , B类 = 50 ) {1: [(-3, 1), (-3, 2), (-3, 3), (-4, 1), (-4, 2), (-7, 1), (-7, 2), (-8, 1), (-11, 1), (-19, 1), (-43, 1)], 2: [(-3, 4), (-4, 3), (-8, 2), (-15, 1), (-20, 1), (-24, 1), (-35, 1), (-40, 1)], 3: [(-11, 2), (-23, 1), (-31, 1)], 4: [(-39, 1)], 5: [(-47, 1)]}
-
sage.schemes.elliptic_curves.cm。 希尔伯特类多项式 ( 算法 = 无 ) # 返回判别式的Hilbert类多项式 \(D\) . 输入: D类 (int)–模4为0或1的负整数。 算法 (字符串,默认为“无”)。
输出: (整数多项式)的Hilbert类多项式 鉴别的 \(D\) . 算法: 如果 算法 =“arb”(默认):使用arb的实现,它使用复杂的区间算术。 如果 算法 =“sage”:对根使用复杂近似。 如果 算法 =“magma”:调用适当的magma函数(如果可用)。
作者: Sage最初由Eduardo Ocampo Alvarez和 安德烈·蒂莫菲耶夫 John Cremona修正的Sage实现(使用Andreas Enge修正的精度界限) David Kohel实施岩浆
示例: 圣人: #需要sage.libs.flint 圣人: 希尔伯特类多项式 ( - 4 ) x-1728年 圣人: 希尔伯特类多项式 ( - 7 ) 电话+3375 圣人: 希尔伯特类多项式 ( - 23 ) x^3+3491750*x^2-5151296875*x+12771880859375 圣人: 希尔伯特类多项式 ( - 37 * 4 ) x ^2-39660183801072000*x-7898242515936467904000000 圣人: 希尔伯特类多项式 ( - 37 * 4 , 算法 = “岩浆” ) #可选-岩浆 x ^2-39660183801072000*x-7898242515936467904000000 圣人: 希尔伯特类多项式 ( - 163 ) 传真:+262537412640768000 圣人: 希尔伯特类多项式 ( - 163 , 算法 = “圣人” ) 传真:+262537412640768000 圣人: 希尔伯特类多项式 ( - 163 , 算法 = “岩浆” ) #可选-岩浆 传真:+262537412640768000
-
sage.schemes.elliptic_curves.cm。 是_HCP ( (f) , 可简化的支票 = 真的 ) # 确定多项式是否为希尔伯特类多项式。 输入: (f) –中的多项式 \(\ZZ[X]\) . 可简化的支票 (布尔值,默认值 真的 )–如果 真的 ,检查一下 (f) 是一个monic的不可约整数 多项式的。
输出: (整数)–两者之一 \(D\) 如果 (f) 是希尔伯特多项式 \(H_D\) 用于判别 \(D\) ,或 \(0\) 如果不是HCP。 算法: 克雷莫纳和萨瑟兰:算法2 【CreSuth2023】 . 示例: 即使在很大程度上,这也很快。 我们测试了最大的 类别编号100的判别式,HCP具有其系数 具有数千位数字: 圣人: 从 sage.schemes.elliptic_curves.cm软件 进口 是_HCP 圣人: D类 = - 1856563 圣人: D类 . 类_编号 () #需要sage.libs.pari 100 圣人: #需要sage.libs.flint 圣人: H(H) = 希尔伯特类多项式 ( D类 ) 圣人: H(H) . 度 () 100 圣人: 最大值 ( H(H) ) . 非吉特 () 2774 圣人: 是_HCP ( H(H) ) -1856563 测试非HCP的多项式速度更快: 圣人: 是_HCP ( H(H) + 1 ) #需要sage.libs.flint 0
-
sage.schemes.elliptic_curves.cm。 is_cm_j_变量 ( 算法 = “克雷莫纳·萨瑟兰” , 方法 = 无 ) # 返回是否为CM \(j) -不变量和CM鉴别符(如果是)。 输入: j个 –数字字段的元素 \(K\) 算法 (字符串,默认为“CremonaSutherland”)–算法 使用了“CremonaSutherland”(默认,速度快得多 除非常小的程度外,所有)、“详尽”或“减少” 方法 (字符串)–已弃用的名称 算法
输出: 一对(bool,(d,f)),如果 \(j) 不是 CM j变量或(真,(d,f)),如果 \(j) 是 \(j) -的不变量 判别式的虚二次阶 \(D=df^2) 哪里 \(d\) 是 相关的基本判别式和 \(f) 索引。 算法: 使用的默认算法是测试最小值 多项式 j个 是Hilbert CLass Polynomail,使用 is_HCP() 实现的算法2 【CreSuth2023】 通过 克雷莫纳和萨瑟兰。 有两种较旧的算法可用,这两种算法都要慢得多 除了非常小的度数。 “穷尽”方法利用了 类数最多为100的所有订单,因此将引发 错误,如果 \(j) 是大于次的代数整数 这个。 方法“reduction”在数字上构造一条椭圆曲线 领域 \(\QQ(j)\) 并在几个 一阶素数。 示例: 圣人: 从 sage.schemes.elliptic_curves.cm软件 进口 is_cm_j_变量 圣人: is_cm_j_变量 ( 0 ) (正确,(-3,1)) 圣人: is_cm_j_变量 ( 8000 ) (正确,(-8,1)) 圣人: #需要sage.rings.number_field 圣人: K .< 一 > = 象限域 ( 5 ) 圣人: is_cm_j_变量 ( 282880 * 一 + 632000 ) (正确,(-20,1)) 圣人: x个 = 一夫多妻制 ( ZZ公司 , “x” ) 圣人: K .< 一 > = 数字字段 ( x个 ^ 三 - 2 ) 圣人: is_cm_j_变量 ( 31710790944000 * 一 ^ 2 + 39953093016000 * 一 + 50337742902000 ) (正确,(-3,6)) 一个很大程度上的例子。 这只能使用默认算法: 圣人: 从 sage.schemes.elliptic_curves.cm软件 进口 is_cm_j_变量 圣人: D类 = - 1856563 圣人: H(H) = 希尔伯特类多项式 ( D类 ) #需要sage.libs.flint 圣人: H(H) . 度 () #需要sage.libs.flint 100 圣人: K .< j个 > = 数字字段 ( H(H) ) #需要sage.libs.flint sage.rings.number_field 圣人: is_cm_j_变量 ( j个 ) #需要sage.libs.flint sage.rings.number_field (正确,(-1856563,1))
-
sage.schemes.elliptic_curves.cm。 带有类编号的最大光盘 ( 小时 ) # 使用返回任何负判别式的最大绝对值 类别编号 \(小时) ,和基本负数 使用该类编号进行判别。 这是众所周知的 (无条件) \(小时) Mark Watkins的工作 [沃特金斯2004年] 对于基本判别法,扩展到所有 类数判别式 \(小时100) 作者:Klaise 【Klaise 2012】 . 注意 负判别式的类数 \(D\) 是 与唯一虚二阶的类数相同 判别式的 \(D\) ,因此此函数给出此类 每个类别编号的顺序 \(h\le100\) .易于扩展 这是以GRH为条件的较大类数,但很多 很难拒绝无条件的结果。 输入: \(小时) –整数
示例: 圣人: 从 sage.schemes.elliptic_curves.cm软件 进口 带有类编号的最大光盘 圣人: 带有类编号的最大光盘 ( 0 ) (0, 0) 圣人: 带有类编号的最大光盘 ( 1 ) (163, 13) 圣人: 带有类编号的最大光盘 ( 2 ) (427,29) 圣人: 最大_类别_数量 ( 10 ) (13843, 123) 圣人: 带有类编号的最大光盘 ( 100 ) (1856563, 2311) 圣人: 带有类编号的最大光盘 ( 101 ) 追踪(最近一次通话): ... NotImplementedError:类号101的最大鉴别符不可用 对于大多数人 \(h\le100\) ,最大的基本判别式 类别编号 \(小时) 也是最大的判别词,但这不是 一些人的情况 \(小时) : 圣人: 从 sage.schemes.elliptic_curves.cm软件 进口 带有类编号的最大光盘 , 带有类别编号的最大基本光盘 圣人: [ 小时 对于 小时 在里面 范围 ( 1 , 101 ) 如果 带有类编号的最大光盘 ( 小时 )[ 0 ] != 带有类别编号的最大基本光盘 ( 小时 )[ 0 ]] [6, 8, 12, 16, 20, 30, 40, 42, 52, 70] 圣人: 带有类别编号的最大基本光盘 ( 6 ) (3763, 51) 圣人: 带有类编号的最大光盘 ( 6 ) (4075, 101)
-
sage.schemes.elliptic_curves.cm。 带有类别编号的最大基本光盘 ( 小时 ) # 返回任何基本负判别式的最大绝对值 类别编号 \(小时) ,和基本否定判别数 那个班级号码。 这是已知的(无条件的) \(小时) 高达100, 马克·沃特金斯的作品( [沃特金斯2004年] ). 注意 基本否定判别式的类数 \(D\) 是 与虚二次域的类数相同 \(\QQ(\sqrt{D})\) ,因此此函数给出此类 每个类编号的字段 \(小时100) .易于扩展 这是以GRH为条件的较大类数,但很多 很难获得无条件的结果。 输入: \(小时) –整数
示例: 圣人: 从 sage.schemes.elliptic_curves.cm软件 进口 带有类别编号的最大基本光盘 圣人: 带有类别编号的最大基本光盘 ( 0 ) (0, 0) 圣人: 带有类别编号的最大基本光盘 ( 1 ) (163, 9) 圣人: 带有类别编号的最大基本光盘 ( 2 ) (427, 18) 圣人: 带有类别编号的最大基本光盘 ( 10 ) (13843, 87) 圣人: 带有类别编号的最大基本光盘 ( 100 ) (1856563, 1736) 圣人: 最大_基础_disc_with_class_number ( 101 ) 追踪(最近一次通话): ... NotImplementedError:类号101的最大基本鉴别符不可用