/*======================================================================= Copyright 1993 (C) David Hinds - All Rights Reserved Source file vectors.h Version 3.1, Updated 1/14/93 =======================================================================*/ #ifdef VECTORS_C static char ident_h[] = "@(#) vectors.h version 3.1 (1/14/93)"; #endif #ifndef _UINT typedef unsigned int uint_t; #define _UINT #endif /* Functions of one vector with scaler result */ dbl_t vsumsqr(const float_t v[], uint_t n); dbl_t vsumby3(const float_t v[], uint_t n); dbl_t dvdot(const dbl_t a[], const dbl_t b[], uint_t n); dbl_t vdotby3(const float_t a[], const float_t b[], uint_t n); dbl_t vdotby(const float_t a[], const float_t b[], uint_t n, const uint_t s); dbl_t vsumsqrby(const float_t a[], uint_t n, const uint_t s); dbl_t vsumby(const float_t v[], uint_t n, const uint_t s); uint_t vmin(const float_t v[], uint_t n); uint_t vmax(const float_t v[], uint_t n); float_t vminby(const float_t v[], uint_t n, const uint_t s); float_t vmaxby(const float_t v[], uint_t n, const uint_t s); /* Vector functions that work in place or produce vector results */ void dvdiv(dbl_t a[], uint_t n, const dbl_t b); void vxform(const dbl_t a[], uint_t n, dbl_t **m, dbl_t b[]); /* Miscellaneous vector manipulations */ void gather(const float_t a[], const uint_t ni, const uint_t i[], float_t b[]); void dgather(const dbl_t a[], const uint_t ni, const uint_t i[], dbl_t b[]); void mgather(dbl_t **a, const uint_t ni, const uint_t i[], dbl_t **b); /* Double-precision matrix functions from Numerical Recipes */ void ludcmp(dbl_t **a, const uint_t n, uint_t index[], dbl_t *d); void lubksb(dbl_t **lu, const uint_t n, const uint_t index[], dbl_t b[]); void luinvrt(dbl_t **lu, const uint_t n, const uint_t index[], dbl_t **y); dbl_t ludet(dbl_t **lu, const uint_t n, dbl_t d);