insert erase find
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								build/__pycache__/amsbuildlib4.cpython-312.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								build/__pycache__/amsbuildlib4.cpython-312.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@ -8,16 +8,16 @@ from shutil import copytree
 | 
			
		||||
from amsbuildlib4 import *
 | 
			
		||||
 | 
			
		||||
libname = "amscppnarray.msvc64" #static library name to generate
 | 
			
		||||
binname = "tests" #create this executable when compiling main.c or main.cpp
 | 
			
		||||
binname = "tests.exe" #create this executable when compiling main.c or main.cpp
 | 
			
		||||
commondir = "../../winx64" #common directory to pul libraries and includes from
 | 
			
		||||
depdir = "./dependencies/winx64" #local pre-compiled dependency libraries and their includes
 | 
			
		||||
installdir = "../../winx64" #directory to install to when finished
 | 
			
		||||
builddir = "./build_msvc64"
 | 
			
		||||
 | 
			
		||||
doinstall = False   #copies the build_output to the install dir when finished
 | 
			
		||||
doinstall = True   #copies the build_output to the install dir when finished
 | 
			
		||||
cc = "cl" #compiler
 | 
			
		||||
cflags = "/O2"
 | 
			
		||||
libraries = "lib{}.lib".format(libname)
 | 
			
		||||
cflags = "/O2 /EHsc"
 | 
			
		||||
libraries = "lib{}.lib libamsmathutil2.msvc64.lib".format(libname)
 | 
			
		||||
libdirs = "/LIBPATH:{} /LIBPATH:{}/lib /LIBPATH:{}/lib".format(builddir,commondir,depdir)
 | 
			
		||||
linkerflags = "-static -static-libgcc -Wl,-rpath=."
 | 
			
		||||
srcexts = [".c",".cpp"]
 | 
			
		||||
@ -54,7 +54,7 @@ if(doinstall):
 | 
			
		||||
    #Copy a binary to the common bin folder
 | 
			
		||||
 | 
			
		||||
    #Push any libraries to the common lib folder
 | 
			
		||||
    shutil.copy('{}/lib/lib{}.lib'.format(builddir,libname),commondir)
 | 
			
		||||
    shutil.copy('{}/lib{}.lib'.format(builddir,libname),"{}/lib".format(commondir))
 | 
			
		||||
 | 
			
		||||
    #Copy include files to the common include folder
 | 
			
		||||
    copytree('./include/',commondir+'/include/',dirs_exist_ok=True)
 | 
			
		||||
 | 
			
		||||
@ -14,12 +14,12 @@ depdir = "./dependencies/winx64" #local pre-compiled dependency libraries and th
 | 
			
		||||
installdir = "../../winx64" #directory to install to when finished
 | 
			
		||||
builddir = "./build_msvc64"
 | 
			
		||||
 | 
			
		||||
doinstall = False   #copies the build_output to the install dir when finished
 | 
			
		||||
doinstall = True   #copies the build_output to the install dir when finished
 | 
			
		||||
cc = "cl" #compiler
 | 
			
		||||
cflags = "/O2"
 | 
			
		||||
libraries = "lib{}.lib".format(libname)
 | 
			
		||||
cflags = "/O2 /EHsc"
 | 
			
		||||
libraries = "lib{}.lib libamsmathutil2.msvc64.lib".format(libname)
 | 
			
		||||
libdirs = "/LIBPATH:{} /LIBPATH:{}/lib /LIBPATH:{}/lib".format(builddir,commondir,depdir)
 | 
			
		||||
linkerflags = ""
 | 
			
		||||
linkerflags = "-static -static-libgcc -Wl,-rpath=."
 | 
			
		||||
srcexts = [".c",".cpp"]
 | 
			
		||||
