Math Is Fun Forum

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

You are not logged in.

#1 2025-03-17 18:36:21

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

Mathematica implementation of inverse J-invariant

BeginPackage["KleinInvariantJ`"];

Unprotect[InverseKleinInvariantJ];

ClearAll[InverseKleinInvariantJ];

Begin["`Private`"];

InverseKleinInvariantJ[j_] :=
Module[{a},
	Which[
		PossibleZeroQ[j],
			Return[(I*Sqrt[3] - 1)/2 + 4*I*(-j)^(1/3)*(Pi/(Gamma[1/3]^2))^3, Module],
		PossibleZeroQ[a = j - 1],
			Return[I + 8*I*Pi^2*Sqrt[a/3]/Gamma[1/4]^4, Module],
		InexactNumberQ[j],
			a = Tan[ArcCsc[Sqrt[j]]/3];
			a *= 2/(a + Sqrt[3]);
			a = I*ArithmeticGeometricMean[1, Sqrt[1 - a]]/ArithmeticGeometricMean[1, Sqrt[a]];
			If[InexactNumberQ[a], Return[a, Module]],
		Head[j] === DirectedInfinity,
			Return[I*Infinity, Module]
	];
	Null /; False
];

InverseKleinInvariantJ /:
HoldPattern[KleinInvariantJ[InverseKleinInvariantJ[j_]]] := j;

InverseKleinInvariantJ /:
HoldPattern[Derivative[1][InverseKleinInvariantJ]] :=
I/(4*Sqrt[3]*Pi*DedekindEta[InverseKleinInvariantJ[#]]^4*#^(2/3)*Sqrt[# - 1]) &

InverseKleinInvariantJ /:
MakeBoxes[InverseKleinInvariantJ[j_], TraditionalForm] :=
RowBox[{InterpretationBox[SuperscriptBox["J", RowBox[{"-", "1"}]], InverseKleinInvariantJ, Editable -> False, Selectable -> False, Tooltip -> "InverseKleinInvariantJ"], "(", ToBoxes[j], ")"}];

End[];

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

Protect[InverseKleinInvariantJ];

EndPackage[];

Last edited by lanxiyu (2025-03-18 04:47:37)

Offline

Board footer

Powered by FluxBB