"Source: Text/Ring/FldFunRat.text";
"Line: 754";
"Date: Fri Sep 26 12:10:11 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Ring/FldFunRat.text, line: 754
// Example: H45E4 ()
print "Example: H45E4";
ei := GetEchoInput();
SetEchoInput(true);
F<t> := FunctionField(RationalField());
P<x> := IntegerRing(F);
f := ((t + 1)^8 - 1) / ((t^3 - 1)*(t + 1)^2*(t^2 - 4)^2);
SD := SquarefreePartialFractionDecomposition(f);
SD;
// Check appropriate sum equals f:
&+[F!t[3] / F!t[1]^t[2]: t in SD] eq f;  
D := PartialFractionDecomposition(f);
D;
// Check appropriate sum equals f:
&+[F!t[3] / F!t[1]^t[2]: t in D] eq f;  
assert $1;
F<t> := FunctionField(IntegerRing());
P<x> := IntegerRing(F);
f := ((t + 1)^8 - 1) / ((t^3 - 1)*(t + 1)^2*(t^2 - 4)^2);
D := PartialFractionDecomposition(f);
D;
// Check appropriate sum equals f:
&+[F!t[3] / F!t[1]^t[2]: t in D] eq f;  
assert $1;
R<a, b> := FunctionField(IntegerRing(), 2);
F<t> := FunctionField(R);
P<x> := IntegerRing(F);
f := 1 / ((t^2 - a)^2*(t + b)^2*t^3);
SD := SquarefreePartialFractionDecomposition(f);
SD;
// Check appropriate sum equals f:
&+[F!t[3] / F!t[1]^t[2]: t in SD] eq f;  
assert $1;
D := PartialFractionDecomposition(f);
D;
// Check appropriate sum equals f:
&+[F!t[3] / F!t[1]^t[2]: t in D] eq f;  
assert $1;
SetEchoInput(ei);
