hermann on Fri, 06 Oct 2023 19:37:08 +0200


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

Re: "my(...)" scoping question


On 2023-10-06 19:14, hermann@stamm-wilbrandt.de wrote:

I added "if(n%8!=7,assert(F[4]==0));" as last line into main "{ ... }"
block (to prove that really sum of 3 squares got computed):

{
  foreach(rsa,r,[l,n]=r;
    my(F=foursquarep(n));
    print(l," ",F);
    assert(vecsum([x^2|x<-F])==n));
    if(n%8!=7,assert(F[4]==0));
}

Although output for RSA-2048 as well as vecsum assert are good, the
following assert "thinks" F is a t_POL:

Sorry, my fault.
I missed to move the closing ")" from foreach after now last statement.
Now all is fine (I had to change condition to "if(n%4==1..." as well):

{
  foreach(rsa,r,[l,n]=r;
    my(F=foursquarep(n));
    print(l," ",F);
    assert(vecsum([x^2|x<-F])==n);
    if(n%4==1,assert(F[4]==0)));
}


Regards,

Hermann.