小编Mik*_*man的帖子

用lapack计算倒数条件数(即rcond(x))

我希望使用来自C的LAPACK来完成MATLAB/Octave中的rcond操作.MATLAB手册告诉我使用了dgecon,这是使用基于1的规范.

我为一个非常简单的案例写了一个简单的测试程序; [1,1; 1,0]对于此输入,matlab和octave使用rcond和1/cond(x,1)给出0.25,但在使用LAPACK的情况下,此示例程序打印0.0.对于其他情况,例如身份,它会打印正确的值.

由于MATLAB实际上是成功使用这个例程,我做错了什么?我试图破译Octave所做的事情,因为它包含了很少的成功

#include <stdio.h>

extern void dgecon_(const char *norm, const int *n, const double *a, 
     const int *lda, const double *anorm, double *rcond, double *work, 
     int *iwork, int *info, int len_norm);

int main()
{
    int i, info, n, lda;
    double anorm, rcond;

    double w[8] = { 0,0,0,0,0,0,0,0 };

    int iw[2] = { 0,0 };

    double x[4] = { 1, 1, 1, 0 };
    anorm = 2.0; /* maximum column sum, computed manually */
    n = 2;
    lda …
Run Code Online (Sandbox Code Playgroud)

c fortran lapack

7
推荐指数
1
解决办法
2198
查看次数

查找未使用的对象(非原始值)

跟进问题:g ++没有显示"未使用"警告.

我完全理解为什么g ++没有警告这些变量,但我还是想以某种方式找到它们.我正在处理的代码没有任何特殊情况,所以单个FloatArray x;几乎绝对是遗留下来的.

即使我必须标记单个类(例如警告未使用的FloatArray对象),它也会非常有用.我能做什么?

c++ g++

6
推荐指数
1
解决办法
809
查看次数

避免使用std :: list中的指针

我尽量避免使用指针,而不是做

std::list<std::pair<int,int>* > myList;
void addElement(int a, int b) {
    myList.push_back(new std::pair<int,int>(a,b));
}
Run Code Online (Sandbox Code Playgroud)

我想我可以做点什么

std::list<std::pair<int,int> > myList;
void addElement(int a, int b) { 
    std::pair<int,int> p(a,b);
    myList.push_back(p);
}
Run Code Online (Sandbox Code Playgroud)

如果我理解正确的行为,这应该存储该对的副本,并在执行时自动删除它myList.clear()(而不是指针).

这是最好的方法吗?我可以期望编译器优化掉不必要的对象p吗?

c++ list std

4
推荐指数
2
解决办法
285
查看次数

标签 统计

c++ ×2

c ×1

fortran ×1

g++ ×1

lapack ×1

list ×1

std ×1