#include "blas.h"
int dtrsv_(char *uplo, char *trans, char *diag, int *n, double *a,
int *lda, double *x, int *incx)
{
int info;
long i, j, ix, jx, kx;
double temp;
blasbool upper, notrans, nounit;
/* pointers for testing */
double *pa;
/* Dereferenced input variables */
long nn, dima, iincx;
/* Dependencies */
extern int xerbla_(char *, int *);
/* Purpose
=======
DTRSV solves one of the systems of equations
A*x = b, or A'*x = b,
where b and x are n element vectors and A is an n by n unit, or
non-unit, upper or lower triangular matrix.
No test for singularity or near-singularity is included in this
routine. Such tests must be performed before calling this routine.
Parameters
==========
UPLO - CHARACTER*1.
On entry, UPLO specifies whether the matrix is an upper or
lower triangular matrix as follows:
UPLO = 'U' or 'u' A is an upper triangular matrix.
UPLO = 'L' or 'l' A is a lower triangular matrix.
Unchanged on exit.
TRANS - CHARACTER*1.
On entry, TRANS specifies the equations to be solved as
follows:
TRANS = 'N' or 'n' A*x = b.
TRANS = 'T' or 't' A'*x = b.
TRANS = 'C' or 'c' A'*x = b.
Unchanged on exit.
DIAG - CHARACTER*1.
On entry, DIAG specifies whether or not A is unit
triangular as follows:
DIAG = 'U' or 'u' A is assumed to be unit triangular.
DIAG = 'N' or 'n' A is not assumed to be unit
triangular.
Unchanged on exit.
N - INTEGER.
On entry, N specifies the order of the matrix A.
N must be at least zero.
Unchanged on exit.
A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
Before entry with UPLO = 'U' or 'u', the leading n by n
upper triangular part of the array A must contain the upper
triangular matrix and the strictly lower triangular part of
A is not referenced.
Before entry with UPLO = 'L' or 'l', the leading n by n
lower triangular part of the array A must contain the lower
triangular matrix and the strictly upper triangular part of
A is not referenced.
Note that when DIAG = 'U' or 'u', the diagonal elements of
A are not referenced either, but are assumed to be unity.
Unchanged on exit.
LDA - INTEGER.
On entry, LDA specifies the first dimension of A as declared
in the calling (sub) program. LDA must be at least
max( 1, n ).
Unchanged on exit.
X - DOUBLE PRECISION array of dimension at least
( 1 + ( n - 1 )*abs( INCX ) ).
Before entry, the incremented array X must contain the n
element right-hand side vector b. On exit, X is overwritten
with the solution vector x.
INCX - INTEGER.
On entry, INCX specifies the increment for the elements of
X. INCX must not be zero.
Unchanged on exit.
Level 2 Blas routine.
-- Written on 22-October-1986.
Jack Dongarra, Argonne National Lab.
Jeremy Du Croz, Nag Central Office.
Sven Hammarling, Nag Central Office.
Richard Hanson, Sandia National Labs.
*/
/* Dereference the inputs */
nn = *n;
dima = *lda;
iincx = *incx;
info = 0;
switch( *uplo )
{
case 'L':
case 'l':
upper = FALSE;
break;
case 'U':
case 'u':
upper = TRUE;
break;
default:
upper = FALSE;
info = 1;
}
switch( *trans )
{
case 'N':
case 'n':
notrans = TRUE;
break;
case 'T':
case 't':
case 'C':
case 'c':
notrans = FALSE;
break;
default:
notrans = TRUE;
if( info == 0 )
info = 2;
}
switch( *diag )
{
case 'N':
case 'n':
nounit = TRUE;
break;
case 'U':
case 'u':
nounit = FALSE;
break;
default:
nounit = TRUE;
if( info == 0 )
info = 3;
}
if( info == 0 )
{
if (nn < 0) {
info = 4;
} else if (dima < MAX(1,nn)) {
info = 6;
} else if (iincx == 0) {
info = 8;
}
}
if (info != 0)
{
xerbla_("DTRSV ", &info);
return 0;
}
if (nn != 0) /* Quick return if possible. */
{
/* Start the operations. In this version the elements of A are
accessed sequentially with one pass through A. */
if (notrans) /* Form x := inv( A )*x. */
{
if (upper)
{
if (iincx == 1)
{
for (pa=a+dima*(nn-1), j=nn-1; j>=0; j--, pa-=dima)
if (x[j] != 0.0)
{
if (nounit)
x[j] /= pa[j];
temp = x[j];
for (i = j - 1; i >= 0; i--)
x[i] -= temp * pa[i];
}
}
else
{
if (iincx >= 0) /* Set up the start point in X */
jx = (nn - 1) * iincx;
else
jx = 0;
for (pa=a+dima*(nn-1), j=nn-1; j>=0; j--, pa-=dima, jx-=iincx)
{
if (x[jx] != 0.0)
{
if (nounit)
x[jx] /= pa[j];
temp = x[jx];
for (ix=jx, i=j-1; i>=0; i--)
{
ix -= iincx;
x[ix] -= temp * pa[i];
}
}
}
}
}
else
{
if (iincx == 1)
{
for (pa=a, j=0; j<nn; j++, pa+=dima)
if (x[j] != 0.0)
{
if (nounit)
x[j] /= pa[j];
temp = x[j];
for (i = j + 1; i < nn; i++)
x[i] -= temp * pa[i];
}
}
else
{
if (iincx >= 0) /* Set up the start point in X */
jx = 0;
else
jx = (1 - (nn)) * iincx;
for (pa=a, j=0; j<nn; j++, pa+=dima, jx+=iincx)
{
if (x[jx] != 0.0)
{
if (nounit)
x[jx] /= pa[j];
temp = x[jx];
for (ix=jx, i=j+1; i < nn; i++)
{
ix += iincx;
x[ix] -= temp * pa[i];
}
}
}
}
}
}
else /* Form x := inv( A' )*x. */
{
if (upper)
{
if (iincx == 1)
{
for (pa=a, j=0; j<nn; j++, pa+=dima)
{
temp = x[j];
for (i = 0; i < j; i++)
temp -= pa[i] * x[i];
if (nounit)
temp /= pa[i];
x[j] = temp;
}
}
else
{
if (iincx >= 0) /* Set up the start point in X */
kx = 0;
else
kx = (1 - nn) * iincx;
for (pa=a, jx=kx, j=0; j<nn; j++, pa+=dima, jx+=iincx)
{
temp = x[jx];
for (ix=kx, i=0; i<j; i++, ix+=iincx)
temp -= pa[i] * x[ix];
if (nounit)
temp /= pa[i];
x[jx] = temp;
}
}
}
else
{
if (iincx == 1)
{
for (pa=a+dima*(nn-1), j=nn-1; j>=0; j--, pa-=dima)
{
temp = x[j];
for (i = nn-1; i > j; i--)
temp -= pa[i] * x[i];
if (nounit)
temp /= pa[i];
x[j] = temp;
}
}
else
{
if (iincx >= 0) /* Set up the start point in X */
kx = (n
没有合适的资源?快使用搜索试试~ 我知道了~
bsvm支持向量机—一种有用的机器分类器
共54个文件
c:29个
h:6个
makefile:5个
4星 · 超过85%的资源 需积分: 10 25 下载量 16 浏览量
2009-09-21
15:24:49
上传
评论
收藏 344KB ZIP 举报
温馨提示
一个不错的分类器!可用于文本分类!这是一个压缩文件,解压后里面有详细的使用过程!
资源推荐
资源详情
资源评论
收起资源包目录
bsvm-2.06.zip (54个子文件)
bsvm-2.06
dtron
dtron.c 7KB
dgpnrm.c 1KB
dgpstep.c 1KB
dprsrch.c 4KB
dtrqsol.c 2KB
dcauchy.c 5KB
dtrpcg.c 6KB
dspcg.c 7KB
dprecond.c 973B
Makefile 361B
misc.c 363B
dbreakpt.c 2KB
svm-scale.c 5KB
windows
bsvmtrain.exe 144KB
svmscale.exe 52KB
bsvmpredict.exe 88KB
svmtoy.exe 148KB
f2c
xerbla.c 1KB
dcopy.c 928B
dasum.c 1KB
blas.h 702B
dgemv.c 7KB
lsame.c 3KB
dpotf2.c 6KB
dtrsv.c 8KB
f2c.h 10KB
dscal.c 1KB
dsymv.c 7KB
dnrm2.c 1KB
blasp.h 16KB
daxpy.c 1KB
Makefile 363B
ddot.c 1KB
bsvm.cpp 67KB
vehicle.scale 176KB
svm.h 2KB
svm-toy
windows
svm-toy.cpp 11KB
qt
svm-toy.cpp 10KB
Makefile 469B
gtk
callbacks.h 2KB
main.c 398B
svm-toy.glade 6KB
interface.c 6KB
interface.h 203B
callbacks.cpp 10KB
Makefile 565B
svm-predict.c 3KB
solvebqp.c 1KB
svm-train.c 8KB
README 3KB
Makefile 791B
python
easy.py 1KB
grid.py 10KB
README 2KB
共 54 条
- 1
资源评论
- lianjingzd2013-09-15资源不错,而且分数也不多
- 亮仔2272014-03-14我以为你自己写的说明文档呢,原来是程序本来就集成的bSVM的readme文件。。。
lubiancao88
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 111111111111111111
- 咪视界.apk
- C语言期末大作业之实现成语连连看.zip
- C语言期末大作业之实现扫雷游戏.zip
- C语言期末大作业之图书信息管理系统实现-基于Dev-C++实现.zip
- tensorflow-rocm-2.13.1.600-cp39-cp39-manylinux2014-x86-64.whl
- tensorflow-gpu-2.7.0-cp39-cp39-manylinux2010-x86-64.whl
- C语言期末大作业之图书信息管理系统实现-基于VivualStudio实现.zip
- tensorflow-gpu-2.7.0-cp38-cp38-manylinux2010-x86-64.whl
- 电子科大 电路分析与模拟电路 实验报告.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功