-- -*- M2-comint -*- hash: 16619967066196526783

i1 : ZZ/5[x,y,z];

i2 : fpt(x^3 + y^3 + z^3 + x*y*z)

     4
o2 = -
     5

o2 : QQ

i3 : fpt(x^5 + y^6 + z^7 + (x*y*z)^3)

       7  2
o3 = {--, -}
      25  5

o3 : List

i4 : fpt(x^17 + y^20 + z^24) -- a diagonal polynomial

      94
o4 = ---
     625

o4 : QQ

i5 : fpt(x^2*y^6*z^10 + x^10*y^5*z^3) -- a binomial

      997
o5 = ----
     6250

o5 : QQ

i6 : fpt(x^5*(x + y)^7*(x + y + z)^10) -- SNC

      1
o6 = --
     10

o6 : QQ

i7 : ZZ/5[x,y];

i8 : fpt(x^2*y^6*(x + y)^9*(x + 3*y)^10) -- a form in two variables

      5787
o8 = -----
     78125

o8 : QQ

i9 : fpt({x, y, x + y, x + 3*y}, {2, 6, 9, 10}) == oo

o9 = true

i10 : f = x^2*(x + y)^3*(x + 3*y^2)^5;

i11 : fpt(f, Attempts => 0) -- a bad estimate

          1
o11 = {0, -}
          5

o11 : List

i12 : fpt(f, Attempts => 0, DepthOfSearch => 3) -- a better estimate

        21   22
o12 = {---, ---}
       124  125

o12 : List

i13 : fpt(f, Attempts => 1, DepthOfSearch => 3) -- the right-hand endpoint (ν+1)/p^e is the fpt

       22
o13 = ---
      125

o13 : QQ

i14 : f = x^6*y^4 + x^4*y^9 + (x^2 + y^3)^3;

i15 : fpt(f, Attempts => 1, DepthOfSearch => 3)

       17   7
o15 = {--, --}
       62  25

o15 : List

i16 : fpt(f, Attempts => 2, DepthOfSearch => 3) -- the left-hand endpoint ν/(p^e-1) is the fpt

      17
o16 = --
      62

o16 : QQ

i17 : f = x^3*y^11*(x + y)^8*(x^2 + y^3)^8;

i18 : fpt(f, DepthOfSearch => 3, Attempts => 4)

        1   4
o18 = {--, --}
       20  75

o18 : List

i19 : fpt(f, DepthOfSearch => 3, Attempts => 6)

        13   4
o19 = {---, --}
       250  75

o19 : List

i20 : fpt(f, DepthOfSearch => 3, Attempts => 8)

       1
o20 = --
      19

o20 : QQ

i21 : f = x^7*y^5*(x + y)^5*(x^2 + y^3)^4;

i22 : fpt(f, DepthOfSearch => 3, Attempts => 5)

        19   1
o22 = {---, --}
       250  13

o22 : List

i23 : fpt(f, DepthOfSearch => 3, Attempts => 5, Bounds => oo)

        45   1
o23 = {---, --}
       589  13

o23 : List

i24 : f = 2*x^10*y^8+x^4*y^7-2*x^3*y^8;

i25 : numeric fpt(f, DepthOfSearch => 3)

o25 = {.14, .144}

o25 : List

i26 : numeric fpt(f, DepthOfSearch => 3, FinalAttempt => true) -- FinalAttempt improves the estimate slightly

o26 = {.142067, .144}

o26 : List

i27 : time numeric fpt(f, DepthOfSearch => 3, FinalAttempt => true)
 -- used 1.81265s (cpu); 1.21317s (thread); 0s (gc)

o27 = {.142067, .144}

o27 : List

i28 : time fpt(f, DepthOfSearch => 3, Attempts => 7)
 -- used 1.05213s (cpu); 0.720713s (thread); 0s (gc)

      1
o28 = -
      7

o28 : QQ

i29 : time fpt(f, DepthOfSearch => 4)
 -- used 0.876853s (cpu); 0.632412s (thread); 0s (gc)

      1
o29 = -
      7

o29 : QQ

i30 : fpt(f, DepthOfSearch => 3, FinalAttempt => true, Verbose => true)
Starting fpt ...
fpt is not 1 ...
Verifying whether special algorithms apply...
Special fpt algorithms were not used ...
ν has been computed: ν = frobeniusNu(3,f) = 17 ...
fpt lies in the interval [ν/(p^e-1),(ν+1)/p^e] = [17/124,18/125] ...
Starting guessFPT ...
The right-hand endpoint is not the fpt ...
The left-hand endpoint is not the fpt ...
guessFPT narrowed the interval down to (7/50,18/125) ...
Beginning F-signature computation ...
First F-signature computed: s(f,(ν-1)/p^e) = 793/15625 ...
Second F-signature computed: s(f,ν/p^e) = 342/15625 ...
Computed F-signature secant line intercept: 8009/56375 ...
F-signature intercept is an improved lower bound;
Using F-regularity to check if it is the fpt ...
The new lower bound is not the fpt ...
fpt failed to find the exact answer; try increasing the value of DepthOfSearch or Attempts.
fpt lies in the interval (8009/56375,18/125).

        8009   18
o30 = {-----, ---}
       56375  125

o30 : List

i31 : R = ZZ/7[x,y];

i32 : f = x*(y - 1)^2 - y*(x - 1)^3;

i33 : fpt(f)

o33 = 1

i34 : fpt(f, AtOrigin => false)

      5
o34 = -
      6

o34 : QQ

i35 : f = x*y^2*(x - 1)^3*(y - 1)^4;

i36 : fpt(f)

      1
o36 = -
      2

o36 : QQ

i37 : fpt(f, AtOrigin => false)

      1
o37 = -
      4

o37 : QQ

i38 : 
