У меня есть этот код, который, как предполагается, выполняет операцию daxpy двух векторов и выводит результат, но он дает мне 3 4, когда я запускаю его (я думаю, что это должно дать мне 3 6).Почему эта daxpy не работает в C++?
Мне кажется, что у меня что-то имеет ключевое значение в отношении daxpy, но я понятия не имею, что это такое.
Вот код:
#include <iostream>
using namespace std;
extern "C"
{
double daxpy_(double *A, double *B, int *n, double *a);
//The daxpy fortran function shown above multiplies a first matrix 'A' by a constant 'a'
//and adds the result to a second matrix 'B.' Both matrices are of size 'n.'
}
void daxpy(double *A, double *B, int n, double a);
//The function above is declared in order to utilize c-notation to perform the fortran
//daxpy function which takes a first matrix 'A' and multiplies the matrix by a costant 'a'
//and then adds the result to a second matrix 'B.'
int main(int argc, char *argv[])
{
double A[3], B[3];
int n=3;
double a=1.0;
for (int i=0;i<3;i++)
{
A[i]=2;
B[i]=4;
}
daxpy(A, B, n, a);
for (int i=0;i<3;i++)
{
cout << B[i] << endl;
}
}
void daxpy(double *A, double *B, int n, double a)
{
for (int i=0;i<n;i++)
{
B[i]=daxpy_(A, B, &n, &a);
}
}
о ... правильно. Это работает. Тем не менее, я все равно не получаю правильный ответ. – Mechy
Не понимаю. Мой цикл for только доходит до 2 так, как есть. Поскольку условие, которое я установил, было то, что я должен быть меньше 3. Как только он достигнет 3, он не будет работать. О, неважно. Я понимаю, о чем вы сейчас говорили. Это исправлено – Mechy
Это то, что он должен делать. Таким образом вы индексируете 'A [0]', 'A [1]' и 'A [2]', которые являются всеми элементами в векторе длины 3. –