> f:=4*y^4-4*y^3*x-4*y^2*x^2+3*y*x^3+4*x^4+4*y^3-y^2*x-y*x^2-2*x^3+6*y^2-11*y*x-x^2-9*y+9*x+3;
> genus1(f,x,y,x0,y0);

   3   2593323      2503753389     2
[x0  - ------- x0 + ---------- + y0 ,
         256           2048

            3          2        2        2                             3
 3/16 (287 x  - 696 y x  - 841 x  - 288 y  x - 144 y x - 1007 x + 384 y

                      2          /   2    3
      + 1320 y + 672 y  + 313)  /  (x  + x  - x - 1),
                               /

                                   2                   2        2          2  2
 - 27/8 (- 1829 x + 1465 y + 1144 y  + 457 y x - 1409 x  + 272 y  x - 392 x  y

             3        3       4        3        3            2
      + 117 x  + 608 y  + 71 x  - 9 y x  + 416 y  x - 633 y x  - 278)

        /     3    4
       /  (2 x  + x  - 2 x - 1),
      /

           4              3              2
   65536 x0  + 11255808 x0  + 15441408 x0  - 210099680064 x0 - 14902863697575
 - --------------------------------------------------------------------------
                                       %1

                                           2
             (- 2025009 + 12672 x0 + 256 x0 ) y0
      + 2304 -----------------------------------,
                              %1

             4              3              2
     65536 x0  + 26812416 x0  - 47305728 x0  - 345691510560 x0 - 19802990704077
 1/2 --------------------------------------------------------------------------
                                         %1

                                             2
            (- 60648147 - 195744 x0 + 3328 x0 ) y0
      + 192 --------------------------------------
                              %1

 ]

%1 :=

               3                            4                                 2
   - 3194880 x0  + 39602267712 x0 + 65536 x0  + 10723646432457 - 1591681536 x0


#
# These examples are chosen in such a way that no algebraic numbers are needed,
# but still the output becomes quite large. If algebraic numbers are used then
# the size of the output can become even worse.
#

> f:=-x^2*y^2+x*y^3+y^4+x^3-4*x^2*y+4*x*y^2-y^3-x^2+3*x*y-4*y^2+x-y+1;
> v:=genus1(f,x,y,x0,y0);

        3   241      1225     2
v := [x0  - --- x0 - ---- + y0 ,
             48       864

           2                                   2       2         3       3
       13 x  + 11 - 12 x - 36 y x + 36 y + 12 y  - 24 y  x - 12 y  + 12 x
- 1/12 -------------------------------------------------------------------,
                                            2
                                     - 1 + x

              2                3      2          3         2      2  2      3
- 1/2 (3 - 3 y  - x + 7 y x + y  + 4 y  x + 2 y x  - 10 y x  - 2 x  y  - 2 y  x

              2      3    /         2
     + y - 5 x  + 5 x )  /  (- 1 + x ),
                        /

                                 2          3
       - 8316 x0 - 4163 + 2160 x0  + 1728 x0         y0
- 1/12 -------------------------------------- + 288 ----,
                         %1                          %1

            2
      144 x0  - 72 x0 - 391      (12 x0 + 1) y0
- 3/2 --------------------- + 12 --------------]
                %1                     %1

                                                 2
%1 :=                     - 551 + 312 x0 + 144 x0


Now test if the result is right:
f0:=v[1];
x0_image:=v[2];
y0_image:=v[3];
x_image:=v[4];
y_image:=v[5];

zero:=subs({x=x_image,y=y_image} ,f):
# This should be zero in Q(x0)[y0]/(f), test this as follows:
evala(Normal(subs(y0=RootOf(f0,y0), zero)));

                                       0
# OK.

zero:=subs({x0=x0_image,y0=y0_image} ,f0):
# This should be zero in Q(x)[y]/(f)
evala(Normal(subs(y=RootOf(f,y), zero)));

                                       0
# OK.


#
# Here is an example of a curve where genus1 does use algebraic extensions.
# As you see the output is large, even though the input is very small.
# 

> f:=y^4+y*x+y*x^2-x^2;

                               4            2    2
                              y  + y x + y x  - x

> genus1(f,x,y,x0,y0);

   3                        35    3    35   2     2
