Pregunta

En el nivel 1 BLAS hay ASUM * y * NRM2 que computar las normas L1 y L2 de vectores, pero ¿cómo uno de cómputo del (firmado) suma de un vector? Tiene que haber algo mejor que llenar otro vector completo de unos y haciendo un * DOT ...

¿Fue útil?

Solución

BLAS no proporciona una operación de suma horizontal como que está buscando, porque no es una operación que con frecuencia se necesita por las bibliotecas de álgebra lineal.

Muchas bibliotecas DSP lo proporcionar esta operación; por ejemplo, en OS X y iOS que utilizaría la función vDSP_sve( ) proporcionada por el marco Acelerar. Por desgracia, las bibliotecas DSP disponibles tienden a variar mucho de una plataforma a otra, por lo que tendría que saber más sobre qué plataforma [s] de orientación.

Otros consejos

Una forma es utilizar un producto de punto con un vector de unos, más específicamente para utilizar la función cblas_caxpy.

Se puede hacer un producto punto en el que el segundo vector tiene un incremento igual a cero. Usando C sería de esta manera:

int n;
int ix = 1;
int iy = 0;
double y = 1.0;

ddot_(&n, x, &ix, &y, &iy);

Como se ve en http://www.netlib.org/blas/blasqr.pdf , soportes xAXPY suma vectorial.

introducir descripción de la imagen aquí

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top