binsrc = ["main.c","main.cpp"] #ignore these files when compiling the static library
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								build_msvc64/libamscppnarray.msvc64.lib
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								build_msvc64/libamscppnarray.msvc64.lib
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								build_msvc64/objstore/amscppnarray.obj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								build_msvc64/objstore/amscppnarray.obj
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								build_msvc64/objstore/amscppnarray_inits.obj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								build_msvc64/objstore/amscppnarray_inits.obj
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								build_msvc64/objstore/amscppnarray_math.obj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								build_msvc64/objstore/amscppnarray_math.obj
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								build_msvc64/objstore/amscppnarray_random.obj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								build_msvc64/objstore/amscppnarray_random.obj
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								build_msvc64/tests
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								build_msvc64/tests
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								build_msvc64/tests.exe
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								build_msvc64/tests.exe
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@ -86,7 +86,27 @@ template<typename T> class narray
 | 
			
		||||
    T min() const;
 | 
			
		||||
    T max() const;
 | 
			
		||||
 | 
			
		||||
    //insertions and deletions
 | 
			
		||||
    // naive, assumes no ordering to the array
 | 
			
		||||
 | 
			
		||||
    //inserts a value at (before) index ind
 | 
			
		||||
    //insert(0,val) would give {val, oldval0, oldval1, ...}
 | 
			
		||||
    //insert(N,val)
 | 
			
		||||
    int insert(const narray_size_t ind, const T val);
 | 
			
		||||
    
 | 
			
		||||
    //removes the value at index ind, and reduces array size by 1
 | 
			
		||||
    int erase(const narray_size_t ind);
 | 
			
		||||
 | 
			
		||||
    //finds the first instance of val in the array
 | 
			
		||||
    narray_size_t find(const T val);
 | 
			
		||||
 | 
			
		||||
    //finds the next instance of val, starting consideration at indstart
 | 
			
		||||
    narray_size_t findnext(const narray_size_t indstart, const T val);
 | 
			
		||||
 | 
			
		||||
    //finds where to insert a particular value such that the list remains ordered
 | 
			
		||||
    narray_size_t find_insert_ordered(const T val);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    //subarray operations
 | 
			
		||||
    narray<T> subarray(const narray_size_t ind1, const narray_size_t ind2) const;
 | 
			
		||||
 | 
			
		||||
@ -103,6 +123,9 @@ template<typename T> class narray
 | 
			
		||||
    const_iterator cbegin() const { return data; }
 | 
			
		||||
    const_iterator cend() const { return data+length;}
 | 
			
		||||
 | 
			
		||||
    //printf (must be template specialized)
 | 
			
		||||
    void print(int printstyle = 0);
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//Initializers
 | 
			
		||||
@ -124,6 +147,9 @@ void test_narray1();
 | 
			
		||||
void test_narray2();
 | 
			
		||||
void test_narray3();
 | 
			
		||||
 | 
			
		||||
void test_insertdelete1();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}; //end namespace narray
 | 
			
		||||
}; //end namespace ams
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -338,6 +338,186 @@ template<typename T> const narray_size_t narray<T>::size() const
 | 
			
		||||
    return length;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//inserts a value at (before) index ind
 | 
			
		||||
//insert(0,val) would give {val, oldval0, oldval1, ...}
 | 
			
		||||
//insert(N,val)
 | 
			
		||||
