maxill_misc.cpp.html | mathcode2html |
Source file: maxill_misc.cpp | |
Converted: Wed Mar 19 2014 at 13:51:29 | |
This documentation file will not reflect any later changes in the source file. |
$$\phantom{******** If you see this on the webpage then the
browser could not locate *********}$$
$$\phantom{******** jsMath/easy/load.js or the variable root
is set wrong in this file *********}$$
$$\newcommand{\vector}[1]{\left[\begin{array}{c} #1 \end{array}\right]}$$
$$\newenvironment{matrix}{\left[\begin{array}{cccccccccc}} {\end{array}\right]}$$
$$\newcommand{\A}{{\cal A}}$$
$$\newcommand{\W}{{\cal W}}$$
/* Copyright 2008-2011 Research Foundation State University of New York */ /* This file is part of QUB Express. */ /* QUB Express is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation, either version 3 of the License, or */ /* (at your option) any later version. */ /* QUB Express is distributed in the hope that it will be useful, */ /* but WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ /* GNU General Public License for more details. */ /* You should have received a copy of the GNU General Public License, */ /* named LICENSE.txt, in the QUB Express program directory. If not, see */ /* <http://www.gnu.org/licenses/>. */ #ifdef _WIN32 #include <windows.h> #else #include <stdlib.h> #define BOOL int #define TRUE 1 #define FALSE 0 #endif #include <iostream> #include "maxill_misc.h" #include "../qubfast/ublas_matrixutil.h" extern "C" MAXILL_API void FirstLatencies(double** A, double* pEq, double dt, int n, double** FL) { // from http://www.icsu-scope.org/downloadpubs/scope34/contents.html // Z = inv(I - A + col(1)*row(pEq)) // FL[i][j] = (Z[j][j] - Z[i][j]) / pEq[j] fq::matrix<double> M(n, n); for (int i=0; i<n; ++i) for (int j=0; j<n; ++j) M[i][j] = ((i==j)?1.0:0.0) - A[i][j] + pEq[j]; fq::matrix<double> Z(n, n); sv_invm(M, n, Z); //gaussj0(M, n, NULL, 0, std::cerr); //for (int i=0; i<n; ++i) // for (int j=0; j<n; ++j) // Z[i][j] = M[i][j]; for (int i=0; i<n; ++i) for (int j=0; j<n; ++j) FL[i][j] = dt * (Z[j][j] - Z[i][j]) / pEq[j]; }