Add missing doc files
[jabaws.git] / binaries / src / ViennaRNA / doc / latex / gquad_8h_source.tex
diff --git a/binaries/src/ViennaRNA/doc/latex/gquad_8h_source.tex b/binaries/src/ViennaRNA/doc/latex/gquad_8h_source.tex
new file mode 100644 (file)
index 0000000..900cd28
--- /dev/null
@@ -0,0 +1,545 @@
+\hypertarget{gquad_8h}{\section{gquad.\-h}
+\label{gquad_8h}\index{/home/asherstnev/\-Projects/\-Java.\-projects/jabaws/secure-\/git/develop/binaries/src/\-Vienna\-R\-N\-A/\-H/gquad.\-h@{/home/asherstnev/\-Projects/\-Java.\-projects/jabaws/secure-\/git/develop/binaries/src/\-Vienna\-R\-N\-A/\-H/gquad.\-h}}
+}
+
+\begin{DoxyCode}
+00001 \textcolor{preprocessor}{#ifndef \_\_VIENNA\_RNA\_PACKAGE\_GQUAD\_H\_\_}
+00002 \textcolor{preprocessor}{}\textcolor{preprocessor}{#define \_\_VIENNA\_RNA\_PACKAGE\_GQUAD\_H\_\_}
+00003 \textcolor{preprocessor}{}
+00004 \textcolor{preprocessor}{#include "\hyperlink{data__structures_8h}{data\_structures.h}"}
+00005 
+00006 \textcolor{preprocessor}{#ifndef INLINE}
+00007 \textcolor{preprocessor}{}\textcolor{preprocessor}{#ifdef \_\_GNUC\_\_}
+00008 \textcolor{preprocessor}{}\textcolor{preprocessor}{# define INLINE inline}
+00009 \textcolor{preprocessor}{}\textcolor{preprocessor}{#else}
+00010 \textcolor{preprocessor}{}\textcolor{preprocessor}{# define INLINE}
+00011 \textcolor{preprocessor}{}\textcolor{preprocessor}{#endif}
+00012 \textcolor{preprocessor}{}\textcolor{preprocessor}{#endif}
+00013 \textcolor{preprocessor}{}
+00020 \textcolor{keywordtype}{int}         E\_gquad(\textcolor{keywordtype}{int} L,
+00021                     \textcolor{keywordtype}{int} l[3],
+00022                     \hyperlink{structparamT}{paramT} *P);
+00023 
+00024 FLT\_OR\_DBL exp\_E\_gquad( \textcolor{keywordtype}{int} L,
+00025                         \textcolor{keywordtype}{int} l[3],
+00026                         \hyperlink{structpf__paramT}{pf\_paramT} *pf);
+00027 
+00028 \textcolor{keywordtype}{int}         E\_gquad\_ali(\textcolor{keywordtype}{int} i,
+00029                         \textcolor{keywordtype}{int} L,
+00030                         \textcolor{keywordtype}{int} l[3],
+00031                         \textcolor{keyword}{const} \textcolor{keywordtype}{short} **S,
+00032                         \textcolor{keywordtype}{int} n\_seq,
+00033                         \hyperlink{structparamT}{paramT} *P);
+00034 
+00035 
+00036 \textcolor{keywordtype}{void}        E\_gquad\_ali\_en( \textcolor{keywordtype}{int} i,
+00037                             \textcolor{keywordtype}{int} L,
+00038                             \textcolor{keywordtype}{int} l[3],
+00039                             \textcolor{keyword}{const} \textcolor{keywordtype}{short} **S,
+00040                             \textcolor{keywordtype}{int} n\_seq,
+00041                             \textcolor{keywordtype}{int} en[2],
+00042                             \hyperlink{structparamT}{paramT} *P);
+00043 
+00060 \textcolor{keywordtype}{int}         *\hyperlink{gquad_8h_a8b0784c14fa1208d0aebbebdc1318b7a}{get\_gquad\_matrix}(\textcolor{keywordtype}{short} *S, \hyperlink{structparamT}{paramT} *P);
+00061 
+00062 \textcolor{keywordtype}{int}         *get\_gquad\_ali\_matrix(\textcolor{keywordtype}{short} *S\_cons,
+00063                                   \textcolor{keywordtype}{short} **S,
+00064                                   \textcolor{keywordtype}{int} n\_seq,
+00065                                   \hyperlink{structparamT}{paramT} *P);
+00066 
+00067 FLT\_OR\_DBL  *get\_gquad\_pf\_matrix( \textcolor{keywordtype}{short} *S,
+00068                                   FLT\_OR\_DBL *scale,
+00069                                   \hyperlink{structpf__paramT}{pf\_paramT} *pf);
+00070 
+00071 \textcolor{keywordtype}{int}         **get\_gquad\_L\_matrix( \textcolor{keywordtype}{short} *S,
+00072                                   \textcolor{keywordtype}{int} start,
+00073                                   \textcolor{keywordtype}{int} maxdist,
+00074                                   \textcolor{keywordtype}{int} **g,
+00075                                   \hyperlink{structparamT}{paramT} *P);
+00076 
+00077 \textcolor{keywordtype}{void}        get\_gquad\_pattern\_mfe(\textcolor{keywordtype}{short} *S,
+00078                                   \textcolor{keywordtype}{int} i,
+00079                                   \textcolor{keywordtype}{int} j,
+00080                                   \hyperlink{structparamT}{paramT} *P,
+00081                                   \textcolor{keywordtype}{int} *L,
+00082                                   \textcolor{keywordtype}{int} l[3]);
+00083 
+00084 \textcolor{keywordtype}{void}        get\_gquad\_pattern\_pf( \textcolor{keywordtype}{short} *S,
+00085                                   \textcolor{keywordtype}{int} i,
+00086                                   \textcolor{keywordtype}{int} j,
+00087                                   \hyperlink{structpf__paramT}{pf\_paramT} *pf,
+00088                                   \textcolor{keywordtype}{int} *L,
+00089                                   \textcolor{keywordtype}{int} l[3]);
+00090 
+00091 \hyperlink{structplist}{plist}       *get\_plist\_gquad\_from\_pr( \textcolor{keywordtype}{short} *S,
+00092                                       \textcolor{keywordtype}{int} gi,
+00093                                       \textcolor{keywordtype}{int} gj,
+00094                                       FLT\_OR\_DBL *G,
+00095                                       FLT\_OR\_DBL *probs,
+00096                                       FLT\_OR\_DBL *scale,
+00097                                       \hyperlink{structpf__paramT}{pf\_paramT} *pf);
+00098 \hyperlink{structplist}{plist}       *get\_plist\_gquad\_from\_pr\_max(\textcolor{keywordtype}{short} *S,
+00099                                       \textcolor{keywordtype}{int} gi,
+00100                                       \textcolor{keywordtype}{int} gj,
+00101                                       FLT\_OR\_DBL *G,
+00102                                       FLT\_OR\_DBL *probs,
+00103                                       FLT\_OR\_DBL *scale,
+00104                                       \textcolor{keywordtype}{int} *L,
+00105                                       \textcolor{keywordtype}{int} l[3],
+00106                                       \hyperlink{structpf__paramT}{pf\_paramT} *pf);
+00107 
+00108 \hyperlink{structplist}{plist}       *get\_plist\_gquad\_from\_db( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *structure,
+00109                                       \textcolor{keywordtype}{float} pr);
+00110 
+00121 \textcolor{keywordtype}{int}         \hyperlink{gquad_8h_ae41763215b9c64d2a7b67f0df8a28078}{parse\_gquad}(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *struc, \textcolor{keywordtype}{int} *L, \textcolor{keywordtype}{int} l[3]);
+00122 
+00123 
+00124 
+\hypertarget{gquad_8h_source_l00142}{}\hyperlink{gquad_8h_a54475a8eb898fa1e8af8ab5f5375f3be}{00142} INLINE  PRIVATE \textcolor{keywordtype}{int} \hyperlink{gquad_8h_a54475a8eb898fa1e8af8ab5f5375f3be}{backtrack\_GQuad\_IntLoop}(\textcolor{keywordtype}{int} c,
+00143                                             \textcolor{keywordtype}{int} i,
+00144                                             \textcolor{keywordtype}{int} j,
+00145                                             \textcolor{keywordtype}{int} type,
+00146                                             \textcolor{keywordtype}{short} *S,
+00147                                             \textcolor{keywordtype}{int} *ggg,
+00148                                             \textcolor{keywordtype}{int} *index,
+00149                                             \textcolor{keywordtype}{int} *p,
+00150                                             \textcolor{keywordtype}{int} *q,
+00151                                             \hyperlink{structparamT}{paramT} *P)\{
+00152 
+00153   \textcolor{keywordtype}{int} energy, \hyperlink{fold__vars_8h_a72b511ed1201f7e23ec437e468790d74}{dangles}, k, l, maxl, minl, c0, l1;
+00154   \textcolor{keywordtype}{short} si, sj;
+00155 
+00156   dangles = P->\hyperlink{structparamT_aeb912822ef912705bc202b14f9d71ad9}{model\_details}.\hyperlink{structmodel__detailsT_a89f9df217a4a7f4351a642655976376b}{dangles};
+00157   si      = S[i + 1];
+00158   sj      = S[j - 1];
+00159   energy  = 0;
+00160 
+00161   \textcolor{keywordflow}{if}(dangles == 2)
+00162     energy += P->mismatchI[type][si][sj];
+00163 
+00164   \textcolor{keywordflow}{if}(type > 2)
+00165     energy += P->TerminalAU;
+00166 
+00167   k = i + 1;
+00168   \textcolor{keywordflow}{if}(S[k] == 3)\{
+00169     \textcolor{keywordflow}{if}(k < j - VRNA\_GQUAD\_MIN\_BOX\_SIZE)\{
+00170       minl  = j - i + k - \hyperlink{energy__const_8h_ad1bd6eabac419670ddd3c9ed82145988}{MAXLOOP} - 2;
+00171       c0    = k + VRNA\_GQUAD\_MIN\_BOX\_SIZE - 1;
+00172       minl  = \hyperlink{utils_8h_a33297b3679c713b0c4d897cd0fe3b122}{MAX2}(c0, minl);
+00173       c0    = j - 3;
+00174       maxl  = k + VRNA\_GQUAD\_MAX\_BOX\_SIZE + 1;
+00175       maxl  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(c0, maxl);
+00176       \textcolor{keywordflow}{for}(l = minl; l < maxl; l++)\{
+00177         \textcolor{keywordflow}{if}(S[l] != 3) \textcolor{keywordflow}{continue};
+00178         \textcolor{keywordflow}{if}(c == energy + ggg[index[l] + k] + P->internal\_loop[j - l - 1])\{
+00179           *p = k; *q = l;
+00180           \textcolor{keywordflow}{return} 1;
+00181         \}
+00182       \}
+00183     \}
+00184   \}
+00185 
+00186   \textcolor{keywordflow}{for}(k = i + 2;
+00187       k < j - VRNA\_GQUAD\_MIN\_BOX\_SIZE;
+00188       k++)\{
+00189     l1    = k - i - 1;
+00190     \textcolor{keywordflow}{if}(l1>\hyperlink{energy__const_8h_ad1bd6eabac419670ddd3c9ed82145988}{MAXLOOP}) \textcolor{keywordflow}{break};
+00191     \textcolor{keywordflow}{if}(S[k] != 3) \textcolor{keywordflow}{continue};
+00192     minl  = j - i + k - \hyperlink{energy__const_8h_ad1bd6eabac419670ddd3c9ed82145988}{MAXLOOP} - 2;
+00193     c0    = k + VRNA\_GQUAD\_MIN\_BOX\_SIZE - 1;
+00194     minl  = \hyperlink{utils_8h_a33297b3679c713b0c4d897cd0fe3b122}{MAX2}(c0, minl);
+00195     c0    = j - 1;
+00196     maxl  = k + VRNA\_GQUAD\_MAX\_BOX\_SIZE + 1;
+00197     maxl  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(c0, maxl);
+00198     \textcolor{keywordflow}{for}(l = minl; l < maxl; l++)\{
+00199       \textcolor{keywordflow}{if}(S[l] != 3) \textcolor{keywordflow}{continue};
+00200       \textcolor{keywordflow}{if}(c == energy + ggg[index[l] + k] + P->internal\_loop[l1 + j - l - 1])\{
+00201         *p = k; *q = l;
+00202         \textcolor{keywordflow}{return} 1;
+00203       \}
+00204     \}
+00205   \}
+00206 
+00207   l = j - 1;
+00208   \textcolor{keywordflow}{if}(S[l] == 3)
+00209     \textcolor{keywordflow}{for}(k = i + 4;
+00210         k < j - VRNA\_GQUAD\_MIN\_BOX\_SIZE;
+00211         k++)\{
+00212       l1    = k - i - 1;
+00213       \textcolor{keywordflow}{if}(l1>\hyperlink{energy__const_8h_ad1bd6eabac419670ddd3c9ed82145988}{MAXLOOP}) \textcolor{keywordflow}{break};
+00214       \textcolor{keywordflow}{if}(S[k] != 3) \textcolor{keywordflow}{continue};
+00215       \textcolor{keywordflow}{if}(c == energy + ggg[index[l] + k] + P->internal\_loop[l1])\{
+00216         *p = k; *q = l;
+00217         \textcolor{keywordflow}{return} 1;
+00218       \}
+00219     \}
+00220 
+00221   \textcolor{keywordflow}{return} 0;
+00222 \}
+00223 
+\hypertarget{gquad_8h_source_l00240}{}\hyperlink{gquad_8h_a118ec7289f1936bd810be7fe50b98212}{00240} INLINE  PRIVATE \textcolor{keywordtype}{int} \hyperlink{gquad_8h_a118ec7289f1936bd810be7fe50b98212}{backtrack\_GQuad\_IntLoop\_L}(\textcolor{keywordtype}{int} c,
+00241                                               \textcolor{keywordtype}{int} i,
+00242                                               \textcolor{keywordtype}{int} j,
+00243                                               \textcolor{keywordtype}{int} type,
+00244                                               \textcolor{keywordtype}{short} *S,
+00245                                               \textcolor{keywordtype}{int} **ggg,
+00246                                               \textcolor{keywordtype}{int} maxdist,
+00247                                               \textcolor{keywordtype}{int} *p,
+00248                                               \textcolor{keywordtype}{int} *q,
+00249                                               \hyperlink{structparamT}{paramT} *P)\{
+00250 
+00251   \textcolor{keywordtype}{int} energy, \hyperlink{fold__vars_8h_a72b511ed1201f7e23ec437e468790d74}{dangles}, k, l, maxl, minl, c0, l1;
+00252   \textcolor{keywordtype}{short} si, sj;
+00253 
+00254   dangles = P->\hyperlink{structparamT_aeb912822ef912705bc202b14f9d71ad9}{model\_details}.\hyperlink{structmodel__detailsT_a89f9df217a4a7f4351a642655976376b}{dangles};
+00255   si      = S[i + 1];
+00256   sj      = S[j - 1];
+00257   energy  = 0;
+00258 
+00259   \textcolor{keywordflow}{if}(dangles == 2)
+00260     energy += P->mismatchI[type][si][sj];
+00261 
+00262   \textcolor{keywordflow}{if}(type > 2)
+00263     energy += P->TerminalAU;
+00264 
+00265   k = i + 1;
+00266   \textcolor{keywordflow}{if}(S[k] == 3)\{
+00267     \textcolor{keywordflow}{if}(k < j - VRNA\_GQUAD\_MIN\_BOX\_SIZE)\{
+00268       minl  = j - i + k - \hyperlink{energy__const_8h_ad1bd6eabac419670ddd3c9ed82145988}{MAXLOOP} - 2;
+00269       c0    = k + VRNA\_GQUAD\_MIN\_BOX\_SIZE - 1;
+00270       minl  = \hyperlink{utils_8h_a33297b3679c713b0c4d897cd0fe3b122}{MAX2}(c0, minl);
+00271       c0    = j - 3;
+00272       maxl  = k + VRNA\_GQUAD\_MAX\_BOX\_SIZE + 1;
+00273       maxl  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(c0, maxl);
+00274       \textcolor{keywordflow}{for}(l = minl; l < maxl; l++)\{
+00275         \textcolor{keywordflow}{if}(S[l] != 3) \textcolor{keywordflow}{continue};
+00276         \textcolor{keywordflow}{if}(c == energy + ggg[k][l - k] + P->internal\_loop[j - l - 1])\{
+00277           *p = k; *q = l;
+00278           \textcolor{keywordflow}{return} 1;
+00279         \}
+00280       \}
+00281     \}
+00282   \}
+00283 
+00284   \textcolor{keywordflow}{for}(k = i + 2;
+00285       k < j - VRNA\_GQUAD\_MIN\_BOX\_SIZE;
+00286       k++)\{
+00287     l1    = k - i - 1;
+00288     \textcolor{keywordflow}{if}(l1>\hyperlink{energy__const_8h_ad1bd6eabac419670ddd3c9ed82145988}{MAXLOOP}) \textcolor{keywordflow}{break};
+00289     \textcolor{keywordflow}{if}(S[k] != 3) \textcolor{keywordflow}{continue};
+00290     minl  = j - i + k - \hyperlink{energy__const_8h_ad1bd6eabac419670ddd3c9ed82145988}{MAXLOOP} - 2;
+00291     c0    = k + VRNA\_GQUAD\_MIN\_BOX\_SIZE - 1;
+00292     minl  = \hyperlink{utils_8h_a33297b3679c713b0c4d897cd0fe3b122}{MAX2}(c0, minl);
+00293     c0    = j - 1;
+00294     maxl  = k + VRNA\_GQUAD\_MAX\_BOX\_SIZE + 1;
+00295     maxl  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(c0, maxl);
+00296     \textcolor{keywordflow}{for}(l = minl; l < maxl; l++)\{
+00297       \textcolor{keywordflow}{if}(S[l] != 3) \textcolor{keywordflow}{continue};
+00298       \textcolor{keywordflow}{if}(c == energy + ggg[k][l - k] + P->internal\_loop[l1 + j - l - 1])\{
+00299         *p = k; *q = l;
+00300         \textcolor{keywordflow}{return} 1;
+00301       \}
+00302     \}
+00303   \}
+00304 
+00305   l = j - 1;
+00306   \textcolor{keywordflow}{if}(S[l] == 3)
+00307     \textcolor{keywordflow}{for}(k = i + 4;
+00308         k < j - VRNA\_GQUAD\_MIN\_BOX\_SIZE;
+00309         k++)\{
+00310       l1    = k - i - 1;
+00311       \textcolor{keywordflow}{if}(l1>\hyperlink{energy__const_8h_ad1bd6eabac419670ddd3c9ed82145988}{MAXLOOP}) \textcolor{keywordflow}{break};
+00312       \textcolor{keywordflow}{if}(S[k] != 3) \textcolor{keywordflow}{continue};
+00313       \textcolor{keywordflow}{if}(c == energy + ggg[k][l - k] + P->internal\_loop[l1])\{
+00314         *p = k; *q = l;
+00315         \textcolor{keywordflow}{return} 1;
+00316       \}
+00317     \}
+00318 
+00319   \textcolor{keywordflow}{return} 0;
+00320 \}
+00321 
+00322 INLINE PRIVATE
+00323 \textcolor{keywordtype}{int}
+00324 E\_GQuad\_IntLoop(\textcolor{keywordtype}{int} i,
+00325                 \textcolor{keywordtype}{int} j,
+00326                 \textcolor{keywordtype}{int} type,
+00327                 \textcolor{keywordtype}{short} *S,
+00328                 \textcolor{keywordtype}{int} *ggg,
+00329                 \textcolor{keywordtype}{int} *index,
+00330                 \hyperlink{structparamT}{paramT} *P)\{
+00331 
+00332   \textcolor{keywordtype}{int} energy, ge, en1, en2, \hyperlink{fold__vars_8h_a72b511ed1201f7e23ec437e468790d74}{dangles}, p, q, l1, minq, maxq;
+00333   \textcolor{keywordtype}{int} c0, c1, c2, c3, up, d53, d5, d3;
+00334   \textcolor{keywordtype}{short} si, sj;
+00335 
+00336   dangles = P->\hyperlink{structparamT_aeb912822ef912705bc202b14f9d71ad9}{model\_details}.\hyperlink{structmodel__detailsT_a89f9df217a4a7f4351a642655976376b}{dangles};
+00337   si      = S[i + 1];
+00338   sj      = S[j - 1];
+00339   energy  = 0;
+00340 
+00341   \textcolor{keywordflow}{if}(dangles == 2)
+00342     energy += P->mismatchI[type][si][sj];
+00343 
+00344   \textcolor{keywordflow}{if}(type > 2)
+00345     energy += P->TerminalAU;
+00346 
+00347   ge = \hyperlink{energy__const_8h_a12c2040f25d8e3a7b9e1c2024c618cb6}{INF};
+00348 
+00349   p = i + 1;
+00350   \textcolor{keywordflow}{if}(S[p] == 3)\{
+00351     \textcolor{keywordflow}{if}(p < j - VRNA\_GQUAD\_MIN\_BOX\_SIZE)\{
+00352       minq  = j - i + p - \hyperlink{energy__const_8h_ad1bd6eabac419670ddd3c9ed82145988}{MAXLOOP} - 2;
+00353       c0    = p + VRNA\_GQUAD\_MIN\_BOX\_SIZE - 1;
+00354       minq  = \hyperlink{utils_8h_a33297b3679c713b0c4d897cd0fe3b122}{MAX2}(c0, minq);
+00355       c0    = j - 3;
+00356       maxq  = p + VRNA\_GQUAD\_MAX\_BOX\_SIZE + 1;
+00357       maxq  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(c0, maxq);
+00358       \textcolor{keywordflow}{for}(q = minq; q < maxq; q++)\{
+00359         \textcolor{keywordflow}{if}(S[q] != 3) \textcolor{keywordflow}{continue};
+00360         c0  = energy + ggg[index[q] + p] + P->internal\_loop[j - q - 1];
+00361         ge  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(ge, c0);
+00362       \}
+00363     \}
+00364   \}
+00365 
+00366   \textcolor{keywordflow}{for}(p = i + 2;
+00367       p < j - VRNA\_GQUAD\_MIN\_BOX\_SIZE;
+00368       p++)\{
+00369     l1    = p - i - 1;
+00370     \textcolor{keywordflow}{if}(l1>MAXLOOP) \textcolor{keywordflow}{break};
+00371     \textcolor{keywordflow}{if}(S[p] != 3) \textcolor{keywordflow}{continue};
+00372     minq  = j - i + p - MAXLOOP - 2;
+00373     c0    = p + VRNA\_GQUAD\_MIN\_BOX\_SIZE - 1;
+00374     minq  = \hyperlink{utils_8h_a33297b3679c713b0c4d897cd0fe3b122}{MAX2}(c0, minq);
+00375     c0    = j - 1;
+00376     maxq  = p + VRNA\_GQUAD\_MAX\_BOX\_SIZE + 1;
+00377     maxq  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(c0, maxq);
+00378     \textcolor{keywordflow}{for}(q = minq; q < maxq; q++)\{
+00379       \textcolor{keywordflow}{if}(S[q] != 3) \textcolor{keywordflow}{continue};
+00380       c0  = energy + ggg[index[q] + p] + P->internal\_loop[l1 + j - q - 1];
+00381       ge   = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(ge, c0);
+00382     \}
+00383   \}
+00384 
+00385   q = j - 1;
+00386   \textcolor{keywordflow}{if}(S[q] == 3)
+00387     \textcolor{keywordflow}{for}(p = i + 4;
+00388         p < j - VRNA\_GQUAD\_MIN\_BOX\_SIZE;
+00389         p++)\{
+00390       l1    = p - i - 1;
+00391       \textcolor{keywordflow}{if}(l1>MAXLOOP) \textcolor{keywordflow}{break};
+00392       \textcolor{keywordflow}{if}(S[p] != 3) \textcolor{keywordflow}{continue};
+00393       c0  = energy + ggg[index[q] + p] + P->internal\_loop[l1];
+00394       ge  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(ge, c0);
+00395     \}
+00396 
+00397 \textcolor{preprocessor}{#if 0}
+00398 \textcolor{preprocessor}{}  \textcolor{comment}{/* here comes the additional stuff for the odd dangle models */}
+00399   \textcolor{keywordflow}{if}(dangles % 1)\{
+00400     en1 = energy + P->dangle5[type][si];
+00401     en2 = energy + P->dangle5[type][sj];
+00402     en3 = energy + P->mismatchI[type][si][sj];
+00403 
+00404     \textcolor{comment}{/* first case with 5' dangle (i.e. j-1) onto enclosing pair */}
+00405     p = i + 1;
+00406     \textcolor{keywordflow}{if}(S[p] == 3)\{
+00407       \textcolor{keywordflow}{if}(p < j - VRNA\_GQUAD\_MIN\_BOX\_SIZE)\{
+00408         minq  = j - i + p - MAXLOOP - 2;
+00409         c0    = p + VRNA\_GQUAD\_MIN\_BOX\_SIZE - 1;
+00410         minq  = \hyperlink{utils_8h_a33297b3679c713b0c4d897cd0fe3b122}{MAX2}(c0, minq);
+00411         c0    = j - 4;
+00412         maxq  = p + VRNA\_GQUAD\_MAX\_BOX\_SIZE + 1;
+00413         maxq  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(c0, maxq);
+00414         \textcolor{keywordflow}{for}(q = minq; q < maxq; q++)\{
+00415           \textcolor{keywordflow}{if}(S[q] != 3) \textcolor{keywordflow}{continue};
+00416           c0  = en1 + ggg[index[q] + p] + P->internal\_loop[j - q - 1];
+00417           ge  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(ge, c0);
+00418         \}
+00419       \}
+00420     \}
+00421 
+00422     \textcolor{keywordflow}{for}(p = i + 2; p < j - VRNA\_GQUAD\_MIN\_BOX\_SIZE; p++)\{
+00423       l1    = p - i - 1;
+00424       \textcolor{keywordflow}{if}(l1>MAXLOOP) \textcolor{keywordflow}{break};
+00425       \textcolor{keywordflow}{if}(S[p] != 3) \textcolor{keywordflow}{continue};
+00426       minq  = j - i + p - MAXLOOP - 2;
+00427       c0    = p + VRNA\_GQUAD\_MIN\_BOX\_SIZE - 1;
+00428       minq  = \hyperlink{utils_8h_a33297b3679c713b0c4d897cd0fe3b122}{MAX2}(c0, minq);
+00429       c0    = j - 2;
+00430       maxq  = p + VRNA\_GQUAD\_MAX\_BOX\_SIZE + 1;
+00431       maxq  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(c0, maxq);
+00432       \textcolor{keywordflow}{for}(q = minq; q < maxq; q++)\{
+00433         \textcolor{keywordflow}{if}(S[q] != 3) \textcolor{keywordflow}{continue};
+00434         c0  = en1 + ggg[index[q] + p] + P->internal\_loop[l1 + j - q - 1];
+00435         ge   = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(ge, c0);
+00436       \}
+00437     \}
+00438 
+00439     q = j - 2;
+00440     \textcolor{keywordflow}{if}(S[q] == 3)
+00441       \textcolor{keywordflow}{for}(p = i + 4; p < j - VRNA\_GQUAD\_MIN\_BOX\_SIZE; p++)\{
+00442         l1    = p - i - 1;
+00443         \textcolor{keywordflow}{if}(l1>MAXLOOP) \textcolor{keywordflow}{break};
+00444         \textcolor{keywordflow}{if}(S[p] != 3) \textcolor{keywordflow}{continue};
+00445         c0  = en1 + ggg[index[q] + p] + P->internal\_loop[l1 + 1];
+00446         ge  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(ge, c0);
+00447       \}
+00448 
+00449     \textcolor{comment}{/* second case with 3' dangle (i.e. i+1) onto enclosing pair */}
+00450 
+00451   \}
+00452 \textcolor{preprocessor}{#endif}
+00453 \textcolor{preprocessor}{}  \textcolor{keywordflow}{return} ge;
+00454 \}
+00455 
+00456 INLINE PRIVATE
+00457 \textcolor{keywordtype}{int}
+00458 E\_GQuad\_IntLoop\_L(\textcolor{keywordtype}{int} i,
+00459                   \textcolor{keywordtype}{int} j,
+00460                   \textcolor{keywordtype}{int} type,
+00461                   \textcolor{keywordtype}{short} *S,
+00462                   \textcolor{keywordtype}{int} **ggg,
+00463                   \textcolor{keywordtype}{int} maxdist,
+00464                   \hyperlink{structparamT}{paramT} *P)\{
+00465 
+00466   \textcolor{keywordtype}{int} energy, ge, en1, en2, dangles, p, q, l1, minq, maxq;
+00467   \textcolor{keywordtype}{int} c0, c1, c2, c3, up, d53, d5, d3;
+00468   \textcolor{keywordtype}{short} si, sj;
+00469 
+00470   dangles = P->\hyperlink{structparamT_aeb912822ef912705bc202b14f9d71ad9}{model\_details}.\hyperlink{structmodel__detailsT_a89f9df217a4a7f4351a642655976376b}{dangles};
+00471   si      = S[i + 1];
+00472   sj      = S[j - 1];
+00473   energy  = 0;
+00474 
+00475   \textcolor{keywordflow}{if}(dangles == 2)
+00476     energy += P->mismatchI[type][si][sj];
+00477 
+00478   \textcolor{keywordflow}{if}(type > 2)
+00479     energy += P->TerminalAU;
+00480 
+00481   ge = \hyperlink{energy__const_8h_a12c2040f25d8e3a7b9e1c2024c618cb6}{INF};
+00482 
+00483   p = i + 1;
+00484   \textcolor{keywordflow}{if}(S[p] == 3)\{
+00485     \textcolor{keywordflow}{if}(p < j - VRNA\_GQUAD\_MIN\_BOX\_SIZE)\{
+00486       minq  = j - i + p - MAXLOOP - 2;
+00487       c0    = p + VRNA\_GQUAD\_MIN\_BOX\_SIZE - 1;
+00488       minq  = \hyperlink{utils_8h_a33297b3679c713b0c4d897cd0fe3b122}{MAX2}(c0, minq);
+00489       c0    = j - 3;
+00490       maxq  = p + VRNA\_GQUAD\_MAX\_BOX\_SIZE + 1;
+00491       maxq  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(c0, maxq);
+00492       \textcolor{keywordflow}{for}(q = minq; q < maxq; q++)\{
+00493         \textcolor{keywordflow}{if}(S[q] != 3) \textcolor{keywordflow}{continue};
+00494         c0  = energy + ggg[p][q-p] + P->internal\_loop[j - q - 1];
+00495         ge  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(ge, c0);
+00496       \}
+00497     \}
+00498   \}
+00499 
+00500   \textcolor{keywordflow}{for}(p = i + 2;
+00501       p < j - VRNA\_GQUAD\_MIN\_BOX\_SIZE;
+00502       p++)\{
+00503     l1    = p - i - 1;
+00504     \textcolor{keywordflow}{if}(l1>MAXLOOP) \textcolor{keywordflow}{break};
+00505     \textcolor{keywordflow}{if}(S[p] != 3) \textcolor{keywordflow}{continue};
+00506     minq  = j - i + p - MAXLOOP - 2;
+00507     c0    = p + VRNA\_GQUAD\_MIN\_BOX\_SIZE - 1;
+00508     minq  = \hyperlink{utils_8h_a33297b3679c713b0c4d897cd0fe3b122}{MAX2}(c0, minq);
+00509     c0    = j - 1;
+00510     maxq  = p + VRNA\_GQUAD\_MAX\_BOX\_SIZE + 1;
+00511     maxq  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(c0, maxq);
+00512     \textcolor{keywordflow}{for}(q = minq; q < maxq; q++)\{
+00513       \textcolor{keywordflow}{if}(S[q] != 3) \textcolor{keywordflow}{continue};
+00514       c0  = energy + ggg[p][q - p] + P->internal\_loop[l1 + j - q - 1];
+00515       ge   = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(ge, c0);
+00516     \}
+00517   \}
+00518 
+00519   q = j - 1;
+00520   \textcolor{keywordflow}{if}(S[q] == 3)
+00521     \textcolor{keywordflow}{for}(p = i + 4;
+00522         p < j - VRNA\_GQUAD\_MIN\_BOX\_SIZE;
+00523         p++)\{
+00524       l1    = p - i - 1;
+00525       \textcolor{keywordflow}{if}(l1>MAXLOOP) \textcolor{keywordflow}{break};
+00526       \textcolor{keywordflow}{if}(S[p] != 3) \textcolor{keywordflow}{continue};
+00527       c0  = energy + ggg[p][q - p] + P->internal\_loop[l1];
+00528       ge  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(ge, c0);
+00529     \}
+00530 
+00531   \textcolor{keywordflow}{return} ge;
+00532 \}
+00533 
+00534 INLINE PRIVATE
+00535 FLT\_OR\_DBL
+00536 exp\_E\_GQuad\_IntLoop(\textcolor{keywordtype}{int} i,
+00537                     \textcolor{keywordtype}{int} j,
+00538                     \textcolor{keywordtype}{int} type,
+00539                     \textcolor{keywordtype}{short} *S,
+00540                     FLT\_OR\_DBL *G,
+00541                     \textcolor{keywordtype}{int} *index,
+00542                     \hyperlink{structpf__paramT}{pf\_paramT} *pf)\{
+00543 
+00544   \textcolor{keywordtype}{int} k, l, minl, maxl, u, r;
+00545   FLT\_OR\_DBL q, qe, *expintern;
+00546   \textcolor{keywordtype}{short} si, sj;
+00547 
+00548   q         = 0;
+00549   si        = S[i + 1];
+00550   sj        = S[j - 1];
+00551   qe        = pf->expmismatchI[type][si][sj];
+00552   expintern = pf->expinternal;
+00553 
+00554   \textcolor{keywordflow}{if}(type > 2)
+00555     qe *= pf->expTermAU;
+00556 
+00557   k = i + 1;
+00558   \textcolor{keywordflow}{if}(S[k] == 3)\{
+00559     \textcolor{keywordflow}{if}(k < j - VRNA\_GQUAD\_MIN\_BOX\_SIZE)\{
+00560       minl  = j - i + k - MAXLOOP - 2;
+00561       u     = k + VRNA\_GQUAD\_MIN\_BOX\_SIZE - 1;
+00562       minl  = \hyperlink{utils_8h_a33297b3679c713b0c4d897cd0fe3b122}{MAX2}(u, minl);
+00563       u     = j - 3;
+00564       maxl  = k + VRNA\_GQUAD\_MAX\_BOX\_SIZE + 1;
+00565       maxl  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(u, maxl);
+00566       \textcolor{keywordflow}{for}(l = minl; l < maxl; l++)\{
+00567         \textcolor{keywordflow}{if}(S[l] != 3) \textcolor{keywordflow}{continue};
+00568         q += qe * G[index[k]-l] * expintern[j - l - 1];
+00569       \}
+00570     \}
+00571   \}
+00572 
+00573 
+00574   \textcolor{keywordflow}{for}(k = i + 2;
+00575       k <= j - VRNA\_GQUAD\_MIN\_BOX\_SIZE;
+00576       k++)\{
+00577     u = k - i - 1;
+00578     \textcolor{keywordflow}{if}(u > MAXLOOP) \textcolor{keywordflow}{break};
+00579     \textcolor{keywordflow}{if}(S[k] != 3) \textcolor{keywordflow}{continue};
+00580     minl  = j - i + k - MAXLOOP - 2;
+00581     r     = k + VRNA\_GQUAD\_MIN\_BOX\_SIZE - 1;
+00582     minl  = \hyperlink{utils_8h_a33297b3679c713b0c4d897cd0fe3b122}{MAX2}(r, minl);
+00583     maxl  = k + VRNA\_GQUAD\_MAX\_BOX\_SIZE + 1;
+00584     r     = j - 1;
+00585     maxl  = \hyperlink{utils_8h_ae0b9cd0ce090bd69b951aa73e8fa4f7d}{MIN2}(r, maxl);
+00586     \textcolor{keywordflow}{for}(l = minl; l < maxl; l++)\{
+00587       \textcolor{keywordflow}{if}(S[l] != 3) \textcolor{keywordflow}{continue};
+00588       q += qe * G[index[k]-l] * expintern[u + j - l - 1];
+00589     \}
+00590   \}
+00591 
+00592   l = j - 1;
+00593   \textcolor{keywordflow}{if}(S[l] == 3)
+00594     \textcolor{keywordflow}{for}(k = i + 4; k < j - VRNA\_GQUAD\_MIN\_BOX\_SIZE; k++)\{
+00595       u    = k - i - 1;
+00596       \textcolor{keywordflow}{if}(u>MAXLOOP) \textcolor{keywordflow}{break};
+00597       \textcolor{keywordflow}{if}(S[k] != 3) \textcolor{keywordflow}{continue};
+00598       q += qe * G[index[k]-l] * expintern[u];
+00599     \}
+00600 
+00601   \textcolor{keywordflow}{return} q;
+00602 \}
+00603 
+00604 \textcolor{preprocessor}{#endif}
+\end{DoxyCode}