diff --git a/scikits/learn/src/cblas/ATL_drefcopy.c b/scikits/learn/src/cblas/ATL_drefcopy.c new file mode 100644 index 0000000000000000000000000000000000000000..6e7cae5da8262ac3e70ea4546c5ca04b78efd0b7 --- /dev/null +++ b/scikits/learn/src/cblas/ATL_drefcopy.c @@ -0,0 +1,148 @@ +/* --------------------------------------------------------------------- + * + * -- Automatically Tuned Linear Algebra Software (ATLAS) + * (C) Copyright 2000 All Rights Reserved + * + * -- ATLAS routine -- Version 3.9.24 -- December 25, 2000 + * + * Author : Antoine P. Petitet + * Originally developed at the University of Tennessee, + * Innovative Computing Laboratory, Knoxville TN, 37996-1301, USA. + * + * --------------------------------------------------------------------- + * + * -- Copyright notice and Licensing terms: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions, and the following disclaimer in + * the documentation and/or other materials provided with the distri- + * bution. + * 3. The name of the University, the ATLAS group, or the names of its + * contributors may not be used to endorse or promote products deri- + * ved from this software without specific written permission. + * + * -- Disclaimer: + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- + * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEO- + * RY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (IN- + * CLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * --------------------------------------------------------------------- + */ +/* + * Include files + */ +#include "atlas_refmisc.h" +#include "atlas_reflevel1.h" + +void ATL_drefcopy +( + const int N, + const double * X, + const int INCX, + double * Y, + const int INCY +) +{ +/* + * Purpose + * ======= + * + * ATL_drefcopy copies the entries of an n-vector x into an n-vector y. + * + * Arguments + * ========= + * + * N (input) const int + * On entry, N specifies the length of the vector x. N must be + * at least zero. Unchanged on exit. + * + * X (input) const double * + * On entry, X points to the first entry to be accessed of an + * incremented array of size equal to or greater than + * ( 1 + ( n - 1 ) * abs( INCX ) ) * sizeof( double ), + * that contains the vector x. Unchanged on exit. + * + * INCX (input) const int + * On entry, INCX specifies the increment for the elements of X. + * INCX must not be zero. Unchanged on exit. + * + * Y (input/output) double * + * On entry, Y points to the first entry to be accessed of an + * incremented array of size equal to or greater than + * ( 1 + ( n - 1 ) * abs( INCY ) ) * sizeof( double ), + * that contains the vector y. On exit, the entries of the in- + * cremented array X are copied into the entries of the incre- + * mented array Y. + * + * INCY (input) const int + * On entry, INCY specifies the increment for the elements of Y. + * INCY must not be zero. Unchanged on exit. + * + * --------------------------------------------------------------------- + */ +/* + * .. Local Variables .. + */ + register double x0, x1, x2, x3, x4, x5, x6, x7; + double * StX; + register int i; + int nu; + const int incX2 = 2 * INCX, incY2 = 2 * INCY, + incX3 = 3 * INCX, incY3 = 3 * INCY, + incX4 = 4 * INCX, incY4 = 4 * INCY, + incX5 = 5 * INCX, incY5 = 5 * INCY, + incX6 = 6 * INCX, incY6 = 6 * INCY, + incX7 = 7 * INCX, incY7 = 7 * INCY, + incX8 = 8 * INCX, incY8 = 8 * INCY; +/* .. + * .. Executable Statements .. + * + */ + if( N > 0 ) + { + if( ( nu = ( N >> 3 ) << 3 ) != 0 ) + { + StX = (double *)X + nu * INCX; + + do + { + x0 = (*X); x4 = X[incX4]; x1 = X[INCX ]; x5 = X[incX5]; + x2 = X[incX2]; x6 = X[incX6]; x3 = X[incX3]; x7 = X[incX7]; + + *Y = x0; Y[incY4] = x4; Y[INCY ] = x1; Y[incY5] = x5; + Y[incY2] = x2; Y[incY6] = x6; Y[incY3] = x3; Y[incY7] = x7; + + X += incX8; + Y += incY8; + + } while( X != StX ); + } + + for( i = N - nu; i != 0; i-- ) + { + x0 = (*X); + *Y = x0; + + X += INCX; + Y += INCY; + } + } +/* + * End of ATL_drefcopy + */ +} diff --git a/scikits/learn/src/cblas/cblas_dcopy.c b/scikits/learn/src/cblas/cblas_dcopy.c new file mode 100644 index 0000000000000000000000000000000000000000..cb1f13cf8748e807241670d184e1e87dbba777a9 --- /dev/null +++ b/scikits/learn/src/cblas/cblas_dcopy.c @@ -0,0 +1,52 @@ +/* + * Automatically Tuned Linear Algebra Software v3.9.25 + * (C) Copyright 1999 R. Clint Whaley + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions, and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the ATLAS group or the names of its contributers may + * not be used to endorse or promote products derived from this + * software without specific written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ATLAS GROUP OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ + +#define DREAL +#include "atlas_misc.h" +#ifdef ATL_USEPTHREADS + #include "atlas_ptalias1.h" +#endif +#include "atlas_level1.h" +#include "cblas.h" + +void cblas_dcopy(const int N, const double *X, const int incX, + double *Y, const int incY) +{ + if (N > 0) + { + if (incX < 0) + { + if (incY < 0) ATL_dcopy(N, X, -incX, Y, -incY); + else ATL_dcopy(N, X+(1-N)*incX, incX, Y, incY); + } + else if (incY < 0) ATL_dcopy(N, X+(N-1)*incX, -incX, Y, -incY); + else ATL_dcopy(N, X, incX, Y, incY); + } +}