Math Is Fun Forum

  Discussion about math, puzzles, games and fun.   Useful symbols: ÷ × ½ √ ∞ ≠ ≤ ≥ ≈ ⇒ ± ∈ Δ θ ∴ ∑ ∫ • π ƒ -¹ ² ³ °

You are not logged in.

#1 2025-03-18 03:43:41

lanxiyu
Member
Registered: 2022-05-10
Posts: 64

Mathematica package for Dedekind eta function

BeginPackage["DedekindEta`"];

Unprotect[DedekindEta, LogDedekindEta];

ClearAll[LogDedekindEta]

Begin["`Private`"];

DedekindEta /: HoldPattern[Derivative[1][DedekindEta]] :=
DedekindEta[#]*LogDedekindEta'[#] &;

LogDedekindEta[z_] /; InexactNumberQ[z] && Im[z] > 0 :=
Block[{t = z, n, pr, f},
	n = Round[Re[t]]; t -= n; pr = Precision[t];
	f = If[7*Im[z] < 6,
		n*Pi*I/12 + LogDedekindEta[SetPrecision[-1/t, pr]] - Log[-I*t]/2,
		t = z*Pi*I;
		t/12 + Log[QPochhammer[Exp[2*t]]],
		Null
	];
	f /; NumberQ[f]
];

LogDedekindEta /: HoldPattern[Derivative[1][LogDedekindEta]] :=
With[{m = ModularLambda[#]},
	With[{t = EllipticK[m]},
		I*t*(EllipticE[m] + t*(m - 2)/3)/Pi
	]
] &;

LogDedekindEta /: HoldPattern[E^LogDedekindEta[z_]] := DedekindEta[z];

LogDedekindEta /: MakeBoxes[LogDedekindEta[z_], TraditionalForm] :=
RowBox[{InterpretationBox["log\[Eta]", LogDedekindEta, Editable -> False, Selectable -> False, Tooltip -> "LogDedekindEta"], "(", ToBoxes[z], ")"}];

End[];

SetAttributes[LogDedekindEta, {Listable, NumericFunction, ReadProtected}];

Protect[DedekindEta, LogDedekindEta];

EndPackage[];

Offline

Board footer

Powered by FluxBB