> load "prog_final2.txt"; Loading "prog_final2.txt" ## It loads the source code of the program ## > ShowIdentifiers(); Bernoulli change3 is_principal poly_convert BernoulliPolynomial2 change4 log_beta poly_convert2 Bernoulli_liste change4_new log_padic poly_convert3 CM_field compare3 log_padic2 rational_reconstruction DedSum compare4 log_padic2_speed rational_reconstruction2 DedSum3 dimension matrice_cusp ray_field DedSum_delta discriminant matrices_distribution ray_field2 DedSum_padic discriminant2 measure_ball ray_group Delta1 distribution measure_ball_fast ray_group2 Delta1_sym distribution2 measure_nu ray_group3 Delta2 endomorphism_order moments_1 sequence_tuple Delta2_sym eval_table moments_1_modify set_representatives Generators2 expansion_table moments_2 smallest_unit Indicator gamma moments_2_modify special_basis Ratp gcd_measure_ball moments_5_6 special_basis2 abs int_log_beta moments_7 special_basis_2 approx_log_padic int_log_beta2 moments_nu special_basis_copremier_3 approx_moebius int_log_beta2_speed moments_shifted2_inverse special_pair calculs_moments int_log_beta_speed moments_shifted3 special_pair_2 calculs_moments_2 integral_1 multiply stabilisateur calculs_moments_3 integral_1_all multiply2 stabilisateur2 calculs_moments_speed integral_2 negative_moment sum1_integral_3 calculs_polynome integral_2_all negative_moments_gamma0_12 sum1_integral_3_speed calculs_polynome2 integrale1_tau negative_moments_gamma0_12_inverse swap_Qp calculs_polynome3 integrale1_tau_speed negative_moments_matrix swap_Qp_foot calculs_polynome4 integrale2_tau negative_moments_matrix2 swap_all_Qp calculs_polynome_speed integrale2_tau_speed negative_moments_matrix3 swap_coeff_poly calculs_polynome_speed_2 inv_matrices_distribution negative_moments_matrix4 table calculs_polynome_speed_3 inverse_moments pBernoulli test cart_prod_sequence inverse_moments2 period valuation change1 inverse_moments3 period_p valuation_padic change2 is_2_principal poly_binomial ## This command shows the various functions which are defined in the program "prog_final2.txt" ## I'm too lazy to explain all of them, just too bad :( > > > > > > > > > > f:=3; ## The variale "f" stands for the conductor of the ray class field that we are aiming at ## The variable "f" has to be equal to "3" for the program to work ## > N_0:=4; ## The variable "N_0" provides some level structure, in particular the real quadratic number fields that ## we care about must have an integral ideal with residue ring isomorphic to Z/4Z. This is the so-called ## Heegner hypothesis. > r:=1; ## "r" is an auxiliary parameter which lies in (Z/fZ)^*, i.e., it is a unit modulo f. ## > v:=[2,-3,1]; ## We have v=[n(1,1),n(2,1),n(4,1)] where the "n(d_0,r)" are coefficients subject to certain conditions. ## These coefficients are the coordinates of "good divisors". > p:=7; ##One has to choose a prime number "p". Usually one chooses a prime numer "p" congruent to "1" modulo "f" ## because one wants the p-units to generate the full ray class field. > S2,S1,delta:=Delta2(p,f,N_0,r,v); ## This function constructs "delta" which is a "good divior" for the set of data (N_0,f,p) ## > discriminant(p,f,N_0,200); 17 41 73 89 97 145 185 termine ## This function list the various admissible discriminants for the pair (N_0,f,p) ## > precision:=10; ## The variable "precision" corresponds to the number of p-adic digits to which our p-adic moments are ## computed > >V1,V2,V3,V4,V5,V6,V7:=calculs_moments_speed(p,N_0,r,v,precision); ## The function "calculs_moments_speed" computes various moments and produces various files and also seven matrices of ##numbers which we label as "V1", "V2", "V3", "V4", "V5", "V6", "V7". > D:=17; ## One has to fix an admissible discrimiant ## > j:=1; ## This variable can be any integer in (Z/fZ)^* ## ## This function computes the minimal polynomial of the p-units "u(r,\tau)" plus various data attached to it ## >poly,vecteur_valuation,vecteur_racines_unite,vecteur_log_unites:=calculs_polynome_speed_3(p,f,N_0,D,delta,j,V1,V2,V3,V4,V5,V6,V7,precision); >no_roots_unity:=0; #This should be set to equal to "0" in order to take into account the roots of unity. # >precision2:=8; #The variable "precision2" should be strictly less than the variable "precision". # > poly:=rational_reconstruction2(p, D, vecteur_valuation, vecteur_racines_unite, vecteur_log_unites, precision2, no_roots_unity, d); ## The variable "d" is the integer "n_d" appearing in the paper. It is a positive divisor of "12" # This function tries to recognize the coefficients of "poly" as elements of Q(\sqrt{D}). Note that in order to # do such a recognition one should set "precision2 < precision". For example if "precision:=10" then one should # set "precision2:=8". #