99网
您的当前位置:首页[C++]clapack在vs2019或者vs2022安装后测试代码

[C++]clapack在vs2019或者vs2022安装后测试代码

来源:99网

测试环境:

vs2019

clapack==3.2.1

源码:

#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"    
#include "f2c.h"  
// 因为程序是 C++ ,而 CLAPACK 是 C 语言写的,所以在此处用 extern 关键字
extern "C"
{

#include <clapack.h>
}

#define SIZE 4  

int main()
{
    char JOBU;
    char JOBVT;

    int i;

    integer M = SIZE;
    integer N = SIZE;

    integer LDA = M;
    integer LDU = M;
    integer LDVT = N;
    integer LWORK;
    integer INFO;

    integer mn = min(M, N);
    integer MN = max(M, N);

    double a[SIZE * SIZE] = { 16.0, 5.0, 9.0, 4.0, 2.0, 11.0, 7.0, 14.0, 3.0, 10.0, 6.0, 15.0, 13.0, 8.0, 12.0, 1.0 };
    double s[SIZE];
    double wk[201];
    double uu[SIZE * SIZE];
    double vt[SIZE * SIZE];

    JOBU = 'A';
    JOBVT = 'A';
    LWORK = 201;

    /* Subroutine int dgesvd_(char *jobu, char *jobvt, integer *m, integer *n,
    doublereal *a, integer *lda, doublereal *s, doublereal *u, integer *
    ldu, doublereal *vt, integer *ldvt, doublereal *work, integer *lwork,
    integer *info)
    */

    dgesvd_(&JOBU, &JOBVT, &M, &N, a, &LDA, s, uu,
        &LDU, vt, &LDVT, wk, &LWORK, &INFO);

    if (INFO > 0) {
        printf("The algorithm computing SVD failed to converge\n");
        return 1;
    }

    for (i = 0; i < SIZE; i++) {
        printf("\n s[ %d ] = %f", i, s[i]);
    }
    return 0;
}

运行结果:

因篇幅问题不能全部显示,请点此查看更多更全内容