Branch Coverage

levmar-2.5/lmbc_core.c
Criterion Covered Total %
branch 312 520 60.0


line true false branch
117 2534 0 if(!sx) /* no scaling */
223 0 if(!sx) /* no scaling */
118 10136 2534 for (i = 0; i < m; ++i)
892 223 for (i = 0; i < m; ++i)
121 0 0 for (i = 0; i < m; ++i)
0 0 for (i = 0; i < m; ++i)
124 0 2534 if (sln > stepmx) {
0 223 if (sln > stepmx) {
127 0 0 for(i=0; i
0 0 for(i=0; i
131 10136 2534 for(i=0, slp=0.; i
892 223 for(i=0, slp=0.; i
134 2534 0 if(!sx) /* no scaling */
223 0 if(!sx) /* no scaling */
135 10136 2534 for (i = 0; i < m; ++i) {
892 223 for (i = 0; i < m; ++i) {
136 10136 0 tmp1 = (FABS(x[i])>=LM_CNST(1.))? FABS(x[i]) : LM_CNST(1.);
0 10136 tmp1 = (FABS(x[i])>=LM_CNST(1.))? FABS(x[i]) : LM_CNST(1.);
0 0 tmp1 = (FABS(x[i])>=LM_CNST(1.))? FABS(x[i]) : LM_CNST(1.);
892 0 tmp1 = (FABS(x[i])>=LM_CNST(1.))? FABS(x[i]) : LM_CNST(1.);
0 892 tmp1 = (FABS(x[i])>=LM_CNST(1.))? FABS(x[i]) : LM_CNST(1.);
0 0 tmp1 = (FABS(x[i])>=LM_CNST(1.))? FABS(x[i]) : LM_CNST(1.);
137 10050 86 tmp2 = FABS(p[i])/tmp1;
877 15 tmp2 = FABS(p[i])/tmp1;
138 7593 2543 if(rln < tmp2) rln = tmp2;
664 228 if(rln < tmp2) rln = tmp2;
141 0 0 for (i = 0; i < m; ++i) {
0 0 for (i = 0; i < m; ++i) {
142 0 0 tmp1 = (FABS(x[i])>=LM_CNST(1.)/sx[i])? FABS(x[i]) : LM_CNST(1.)/sx[i];
0 0 tmp1 = (FABS(x[i])>=LM_CNST(1.)/sx[i])? FABS(x[i]) : LM_CNST(1.)/sx[i];
0 0 tmp1 = (FABS(x[i])>=LM_CNST(1.)/sx[i])? FABS(x[i]) : LM_CNST(1.)/sx[i];
0 0 tmp1 = (FABS(x[i])>=LM_CNST(1.)/sx[i])? FABS(x[i]) : LM_CNST(1.)/sx[i];
0 0 tmp1 = (FABS(x[i])>=LM_CNST(1.)/sx[i])? FABS(x[i]) : LM_CNST(1.)/sx[i];
0 0 tmp1 = (FABS(x[i])>=LM_CNST(1.)/sx[i])? FABS(x[i]) : LM_CNST(1.)/sx[i];
143 0 0 tmp2 = FABS(p[i])/tmp1;
0 0 tmp2 = FABS(p[i])/tmp1;
144 0 0 if(rln < tmp2) rln = tmp2;
0 0 if(rln < tmp2) rln = tmp2;
151 12915 0 for(j=__LSITMAX; j>=0; --j) {
421 0 for(j=__LSITMAX; j>=0; --j) {
152 51660 12915 for (i = 0; i < m; ++i)
1684 421 for (i = 0; i < m; ++i)
170 0 2109 if (lambda == LM_CNST(1.) && sln > stepmx * LM_CNST(.99)) *mxtake = 1;
0 0 if (lambda == LM_CNST(1.) && sln > stepmx * LM_CNST(.99)) *mxtake = 1;
0 30 if (lambda == LM_CNST(1.) && sln > stepmx * LM_CNST(.99)) *mxtake = 1;
0 0 if (lambda == LM_CNST(1.) && sln > stepmx * LM_CNST(.99)) *mxtake = 1;
178 425 10381 if (lambda < rmnlmb) {
193 198 if (lambda < rmnlmb) {
187 0 10381 if (!LM_FINITE(fpls)) {
0 198 if (!LM_FINITE(fpls)) {
192 2534 7847 if (firstback) { /* first backtrack: quadratic fit */
198 0 if (firstback) { /* first backtrack: quadratic fit */
205 8 7839 if (disc > b * b)
0 0 if (disc > b * b)
207 0 8 tlmbda = (-b + ((a3 < 0)? -(LM_REAL)sqrt(disc): (LM_REAL)sqrt(disc))) /a3;
0 0 tlmbda = (-b + ((a3 < 0)? -(LM_REAL)sqrt(disc): (LM_REAL)sqrt(disc))) /a3;
210 7839 0 tlmbda = (-b + ((a3 < 0)? (LM_REAL)sqrt(disc): -(LM_REAL)sqrt(disc))) /a3;
0 0 tlmbda = (-b + ((a3 < 0)? (LM_REAL)sqrt(disc): -(LM_REAL)sqrt(disc))) /a3;
212 0 7847 if (tlmbda > lambda * LM_CNST(.5))
0 0 if (tlmbda > lambda * LM_CNST(.5))
217 8828 1553 if (tlmbda < lambda * LM_CNST(.1))
183 15 if (tlmbda < lambda * LM_CNST(.1))
238 0 125400 if(!lb){ /* no lower bounds */
0 52072 if(!lb){ /* no lower bounds */
239 0 0 if(!ub) /* no upper bounds */
0 0 if(!ub) /* no upper bounds */
242 0 0 for(i=0; i
0 0 for(i=0; i
243 0 0 if(p[i]>ub[i]) p[i]=ub[i];
0 0 if(p[i]>ub[i]) p[i]=ub[i];
247 0 125400 if(!ub){ /* lower bounds only */
0 52072 if(!ub){ /* lower bounds only */
248 0 0 for(i=0; i
0 0 for(i=0; i
249 0 0 if(p[i]
0 0 if(p[i]
252 501590 125400 for(i=0; i
208288 52072 for(i=0; i
253 0 501590 p[i]=__MEDIAN3(lb[i], p[i], ub[i]);
0 0 p[i]=__MEDIAN3(lb[i], p[i], ub[i]);
0 0 p[i]=__MEDIAN3(lb[i], p[i], ub[i]);
376215 125375 p[i]=__MEDIAN3(lb[i], p[i], ub[i]);
0 125375 p[i]=__MEDIAN3(lb[i], p[i], ub[i]);
0 208288 p[i]=__MEDIAN3(lb[i], p[i], ub[i]);
0 0 p[i]=__MEDIAN3(lb[i], p[i], ub[i]);
0 0 p[i]=__MEDIAN3(lb[i], p[i], ub[i]);
156226 52062 p[i]=__MEDIAN3(lb[i], p[i], ub[i]);
0 52062 p[i]=__MEDIAN3(lb[i], p[i], ub[i]);
347 0 11 if(n
0 5 if(n
352 0 11 if(!jacf){
0 5 if(!jacf){
358 0 11 if(!LEVMAR_BOX_CHECK(lb, ub, m)){
0 5 if(!LEVMAR_BOX_CHECK(lb, ub, m)){
363 11 0 if(opts){
5 0 if(opts){
378 0 11 if(!work){
0 5 if(!work){
381 0 0 if(!work){
0 0 if(!work){
405 42 11 for(i=0; i
20 5 for(i=0; i
425 0 11 if(!LM_FINITE(p_eL2)) stop=7;
0 5 if(!LM_FINITE(p_eL2)) stop=7;
427 45010 9 for(k=0; k
45010 0 for(k=0; k
15474 3 for(k=0; k
15472 2 for(k=0; k
430 2 45008 if(p_eL2<=eps3){ /* error is small */
0 15472 if(p_eL2<=eps3){ /* error is small */
466 720000 45000 for(i=m*m; i-->0; )
247552 15472 for(i=m*m; i-->0; )
468 180000 45000 for(i=m; i-->0; )
61888 15472 for(i=m; i-->0; )
471 180000 45000 for(l=n; l-->0; ){
61888 15472 for(l=n; l-->0; ){
473 720000 180000 for(i=m; i-->0; ){
247552 61888 for(i=m; i-->0; ){
476 1800000 720000 for(j=i+1; j-->0; ) /* j<=i computes lower triangular part only */
618880 247552 for(j=i+1; j-->0; ) /* j<=i computes lower triangular part only */
484 180000 45000 for(i=m; i-->0; ) /* copy to upper part */
61888 15472 for(i=m; i-->0; ) /* copy to upper part */
485 270000 180000 for(j=i+1; j
92832 61888 for(j=i+1; j
494 24 8 for(i=0; i
0 0 for(i=0; i
497 8000 8 for(i=0; i
0 0 for(i=0; i
500 24000 8000 for(l=0, jacrow=jac+i*m, tmp=e[i]; l
0 0 for(l=0, jacrow=jac+i*m, tmp=e[i]; l
510 180024 45008 for(i=j=numactive=0, p_L2=jacTe_inf=0.0; i
61888 15472 for(i=j=numactive=0, p_L2=jacTe_inf=0.0; i
511 180024 0 if(ub && p[i]==ub[i]){ ++numactive; if(jacTe[i]>0.0) ++j; }
44984 135040 if(ub && p[i]==ub[i]){ ++numactive; if(jacTe[i]>0.0) ++j; }
44982 2 if(ub && p[i]==ub[i]){ ++numactive; if(jacTe[i]>0.0) ++j; }
61888 0 if(ub && p[i]==ub[i]){ ++numactive; if(jacTe[i]>0.0) ++j; }
15462 46426 if(ub && p[i]==ub[i]){ ++numactive; if(jacTe[i]>0.0) ++j; }
15462 0 if(ub && p[i]==ub[i]){ ++numactive; if(jacTe[i]>0.0) ++j; }
512 135040 0 else if(lb && p[i]==lb[i]){ ++numactive; if(jacTe[i]<0.0) ++j; }
0 135040 else if(lb && p[i]==lb[i]){ ++numactive; if(jacTe[i]<0.0) ++j; }
0 0 else if(lb && p[i]==lb[i]){ ++numactive; if(jacTe[i]<0.0) ++j; }
46426 0 else if(lb && p[i]==lb[i]){ ++numactive; if(jacTe[i]<0.0) ++j; }
0 46426 else if(lb && p[i]==lb[i]){ ++numactive; if(jacTe[i]<0.0) ++j; }
0 0 else if(lb && p[i]==lb[i]){ ++numactive; if(jacTe[i]<0.0) ++j; }
513 65096 69944 else if(jacTe_inf < (tmp=FABS(jacTe[i]))) jacTe_inf=tmp;
46896 88144 else if(jacTe_inf < (tmp=FABS(jacTe[i]))) jacTe_inf=tmp;
7938 38488 else if(jacTe_inf < (tmp=FABS(jacTe[i]))) jacTe_inf=tmp;
15755 30671 else if(jacTe_inf < (tmp=FABS(jacTe[i]))) jacTe_inf=tmp;
530 45006 2 if(j==numactive && (jacTe_inf <= eps1)){
0 45006 if(j==numactive && (jacTe_inf <= eps1)){
15472 0 if(j==numactive && (jacTe_inf <= eps1)){
0 15472 if(j==numactive && (jacTe_inf <= eps1)){
537 11 44997 if(k==0){
5 15467 if(k==0){
538 0 11 if(!lb && !ub){ /* no bounds */
0 0 if(!lb && !ub){ /* no bounds */
0 5 if(!lb && !ub){ /* no bounds */
0 0 if(!lb && !ub){ /* no bounds */
539 0 0 for(i=0, tmp=LM_REAL_MIN; i
0 0 for(i=0, tmp=LM_REAL_MIN; i
540 0 0 if(diag_jacTjac[i]>tmp) tmp=diag_jacTjac[i]; /* find max diagonal element */
0 0 if(diag_jacTjac[i]>tmp) tmp=diag_jacTjac[i]; /* find max diagonal element */
550 180024 45008 for(i=0; i
61888 15472 for(i=0; i
573 180024 45008 for(i=0; i
61888 15472 for(i=0; i
578 180024 45008 for(i=0, Dp_L2=0.0; i
61888 15472 for(i=0, Dp_L2=0.0; i
584 0 45008 if(Dp_L2<=eps2_sq*p_L2){ /* relative change in p is small, stop */
0 15472 if(Dp_L2<=eps2_sq*p_L2){ /* relative change in p is small, stop */
589 0 45008 if(Dp_L2>=(p_L2+eps2)/(LM_CNST(EPSILON)*LM_CNST(EPSILON))){ /* almost singular */
0 15472 if(Dp_L2>=(p_L2+eps2)/(LM_CNST(EPSILON)*LM_CNST(EPSILON))){ /* almost singular */
609 26 44982 if(pDp_eL2<=gamma_sq*p_eL2){
10 15462 if(pDp_eL2<=gamma_sq*p_eL2){
610 96 26 for(i=0, dL=0.0; i
40 10 for(i=0, dL=0.0; i
614 26 0 if(dL>0.0){
10 0 if(dL>0.0){
618 16 10 mu=mu*( (tmp>=LM_CNST(ONE_THIRD))? tmp : LM_CNST(ONE_THIRD) );
10 0 mu=mu*( (tmp>=LM_CNST(ONE_THIRD))? tmp : LM_CNST(ONE_THIRD) );
621 0 0 mu=(mu>=pDp_eL2)? pDp_eL2 : mu; /* pDp_eL2 is the new pDp_eL2 */
0 0 mu=(mu>=pDp_eL2)? pDp_eL2 : mu; /* pDp_eL2 is the new pDp_eL2 */
629 96 26 for(i=0 ; i
40 10 for(i=0 ; i
632 8072 26 for(i=0; i
40 10 for(i=0; i
646 0 0 if(nu2<=nu){ /* nu has wrapped around (overflown). Thanks to Frank Jordan for spotting this case */
0 0 if(nu2<=nu){ /* nu has wrapped around (overflown). Thanks to Frank Jordan for spotting this case */
652 0 0 for(i=0; i
0 0 for(i=0; i
663 179928 44982 for(i=0, jacTeDp=0.0; i
61848 15462 for(i=0, jacTeDp=0.0; i
668 2534 42448 if(jacTeDp<=-rho*pow(Dp_L2, _POW_/LM_CNST(2.0))){
223 15239 if(jacTeDp<=-rho*pow(Dp_L2, _POW_/LM_CNST(2.0))){
673 2534 0 tmp=(LM_REAL)sqrt(p_L2); stepmx=LM_CNST(1e3)*( (tmp>=LM_CNST(1.0))? tmp : LM_CNST(1.0) );
223 0 tmp=(LM_REAL)sqrt(p_L2); stepmx=LM_CNST(1e3)*( (tmp>=LM_CNST(1.0))? tmp : LM_CNST(1.0) );
679 425 2109 if(iretcd!=0) goto gradproj; /* rather inelegant but effective way to handle LNSRCH() failures... */
193 30 if(iretcd!=0) goto gradproj; /* rather inelegant but effective way to handle LNSRCH() failures... */
713 171492 42873 for(i=0, tmp=0.0; i
61728 15432 for(i=0, tmp=0.0; i
717 0 42873 t0=(tmp<=tini)? tmp : tini; /* guard against poor scaling & large steps; see (3.50) in C.T. Kelley's book */
0 15432 t0=(tmp<=tini)? tmp : tini; /* guard against poor scaling & large steps; see (3.50) in C.T. Kelley's book */
719 40839 2034 for(t=(gprevtaken)? t : t0; t>tming; t*=beta){
80381 0 for(t=(gprevtaken)? t : t0; t>tming; t*=beta){
15407 25 for(t=(gprevtaken)? t : t0; t>tming; t*=beta){
36595 0 for(t=(gprevtaken)? t : t0; t>tming; t*=beta){
720 321524 80381 for(i=0; i
146380 36595 for(i=0; i
723 321524 80381 for(i=0; i
146380 36595 for(i=0; i
742 321524 80381 for(i=0, tmp=0.0; i
146380 36595 for(i=0, tmp=0.0; i
745 40865 39516 if(gprevtaken && pDp_eL2<=p_eL2 + LM_CNST(2.0)*LM_CNST(0.99999)*tmp){ /* starting t too small */
37465 3400 if(gprevtaken && pDp_eL2<=p_eL2 + LM_CNST(2.0)*LM_CNST(0.99999)*tmp){ /* starting t too small */
15474 21121 if(gprevtaken && pDp_eL2<=p_eL2 + LM_CNST(2.0)*LM_CNST(0.99999)*tmp){ /* starting t too small */
14904 570 if(gprevtaken && pDp_eL2<=p_eL2 + LM_CNST(2.0)*LM_CNST(0.99999)*tmp){ /* starting t too small */
751 42873 43 if(pDp_eL2<=p_eL2 + LM_CNST(2.0)*alpha*tmp) break;
15432 6259 if(pDp_eL2<=p_eL2 + LM_CNST(2.0)*alpha*tmp) break;
761 179928 44982 for(i=0, Dp_L2=0.0; i
61848 15462 for(i=0, Dp_L2=0.0; i
767 0 44982 if(Dp_L2<=eps2_sq*p_L2){ /* relative change in p is small, stop */
2 15460 if(Dp_L2<=eps2_sq*p_L2){ /* relative change in p is small, stop */
772 179928 44982 for(i=0 ; i
61840 15460 for(i=0 ; i
775 179928 44982 for(i=0; i
61840 15460 for(i=0; i
784 9 2 if(k>=itmax) stop=3;
3 2 if(k>=itmax) stop=3;
786 42 11 for(i=0; i
20 5 for(i=0; i
789 11 0 if(info){
5 0 if(info){
794 42 11 for(i=0, tmp=LM_REAL_MIN; i
20 5 for(i=0, tmp=LM_REAL_MIN; i
795 13 29 if(tmp
5 15 if(tmp
805 11 0 if(covar){
5 0 if(covar){
809 0 11 if(freework) free(work);
0 5 if(freework) free(work);
812 11 0 if(linsolver) (*linsolver)(NULL, NULL, NULL, 0);
5 0 if(linsolver) (*linsolver)(NULL, NULL, NULL, 0);
819 11 0 return (stop!=4 && stop!=7)? k : LM_ERROR;
11 0 return (stop!=4 && stop!=7)? k : LM_ERROR;
5 0 return (stop!=4 && stop!=7)? k : LM_ERROR;
5 0 return (stop!=4 && stop!=7)? k : LM_ERROR;
845 10004 0 if(dta->ffdif){
5250 0 if(dta->ffdif){
902 3 0 data.ffdif=!opts || opts[4]>=0.0;
3 0 data.ffdif=!opts || opts[4]>=0.0;
2 0 data.ffdif=!opts || opts[4]>=0.0;
2 0 data.ffdif=!opts || opts[4]>=0.0;
906 0 3 if(!data.hx){
0 2 if(!data.hx){
912 3 0 data.delta=(opts)? FABS(opts[4]) : (LM_REAL)LM_DIFF_DELTA;
3 0 data.delta=(opts)? FABS(opts[4]) : (LM_REAL)LM_DIFF_DELTA;
2 0 data.delta=(opts)? FABS(opts[4]) : (LM_REAL)LM_DIFF_DELTA;
2 0 data.delta=(opts)? FABS(opts[4]) : (LM_REAL)LM_DIFF_DELTA;
917 3 0 if(data.ffdif)
2 0 if(data.ffdif)