# Dirichlet and Hecke Characters

- [Introduction](introduction.md)

  - [Creation Functions](introduction.md#creation-functions)

    - [`DirichletGroup(I): RngOrdIdl → GrpDrchNF`](introduction.md#function-dirichletgroup-rngordidl)

    - [`DirichletGroup(I, oo): RngOrdIdl, SeqEnum → GrpDrchNF`](introduction.md#function-dirichletgroup-rngordidl-seqenum)

    - [`HeckeCharacterGroup(I): RngOrdIdl → GrpHecke`](introduction.md#function-heckecharactergroup-rngordidl)

    - [`HeckeCharacterGroup(I, oo): RngOrdIdl, SeqEnum → GrpHecke`](introduction.md#function-heckecharactergroup-rngordidl-seqenum)

    - [`UnitTrivialSubgroup(G): GrpDrchNF → GrpDrchNF`](introduction.md#function-unittrivialsubgroup-grpdrchnf)

    - [`TotallyUnitTrivialSubgroup(G): GrpDrchNF → GrpDrchNF`](introduction.md#function-totallyunittrivialsubgroup-grpdrchnf)

    - [`HilbertCharacterSubgroup(G): GrpHecke → GrpHecke`](introduction.md#function-hilbertcharactersubgroup-grphecke)

  - [Functions on Groups and Group Elements](introduction.md#functions-on-groups-and-group-elements)

    - [`Modulus(G): GrpDrchNF → RngOrdIdl, SeqEnum`](introduction.md#function-modulus-grpdrchnf)

    - [`Modulus(G): GrpHecke → RngOrdIdl, SeqEnum`](introduction.md#function-modulus-grphecke)

    - [`Modulus(chi): GrpDrchNFElt → RngOrdIdl, SeqEnum`](introduction.md#function-modulus-grpdrchnfelt)

    - [`Modulus(chi): GrpHeckeElt → RngOrdIdl, SeqEnum`](introduction.md#function-modulus-grpheckeelt)

    - [`Order(chi): GrpDrchNFElt → RngIntElt`](introduction.md#function-order-grpdrchnfelt)

    - [`Order(psi): GrpHeckeElt → RngIntElt`](introduction.md#function-order-grpheckeelt)

    - [`Random(G): GrpDrchNF → GrpDrchNFElt`](introduction.md#function-random-grpdrchnf)

    - [`Random(G): GrpHecke → GrpHeckeElt`](introduction.md#function-random-grphecke)

    - [`Domain(G): GrpDrchNF → FldNum`](introduction.md#function-domain-grpdrchnf)

    - [`Domain(G): GrpDrchNFElt → FldNum`](introduction.md#function-domain-grpdrchnfelt)

    - [`Domain(G): GrpHecke → PowIdl`](introduction.md#function-domain-grphecke)

    - [`Domain(G): GrpHeckeElt → PowIdl`](introduction.md#function-domain-grpheckeelt)

    - [`Decomposition(chi): GrpDrchNFElt → List`](introduction.md#function-decomposition-grpdrchnfelt)

    - [`Components(chi): GrpDrchNFElt → Assoc`](introduction.md#function-components-grpdrchnfelt)

    - [`Components(psi): GrpHeckeElt → Assoc`](introduction.md#function-components-grpheckeelt)

    - [`Component(chi, P): GrpDrchNFElt, RngOrdIdl → GrpDrchNFEl`](introduction.md#function-component-grpdrchnfelt-rngordidl)

    - [`Component(psi, P): GrpHeckeElt, RngOrdIdl → GrpDrchNFElt`](introduction.md#function-component-grpheckeelt-rngordidl)

    - [`Component(chi, oo): GrpDrchNFElt, RngIntElt → GrpDrchNFEl`](introduction.md#function-component-grpdrchnfelt-rngintelt)

    - [`Component(psi, oo): GrpHeckeElt, RngIntElt → GrpDrchNFElt`](introduction.md#function-component-grpheckeelt-rngintelt)

    - [`Component(chi, P): GrpDrchNFElt, PlcNumElt → GrpDrchNFEl`](introduction.md#function-component-grpdrchnfelt-plcnumelt)

    - [`Component(psi, P): GrpHeckeElt, PlcNumElt → GrpDrchNFElt`](introduction.md#function-component-grpheckeelt-plcnumelt)

    - [`Conductor(chi): GrpDrchNFElt → RngOrdIdl, SeqEnum`](introduction.md#function-conductor-grpdrchnfelt)

    - [`Conductor(psi): GrpHeckeElt → RngOrdIdl, SeqEnum`](introduction.md#function-conductor-grpheckeelt)

    - [`AssociatedPrimitiveCharacter(chi): GrpDrchNFElt → GrpDrchNFElt`](introduction.md#function-associatedprimitivecharacter-grpdrchnfelt)

    - [`AssociatedPrimitiveCharacter(psi): GrpHeckeElt → GrpHeckeElt`](introduction.md#function-associatedprimitivecharacter-grpheckeelt)

    - [`Restrict(chi, D): GrpDrchNFElt, GrpDrchNF → GrpDrchNFElt`](introduction.md#function-restrict-grpdrchnfelt-grpdrchnf)

    - [`Restrict(psi, H): GrpHeckeElt, GrpHecke → GrpHeckeElt`](introduction.md#function-restrict-grpheckeelt-grphecke)

    - [`Restrict(chi, I): GrpDrchNFElt, RngOrdIdl → GrpDrchNFElt`](introduction.md#function-restrict-grpdrchnfelt-rngordidl)

    - [`Restrict(psi, I): GrpHeckeElt, RngOrdIdl → GrpHeckeElt`](introduction.md#function-restrict-grpheckeelt-rngordidl)

    - [`Restrict(chi, I, oo): GrpDrchNFElt, RngOrdIdl, SeqEnum → GrpDrchNFElt`](introduction.md#function-restrict-grpdrchnfelt-rngordidl-seqenum)

    - [`Restrict(psi, I, oo): GrpHeckeElt, RngOrdIdl, SeqEnum → GrpHeckeElt`](introduction.md#function-restrict-grpheckeelt-rngordidl-seqenum)

    - [`Restrict(G, D): GrpDrchNF, GrpDrchNF → GrpDrchNF`](introduction.md#function-restrict-grpdrchnf-grpdrchnf)

    - [`Restrict(G, H): GrpHecke, GrpHecke → GrpHecke`](introduction.md#function-restrict-grphecke-grphecke)

    - [`Restrict(G, I): GrpDrchNF, RngOrdIdl → GrpDrchNF`](introduction.md#function-restrict-grpdrchnf-rngordidl)

    - [`Restrict(G, I): GrpHecke, RngOrdIdl → GrpHecke`](introduction.md#function-restrict-grphecke-rngordidl)

    - [`Restrict(G, I, oo): GrpDrchNF, RngOrdIdl, SeqEnum → GrpDrchNF`](introduction.md#function-restrict-grpdrchnf-rngordidl-seqenum)

    - [`Restrict(G, I, oo): GrpHecke, RngOrdIdl, SeqEnum → GrpHecke`](introduction.md#function-restrict-grphecke-rngordidl-seqenum)

    - [`TargetRestriction(G, C): GrpDrchNF, FldCyc → GrpDrchNF`](introduction.md#function-targetrestriction-grpdrchnf-fldcyc)

    - [`TargetRestriction(H, C): GrpHecke, FldCyc → GrpDrchNF`](introduction.md#function-targetrestriction-grphecke-fldcyc)

    - [`SetTargetRing(~ chi, e): GrpDrchNFElt, RngElt`](introduction.md#function-settargetring-grpdrchnfelt-rngelt-ref)

    - [`SetTargetRing(~ psi, e): GrpHeckeElt, RngElt`](introduction.md#function-settargetring-grpheckeelt-rngelt-ref)

    - [`Extend(chi, D): GrpDrchNFElt, GrpDrchNF → GrpDrchNFElt`](introduction.md#function-extend-grpdrchnfelt-grpdrchnf)

    - [`Extend(psi, H): GrpHeckeElt, GrpHecke → GrpHeckeElt`](introduction.md#function-extend-grpheckeelt-grphecke)

    - [`Extend(chi, I): GrpDrchNFElt, RngOrdIdl → GrpDrchNFElt`](introduction.md#function-extend-grpdrchnfelt-rngordidl)

    - [`Extend(psi, I): GrpHeckeElt, RngOrdIdl → GrpHeckeElt`](introduction.md#function-extend-grpheckeelt-rngordidl)

    - [`Extend(chi, I, oo): GrpDrchNFElt, RngOrdIdl, SeqEnum → GrpDrchNFElt`](introduction.md#function-extend-grpdrchnfelt-rngordidl-seqenum)

    - [`Extend(psi, I, oo): GrpHeckeElt, RngOrdIdl, SeqEnum → GrpHeckeElt`](introduction.md#function-extend-grpheckeelt-rngordidl-seqenum)

    - [`Extend(G, D): GrpDrchNF, GrpDrchNF → GrpDrchNF`](introduction.md#function-extend-grpdrchnf-grpdrchnf)

    - [`Extend(G, H): GrpHecke, GrpHecke → GrpHecke`](introduction.md#function-extend-grphecke-grphecke)

    - [`Extend(G, I): GrpDrchNF, RngOrdIdl → GrpDrchNF`](introduction.md#function-extend-grpdrchnf-rngordidl)

    - [`Extend(G, I): GrpHecke, RngOrdIdl → GrpHecke`](introduction.md#function-extend-grphecke-rngordidl)

    - [`Extend(G, I, oo): GrpDrchNF, RngOrdIdl, SeqEnum → GrpDrchNF`](introduction.md#function-extend-grpdrchnf-rngordidl-seqenum)

    - [`Extend(G, I, oo): GrpHecke, RngOrdIdl, SeqEnum → GrpHecke`](introduction.md#function-extend-grphecke-rngordidl-seqenum)

  - [Predicates on Group Elements](introduction.md#predicates-on-group-elements)

    - [`IsTrivial(chi): GrpDrchNFElt → BoolElt`](introduction.md#function-istrivial-grpdrchnfelt)

    - [`IsTrivial(psi): GrpHeckeElt → BoolElt`](introduction.md#function-istrivial-grpheckeelt)

    - [`IsTrivialOnUnits(chi): GrpDrchNFElt → BoolElt`](introduction.md#function-istrivialonunits-grpdrchnfelt)

    - [`IsOdd(chi): GrpDrchNFElt → BoolElt`](introduction.md#function-isodd-grpdrchnfelt)

    - [`IsEven(chi): GrpDrchNFElt → BoolElt`](introduction.md#function-iseven-grpdrchnfelt)

    - [`IsTotallyEven(chi): GrpDrchNFElt → BoolElt`](introduction.md#function-istotallyeven-grpdrchnfelt)

    - [`IsPrimitive(chi): GrpDrchNFElt → BoolElt`](introduction.md#function-isprimitive-grpdrchnfelt)

    - [`IsPrimitive(psi): GrpHeckeElt → BoolElt`](introduction.md#function-isprimitive-grpheckeelt)

  - [Passing between Dirichlet and Hecke Characters](introduction.md#passing-between-dirichlet-and-hecke-characters)

    - [`HeckeLift(chi): GrpDrchNFElt → GrpHeckeElt, GrpHecke`](introduction.md#function-heckelift-grpdrchnfelt)

    - [`DirichletRestriction(psi): GrpHeckeElt → GrpDrchNFElt`](introduction.md#function-dirichletrestriction-grpheckeelt)

    - [`NormInduction(K, chi): FldNum, GrpDrchElt → GrpHeckeElt`](introduction.md#function-norminduction-fldnum-grpdrchelt)

    - [`QuadraticCharacter(e): FldNumElt → GrpHeckeElt`](introduction.md#function-quadraticcharacter-fldnumelt)

    - [`Example: dirichlet Q`](introduction.md#example-ex-853a78)

    - [`Example: Simple Char Ops`](introduction.md#example-ex-b4977b)

    - [`DirichletCharacter(I, B): RngOrdIdl, Tup → GrpDrchNFElt, GrpDrchNF`](introduction.md#function-dirichletcharacter-rngordidl-tup)

    - [`DirichletCharacter(I, oo, B): RngOrdIdl, SeqEnum, Tup → GrpDrchNFElt, GrpDrchNF`](introduction.md#function-dirichletcharacter-rngordidl-seqenum-tup)

    - [`DirichletCharacter(G, B): GrpDrchNF, Tup → GrpDrchNFElt, GrpDrchNF`](introduction.md#function-dirichletcharacter-grpdrchnf-tup)

    - [`DirichletCharacter(I, L): RngOrdIdl, List → GrpDrchNFElt, GrpDrchNF`](introduction.md#function-dirichletcharacter-rngordidl-list)

    - [`DirichletCharacter(I, oo, L): RngOrdIdl, SeqEnum, List → GrpDrchNFElt, GrpDrchNF`](introduction.md#function-dirichletcharacter-rngordidl-seqenum-list)

    - [`DirichletCharacter(G, L): GrpDrchNF, List → GrpDrchNFElt, GrpDrchNF`](introduction.md#function-dirichletcharacter-grpdrchnf-list)

    - [`HeckeCharacter(I, B): RngOrdIdl, Tup → GrpHeckeElt`](introduction.md#function-heckecharacter-rngordidl-tup)

    - [`HeckeCharacter(I, oo, B): RngOrdIdl, SeqEnum, Tup → GrpHeckeElt`](introduction.md#function-heckecharacter-rngordidl-seqenum-tup)

    - [`HeckeCharacter(G, B): GrpHecke, Tup → GrpHeckeElt`](introduction.md#function-heckecharacter-grphecke-tup)

    - [`HeckeCharacter(I, L): RngOrdIdl, List → GrpHeckeElt`](introduction.md#function-heckecharacter-rngordidl-list)

    - [`HeckeCharacter(I, oo, L): RngOrdIdl, SeqEnum, List → GrpHeckeElt`](introduction.md#function-heckecharacter-rngordidl-seqenum-list)

    - [`HeckeCharacter(G, L): GrpHecke, List → GrpHeckeElt`](introduction.md#function-heckecharacter-grphecke-list)

    - [`Example: Dirichlet Hecke`](introduction.md#example-ex-80bd7f)

    - [`CentralCharacter(chi): GrpDrchNFElt → GrpDrchNFElt`](introduction.md#function-centralcharacter-grpdrchnfelt)

    - [`CentralCharacter(psi): GrpHeckeElt → GrpDrchNFElt`](introduction.md#function-centralcharacter-grpheckeelt)

    - [`Example: Central Chars`](introduction.md#example-ex-3ed3f9)

    - [`DirichletCharacterOverNF(chi): GrpDrchElt → GrpDrchNFElt`](introduction.md#function-dirichletcharacterovernf-grpdrchelt)

    - [`DirichletCharacterOverQ(chi): GrpDrchNFElt → GrpDrchElt`](introduction.md#function-dirichletcharacteroverq-grpdrchnfelt)

    - [`Example: Dirich Chars Over Nf And Q`](introduction.md#example-ex-5e238b)

  - [L-functions of Hecke Characters](introduction.md#l-functions-of-hecke-characters)

    - [`Example: Lfunc Hecke`](introduction.md#example-ex-d505ea)

  - [Hecke Grössencharacters and their L-functions](introduction.md#hecke-grossencharacters-and-their-l-functions)

    - [`Grossencharacter(psi, chi, T): GrpHeckeElt, GrpDrchNFElt, SeqEnum → GrossenChar`](introduction.md#function-grossencharacter-grpheckeelt-grpdrchnfelt-seqenum)

    - [`RawEval(I, GR): RngOrdFracIdl, GrossenChar → FldNumElt, FldCycElt, FldCycElt`](introduction.md#function-raweval-rngordfracidl-grossenchar)

    - [`Grossencharacter(psi, T): GrpHeckeElt, SeqEnum → GrossenChar`](introduction.md#function-grossencharacter-grpheckeelt-seqenum)

    - [`Conductor(GR): GrossenChar → RngOrdIdl, SeqEnum`](introduction.md#function-conductor-grossenchar)

    - [`Modulus(GR): GrossenChar → RngOrdIdl, SeqEnum`](introduction.md#function-modulus-grossenchar)

    - [`IsPrimitive(GR): GrossenChar → BoolElt`](introduction.md#function-isprimitive-grossenchar)

    - [`AssociatedPrimitiveGrossencharacter(psi): GrossenChar → GrossenChar`](introduction.md#function-associatedprimitivegrossencharacter-grossenchar)

    - [`Components(GR): GrossenChar → Assoc`](introduction.md#function-components-grossenchar)

    - [`Component(GR, P): GrossenChar, RngOrdIdl → GrpDrchNFEl`](introduction.md#function-component-grossenchar-rngordidl)

    - [`Component(GR, oo): GrossenChar, RngIntElt → GrpDrchNFEl`](introduction.md#function-component-grossenchar-rngintelt)

    - [`Component(GR, P): GrossenChar, PlcNumElt → GrpDrchNFEl`](introduction.md#function-component-grossenchar-plcnumelt)

    - [`Extend(GR, I): GrossenChar, RngOrdIdl → GrossenChar`](introduction.md#function-extend-grossenchar-rngordidl)

    - [`Restrict(GR, I): GrossenChar, RngOrdIdl → GrossenChar`](introduction.md#function-restrict-grossenchar-rngordidl)

    - [`CentralCharacter(GR): GrossenChar → GrpDrchNFElt`](introduction.md#function-centralcharacter-grossenchar)

    - [`GrossenTwist(GR, D): GrossenChar, List → GrossenChar, GrpHecke`](introduction.md#function-grossentwist-grossenchar-list)

    - [`TateTwist(GR, n): GrossenChar, RngIntElt → GrossenChar`](introduction.md#function-tatetwist-grossenchar-rngintelt)

    - [`TateTwist(psi, n): GrpHeckeElt, RngIntElt → GrossenChar`](introduction.md#function-tatetwist-grpheckeelt-rngintelt)

    - [`Example: Grossenchar Gaussian`](introduction.md#example-ex-42864c)

    - [`Example: Grossenchar Sqrt23`](introduction.md#example-ex-b4291f)

    - [`Example: Grossenchar Symcubed Sqrt59`](introduction.md#example-ex-7d182f)

    - [`Example: Grossen Char Cyclo5`](introduction.md#example-ex-38ad25)

    - [`Example: Grossenchar Embedding`](introduction.md#example-ex-a39eeb)

    - [`Example: Grossen Large Gamma`](introduction.md#example-ex-03fd6d)

    - [`Example: Grossen Cyclo8`](introduction.md#example-ex-105c44)

    - [`Example: Hypgeom Mot`](introduction.md#example-ex-d12cc1)

  - [Local Root Numbers](introduction.md#local-root-numbers)

    - [`RootNumber(GR, P): GrossenChar, RngOrgIdl → FldComElt`](introduction.md#function-rootnumber-grossenchar-rngorgidl)

    - [`RootNumber(psi, P): GrpHeckeElt, RngOrgIdl → FldComElt`](introduction.md#function-rootnumber-grpheckeelt-rngorgidl)

    - [`RootNumber(GR, P): GrossenChar, PlcNumElt → FldComElt`](introduction.md#function-rootnumber-grossenchar-plcnumelt)

    - [`RootNumber(psi, P): GrpHeckeElt, PlcNumElt → FldComElt`](introduction.md#function-rootnumber-grpheckeelt-plcnumelt)

    - [`RootNumber(GR, p): GrossenChar, RngIntElt → FldComElt`](introduction.md#function-rootnumber-grossenchar-rngintelt)

    - [`RootNumber(psi, p): GrpHeckeElt, RngIntElt → FldComElt`](introduction.md#function-rootnumber-grpheckeelt-rngintelt)

    - [`RootNumbers(GR): GrossenChar → SeqEnum`](introduction.md#function-rootnumbers-grossenchar)

    - [`RootNumbers(psi): GrossenChar → SeqEnum`](introduction.md#function-rootnumbers-grossenchar-2)

    - [`RootNumber(GR): GrossenChar → SeqEnum`](introduction.md#function-rootnumber-grossenchar)

    - [`RootNumber(psi): GrossenChar → SeqEnum`](introduction.md#function-rootnumber-grossenchar-2)

    - [`Example: Rootno 27a`](introduction.md#example-ex-a7b80a)

    - [`Example: Rohrlich Rootno`](introduction.md#example-ex-f91aec)

  - [Grössencharacters and Elliptic Curves](introduction.md#grossencharacters-and-elliptic-curves)

    - [`Grossencharacter(E): CrvEll → GrossenChar`](introduction.md#function-grossencharacter-crvell)

    - [`EllipticCurve(GR): GrossenChar → CrvEll`](introduction.md#function-ellipticcurve-grossenchar)

    - [`Example: Grossenchar And Ec`](introduction.md#example-ex-e6dfed)
