| @@ -0,0 +1,71 @@ | |||||
| /*************************************************************************** | |||||
| Copyright (c) 2013, The OpenBLAS Project | |||||
| All rights reserved. | |||||
| 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. Neither the name of the OpenBLAS project nor the names of | |||||
| its contributors may be used to endorse or promote products | |||||
| derived from this software without specific prior 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 OPENBLAS PROJECT OR 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. | |||||
| *****************************************************************************/ | |||||
| #include "common.h" | |||||
| int CNAME(BLASLONG m, BLASLONG offset, FLOAT alpha, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *buffer) | |||||
| { | |||||
| BLASLONG i; | |||||
| BLASLONG ix,iy; | |||||
| BLASLONG jx,jy; | |||||
| BLASLONG j; | |||||
| FLOAT temp1; | |||||
| FLOAT temp2; | |||||
| #if 0 | |||||
| if( m != offset ) | |||||
| printf("Symv_U: m=%d offset=%d\n",m,offset); | |||||
| #endif | |||||
| BLASLONG m1 = m - offset; | |||||
| jx = m1 * inc_x; | |||||
| jy = m1 * inc_y; | |||||
| for (j=m1; j<m; j++) | |||||
| { | |||||
| temp1 = alpha * x[jx]; | |||||
| temp2 = 0.0; | |||||
| iy = 0; | |||||
| ix = 0; | |||||
| for (i=0; i<j; i++) | |||||
| { | |||||
| y[iy] += temp1 * a[j*lda+i]; | |||||
| temp2 += a[j*lda+i] * x[ix]; | |||||
| ix += inc_x; | |||||
| iy += inc_y; | |||||
| } | |||||
| y[jy] += temp1 * a[j*lda+j] + alpha * temp2; | |||||
| jx += inc_x; | |||||
| jy += inc_y; | |||||
| } | |||||
| return(0); | |||||
| } | |||||