template<typename T> int narray<T>::insert(const narray_size_t ind, const T val)
 | 
			
		||||
{
 | 
			
		||||
    int ret = narray_success;
 | 
			
		||||
    int res;
 | 
			
		||||
    narray<T> narr;
 | 
			
		||||
    narray_size_t I;
 | 
			
		||||
 | 
			
		||||
    if(ind<0)
 | 
			
		||||
    {
 | 
			
		||||
        ret = narray_failure;
 | 
			
		||||
        return ret;
 | 
			
		||||
    }
 | 
			
		||||
    else if(ind<=this->length)
 | 
			
		||||
    {
 | 
			
		||||
        res = narr.resize(this->length+1);
 | 
			
		||||
        if(res!=narray_success)
 | 
			
		||||
        {
 | 
			
		||||
            ret = narray_failure;
 | 
			
		||||
            return ret;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if(this->data!=NULL)
 | 
			
		||||
        {
 | 
			
		||||
            for(I=0;I<ind && I<this->length;I++)
 | 
			
		||||
            {
 | 
			
		||||
                narr.data[I] = this->data[I];
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        narr.data[ind] = val;
 | 
			
		||||
        if(this->data!=NULL)
 | 
			
		||||
        {
 | 
			
		||||
            for(I=ind+1;I<narr.length;I++)
 | 
			
		||||
            {
 | 
			
		||||
                narr.data[I] = this->data[I-1];
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //steal data from narr
 | 
			
		||||
        if(this->data!=NULL) {delete[] this->data; this->data=NULL;}
 | 
			
		||||
        this->length = narr.length;
 | 
			
		||||
        this->data = narr.data;
 | 
			
		||||
        narr.length = 0;
 | 
			
		||||
        narr.data = NULL;
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        //inserting past the end of the array
 | 
			
		||||
        res = narr.resize(ind+1);
 | 
			
		||||
        if(res!=narray_success)
 | 
			
		||||
        {
 | 
			
		||||
            ret = narray_failure;
 | 
			
		||||
            return ret;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if(this->data!=NULL)
 | 
			
		||||
        {
 | 
			
		||||
            for(I=0;I<this->length;I++)
 | 
			
		||||
            {
 | 
			
		||||
                narr.data[I] = this->data[I];
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        narr.data[ind] = val;
 | 
			
		||||
 | 
			
		||||
        //steal data from narr
 | 
			
		||||
        if(this->data!=NULL) {delete[] this->data; this->data=NULL;}
 | 
			
		||||
        this->length = narr.length;
 | 
			
		||||
        this->data = narr.data;
 | 
			
		||||
        narr.length = 0;
 | 
			
		||||
        narr.data = NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//removes the value at index ind, and reduces array size by 1
 | 
			
		||||
template<typename T> int narray<T>::erase(const narray_size_t ind)
 | 
			
		||||
{
 | 
			
		||||
    int ret = narray_success;
 | 
			
		||||
    int res;
 | 
			
		||||
    narray<T> narr;
 | 
			
		||||
    narray_size_t I;
 | 
			
		||||
 | 
			
		||||
    if(ind<0 || ind>=this->length)
 | 
			
		||||
    {
 | 
			
		||||
        ret = narray_failure;
 | 
			
		||||
        return ret;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    res = narr.resize(this->length-1);
 | 
			
		||||
    if(res!=narray_success)
 | 
			
		||||
    {
 | 
			
		||||
        ret = narray_failure;
 | 
			
		||||
        return ret;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if(this->data!=NULL)
 | 
			
		||||
    {
 | 
			
		||||
        for(I=0;I<ind && I<this->length && I<narr.length;I++)
 | 
			
		||||
        {
 | 
			
		||||
            narr.data[I] = this->data[I];
 | 
			
		||||
        }
 | 
			
		||||
        for(I=ind+1;I<this->length && (I-1)<narr.length;I++)
 | 
			
		||||
        {
 | 
			
		||||
            narr.data[I-1] = this->data[I];
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //steal data from narr (should be similar to what std::move would do?)
 | 
			
		||||
    if(this->data!=NULL) {delete[] this->data; this->data=NULL;}
 | 
			
		||||
    this->length = narr.length;
 | 
			
		||||
    this->data = narr.data;
 | 
			
		||||
    narr.length = 0;
 | 
			
		||||
    narr.data = NULL;
 | 
			
		||||
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//finds the first instance of val in the array
 | 
			
		||||
template<typename T> narray_size_t narray<T>::find(const T val)
 | 
			
		||||
{
 | 
			
		||||
    narray_size_t ret = -1;
 | 
			
		||||
    narray_size_t I;
 | 
			
		||||
 | 
			
		||||
    for(I=0;I<this->length;I++)
 | 
			
		||||
    {
 | 
			
		||||
        if(this->data[I]==val)
 | 
			
		||||
        {
 | 
			
		||||
            ret = I;
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//finds the next instance of val, starting consideration at indstart
 | 
			
		||||
template<typename T> narray_size_t narray<T>::findnext(const narray_size_t indstart, const T val)
 | 
			
		||||
{
 | 
			
		||||
    narray_size_t ret = -1;
 | 
			
		||||
    narray_size_t I;
 | 
			
		||||
 | 
			
		||||
    for(I=indstart;I<this->length;I++)
 | 
			
		||||
    {
 | 
			
		||||
        if(this->data[I]==val)
 | 
			
		||||
        {
 | 
			
		||||
            ret = I;
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//finds where to insert a particular value such that the list remains ordered
 | 
			
		||||
template<typename T> narray_size_t narray<T>::find_insert_ordered(const T val)
 | 
			
		||||
{
 | 
			
		||||
    narray_size_t ret = -1;
 | 
			
		||||
    narray_size_t I;
 | 
			
		||||
 | 
			
		||||
    ret = 0;
 | 
			
		||||
    for(I=0;I<this->length;I++)
 | 
			
		||||
    {
 | 
			
		||||
        ret = I+1;
 | 
			
		||||
        if(this->data[I]>val)
 | 
			
		||||
        {
 | 
			
		||||
            ret = I;
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    ret = (ret<0) ? 0 : ret;
 | 
			
		||||
    ret = (ret>this->length) ? this->length : ret;
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}; //end namespace narray
 | 
			
		||||
}; //end namespace ams
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -23,11 +23,11 @@ namespace rand
 | 
			
		||||
    extern narray_rands_t dpr32_rseed; // global random number seed for numeric array class
 | 
			
		||||
    
 | 
			
		||||
    narray_rands_t dpr32_nextseed(narray_rands_t seed);
 | 
			
		||||
    double dpr32_randd(narray_rands_t *seed);
 | 
			
		||||
    float dpr32_randf(narray_rands_t *seed);
 | 
			
		||||
    double dpr32_gaussian(narray_rands_t *seed);
 | 
			
		||||
    float dpr32_gaussianf(narray_rands_t *seed);
 | 
			
		||||
    int dpr32_randint(narray_rands_t *seed, int low, int high);
 | 
			
		||||
    double dpr32_randd(narray_rands_t *seed = &(ams::narray::rand::dpr32_rseed));
 | 
			
		||||
    float dpr32_randf(narray_rands_t *seed = &(ams::narray::rand::dpr32_rseed));
 | 
			
		||||
    double dpr32_gaussian(narray_rands_t *seed = &(ams::narray::rand::dpr32_rseed));
 | 
			
		||||
    float dpr32_gaussianf(narray_rands_t *seed = &(ams::narray::rand::dpr32_rseed));
 | 
			
		||||
    int dpr32_randint(int low, int high, narray_rands_t *seed = &(ams::narray::rand::dpr32_rseed));
 | 
			
		||||
    
 | 
			
		||||
    ams::vect2 dpr32_randuvect2(narray_rands_t *seed);
 | 
			
		||||
    ams::vect3 dpr32_randuvect3(narray_rands_t *seed);
 | 
			
		||||
 | 
			
		||||
@ -5,6 +5,65 @@ namespace ams
 | 
			
		||||
namespace narray
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
template<> void narray<float>::print(const int printstyle)
 | 
			
		||||
{
 | 
			
		||||
    narray_size_t I;
 | 
			
		||||
 | 
			
		||||
    printf("{");
 | 
			
		||||
    for(I=0;I<this->length-1;I++)
 | 
			
		||||
    {
 | 
			
		||||
        printf("%1.3f,",this->data[I]);
 | 
			
		||||
    }
 | 
			
		||||
    if(this->length>=1) printf("%1.3f",this->data[this->length-1]);
 | 
			
		||||
    printf("}");
 | 
			
		||||
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<> void narray<double>::print(const int printstyle)
 | 
			
		||||
{
 | 
			
		||||
    narray_size_t I;
 | 
			
		||||
 | 
			
		||||
    printf("{");
 | 
			
		||||
    for(I=0;I<this->length-1;I++)
 | 
			
		||||
    {
 | 
			
		||||
        printf("%1.3f,",this->data[I]);
 | 
			
		||||
    }
 | 
			
		||||
    if(this->length>=1) printf("%1.3f",this->data[this->length-1]);
 | 
			
		||||
    printf("}");
 | 
			
		||||
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<> void narray<int>::print(const int printstyle)
 | 
			
		||||
{
 | 
			
		||||
    narray_size_t I;
 | 
			
		||||
 | 
			
		||||
    printf("{");
 | 
			
		||||
    for(I=0;I<this->length-1;I++)
 | 
			
		||||
    {
 | 
			
		||||
        printf("%d,",this->data[I]);
 | 
			
		||||
    }
 | 
			
		||||
    if(this->length>=1) printf("%d",this->data[this->length-1]);
 | 
			
		||||
    printf("}");
 | 
			
		||||
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<> void narray<long>::print(const int printstyle)
 | 
			
		||||
{
 | 
			
		||||
    narray_size_t I;
 | 
			
		||||
 | 
			
		||||
    printf("{");
 | 
			
		||||
    for(I=0;I<this->length-1;I++)
 | 
			
		||||
    {
 | 
			
		||||
        printf("%ld,",this->data[I]);
 | 
			
		||||
    }
 | 
			
		||||
    if(this->length>=1) printf("%ld",this->data[this->length-1]);
 | 
			
		||||
    printf("}");
 | 
			
		||||
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void test_narray1()
 | 
			
		||||
{
 | 
			
		||||
@ -110,6 +169,62 @@ void test_narray3()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void test_insertdelete1()
 | 
			
		||||
{
 | 
			
		||||
    narray<int> q;
 | 
			
		||||
    int I,J,K;
 | 
			
		||||
 | 
			
		||||
    q.insert(0,1);
 | 
			
		||||
    q.print(); printf("\n");
 | 
			
		||||
    q.insert(0,2);
 | 
			
		||||
    q.print(); printf("\n");
 | 
			
		||||
    q.insert(0,3);
 | 
			
		||||
    q.print(); printf("\n");
 | 
			
		||||
    q.insert(-1,1);
 | 
			
		||||
    q.print(); printf("\n");
 | 
			
		||||
    q.insert(10,99);
 | 
			
		||||
    q.print(); printf("\n");
 | 
			
		||||
 | 
			
		||||
    I = 3;
 | 
			
		||||
    printf("q.find(%d)=%d\n",I,(int)q.find(I));
 | 
			
		||||
    I = 1;
 | 
			
		||||
    printf("q.find(%d)=%d\n",I,(int)q.find(I));
 | 
			
		||||
    I = 5;
 | 
			
		||||
    printf("q.find(%d)=%d\n",I,(int)q.find(I));
 | 
			
		||||
    I = 99;
 | 
			
		||||
    printf("q.find(%d)=%d\n",I,(int)q.find(I));
 | 
			
		||||
 | 
			
		||||
    I = 1;
 | 
			
		||||
    printf("q.findinsert(%d)=%d\n",I,(int)q.find_insert_ordered(I));
 | 
			
		||||
    I = -1;
 | 
			
		||||
    printf("q.findinsert(%d)=%d\n",I,(int)q.find_insert_ordered(I));
 | 
			
		||||
    I = 5;
 | 
			
		||||
    printf("q.findinsert(%d)=%d\n",I,(int)q.find_insert_ordered(I));
 | 
			
		||||
    I = 99;
 | 
			
		||||
    printf("q.findinsert(%d)=%d\n",I,(int)q.find_insert_ordered(I));
 | 
			
		||||
    I = 100;
 | 
			
		||||
    printf("q.findinsert(%d)=%d\n",I,(int)q.find_insert_ordered(I));
 | 
			
		||||
 | 
			
		||||
    q.erase(0);
 | 
			
		||||
    q.print(); printf("\n");
 | 
			
		||||
    q.erase(-1);
 | 
			
		||||
    q.print(); printf("\n");
 | 
			
		||||
    q.erase(q.length);
 | 
			
		||||
    q.print(); printf("\n");
 | 
			
		||||
    q.erase(q.length-1);
 | 
			
		||||
    q.print(); printf("\n");
 | 
			
		||||
 | 
			
		||||
    q.resize(0);
 | 
			
		||||
    for(I=0;I<25;I++)
 | 
			
		||||
    {
 | 
			
		||||
        J = rand::dpr32_randint(5,25);
 | 
			
		||||
        K = q.find_insert_ordered(J);
 | 
			
		||||
        q.insert(K,J);
 | 
			
		||||
        q.print(); printf("\n");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
}; //end namespace narray
 | 
			
		||||
}; //end namespace ams
 | 
			
		||||
@ -455,15 +455,15 @@ namespace rand
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    int dpr32_randint(narray_rands_t *seed, int low, int high)
 | 
			
		||||
    int dpr32_randint(int low, int high, narray_rands_t *seed)
 | 
			
		||||
    {
 | 
			
		||||
        int ret = 0;
 | 
			
		||||
        int val;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        if(high-low>0)
 | 
			
		||||
        {
 | 
			
		||||
            *seed = dpr32_nextseed(*seed);
 | 
			
		||||
            val = low + (int)(*seed)%(high-low);
 | 
			
		||||
            ret = low + (int)((*seed)%(high-low));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return ret;
 | 
			
		||||
@ -472,7 +472,7 @@ namespace rand
 | 
			
		||||
    template<typename T> void narray_rand_threadf2(
 | 
			
		||||
        narray<T> *out,
 | 
			
		||||
        narray<narray_rands_t> *rseeds,
 | 
			
		||||
        T (*randfunc)(narray_rands_t *, T, T),
 | 
			
		||||
        T (*randfunc)(T, T, narray_rands_t*),
 | 
			
		||||
        T low,
 | 
			
		||||
        T highexcl,
 | 
			
		||||
        int threadnum,
 | 
			
		||||
@ -485,7 +485,7 @@ namespace rand
 | 
			
		||||
        I1 = (threadnum>=(nthreads-1)) ? out->length : Is*(threadnum+1);
 | 
			
		||||
        for(I=I0;I<I1;I++)
 | 
			
		||||
        {
 | 
			
		||||
            out->data[I] = randfunc(&(rseeds->data[threadnum]),low,highexcl);
 | 
			
		||||
            out->data[I] = randfunc(low,highexcl,&(rseeds->data[threadnum]));
 | 
			
		||||
        }
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
@ -493,7 +493,7 @@ namespace rand
 | 
			
		||||
    template<typename T> void narray_random_threadexec2(
 | 
			
		||||
        narray<T> *out,
 | 
			
		||||
        narray_size_t N,
 | 
			
		||||
        T (*randfunc)(narray_rands_t *, T, T),
 | 
			
		||||
        T (*randfunc)(T, T, narray_rands_t *),
 | 
			
		||||
        T low,
 | 
			
		||||
        T highexcl,
 | 
			
		||||
        narray_rands_t *rseed
 | 
			
		||||
@ -518,7 +518,7 @@ namespace rand
 | 
			
		||||
            //single threaded
 | 
			
		||||
            for(I=0;I<N;I++)
 | 
			
		||||
            {
 | 
			
		||||
                out->data[I] = randfunc(rseed,low,highexcl);
 | 
			
		||||
                out->data[I] = randfunc(low,highexcl,rseed);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
 | 
			
		||||
@ -8,8 +8,9 @@ int main(int argc, char* argv[])
 | 
			
		||||
    // ams::narray::test_narray2();
 | 
			
		||||
    // ams::narray::test_narray3();
 | 
			
		||||
    // ams::narray::narray_testmath1();
 | 
			
		||||
    ams::narray::narray_testmath2();
 | 
			
		||||
    //ams::narray::narray_testmath2();
 | 
			
		||||
    //ams::narray::narray_testmath3();
 | 
			
		||||
    ams::narray::test_insertdelete1();
 | 
			
		||||
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user