10#include "tpcclibConfig.h"
31#define MAX_PARAMETERS 50
35#define MAX_PARAMS MAX_PARAMETERS
41#define TPCCLIB_MERTWI_NN 312
43#define TPCCLIB_MERTWI_A UINT64_C(0xB5026F5AA96619E9)
78 BOBYQA_INVALID_ARGS = -1,
79 BOBYQA_OUT_OF_MEMORY = -2,
80 BOBYQA_ROUNDOFF_LIMITED = -3,
83 BOBYQA_MINF_MAX_REACHED = 1,
84 BOBYQA_FTOL_REACHED = 2,
85 BOBYQA_XTOL_REACHED = 3,
86 BOBYQA_MAXEVAL_REACHED = 4,
87 BOBYQA_RELFTOL_REACHED = 5,
88 BOBYQA_ABSFTOL_REACHED = 6
92typedef double (*
bobyqa_func)(
int n,
const double *x,
void *func_data);
397extern double aicSS(
double ss,
const int n,
const int k);
398extern int parFreeNr(
const int n,
double *pLower,
double *pUpper);
399extern int aicWeights(
double *aic,
double *w,
int n);
401extern double aicModel(
double *w,
int n);
424 double (*f)(
int n,
double *x,
void *objf_data),
426 double *working_space,
436 int n,
const double *lower,
const double *upper,
const double *delta
442 int n,
int fitted_n,
int npt,
bobyqa_data *bdata,
double *wm
471 double (*f)(
int n,
double *x,
void *objf_data),
482 double *cLim1,
double *cLim2,
double *SD,
double *parameter,
483 double *lowlim,
double *uplim,
int frameNr,
double *origTac,
484 double *fitTac,
double *bsTAC,
int parNr,
double *weight,
485 double (*objf)(
int,
double*,
void*),
char *status,
int verbose
492 int key,
const int m,
const int n,
493 double *a,
double *b,
double *bl,
double *bu,
double *x,
494 double *w,
double *act,
double *zz,
int *istate,
int *iter,
497extern int llsqWght(
int N,
int M,
double **A,
double *a,
double *b,
double *weight);
498extern int llsqWghtSquared(
int N,
int M,
double **A,
double *a,
double *b,
double *weight);
504 int par_nr,
double *lower_p,
double *upper_p,
double *test_p,
505 double *accept_p,
double *penalty
508 int par_nr,
double *lower_p,
double *upper_p,
double *test_p
511 double *x,
double *y,
int n,
double fittime,
double kmin,
double kmax,
512 int pnr,
double *a,
double *k,
int *fnr,
int verbose
522extern unsigned int drandSeed(
short int seed);
526extern double drand();
528 int nr,
double *d,
double low,
double up,
int type
536 double tau,
double *vector,
double **matrix,
int rowNr,
int columnNr
539 double tau,
int size,
double *v,
double *w
548 double *x,
double *y,
int nr,
549 double *newx,
double *newy,
double *newyi,
double *newyii,
int newnr
552 float *x,
float *y,
int nr,
553 float *newx,
float *newy,
float *newyi,
float *newyii,
int newnr
556 double *x,
double *y,
int nr,
560 float *x,
float *y,
int nr,
564 double *x1,
double *x2,
double *y,
int nr,
565 double *newyi,
double *newyii
568 float *x1,
float *x2,
float *y,
int nr,
569 float *newyi,
float *newyii
572 double *x,
double *y,
int nr,
573 double *newx1,
double *newx2,
574 double *newy,
double *newyi,
double *newyii,
int newnr
577 float *x,
float *y,
int nr,
578 float *newx1,
float *newx2,
579 float *newy,
float *newyi,
float *newyii,
int newnr
582 double *x1,
double *x2,
double *y,
int nr,
583 double *ie,
double *iie
586 float *x1,
float *x2,
float *y,
int nr,
587 float *ie,
float *iie
590 double *x1,
double *x2,
double *y,
int nr,
591 double *e,
double *ie,
double *iie
594 float *x1,
float *x2,
float *y,
int nr,
595 float *e,
float *ie,
float *iie
603 double *x,
double *y,
int n,
double *wx,
double *wy,
double tol,
double *w,
604 double *ic,
double *slope,
double *nwss,
double *sic,
double *sslope,
605 double *cx,
double *cy
608 double *x,
double *y,
double *wx,
double *wy,
int nr,
int min_nr,
int mode,
609 double *slope,
double *ic,
double *nwss,
double *sslope,
double *sic,
610 double *cx,
double *cy,
int *bnr
612extern int llsqperp(
double *x,
double *y,
int nr,
613 double *slope,
double *ic,
double *ssd
615extern int llsqperp3(
double *x,
double *y,
int nr,
616 double *slope,
double *ic,
double *ssd
618extern int quadratic(
double a,
double b,
double c,
double *m1,
double *m2);
619extern int medianline(
double *x,
double *y,
int nr,
double *slope,
double *ic);
633#define CHI2INV_1 0.45493642311957
638 double data[],
long int n,
double *
mean,
double *variance
645extern double dmedian(
double *data,
int n);
646extern double dmean(
double *data,
int n,
double *sd);
647extern double dmean_nan(
double *data,
int n,
double *sd,
int *vn);
653 double *data,
int nr,
int iterNr,
double cutoff
664#define MTGA_BEST_MIN_NR 5
682 PRESET, EXCLUDE_BEGIN, EXCLUDE_END
686 int data_nr,
double *i,
double *ii,
double *c,
double *x,
double *y
689 int data_nr,
double *i,
double *ii,
double *c,
double *ci,
690 double k2,
double *x,
double *y
693 double *x,
double *y,
int nr,
694 double *slope,
double *ic,
double *ssd,
int *fnr
701 double **a,
int m,
int n,
double *b,
double *x,
702 double *rnorm,
double *w,
double *zz,
int *index
705 int N,
int M,
double **A,
double *b,
double *weight
708 int N,
int M,
double **A,
double *b,
double *sweight
714extern double ndtr(
double a);
723 double *x,
double *y,
int nr,
724 double *k,
double *kSD,
double *b,
double *bSD,
double *r,
double *ySD
727 double *x,
double *y,
char *is,
int nr,
728 double *k,
double *kSD,
double *b,
double *bSD,
double *r,
double *ySD
731 double *x,
double *y,
int nr,
732 double *k,
double *kSD,
double *b,
double *bSD,
double *r,
double *ySD
735 double *x,
double *y,
int nr,
double start,
double end,
736 double *k,
double *kSD,
double *b,
double *bSD,
double *r,
double *ySD
739 double *x,
double *y,
int nr,
int min_nr,
int *first,
int *last,
740 double *k,
double *kSD,
double *b,
double *bSD,
double *r,
double *ySD
743 double *x,
double *y,
int nr,
744 double *xmean,
double *xsd,
double *ymean,
double *ysd
747 double *x,
double *y,
int n,
double *m,
double *c
750 double *x,
double *y,
int n,
int slope_n,
751 double *m,
double *c,
double *xi,
double *xh
754 double *x,
double *y,
int n,
int slope_n,
755 double x_start,
double *m,
double *c,
double *xi,
double *xh
765extern int powell(
double *p,
double *delta,
int parNr,
double ftol,
int *iterNr,
766 double *fret,
double (*_fun)(
int,
double*,
void*),
void *fundata,
int verbose
773 double **mat,
double *rhs,
double *sol,
774 const unsigned int rows,
const unsigned int cols,
double *r2
777 double **A,
int m,
int n,
double *B,
double *X,
double *rnorm,
778 double *tau,
double *res,
double **wws,
double *ws
781 double **a,
int M,
int N,
double *tau,
double **cchain,
double *chain
784 double **QR,
int M,
int N,
double *tau,
double *b,
double *x,
785 double *residual,
double *resNorm,
double **cchain,
double *chain
788 int N,
int M,
double **A,
double *b,
double *weight,
double *ws
791 const unsigned int m,
const unsigned int n,
792 double *a,
double *b,
double *x,
double *r2
799 double *data1,
double *data2,
int N,
double alpha,
double *p
802 double *d1,
double *d2,
int Nr,
int *Rnr,
int *Nminus,
int *Nplus
805 double y1[],
double y2[],
int n
812extern void randperm(
int *array,
int n,
int a);
819 double (*_fun)(
double*),
int parNr,
double *par,
double *delta,
820 double maxerr,
int maxiter,
int verbose
828 double *t,
double *ca,
int nr,
double k1,
double k2,
829 double k3,
double k4,
double k5,
double k6,
830 double *ct,
double *cta,
double *ctb,
double *ctc
833 double *t,
double *ca,
int nr,
double k1,
double k2,
834 double k3,
double k4,
double k5,
double k6,
835 double *ct,
double *cta,
double *ctb,
double *ctc
838 double *t,
double *ca,
double *cb,
int nr,
839 double k1,
double k2,
double k3,
double k4,
double k5,
double k6,
840 double f,
double vb,
double fa,
841 double *cpet,
double *cta,
double *ctb,
double *ctc,
842 double *ctab,
double *ctvb
845 double *t,
double *ca,
double *cb,
int nr,
846 double k1,
double k2,
double k3,
double k4,
double k5,
double k6,
847 double f,
double vb,
double fa,
848 double *cpet,
double *cta,
double *ctb,
double *ctc,
849 double *ctab,
double *ctvb
852 double *t,
double *ca,
int nr,
double k1,
double k2,
853 double k3,
double kLoss,
double *ct,
double *cta,
double *ctb
856 double *t,
double *ca,
double *cb,
int nr,
857 double k1,
double k2,
double k3,
double kL,
858 double f,
double vb,
double fa,
859 double *cpet,
double *cta,
double *ctb,
860 double *ctab,
double *ctvb
863 double *t,
double *ca,
double *cb,
int nr,
864 double k1,
double k2,
double k3,
double k4,
double k5,
double k6,
865 double kLoss,
double f,
double vb,
double fa,
866 double *cpet,
double *cta,
double *ctb,
double *ctc,
867 double *ctab,
double *ctvb
870 double *t,
double *cr,
int nr,
double R1,
double k2,
871 double k3,
double k4,
double *ct,
double *cta,
double *ctb
874 double *t,
double *cr,
int nr,
double R1,
double k2,
875 double BP,
double *ct
878 double *t,
double *cr,
int nr,
double R1,
double k2,
879 double k3,
double *ct
882 double *t,
double *ctot,
int nr,
883 double k01,
double k12,
double k21,
double k03,
double k34,
double k43,
884 double *c0,
double *c1,
double *c3
887 double *t,
double *ctot,
int nr,
double km,
double k1m,
888 double k2m,
double k3m,
double k4m,
double *ca,
double *cm
891 double *t,
double *ci,
int nr,
double k1,
double k2,
double Vfit,
double *ct
894 double *t,
double *ca,
int nr,
double k1,
double k2,
double *ct
897 double *t,
double *ca1,
double *ca2,
double *cb,
int nr,
898 double k1,
double k2,
double k3,
double k4,
double k5,
double k6,
899 double k1b,
double k2b,
double f,
double vb,
double fa,
900 double *scpet,
double *sct1,
double *sct2,
double *sct3,
double *sct1b,
901 double *sctab,
double *sctvb
904 double *t,
double *ca1,
double *ca2,
double *cb,
int nr,
905 double k1,
double k2,
double k3,
double k4,
double k5,
double k6,
double k7,
906 double km,
double k1b,
double k2b,
double f,
double vb,
double fa,
907 double *scpet,
double *sct1,
double *sct2,
double *sct3,
908 double *sct1b,
double *sctab,
double *sctvb,
912 double *t,
double *ca1,
double *ca2,
double *cb,
int nr,
913 double k1,
double k2,
double k3,
double k4,
double k5,
double k6,
double k7,
914 double km,
double k1b,
double k2b,
double f,
double vb,
double fa,
915 double *scpet,
double *sct1,
double *sct2,
double *sct3,
916 double *sct1b,
double *sctab,
double *sctvb,
920 double *x,
double *y,
int n,
921 double tau1,
double tau2,
double *tmp
924 double *t,
double *ca1,
double *ca2,
double *ca1i,
double *ca2i,
const int n,
925 const double k1a,
const double k2a,
const double km,
926 const double k1b,
const double k2b,
927 const double vb,
const double fa,
928 double *scpet,
double *sct1,
double *sct2,
double *sctab,
929 double *sctvb1,
double *sctvb2,
double *scvb1,
double *scvb2,
936#define autointerpolateDFT dftAutointerpolate
939#define c3vsSIM simC3vs
940#define c3vpSIM simC3vp
942#define c2vlSIM simC2vl
943#define rtcmSIM simRTCM
944#define srtmSIM simSRTM
945#define trtmSIM simTRTM
946#define sim_dispersion simDispersion
954#define DEFAULT_SAO2 0.97
956#define DEFAULT_P50HB 3.6
958#define DEFAULT_P50MB 0.319
960#define DEFAULT_NHB 2.7
962#define DEFAULT_CHB 150.0
964#define DEFAULT_CMB 4.7
967 const double OER,
const double SaO2,
const double p50Hb,
const double p50Mb,
968 const double nHb,
const double cHb,
const double cMb,
972 const double OER,
const double K1k2,
const double SaO2,
const double p50Mb,
973 const double cHb,
const double cMb,
1002 double *lowlim,
double *uplim,
double (*objf)(
int,
double*,
void*),
1003 void *objfData,
int dim,
int neighNr,
double *fmin,
double *gmin,
1004 int samNr,
int tgoNr,
int verbose
1008 double *low,
double *up
1012 double *low,
double *up
1019 double (*_fun)(
double,
void*),
void *_fundata,
1020 double x,
double xl,
double xu,
double delta,
double tol,
const int maxeval,
1021 double *nx,
double *nf,
int verbose
Header file for libtpcmisc.
int llsqperp3(double *x, double *y, int nr, double *slope, double *ic, double *ssd)
int simTRTM(double *t, double *cr, int nr, double R1, double k2, double k3, double *ct)
int nnlsWghtSquared(int N, int M, double **A, double *b, double *sweight)
int bootstrap(int iterNr, double *cLim1, double *cLim2, double *SD, double *parameter, double *lowlim, double *uplim, int frameNr, double *origTac, double *fitTac, double *bsTAC, int parNr, double *weight, double(*objf)(int, double *, void *), char *status, int verbose)
void randperm(int *array, int n, int a)
int simC3vp(double *t, double *ca, double *cb, int nr, double k1, double k2, double k3, double k4, double k5, double k6, double f, double vb, double fa, double *cpet, double *cta, double *ctb, double *ctc, double *ctab, double *ctvb)
int fpetintegrate(float *x1, float *x2, float *y, int nr, float *newyi, float *newyii)
Calculates integrals of PET data at frame end times. Float version of petintegrate().
double dmean_nan(double *data, int n, double *sd, int *vn)
void tgoRandomParameters(TGO_POINT *p, int parNr, int sNr, double *low, double *up)
int simC4DIvp(double *t, double *ca1, double *ca2, double *cb, int nr, double k1, double k2, double k3, double k4, double k5, double k6, double k7, double km, double k1b, double k2b, double f, double vb, double fa, double *scpet, double *sct1, double *sct2, double *sct3, double *sct1b, double *sctab, double *sctvb, int verbose)
int highest_slope_after(double *x, double *y, int n, int slope_n, double x_start, double *m, double *c, double *xi, double *xh)
int residuals(double *d1, double *d2, int Nr, int *Rnr, int *Nminus, int *Nplus)
#define TPCCLIB_MERTWI_NN
bobyqa_result bobyqb(bobyqa_data *bdata)
uint64_t mertwiRandomInt64(MERTWI *mt)
Generate a random number on [0, 2^64-1]-interval using Mersenne Twister MT19937.
char * bobyqa_rc(bobyqa_result rc)
int fintegrate(float *x, float *y, int nr, float *yi)
float version of integrate().
int simTPCMOD0009c(double *t, double *ctot, int nr, double km, double k1m, double k2m, double k3m, double k4m, double *ca, double *cm)
int llsqWghtSquared(int N, int M, double **A, double *a, double *b, double *weight)
int simOxygen(double *t, double *ca1, double *ca2, double *ca1i, double *ca2i, const int n, const double k1a, const double k2a, const double km, const double k1b, const double k2b, const double vb, const double fa, double *scpet, double *sct1, double *sct2, double *sctab, double *sctvb1, double *sctvb2, double *scvb1, double *scvb2, const int verbose)
double aicWeightedAvg(double *w, double *p, int n)
int petintegral(double *x1, double *x2, double *y, int nr, double *ie, double *iie)
Integrate PET TAC data to frame mid times.
void tgoRandomParametersST(TGO_POINT *p, int parNr, int sNr, double *low, double *up)
void bobyqa_print(bobyqa_data *bdata, int sw, FILE *fp)
int highest_slope(double *x, double *y, int n, int slope_n, double *m, double *c, double *xi, double *xh)
int simHuangmet(double *t, double *ctot, int nr, double k01, double k12, double k21, double k03, double k34, double k43, double *c0, double *c1, double *c3)
bobyqa_result bobyqa_free_memory(bobyqa_data *bdata)
double simplex(double(*_fun)(double *), int parNr, double *par, double *delta, double maxerr, int maxiter, int verbose)
int fpetintegrate2fe(float *x1, float *x2, float *y, int nr, float *e, float *ie, float *iie)
Integrate PET TAC data to frame end times. Float version of petintegrate2fe().
int simC3vs(double *t, double *ca, double *cb, int nr, double k1, double k2, double k3, double k4, double k5, double k6, double f, double vb, double fa, double *cpet, double *cta, double *ctb, double *ctc, double *ctab, double *ctvb)
int runs_test(double *data1, double *data2, int N, double alpha, double *p)
int aicWeights(double *aic, double *w, int n)
double mo2pO2(const double OER, const double K1k2, const double SaO2, const double p50Mb, const double cHb, const double cMb, const int verbose)
int qrLH(const unsigned int m, const unsigned int n, double *a, double *b, double *x, double *r2)
Solve over-determined least-squares problem A x ~ b using successive Householder rotations.
void mertwiInitWithSeed64(MERTWI *mt, uint64_t seed)
Initialize the state vector mt[] inside data struct for Mersenne Twister MT19937 pseudorandom number ...
int medianline(double *x, double *y, int nr, double *slope, double *ic)
int llsqperp(double *x, double *y, int nr, double *slope, double *ic, double *ssd)
int tgo(double *lowlim, double *uplim, double(*objf)(int, double *, void *), void *objfData, int dim, int neighNr, double *fmin, double *gmin, int samNr, int tgoNr, int verbose)
double huber(double x, double b)
int nnls(double **a, int m, int n, double *b, double *x, double *rnorm, double *w, double *zz, int *index)
int llsqwt(double *x, double *y, int n, double *wx, double *wy, double tol, double *w, double *ic, double *slope, double *nwss, double *sic, double *sslope, double *cx, double *cy)
void random_shuffle(int *array, int n)
int petintegrate(double *x1, double *x2, double *y, int nr, double *newyi, double *newyii)
double mo2k1k2(const double OER, const double SaO2, const double p50Hb, const double p50Mb, const double nHb, const double cHb, const double cMb, const int verbose)
Calculates K1/k2 ratio for [O-15]O2 in muscle, based on OER.
double mertwiRandomDouble1(MERTWI *mt)
Generate a 64-bit double precision floating point pseudorandom number in the range of [0,...
int finterpolate4pet(float *x, float *y, int nr, float *newx1, float *newx2, float *newy, float *newyi, float *newyii, int newnr)
Interpolate and integrate TAC to PET frames. Float version of interpolate4pet().
double mEstim(double *data, int nr, int iterNr, double cutoff)
int parFreeNr(const int n, double *pLower, double *pUpper)
Calculate the number of free parameters.
int simDispersion(double *x, double *y, int n, double tau1, double tau2, double *tmp)
int mrl_between_tacs(double y1[], double y2[], int n)
int fitExpDecayNNLS(double *x, double *y, int n, double fittime, double kmin, double kmax, int pnr, double *a, double *k, int *fnr, int verbose)
Estimate initial values for sum of exponentials to be fitted on decaying x,y-data.
void mertwiInitByArray64(MERTWI *mt, uint64_t init_key[], uint64_t key_length)
Initialize the state vector mt[] inside data struct for Mersenne Twister MT19937 pseudorandom number ...
bobyqa_result bobyqa(int n, int npt, double *x, const double *xl, const double *xu, const double *dx, const double rhoend, double xtol_rel, double minf_max, double ftol_rel, double ftol_abs, int maxeval, int *nevals, double *minf, double(*f)(int n, double *x, void *objf_data), void *objf_data, double *working_space, int verbose)
double householder_norm(double *v, int size)
int best_llsqwt(double *x, double *y, double *wx, double *wy, int nr, int min_nr, int mode, double *slope, double *ic, double *nwss, double *sslope, double *sic, double *cx, double *cy, int *bnr)
int petintegrate2fe(double *x1, double *x2, double *y, int nr, double *e, double *ie, double *iie)
Integrate PET TAC data to frame end times.
int simC4DIvs(double *t, double *ca1, double *ca2, double *cb, int nr, double k1, double k2, double k3, double k4, double k5, double k6, double k7, double km, double k1b, double k2b, double f, double vb, double fa, double *scpet, double *sct1, double *sct2, double *sct3, double *sct1b, double *sctab, double *sctvb, int verbose)
int nnlsWght(int N, int M, double **A, double *b, double *weight)
int qr_weight(int N, int M, double **A, double *b, double *weight, double *ws)
int patlak_data(int data_nr, double *i, double *ii, double *c, double *x, double *y)
int bvls(int key, const int m, const int n, double *a, double *b, double *bl, double *bu, double *x, double *w, double *act, double *zz, int *istate, int *iter, int verbose)
Bounded-value least-squares method to solve the linear problem A x ~ b , subject to limit1 <= x <= li...
double bobyqa_x_funcval(bobyqa_data *bdata, double *x)
double(* bobyqa_func)(int n, const double *x, void *func_data)
int llsqWght(int N, int M, double **A, double *a, double *b, double *weight)
double normal_pvalue_1(double x)
int pearson4(double *x, double *y, int nr, double start, double end, double *k, double *kSD, double *b, double *bSD, double *r, double *ySD)
Calculate slope and intercept of a line and Pearson's correlation coefficient.
int simSRTM(double *t, double *cr, int nr, double R1, double k2, double BP, double *ct)
int modelCheckParameters(int par_nr, double *lower_p, double *upper_p, double *test_p, double *accept_p, double *penalty)
int nlopt1D(double(*_fun)(double, void *), void *_fundata, double x, double xl, double xu, double delta, double tol, const int maxeval, double *nx, double *nf, int verbose)
int qrLSQ(double **mat, double *rhs, double *sol, const unsigned int rows, const unsigned int cols, double *r2)
QR least-squares solving routine.
int simC1(double *t, double *ca, int nr, double k1, double k2, double *ct)
double least_median_of_squares(double *data, int n)
Fit a constant (horisontal straight line) to the data by minimising the median of squared residuals.
int regr_line(double *x, double *y, int n, double *m, double *c)
bobyqa_result bobyqa_set_memory(int n, int fitted_n, int npt, bobyqa_data *bdata, double *wm)
int modelCheckLimits(int par_nr, double *lower_p, double *upper_p, double *test_p)
int simRTCM(double *t, double *cr, int nr, double R1, double k2, double k3, double k4, double *ct, double *cta, double *ctb)
bobyqa_result bobyqa_reset_memory(bobyqa_data *bdata)
uint64_t mertwiSeed64(void)
Make uint64_t seed for pseudorandom number generators.
double aicModel(double *w, int n)
int integrate(double *x, double *y, int nr, double *yi)
int householder_hv(double tau, int size, double *v, double *w)
double dmean(double *data, int n, double *sd)
int bobyqa_working_memory_size(int n, int fitted_n, int npt, bobyqa_data *bdata)
void bobyqa_xfull(bobyqa_data *bdata)
int simMBF(double *t, double *ci, int nr, double k1, double k2, double Vfit, double *ct)
double dmedian(double *data, int n)
int simC3vpKLoss(double *t, double *ca, double *cb, int nr, double k1, double k2, double k3, double k4, double k5, double k6, double kLoss, double f, double vb, double fa, double *cpet, double *cta, double *ctb, double *ctc, double *ctab, double *ctvb)
double aicSS(double ss, const int n, const int k)
double mertwiRandomDouble2(MERTWI *mt)
Generate a 64-bit double precision floating point pseudorandom number in the range of [0,...
int householder_hm(double tau, double *vector, double **matrix, int rowNr, int columnNr)
int pearson2(double *x, double *y, char *is, int nr, double *k, double *kSD, double *b, double *bSD, double *r, double *ySD)
int pearson(double *x, double *y, int nr, double *k, double *kSD, double *b, double *bSD, double *r, double *ySD)
int qr_solve(double **QR, int M, int N, double *tau, double *b, double *x, double *residual, double *resNorm, double **cchain, double *chain)
int rand_range(int nr, double *d, double low, double up, int type)
void mertwiInit(MERTWI *mt)
int pearson3(double *x, double *y, int nr, double *k, double *kSD, double *b, double *bSD, double *r, double *ySD)
double householder_transform(double *v, int N)
int powell(double *p, double *delta, int parNr, double ftol, int *iterNr, double *fret, double(*_fun)(int, double *, void *), void *fundata, int verbose)
int simC2vl(double *t, double *ca, double *cb, int nr, double k1, double k2, double k3, double kL, double f, double vb, double fa, double *cpet, double *cta, double *ctb, double *ctab, double *ctvb)
int64_t mertwiRandomInt63(MERTWI *mt)
Generate a random number on [0, 2^63-1]-interval using Mersenne Twister MT19937.
double mertwiRandomDouble3(MERTWI *mt)
Generate a 64-bit double precision floating point pseudorandom number in the range of (0,...
int mtga_best_perp(double *x, double *y, int nr, double *slope, double *ic, double *ssd, int *fnr)
bobyqa_result bobyqa_set_optimization(int full_n, double *x, const double *dx, const double *xl, const double *xu, const double rhoend, double xtol_rel, double minf_max, double ftol_rel, double ftol_abs, int maxeval, double(*f)(int n, double *x, void *objf_data), void *objf_data, int verbose, bobyqa_data *bdata)
int qr(double **A, int m, int n, double *B, double *X, double *rnorm, double *tau, double *res, double **wws, double *ws)
uint32_t mertwiSeed32(void)
Make uint32_t seed for pseudorandom number generators.
int fpetintegral(float *x1, float *x2, float *y, int nr, float *ie, float *iie)
Integrate PET TAC data to frame mid times. Float version of petintegral().
int bobyqa_minimize_single_parameter(bobyqa_data *bdata)
double d_kth_smallest(double *data, int n, int k)
int mean(double *x, double *y, int nr, double *xmean, double *xsd, double *ymean, double *ysd)
int fixed_params(int n, const double *lower, const double *upper, const double *delta)
int interpolate(double *x, double *y, int nr, double *newx, double *newy, double *newyi, double *newyii, int newnr)
Linear interpolation and integration.
int least_trimmed_square(double data[], long int n, double *mean, double *variance)
int finterpolate(float *x, float *y, int nr, float *newx, float *newy, float *newyi, float *newyii, int newnr)
float version of interpolate().
int simC3p(double *t, double *ca, int nr, double k1, double k2, double k3, double k4, double k5, double k6, double *ct, double *cta, double *ctb, double *ctc)
int best_pearson(double *x, double *y, int nr, int min_nr, int *first, int *last, double *k, double *kSD, double *b, double *bSD, double *r, double *ySD)
int simC2l(double *t, double *ca, int nr, double k1, double k2, double k3, double kLoss, double *ct, double *cta, double *ctb)
int simC3DIvs(double *t, double *ca1, double *ca2, double *cb, int nr, double k1, double k2, double k3, double k4, double k5, double k6, double k1b, double k2b, double f, double vb, double fa, double *scpet, double *sct1, double *sct2, double *sct3, double *sct1b, double *sctab, double *sctvb)
unsigned int drandSeed(short int seed)
Make and optionally set the seed for rand(), drand, drandRange, and drandGaussian().
int simC3s(double *t, double *ca, int nr, double k1, double k2, double k3, double k4, double k5, double k6, double *ct, double *cta, double *ctb, double *ctc)
int quadratic(double a, double b, double c, double *m1, double *m2)
int interpolate4pet(double *x, double *y, int nr, double *newx1, double *newx2, double *newy, double *newyi, double *newyii, int newnr)
Interpolate and integrate TAC to PET frames.
int qr_decomp(double **a, int M, int N, double *tau, double **cchain, double *chain)
double normal_pvalue_2(double x)
int logan_data(int data_nr, double *i, double *ii, double *c, double *ci, double k2, double *x, double *y)
uint64_t mt[TPCCLIB_MERTWI_NN]