inverse_simplicial fix
This commit is contained in:
parent
c6a0fc9814
commit
e09171467b
@ -811,7 +811,7 @@ return stored[d-2][n];
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//find largest n such that simplicial(d,n)<=s
|
||||||
int inverse_simplicial(int d, unsigned long long s)
|
int inverse_simplicial(int d, unsigned long long s)
|
||||||
{
|
{
|
||||||
if(s==0) return 0;
|
if(s==0) return 0;
|
||||||
@ -841,7 +841,9 @@ do
|
|||||||
x -= dx;
|
x -= dx;
|
||||||
}
|
}
|
||||||
while(std::fabs(dx)>.5); //so usually 2 iterations are enough
|
while(std::fabs(dx)>.5); //so usually 2 iterations are enough
|
||||||
return std::floor(x);
|
int n= std::floor(x);
|
||||||
|
while(simplicial(d,n)>s) --n;
|
||||||
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef SIMPLICIAL_MAXD
|
#undef SIMPLICIAL_MAXD
|
||||||
|
13
t.cc
13
t.cc
@ -3180,10 +3180,15 @@ if(1)
|
|||||||
{
|
{
|
||||||
int d,n;
|
int d,n;
|
||||||
cin>>d>>n;
|
cin>>d>>n;
|
||||||
unsigned long long s;
|
unsigned long long s1;
|
||||||
s=simplicial(d,n);
|
s1=simplicial(d,n);
|
||||||
cout <<s<<" "<<binom(n+d-1,d)<<endl;
|
cout <<s1<<" "<<binom(n+d-1,d)<<endl;
|
||||||
cout <<inverse_simplicial(d,s)<<endl;
|
unsigned long long s2 = simplicial(d,n+1);
|
||||||
|
for(unsigned long long s=s1; s<s2; ++s)
|
||||||
|
{
|
||||||
|
int i=inverse_simplicial(d,s);
|
||||||
|
if(i!=n) cout <<"Error "<<s<<" " <<i<<endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(0)
|
if(0)
|
||||||
|
Loading…
Reference in New Issue
Block a user