易截截图软件、单文件、免安装、纯绿色、仅160KB

SVD分解C实现

int svd(int m,int n,int withu,int withv,double eps,double tol,
double *a, double *q, double *u, double *v, double *vt)
{

int i,j,k,l,l1,iter,retval;
double c,f,g,h,s,x,y,z;
double *e;

e = (double *)calloc(n,sizeof(double));

retval = 0;
/* Copy 'a' to 'u' */
for (i=0;i<m;i++) {
for (j=0;j<n;j++)
u[i*n + j] = a[i*n + j];
}

/* Householder's reduction to bidiagonal form. */
g = x = 0.0;

for (i=0;i<n;i++) {

e[i] = g;
s = 0.0;
l = i+1;

for (j=i;j<m;j++)
s += (u[j*n+i]*u[j*n+i]);

if (s < tol)
g = 0.0;

else {

f = u[i*n+i];

g = (f < 0) ? sqrt(s) : -sqrt(s);

h = f * g - s;

u[i*n+i] = f - g;

for (j=l;j<n;j++) {

s = 0.0;

for (k=i;k<m;k++)
s += (u[k*n+i] * u[k*n+j]);

f = s / h;

for (k=i;k<m;k++)
u[k*n+j] += (f * u[k*n+i]);

}
/* end j */
}
/* end s */
q[i] = g;

s = 0.0;

for (j=l;j<n;j++)
s += (u[i*n+j] * u[i*n+j]);

if (s < tol)
g = 0.0;

else {

f = u[i*n+i+1];

g = (f < 0) ? sqrt(s) : -sqrt(s);

h = f * g - s;

u[i*n+i+1] = f - g;

for (j=l;j<n;j++)
e[j] = u[i*n+j]/h;

for (j=l;j<m;j++) {

s = 0.0;


相关文档:

C程序员的情书

#include <stdio.h>
#include <string.h>
int
main(void)
{
char str[] =
"3BVPSq4xF.K?=u#,"
"G'K<MrDnRr7gH%#,"
"XKf<f%G`w^=?C<#,"
"HgU_AnNR?*PDQU#,"
......

Linux c 数据类型

当Linux内核在体系结构差异较大的平台之间移植时,会产生与数据类型相关的问题。
.在编译内核时使用 -Wall  -W strict-prototypes 选项, 可以避免很多错误的发生
.内核使用的基本数据类型主要有:
     int           标准C语言整数类型
&n ......

c程序设计语言习题1 9

联系1-9编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替。
#include "stdio.h"
main(){
int c;
int flag;
flag=0;//是否空格标志
while ((c=getchar())!=EOF){
if (c!=32) {
putchar(c);
flag=0;
}else if(flag==0){
flag=1;
putchar(c);
}

/* ......

使用C语言扩展Python(四)

上一篇里的LAME项目已经展示了python如何与C语言交互,但程序仍不够理想,在python这一端仅仅是传递源文件和目标文件的路径,再调用C模块的encode方法来进行编码,但问题在于你无法控制encode函数,比如你想编码的源文件如果不是原始数据,而是wav文件或者其他格式呢?对于这个问题,有两种方法可以选择,一种模仿前面的C模 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号