@@ -1052,13 +1052,27 @@ def basic_j_invariant_parameters(self, coeff_indices=None, nonzero=False):
1052
1052
return [(tuple (coeff_indices ), tuple (p )) for p in integral_points
1053
1053
if gcd (p ) == 1 ]
1054
1054
1055
- def basic_j_invariants (self ):
1055
+ def basic_j_invariants (self , nonzero = False ):
1056
1056
r"""
1057
1057
Return a dictionary whose keys are all the basic `j`-invariants
1058
1058
parameters and values are the corresponding `j`-invariant.
1059
1059
1060
1060
See the method :meth:`j_invariant` for definitions.
1061
1061
1062
+ INPUT:
1063
+
1064
+ - ``nonzero`` (boolean, default: ``False``) -- if this flag
1065
+ is set to ``True``, then only the parameters for which the
1066
+ corresponding basic `j`-invariant is nonzero are returned.
1067
+
1068
+ .. WARNING::
1069
+
1070
+ The usage of this method can be computationally
1071
+ expensive e.g. if the rank is greater than four,
1072
+ or if `q` is large. Setting the ``nonzero`` flag to ``True``
1073
+ can speed up the computation considerably if the Drinfeld
1074
+ module generator possesses multiple zero coefficients.
1075
+
1062
1076
EXAMPLES::
1063
1077
1064
1078
sage: Fq = GF(25)
@@ -1069,6 +1083,12 @@ def basic_j_invariants(self):
1069
1083
sage: phi.basic_j_invariants()
1070
1084
{((1,), (26, 1)): z12^10 + 4*z12^9 + 3*z12^8 + 2*z12^7 + 3*z12^6 + z12^5 + z12^3 + 4*z12^2 + z12 + 2}
1071
1085
1086
+ ::
1087
+
1088
+ sage: phi = DrinfeldModule(A, [p_root, 0, 1, z12])
1089
+ sage: phi.basic_j_invariants(nonzero=True)
1090
+ {((2,), (651, 26)): z12^11 + 3*z12^10 + 4*z12^9 + 3*z12^8 + z12^7 + 2*z12^6 + 3*z12^4 + 2*z12^3 + z12^2 + 4*z12}
1091
+
1072
1092
::
1073
1093
1074
1094
sage: A = GF(5)['T']
@@ -1087,7 +1107,7 @@ def basic_j_invariants(self):
1087
1107
T^11 + 3*T^10 + T^9 + 4*T^8 + T^7 + 2*T^6 + 2*T^4 + 3*T^3 + 2*T^2 + 3
1088
1108
"""
1089
1109
return {parameter : self .j_invariant (parameter , check = False )
1090
- for parameter in self .basic_j_invariant_parameters ()}
1110
+ for parameter in self .basic_j_invariant_parameters (nonzero = nonzero )}
1091
1111
1092
1112
def coefficient (self , n ):
1093
1113
r"""
0 commit comments