[x0  + (2/3 %1 - 1/3) x0 + ---- %1  - --- %1  + y0 ,
                            54        108

             3        2  2             2    3   2       3  3      2      3
- 1/3 (3 x %1  + 10 %1  x  + 3 x + x %1  + x  %1  + 3 %1  x  + 6 x  + 3 x

          3           2       2           2    2       2           3     3
     + 3 y  + 6 %1 y x  - 9 %1  y x - 9 %1  y x  - 18 y  %1 x + 6 y  x %1

                     3           2       3  3    /      2
     + 6 y x %1 + 3 y  x + 12 x y  + 6 %1  y )  /  (x (x  - 2 x + 1)),
                                               /

        3                    2        2            2    2       2
1/2 (2 y  + 4 y x - 68 %1 y x  + 12 %1  y x + 48 %1  y x  + 36 y  %1 x + 2 x

              2      3  2   2        3  2  2       2     2         2      2
     + 16 %1 x  + 4 y  x  %1  + 16 %1  y  x  + 36 y  %1 x  + 24 y x  + 6 x

          3      4       2  2      3        3  2    4   3       3     2
     + 6 x  + 2 x  - 16 y  x  + 4 y  x + 2 y  x  + x  %1  + 24 y  x %1

             2   3      3   2         2       3         2       3  3
     + 16 x y  %1  + 4 y  %1  - 16 x y  + x %1  + 2 x %1  - 2 %1  y

            2  2      3  2   3       3  3        2    3        3       3   2
     - 18 %1  x  - 2 y  x  %1  + 3 %1  x  + 12 %1  y x  + 4 y x  - 18 x  %1

          2   3      4   2       3     3                     3          3
     + 3 x  %1  + 2 x  %1  - 28 y  x %1  - 14 y x %1 - 14 y x  %1 + 16 x  %1)

       /      3      2
      /  (x (x  - 3 x  + 3 x - 1)),
     /

           2   2         3   2               3          2         2
1/2 (810 x0  %1  - 486 %1  x0  + 98 - 1248 %1  + 2015 %1  + 108 x0

              2          3   2         3          3            4
   - 540 %1 x0  - 1080 x0  %1  - 162 x0  - 1128 %1  x0 + 162 x0  - 2484 %1 x0

                       2         3   3              /                       2
   - 878 %1 + 294 x0 %1  + 972 %1  x0  + 1242 x0)  /  (611 %1 - 161 - 725 %1
                                                  /

           3         3   3        4         2   2                 3        2
   + 321 %1  - 162 %1  x0  + 81 x0  + 405 x0  %1  + 135 x0 + 81 x0  + 54 x0

           3   2        3              2                     3   2            2
   + 108 x0  %1  + 84 %1  x0 - 69 x0 %1  - 270 %1 x0 - 243 %1  x0  - 270 %1 x0

  ) + 9/2

                2       3             2           2        3              3
  (26 %1 - 12 %1  - 9 %1  - 10 + 18 x0  - 24 x0 %1  + 18 %1  x0) (2 + 4 %1 ) y0

     /                       2         3         3   3        4         2   2
    /  (611 %1 - 161 - 725 %1  + 321 %1  - 162 %1  x0  + 81 x0  + 405 x0  %1
   /

                   3        2         3   2        3              2
   + 135 x0 + 81 x0  + 54 x0  + 108 x0  %1  + 84 %1  x0 - 69 x0 %1  - 270 %1 x0

           3   2            2
   - 243 %1  x0  - 270 %1 x0 ),

                  2       3             2           2        3
    (26 %1 - 12 %1  - 9 %1  - 10 + 18 x0  - 24 x0 %1  + 18 %1  x0) %1
1/2 -----------------------------------------------------------------
                   2        3          2        3               2
        1 + 6 x0 %1  - 18 %1  x0 + 9 x0  - 18 %1  - 8 %1 + 21 %1

                               (2 - 3 %1) y0
     + 9 ---------------------------------------------------------   ]
                    2        3          2        3               2
         1 + 6 x0 %1  - 18 %1  x0 + 9 x0  - 18 %1  - 8 %1 + 21 %1

                                    4
%1 :=                      RootOf(_Z  + 2 _Z - 1)

