Loading...
Searching...
No Matches
Go to the documentation of this file.
14#ifndef PLASK__SOLVER__GAIN_FREECARRIER_GAUSS_MATRIX_H
15#define PLASK__SOLVER__GAIN_FREECARRIER_GAUSS_MATRIX_H
21#define dgbmv F77_GLOBAL(dgbmv,DGBMV)
22F77SUB
dgbmv(
const char& trans,
const int& m,
const int&
n,
const int& kl,
const int& ku,
const double& alpha,
double* a,
const int& lda,
23 const double* x,
int incx,
const double& beta,
double* y,
int incy);
27#define dgbtrf F77_GLOBAL(dgbtrf,DGBTRF)
28F77SUB
dgbtrf(
const int& m,
const int&
n,
const int& kl,
const int& ku,
double* ab,
const int& ldab,
int* ipiv,
int& info);
30#define dgbtrs F77_GLOBAL(dgbtrs,DGBTRS)
31F77SUB
dgbtrs(
const char& trans,
const int&
n,
const int& kl,
const int& ku,
const int& nrhs,
double* ab,
const int& ldab,
int* ipiv,
double*
b,
const int& ldb,
int& info);
33namespace plask {
namespace gain {
namespace freecarrier {
61 size_t index(
size_t r,
size_t c) {
63 assert(abs(
int(c)-
int(r)) < 3);
65 return (
LD-1)*c + r + 4;
88 dgbmv(
'N',
int(
size),
int(
size), 2, 2, 1.,
data,
LD, vector.
data(), 1, 0.,
result.data(), 1);
97 dgbmv(
'N',
int(
size),
int(
size), 2, 2, 1.,
data,
LD, vector.
data(), 1, 1.,
result.data(), 1);
104 int* ipiv =
upiv.get();
109 for (std::size_t i = 0; i <
size; ++i) {
111 if (ipiv[i] !=
int(i+1)) det = -det;