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) |