American Citizen on Thu, 10 Jul 2025 22:21:30 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

question on setminus(set,element)


Can anyone explain why setminus(Set,element) won't work the first time, but works the second time?

{point_on_conic(C,pt)=
my(a,b,c,d,e,f,r,s);
if(matsize(C)[2]!=6,return(););
[a,b,c,d,e,f]=C;
[r,s]=pt;
return(a*r^2+b*r*s+c*s^2+d*r+e*s+f);
}

{parameterize_conic(conic,pt)=
my(k,x1,y1,P,R,rsz,S,T);
if(matsize(conic)[2]!=6,return(););
x1=pt[1];y1=pt[2];
k=point_on_conic(conic,pt);
if(k!=0,print("Point not on conic!");return(););
y=t*(x-x1)+y1;
P=point_on_conic(conic,[x,y]);
print("P=",P);
R=factor(P);
print("Factored P =",R);
rsz=matsize(R)[1];
S=Set();
for(i=1,rsz,
  xt=-polcoef(R[i,1],0)/polcoef(R[i,1],1);
  yt=t*(xt-x1)+y1;
  print("at root #",i," xt,yt = ",xt,",",yt);
  print("type xt  = ",type(xt)," type yt = ",type(yt));
  S=setunion(S,[[xt,yt]]);
  \\if(type(xt)!="t_POL",S=setunion(S,[xt,yt]););
);
print("S=",S);
print("Attemting to remove point ",pt," from S");
print("T=setminus(S,[",pt,"])");
T=setminus(S,[pt]);
print("T=",T);
print("we now define S again");
S=[[1, 0], [(t^2 - 1)/(t^2 + 1), -2*t/(t^2 + 1)]];
print("S = ",S);
print("remove ",pt);
T=setminus(S,[pt]);
print("new T = ",T," which is what we want");
print("why cannot the point be removed the first time?");

if(matsize(T)[2]==1,T=T[1];);
return(T);
}
c=[1,0,1,0,0,-1]
pt=[1,0]
parameterize_conic(c,pt)