set_a_E0 := proc(a::RR0) global a_E0,a_E1,g0,g_00,g_10,g1,g_01,g_11,dg0,dg1, square_norm_of_dg0,square_norm_of_dg1, curvature0,curvature1, square_norm_of_dg_z0,square_norm_of_dg_z1, curvature_z0,curvature_z1,g_stereo0,g_stereo1, laplacian_z_C0,laplacian_z0, omega0,omega1, v_E0,v_E1,c_E0,c_E1,c_param_E0,c_param_E1, yx0,yx1,xy0,xy1,uy0,uy1,uf0,uf1,uz0,uz1,zx0,zx1, dyx0,dyx1,dxy0,dxy1,dzx0,dzx1, y_proj0,y_proj1,z_proj0,z_proj1,w_proj0,w_proj1, y_lift0,y_lift1,z_lift0,z_lift1, z_to_w0,z_to_w1,y_to_w0,y_to_w1, z_rels0,y_rels0,x_rels0,NF_z0,NF_y0,NF_x0, is_in_F4_E0_measure,is_in_F16_E0_measure, num_vertices_E,num_curves_E; local i,t; a_E0 := a; #@ a_E0 a_E1 := evalf(a_E0); #@ a_E1 g0 := unapply(subs(a_E=a_E0,g(xx)),x): #@ g0 g_00 := unapply(subs(a_E=a_E0,g_0(xx)),x): #@ g_00 g_10 := unapply(subs(a_E=a_E0,g_1(xx)),x): #@ g_10 dg0 := unapply(subs(a_E=a_E0,dg(xx)),x): #@ dg0 square_norm_of_dg0 := unapply(simplify(subs(a_E=a_E0,square_norm_of_dg(xx))),x): #@ square_norm_of_dg0 curvature0 := unapply(simplify(subs(a_E=a_E0,curvature(xx))),x): #@ curvature0 square_norm_of_dg_z0 := unapply(subs(a_E=a_E0,square_norm_of_dg_z(z)),z): #@ square_norm_of_dg_z0 curvature_z0 := unapply(1 - factor(1-subs(a_E=a_E0,curvature_z(z))),z): #@ curvature_z0 g_stereo0 := unapply(subs(a_E=a_E0,g_stereo([u[1],u[2],u[3]])),u): #@ g_stereo0 g1 := unapply(subs(a_E=a_E1,g(xx)),x): #@ g1 g_01 := unapply(subs(a_E=a_E1,g_0(xx)),x): #@ g_01 g_11 := unapply(subs(a_E=a_E1,g_1(xx)),x): #@ g_11 dg1 := unapply(subs(a_E=a_E1,dg(xx)),x): #@ dg1 square_norm_of_dg1 := unapply(evalf(square_norm_of_dg0(xx)),x): #@ square_norm_of_dg1 curvature1 := unapply(evalf(curvature0(xx)),x): #@ curvature1 square_norm_of_dg_z1 := unapply(subs(a_E=a_E1,square_norm_of_dg_z(z)),z): #@ square_norm_of_dg_z1 curvature_z1 := unapply(1 - factor(1-subs(a_E=a_E1,curvature_z(z))),z): #@ curvature_z1 g_stereo1 := unapply(evalf(subs(a_E=a_E0,g_stereo([u[1],u[2],u[3]]))),u): #@ g_stereo1 #@ laplacian_z_C0 for i from 0 to 5 do laplacian_z_C0[i] := factor(subs(a_E=a_E0,laplacian_z_C[i])); od; #@ laplacian_z0 laplacian_z0 := proc(p) (laplacian_z_C0[1] * diff(p,z[1]) + laplacian_z_C0[2] * diff(p,z[2]) + laplacian_z_C0[3] * diff(p,z[1],z[1]) + laplacian_z_C0[4] * diff(p,z[1],z[2]) + laplacian_z_C0[5] * diff(p,z[2],z[2]))/laplacian_z_C0[0]; end: #@ omega0 #@ omega1 for i from 1 to 2 do omega0[i] := unapply(simplify(subs(a_E=a_E0,omega[i](t))),t); omega1[i] := unapply(evalf(subs(a_E=a_E1,omega[i](t))),t); od; if not(type(num_vertices_E,posint)) then num_vertices_E := 14; fi; #@ v_E0 #@ v_E1 for i from 0 to num_vertices_E-1 do v_E0[i] := combine(simplify(subs(a_E = a_E0,v_E[i]))): v_E1[i] := evalf(v_E0[i]); od: assume(t::real): if not(type(num_curves_E,posint)) then num_curves_E := 9; fi; #@ c_E0 #@ c_E1 #@ c_param_E0 #@ c_param_E1 for i from 0 to num_curves_E - 1 do c_E0[i] := unapply(simplify(subs(csgn(cos(t)^2-3)=-1,simplify(subs(a_E=a_E0,c_E[i](t))))),t): c_E1[i] := unapply(evalf(c_E0[i](t)),t): c_param_E0[i] := unapply(simplify(subs(a_E=a_E0,c_param_E[i](xx))),x); c_param_E1[i] := unapply(simplify(evalf(subs(a_E=a_E1,c_param_E[i](xx)))),x); od: #@ yx0 #@ dyx0 #@ uy0 #@ uf0 for i from 1 to 2 do yx0[i] := simplify(subs(a_E=a_E0,yx[i])): dyx0[i] := simplify(subs(a_E=a_E0,dyx[i])): uy0[i] := simplify(subs(a_E=a_E0,uy[i])): uf0[i] := unapply(uy0[i],y): od: #@ xy0 #@ dxy0 for i from 1 to 4 do xy0[i] := simplify(subs(a_E=a_E0,xy[i])): dxy0[i] := simplify(subs(a_E=a_E0,dxy[i])): od: #@ uz0 uz0[3] := simplify(subs(a_E=a_E0,uz[3])): uz0[4] := simplify(subs(a_E=a_E0,uz[4])): for i from 1 to 5 do zx0[i] := simplify(subs(a_E=a_E0,zx[i])): dzx0[i] := simplify(subs(a_E=a_E0,dyx[i])): od: y_proj0 := unapply(subs(a_E=a_E0,y_proj(xx)),x): #@ y_proj0 z_proj0 := unapply(subs(a_E=a_E0,z_proj(xx)),x): #@ z_proj0 w_proj0 := unapply(subs(a_E=a_E0,w_proj(xx)),x): #@ w_proj0 z_to_w0 := unapply(subs(a_E=a_E0,z_to_w(z)),z): #@ z_to_w0 y_to_w0 := unapply(subs(sqrt(y[2]^2)=abs(y[2]),subs(a_E=a_E0,y_to_w(y))),y): #@ y_to_w0 y_lift0 := unapply(subs(a_E=a_E0,y_lift(xx)),x): #@ y_lift0 z_lift0 := unapply(subs(a_E=a_E0,z_lift(xx)),x): #@ z_lift0 yx1[1] := simplify(evalf(subs(a_E=a_E1,yx[1]))): #@ yx1 yx1[2] := simplify(evalf(subs(a_E=a_E1,yx[2]))): uy1[1] := simplify(evalf(subs(a_E=a_E1,uy[1]))): #@ uy1 uy1[2] := simplify(evalf(subs(a_E=a_E1,uy[2]))): uf1[1] := unapply(uy1[1],y): #@ uf1 uf1[2] := unapply(uy1[2],y): uz1[3] := simplify(evalf(subs(a_E=a_E1,uz[3]))): #@ uz1 uz1[4] := simplify(evalf(subs(a_E=a_E1,uz[4]))): #@ zx1 for i from 1 to 5 do zx1[i] := simplify(evalf(subs(a_E=a_E1,zx[i]))): od: y_proj1 := unapply(evalf(subs(a_E=a_E1,y_proj(xx))),x): #@ y_proj1 z_proj1 := unapply(evalf(subs(a_E=a_E1,z_proj(xx))),x): #@ z_proj1 w_proj1 := unapply(evalf(subs(a_E=a_E1,w_proj(xx))),x): #@ w_proj1 z_to_w1 := unapply(evalf(subs(a_E=a_E1,z_to_w(z))),z): #@ z_to_w1 y_to_w1 := unapply(subs(sqrt(y[2]^2)=abs(y[2]),evalf(subs(a_E=a_E1,y_to_w(y)))),y): #@ y_to_w1 y_lift1 := unapply(evalf(subs(a_E=a_E1,y_lift(xx))),x): #@ y_lift1 z_lift1 := unapply(evalf(subs(a_E=a_E1,z_lift(xx))),x): #@ z_lift1 z_rels0 := simplify(subs(a_E=a_E0,z_rels)); #@ z_rels0 NF_z0 := (u) -> NormalForm(u,z_rels0,z_vars); #@ NF_z0 y_rels0 := simplify(subs(a_E=a_E0,y_rels)); #@ y_rels0 NF_y0 := (u) -> NormalForm(u,y_rels0,y_vars); #@ NF_y0 x_rels0 := simplify(subs(a_E=a_E0,x_rels)); #@ x_rels0 NF_x0 := (u) -> NormalForm(u,x_rels0,x_vars); #@ NF_x0 #@ is_in_F4_E0_measure is_in_F4_E0_measure := (x) -> max(0,-evalf(x[1]),-evalf(x[2])); #@ is_in_F16_E0_measure is_in_F16_E0_measure := (x) -> max(0,-evalf(x[1]),-evalf(x[2]),-evalf(x[3]),-evalf(g_11(x))); NULL; end: #@ c_check_E0 c_check_E0[0] := proc(x) max(abs(evalf(x[3])),abs(evalf(x[4]))); end: c_check_E0[1] := proc(x) max(abs(evalf(x[1]-x[2])),abs(evalf(x[4]))); end: c_check_E0[2] := proc(x) max(abs(evalf(x[1]+x[2])),abs(evalf(x[4]))); end: c_check_E0[3] := proc(x) max(abs(evalf(x[1])),evalf(-g_10(x))); end: c_check_E0[4] := proc(x) max(abs(evalf(x[2])),evalf( g_10(x))); end: c_check_E0[5] := proc(x) max(abs(evalf(x[2])),evalf(-g_10(x)),-evalf(x[3])); end: c_check_E0[6] := proc(x) max(abs(evalf(x[1])),evalf( g_10(x)),-evalf(x[3])); end: c_check_E0[7] := proc(x) max(abs(evalf(x[2])),evalf(-g_10(x)), evalf(x[3])); end: c_check_E0[8] := proc(x) max(abs(evalf(x[1])),evalf( g_10(x)), evalf(x[3])); end: #@ classify_point_E0 classify_point_E0 := proc(x0::RR0_4,tol) local i; for i from 0 to 13 do if d4f(x0,v_E0[i]) < tol then return sprintf("V%d",i); fi; od; for i from 0 to 8 do if c_check_E0[i](x0) < tol then return sprintf("C%d",i); fi; od; return "FREE"; end: #@ is_in_F4_E0 is_in_F4_E0 := proc(x::RR0_4) is(x[1] >= 0) and is(x[2] >= 0); end: #@ is_in_F16_E0 is_in_F16_E0 := proc(x::RR0_4) is(x[1] >= 0) and is(x[2] >= 0) and is(x[3] >= 0) and is(simplify(g_10(x)) >= 0); end: #@ retract_F16_E0 retract_F16_E0 := proc(x::RR0_4) if is(g_10(x) >= 0) then [abs(x[1]),abs(x[2]),abs(x[3]),-abs(x[4])]; elif is(g_10(x) <= 0) then [abs(x[2]),abs(x[1]),abs(x[3]),-abs(x[4])]; else FAIL; fi; end: #@ is_in_F4_E1 is_in_F4_E1 := proc(x::RR0_4) evalf(x[1]) >= 0 and evalf(x[2]) >= 0; end: #@ is_in_F16_E1 is_in_F16_E1 := proc(x::RR0_4) evalf(x[1]) >= 0 and evalf(x[2]) >= 0 and evalf(x[3]) >= 0 and evalf(g_10(x)) >= 0; end: #@ retract_F16_E1 retract_F16_E1 := proc(x::RR0_4) if evalf(g_10(x)) >= 0 then [abs(x[1]),abs(x[2]),abs(x[3]),-abs(x[4])]; else [abs(x[2]),abs(x[1]),abs(x[3]),-abs(x[4])]; fi; end: set_a_E0(1/sqrt(2));