end of day blah
This commit is contained in:
96
src/amsmathutil25/testing/amsmathtuil25_test1.cpp
Normal file
96
src/amsmathutil25/testing/amsmathtuil25_test1.cpp
Normal file
@ -0,0 +1,96 @@
|
||||
#include <amsmathutil25/amsmathutil25.hpp>
|
||||
|
||||
namespace ams
|
||||
{
|
||||
namespace amsmathutil25
|
||||
{
|
||||
|
||||
void test_amsarray1()
|
||||
{
|
||||
amsarray<float> a,b,c,q;
|
||||
int64_t I;
|
||||
|
||||
printf("Tests for amsarray...\n");
|
||||
q.resize(10);
|
||||
q[0] = 1;
|
||||
q[9] = 5;
|
||||
for(I=0;I<10;I++)
|
||||
{
|
||||
printf("q[%ld] = %1.3f\n",I,q[I]);
|
||||
}
|
||||
|
||||
q.resize(12);
|
||||
a = q;
|
||||
a = b = q;
|
||||
for(I=0;I<12;I++)
|
||||
{
|
||||
printf("a[%ld] = %1.3f\n",I,a[I]);
|
||||
}
|
||||
|
||||
q.resize(8);
|
||||
a = q;
|
||||
a = b = q;
|
||||
for(I=0;I<8;I++)
|
||||
{
|
||||
printf("a[%ld] = %1.3f\n",I,a[I]);
|
||||
}
|
||||
|
||||
a.resize(amsmathutil25_threadpsz + 10);
|
||||
a.setall(55);
|
||||
printf("a.length=%ld\n",a.length);
|
||||
|
||||
b = a;
|
||||
for(I=amsmathutil25_threadpsz;I<b.length;I++)
|
||||
{
|
||||
printf("b[%ld] = %1.3f\n",I,b[I]);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void test_amsarray2()
|
||||
{
|
||||
amsarray<int64_t> a,b,c;
|
||||
amsarray<float> q;
|
||||
int64_t I;
|
||||
|
||||
printf("Tests for amsarray...\n");
|
||||
|
||||
a.resize(0);
|
||||
b = a;
|
||||
a.resize(-10);
|
||||
b = a;
|
||||
|
||||
printf("a==b?%d\n",a==b);
|
||||
|
||||
a.resize(10);
|
||||
b = a;
|
||||
|
||||
printf("a==b?%d\n",a==b);
|
||||
|
||||
a.resize(10000);
|
||||
b = a;
|
||||
|
||||
printf("a==b?%d\n",a==b);
|
||||
|
||||
a.setall(55);
|
||||
b = a;
|
||||
|
||||
printf("a==b?%d\n",a==b);
|
||||
|
||||
a[0] = 1;
|
||||
|
||||
printf("a==b?%d\n",a==b);
|
||||
|
||||
q = (amsarray<float>)a;
|
||||
for(I=q.length-10;I<q.length;I++)
|
||||
{
|
||||
printf("q[%ld]=%1.3f\n",I,q[I]);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}; //end namespace amsmathutil25
|
||||
}; //end namespace ams
|
84
src/amsmathutil25/util/amsmathutil25_amsarray.cpp
Normal file
84
src/amsmathutil25/util/amsmathutil25_amsarray.cpp
Normal file
@ -0,0 +1,84 @@
|
||||
#include <amsmathutil25/amsmathutil25.hpp>
|
||||
|
||||
namespace ams
|
||||
{
|
||||
|
||||
template<> void amsarray<int>::print(bool newline,int printstyle)
|
||||
{
|
||||
amsarray_size_t I;
|
||||
|
||||
printf("{");
|
||||
if(data!=NULL)
|
||||
{
|
||||
for(I=0;I<length-1;I++)
|
||||
{
|
||||
printf("%d,",data[I]);
|
||||
}
|
||||
if(length>0) printf("%d",data[length-1]);
|
||||
}
|
||||
printf("}");
|
||||
if(newline==1) printf("\n");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
template<> void amsarray<long>::print(bool newline,int printstyle)
|
||||
{
|
||||
amsarray_size_t I;
|
||||
|
||||
printf("{");
|
||||
if(data!=NULL)
|
||||
{
|
||||
for(I=0;I<length-1;I++)
|
||||
{
|
||||
printf("%ld,",data[I]);
|
||||
}
|
||||
if(length>0) printf("%ld",data[length-1]);
|
||||
}
|
||||
printf("}");
|
||||
if(newline==1) printf("\n");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
template<> void amsarray<float>::print(bool newline,int printstyle)
|
||||
{
|
||||
amsarray_size_t I;
|
||||
|
||||
printf("{");
|
||||
if(data!=NULL)
|
||||
{
|
||||
for(I=0;I<length-1;I++)
|
||||
{
|
||||
printf("%1.3f,",data[I]);
|
||||
}
|
||||
if(length>0) printf("%1.3f",data[length-1]);
|
||||
}
|
||||
printf("}");
|
||||
if(newline==1) printf("\n");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
template<> void amsarray<double>::print(bool newline,int printstyle)
|
||||
{
|
||||
amsarray_size_t I;
|
||||
|
||||
printf("{");
|
||||
if(data!=NULL)
|
||||
{
|
||||
for(I=0;I<length-1;I++)
|
||||
{
|
||||
printf("%1.3f,",data[I]);
|
||||
}
|
||||
if(length>0) printf("%1.3f",data[length-1]);
|
||||
}
|
||||
printf("}");
|
||||
if(newline==1) printf("\n");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
};
|
62
src/amsmathutil25/util/amsmathutil25_amsarray_sort.cpp
Normal file
62
src/amsmathutil25/util/amsmathutil25_amsarray_sort.cpp
Normal file
@ -0,0 +1,62 @@
|
||||
#include <amsmathutil25/amsmathutil25.hpp>
|
||||
|
||||
namespace ams
|
||||
{
|
||||
|
||||
void amsarray_permutation_identity_tf(
|
||||
int threadnum,
|
||||
int nthreads,
|
||||
amsarray<amsarray_size_t> *ret
|
||||
)
|
||||
{
|
||||
amsarray_size_t I,I0,I1,Is,N;
|
||||
N = ret->length;
|
||||
N = (N<=0) ? 0 : N;
|
||||
Is = (nthreads>=1) ? N/nthreads : N;
|
||||
I0 = Is*(threadnum);
|
||||
I1 = (threadnum<nthreads-1) ? Is*(threadnum+1) : N;
|
||||
|
||||
for(I=I0;I<I1;I++)
|
||||
{
|
||||
ret->data[I] = I;
|
||||
}
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// {0, 1, 2, .... N}
|
||||
amsarray<amsarray_size_t> permutation_identity(amsarray_size_t _length)
|
||||
{
|
||||
amsarray<amsarray_size_t> ret;
|
||||
int res;
|
||||
amsarray_size_t psize = _length;
|
||||
amsarray_size_t I;
|
||||
|
||||
res = ret.resize(psize);
|
||||
if(res!=amsarray_success)
|
||||
{
|
||||
ret.resize(0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if(psize<amsmathutil25_threadpsz)
|
||||
{
|
||||
for(I=0;I<psize;I++)
|
||||
{
|
||||
ret[I] = I;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
threaded_execute(
|
||||
&amsarray_permutation_identity_tf,
|
||||
_length,
|
||||
&ret
|
||||
);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
};
|
@ -5,4 +5,7 @@ int main(int argc, char* argv[])
|
||||
int ret = 0;
|
||||
printf("ams c++ math and utility library tests.\n");
|
||||
|
||||
//ams::amsmathutil25::test_amsarray1();
|
||||
//ams::amsmathutil25::test_amsarray2();
|
||||
return ret;
|
||||
}
|
Reference in New Issue
Block a user