1;;; Compiled by f2cl version: 2;;; ("f2cl1.l,v 1.215 2009/04/07 22:05:21 rtoy Exp $" 3;;; "f2cl2.l,v 1.37 2008/02/22 22:19:33 rtoy Exp $" 4;;; "f2cl3.l,v 1.6 2008/02/22 22:19:33 rtoy Exp $" 5;;; "f2cl4.l,v 1.7 2008/02/22 22:19:34 rtoy Exp $" 6;;; "f2cl5.l,v 1.200 2009/01/19 02:38:17 rtoy Exp $" 7;;; "f2cl6.l,v 1.48 2008/08/24 00:56:27 rtoy Exp $" 8;;; "macros.l,v 1.112 2009/01/08 12:57:19 rtoy Exp $") 9 10;;; Using Lisp CMU Common Lisp 19f (19F) 11;;; 12;;; Options: ((:prune-labels nil) (:auto-save t) (:relaxed-array-decls t) 13;;; (:coerce-assigns :as-needed) (:array-type ':array) 14;;; (:array-slicing t) (:declare-common nil) 15;;; (:float-format double-float)) 16 17(in-package :common-lisp-user) 18 19 20(let ((finish nil) 21 (iter 0) 22 (nfun 0) 23 (point 0) 24 (ispt 0) 25 (iypt 0) 26 (maxfev 0) 27 (info 0) 28 (bound 0) 29 (npt 0) 30 (cp 0) 31 (i 0) 32 (nfev 0) 33 (inmc 0) 34 (iycn 0) 35 (iscn 0) 36 (one 1.0) 37 (zero 0.0) 38 (gnorm 0.0) 39 (stp1 0.0) 40 (ftol 0.0) 41 (stp 0.0) 42 (ys 0.0) 43 (yy 0.0) 44 (sq 0.0) 45 (yr 0.0) 46 (beta 0.0) 47 (xnorm 0.0)) 48 (declare (type f2cl-lib:logical finish) 49 (type (f2cl-lib:integer4) iter nfun point ispt iypt maxfev info 50 bound npt cp i nfev inmc iycn iscn) 51 (type (double-float) one zero gnorm stp1 ftol stp ys yy sq yr beta 52 xnorm)) 53 (defun lbfgs (n m x f g diagco diag iprint eps xtol w iflag scache) 54 (declare (type (array f2cl-lib:integer4 (*)) iprint) 55 (type f2cl-lib:logical diagco) 56 (type (double-float) xtol eps f) 57 (type (array double-float (*)) scache w diag g x) 58 (type (f2cl-lib:integer4) iflag m n)) 59 (let () 60 (symbol-macrolet ((gtol (lb3-gtol *lb3-common-block*)) 61 (lp (lb3-lp *lb3-common-block*))) 62 (f2cl-lib:with-multi-array-data 63 ((x double-float x-%data% x-%offset%) 64 (g double-float g-%data% g-%offset%) 65 (diag double-float diag-%data% diag-%offset%) 66 (w double-float w-%data% w-%offset%) 67 (scache double-float scache-%data% scache-%offset%) 68 (iprint f2cl-lib:integer4 iprint-%data% iprint-%offset%)) 69 (prog () 70 (declare) 71 (if (= iflag 0) (go label10)) 72 (f2cl-lib:computed-goto (label172 label100) iflag) 73 label10 74 (setf iter 0) 75 (if (or (<= n 0) (<= m 0)) (go label196)) 76 (cond 77 ((<= gtol 1.0e-4) 78 (if (> lp 0) 79 (f2cl-lib:fformat lp 80 ("~%" 81 " GTOL IS LESS THAN OR EQUAL TO 1.D-04" 82 "~%" " IT HAS BEEN RESET TO 9.D-01" 83 "~%"))) 84 (setf gtol 0.9))) 85 (setf nfun 1) 86 (setf point 0) 87 (setf finish f2cl-lib:%false%) 88 (cond 89 (diagco 90 (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1)) 91 ((> i n) nil) 92 (tagbody 93 label30 94 (if 95 (<= (f2cl-lib:fref diag-%data% (i) ((1 n)) diag-%offset%) 96 zero) 97 (go label195))))) 98 (t 99 (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1)) 100 ((> i n) nil) 101 (tagbody 102 label40 103 (setf (f2cl-lib:fref diag-%data% (i) ((1 n)) diag-%offset%) 104 1.0))))) 105 (setf ispt (f2cl-lib:int-add n (f2cl-lib:int-mul 2 m))) 106 (setf iypt (f2cl-lib:int-add ispt (f2cl-lib:int-mul n m))) 107 (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1)) 108 ((> i n) nil) 109 (tagbody 110 label50 111 (setf (f2cl-lib:fref w-%data% 112 ((f2cl-lib:int-add ispt i)) 113 ((1 114 (f2cl-lib:int-add 115 (f2cl-lib:int-mul n 116 (f2cl-lib:int-add 117 (f2cl-lib:int-mul 2 118 m) 119 1)) 120 (f2cl-lib:int-mul 2 m)))) 121 w-%offset%) 122 (* (- (f2cl-lib:fref g-%data% (i) ((1 n)) g-%offset%)) 123 (f2cl-lib:fref diag-%data% 124 (i) 125 ((1 n)) 126 diag-%offset%))))) 127 (setf gnorm 128 (f2cl-lib:dsqrt 129 (multiple-value-bind 130 (ret-val var-0 var-1 var-2 var-3 var-4) 131 (ddot n g 1 g 1) 132 (declare (ignore var-1 var-2 var-3 var-4)) 133 (when var-0 134 (setf n var-0)) 135 ret-val))) 136 (setf stp1 (/ one gnorm)) 137 (setf ftol 1.0e-4) 138 (setf maxfev 20) 139 (if 140 (>= (f2cl-lib:fref iprint-%data% (1) ((1 2)) iprint-%offset%) 0) 141 (lb1 iprint iter nfun gnorm n m x f g stp finish)) 142 label80 143 (setf iter (f2cl-lib:int-add iter 1)) 144 (setf info 0) 145 (setf bound (f2cl-lib:int-sub iter 1)) 146 (if (= iter 1) (go label165)) 147 (if (> iter m) (setf bound m)) 148 (setf ys 149 (multiple-value-bind 150 (ret-val var-0 var-1 var-2 var-3 var-4) 151 (ddot n 152 (f2cl-lib:array-slice w 153 double-float 154 ((+ iypt npt 1)) 155 ((1 156 (f2cl-lib:int-add 157 (f2cl-lib:int-mul n 158 (f2cl-lib:int-add 159 (f2cl-lib:int-mul 160 2 161 m) 162 1)) 163 (f2cl-lib:int-mul 2 m))))) 164 1 165 (f2cl-lib:array-slice w 166 double-float 167 ((+ ispt npt 1)) 168 ((1 169 (f2cl-lib:int-add 170 (f2cl-lib:int-mul n 171 (f2cl-lib:int-add 172 (f2cl-lib:int-mul 173 2 174 m) 175 1)) 176 (f2cl-lib:int-mul 2 m))))) 177 1) 178 (declare (ignore var-1 var-2 var-3 var-4)) 179 (when var-0 180 (setf n var-0)) 181 ret-val)) 182 (cond 183 ((not diagco) 184 (setf yy 185 (multiple-value-bind 186 (ret-val var-0 var-1 var-2 var-3 var-4) 187 (ddot n 188 (f2cl-lib:array-slice w 189 double-float 190 ((+ iypt npt 1)) 191 ((1 192 (f2cl-lib:int-add 193 (f2cl-lib:int-mul n 194 (f2cl-lib:int-add 195 (f2cl-lib:int-mul 196 2 197 m) 198 1)) 199 (f2cl-lib:int-mul 2 m))))) 200 1 201 (f2cl-lib:array-slice w 202 double-float 203 ((+ iypt npt 1)) 204 ((1 205 (f2cl-lib:int-add 206 (f2cl-lib:int-mul n 207 (f2cl-lib:int-add 208 (f2cl-lib:int-mul 209 2 210 m) 211 1)) 212 (f2cl-lib:int-mul 2 m))))) 213 1) 214 (declare (ignore var-1 var-2 var-3 var-4)) 215 (when var-0 216 (setf n var-0)) 217 ret-val)) 218 (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1)) 219 ((> i n) nil) 220 (tagbody 221 label90 222 (setf (f2cl-lib:fref diag-%data% (i) ((1 n)) diag-%offset%) 223 (/ ys yy))))) 224 (t 225 (setf iflag 2) 226 (go end_label))) 227 label100 228 (cond 229 (diagco 230 (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1)) 231 ((> i n) nil) 232 (tagbody 233 label110 234 (if 235 (<= (f2cl-lib:fref diag-%data% (i) ((1 n)) diag-%offset%) 236 zero) 237 (go label195)))))) 238 (setf cp point) 239 (if (= point 0) (setf cp m)) 240 (setf (f2cl-lib:fref w-%data% 241 ((f2cl-lib:int-add n cp)) 242 ((1 243 (f2cl-lib:int-add 244 (f2cl-lib:int-mul n 245 (f2cl-lib:int-add 246 (f2cl-lib:int-mul 2 m) 247 1)) 248 (f2cl-lib:int-mul 2 m)))) 249 w-%offset%) 250 (/ one ys)) 251 (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1)) 252 ((> i n) nil) 253 (tagbody 254 label112 255 (setf (f2cl-lib:fref w-%data% 256 (i) 257 ((1 258 (f2cl-lib:int-add 259 (f2cl-lib:int-mul n 260 (f2cl-lib:int-add 261 (f2cl-lib:int-mul 2 262 m) 263 1)) 264 (f2cl-lib:int-mul 2 m)))) 265 w-%offset%) 266 (- (f2cl-lib:fref g-%data% (i) ((1 n)) g-%offset%))))) 267 (setf cp point) 268 (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1)) 269 ((> i bound) nil) 270 (tagbody 271 (setf cp (f2cl-lib:int-sub cp 1)) 272 (if (= cp -1) (setf cp (f2cl-lib:int-sub m 1))) 273 (setf sq 274 (multiple-value-bind 275 (ret-val var-0 var-1 var-2 var-3 var-4) 276 (ddot n 277 (f2cl-lib:array-slice w 278 double-float 279 ((+ ispt 280 (f2cl-lib:int-mul cp n) 281 1)) 282 ((1 283 (f2cl-lib:int-add 284 (f2cl-lib:int-mul n 285 (f2cl-lib:int-add 286 (f2cl-lib:int-mul 287 2 288 m) 289 1)) 290 (f2cl-lib:int-mul 2 291 m))))) 292 1 w 1) 293 (declare (ignore var-1 var-2 var-3 var-4)) 294 (when var-0 295 (setf n var-0)) 296 ret-val)) 297 (setf inmc (f2cl-lib:int-add n m cp 1)) 298 (setf iycn (f2cl-lib:int-add iypt (f2cl-lib:int-mul cp n))) 299 (setf (f2cl-lib:fref w-%data% 300 (inmc) 301 ((1 302 (f2cl-lib:int-add 303 (f2cl-lib:int-mul n 304 (f2cl-lib:int-add 305 (f2cl-lib:int-mul 2 306 m) 307 1)) 308 (f2cl-lib:int-mul 2 m)))) 309 w-%offset%) 310 (* 311 (f2cl-lib:fref w-%data% 312 ((f2cl-lib:int-add n cp 1)) 313 ((1 314 (f2cl-lib:int-add 315 (f2cl-lib:int-mul n 316 (f2cl-lib:int-add 317 (f2cl-lib:int-mul 318 2 319 m) 320 1)) 321 (f2cl-lib:int-mul 2 m)))) 322 w-%offset%) 323 sq)) 324 (multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5) 325 (daxpy n 326 (- 327 (f2cl-lib:fref w-%data% 328 (inmc) 329 ((1 330 (f2cl-lib:int-add 331 (f2cl-lib:int-mul n 332 (f2cl-lib:int-add 333 (f2cl-lib:int-mul 2 334 m) 335 1)) 336 (f2cl-lib:int-mul 2 m)))) 337 w-%offset%)) 338 (f2cl-lib:array-slice w 339 double-float 340 ((+ iycn 1)) 341 ((1 342 (f2cl-lib:int-add 343 (f2cl-lib:int-mul n 344 (f2cl-lib:int-add 345 (f2cl-lib:int-mul 346 2 347 m) 348 1)) 349 (f2cl-lib:int-mul 2 m))))) 350 1 w 1) 351 (declare (ignore var-1 var-2 var-3 var-4 var-5)) 352 (when var-0 353 (setf n var-0))) 354 label125)) 355 (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1)) 356 ((> i n) nil) 357 (tagbody 358 label130 359 (setf (f2cl-lib:fref w-%data% 360 (i) 361 ((1 362 (f2cl-lib:int-add 363 (f2cl-lib:int-mul n 364 (f2cl-lib:int-add 365 (f2cl-lib:int-mul 2 366 m) 367 1)) 368 (f2cl-lib:int-mul 2 m)))) 369 w-%offset%) 370 (* 371 (f2cl-lib:fref diag-%data% (i) ((1 n)) diag-%offset%) 372 (f2cl-lib:fref w-%data% 373 (i) 374 ((1 375 (f2cl-lib:int-add 376 (f2cl-lib:int-mul n 377 (f2cl-lib:int-add 378 (f2cl-lib:int-mul 379 2 380 m) 381 1)) 382 (f2cl-lib:int-mul 2 m)))) 383 w-%offset%))))) 384 (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1)) 385 ((> i bound) nil) 386 (tagbody 387 (setf yr 388 (multiple-value-bind 389 (ret-val var-0 var-1 var-2 var-3 var-4) 390 (ddot n 391 (f2cl-lib:array-slice w 392 double-float 393 ((+ iypt 394 (f2cl-lib:int-mul cp n) 395 1)) 396 ((1 397 (f2cl-lib:int-add 398 (f2cl-lib:int-mul n 399 (f2cl-lib:int-add 400 (f2cl-lib:int-mul 401 2 402 m) 403 1)) 404 (f2cl-lib:int-mul 2 405 m))))) 406 1 w 1) 407 (declare (ignore var-1 var-2 var-3 var-4)) 408 (when var-0 409 (setf n var-0)) 410 ret-val)) 411 (setf beta 412 (* 413 (f2cl-lib:fref w-%data% 414 ((f2cl-lib:int-add n cp 1)) 415 ((1 416 (f2cl-lib:int-add 417 (f2cl-lib:int-mul n 418 (f2cl-lib:int-add 419 (f2cl-lib:int-mul 420 2 421 m) 422 1)) 423 (f2cl-lib:int-mul 2 m)))) 424 w-%offset%) 425 yr)) 426 (setf inmc (f2cl-lib:int-add n m cp 1)) 427 (setf beta 428 (- 429 (f2cl-lib:fref w-%data% 430 (inmc) 431 ((1 432 (f2cl-lib:int-add 433 (f2cl-lib:int-mul n 434 (f2cl-lib:int-add 435 (f2cl-lib:int-mul 436 2 437 m) 438 1)) 439 (f2cl-lib:int-mul 2 m)))) 440 w-%offset%) 441 beta)) 442 (setf iscn (f2cl-lib:int-add ispt (f2cl-lib:int-mul cp n))) 443 (multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5) 444 (daxpy n beta 445 (f2cl-lib:array-slice w 446 double-float 447 ((+ iscn 1)) 448 ((1 449 (f2cl-lib:int-add 450 (f2cl-lib:int-mul n 451 (f2cl-lib:int-add 452 (f2cl-lib:int-mul 453 2 454 m) 455 1)) 456 (f2cl-lib:int-mul 2 m))))) 457 1 w 1) 458 (declare (ignore var-2 var-3 var-4 var-5)) 459 (when var-0 460 (setf n var-0)) 461 (when var-1 462 (setf beta var-1))) 463 (setf cp (f2cl-lib:int-add cp 1)) 464 (if (= cp m) (setf cp 0)) 465 label145)) 466 (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1)) 467 ((> i n) nil) 468 (tagbody 469 label160 470 (setf (f2cl-lib:fref w-%data% 471 ((f2cl-lib:int-add ispt 472 (f2cl-lib:int-mul point 473 n) 474 i)) 475 ((1 476 (f2cl-lib:int-add 477 (f2cl-lib:int-mul n 478 (f2cl-lib:int-add 479 (f2cl-lib:int-mul 2 480 m) 481 1)) 482 (f2cl-lib:int-mul 2 m)))) 483 w-%offset%) 484 (f2cl-lib:fref w-%data% 485 (i) 486 ((1 487 (f2cl-lib:int-add 488 (f2cl-lib:int-mul n 489 (f2cl-lib:int-add 490 (f2cl-lib:int-mul 491 2 492 m) 493 1)) 494 (f2cl-lib:int-mul 2 m)))) 495 w-%offset%)))) 496 label165 497 (setf nfev 0) 498 (setf stp one) 499 (if (= iter 1) (setf stp stp1)) 500 (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1)) 501 ((> i n) nil) 502 (tagbody 503 label170 504 (setf (f2cl-lib:fref w-%data% 505 (i) 506 ((1 507 (f2cl-lib:int-add 508 (f2cl-lib:int-mul n 509 (f2cl-lib:int-add 510 (f2cl-lib:int-mul 2 511 m) 512 1)) 513 (f2cl-lib:int-mul 2 m)))) 514 w-%offset%) 515 (f2cl-lib:fref g-%data% (i) ((1 n)) g-%offset%)))) 516 label172 517 (multiple-value-bind 518 (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8 var-9 519 var-10 var-11) 520 (mcsrch n x f g 521 (f2cl-lib:array-slice w 522 double-float 523 ((+ ispt (f2cl-lib:int-mul point n) 1)) 524 ((1 525 (f2cl-lib:int-add 526 (f2cl-lib:int-mul n 527 (f2cl-lib:int-add 528 (f2cl-lib:int-mul 529 2 530 m) 531 1)) 532 (f2cl-lib:int-mul 2 m))))) 533 stp ftol xtol maxfev info nfev diag) 534 (declare (ignore var-0 var-1 var-2 var-3 var-4 var-6 var-7 var-8 535 var-11)) 536 (setf stp var-5) 537 (setf info var-9) 538 (setf nfev var-10)) 539 (cond 540 ((= info (f2cl-lib:int-sub 1)) 541 (setf iflag 1) 542 (go end_label))) 543 (if (/= info 1) (go label190)) 544 (setf nfun (f2cl-lib:int-add nfun nfev)) 545 (setf npt (f2cl-lib:int-mul point n)) 546 (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1)) 547 ((> i n) nil) 548 (tagbody 549 (setf (f2cl-lib:fref w-%data% 550 ((f2cl-lib:int-add ispt npt i)) 551 ((1 552 (f2cl-lib:int-add 553 (f2cl-lib:int-mul n 554 (f2cl-lib:int-add 555 (f2cl-lib:int-mul 2 556 m) 557 1)) 558 (f2cl-lib:int-mul 2 m)))) 559 w-%offset%) 560 (* stp 561 (f2cl-lib:fref w-%data% 562 ((f2cl-lib:int-add ispt npt i)) 563 ((1 564 (f2cl-lib:int-add 565 (f2cl-lib:int-mul n 566 (f2cl-lib:int-add 567 (f2cl-lib:int-mul 568 2 569 m) 570 1)) 571 (f2cl-lib:int-mul 2 m)))) 572 w-%offset%))) 573 label175 574 (setf (f2cl-lib:fref w-%data% 575 ((f2cl-lib:int-add iypt npt i)) 576 ((1 577 (f2cl-lib:int-add 578 (f2cl-lib:int-mul n 579 (f2cl-lib:int-add 580 (f2cl-lib:int-mul 2 581 m) 582 1)) 583 (f2cl-lib:int-mul 2 m)))) 584 w-%offset%) 585 (- (f2cl-lib:fref g-%data% (i) ((1 n)) g-%offset%) 586 (f2cl-lib:fref w-%data% 587 (i) 588 ((1 589 (f2cl-lib:int-add 590 (f2cl-lib:int-mul n 591 (f2cl-lib:int-add 592 (f2cl-lib:int-mul 593 2 594 m) 595 1)) 596 (f2cl-lib:int-mul 2 m)))) 597 w-%offset%))))) 598 (setf point (f2cl-lib:int-add point 1)) 599 (if (= point m) (setf point 0)) 600 (setf gnorm 601 (f2cl-lib:dsqrt 602 (multiple-value-bind 603 (ret-val var-0 var-1 var-2 var-3 var-4) 604 (ddot n g 1 g 1) 605 (declare (ignore var-1 var-2 var-3 var-4)) 606 (when var-0 607 (setf n var-0)) 608 ret-val))) 609 (setf xnorm 610 (f2cl-lib:dsqrt 611 (multiple-value-bind 612 (ret-val var-0 var-1 var-2 var-3 var-4) 613 (ddot n x 1 x 1) 614 (declare (ignore var-1 var-2 var-3 var-4)) 615 (when var-0 616 (setf n var-0)) 617 ret-val))) 618 (setf xnorm (f2cl-lib:dmax1 1.0 xnorm)) 619 (if (<= (/ gnorm xnorm) eps) (setf finish f2cl-lib:%true%)) 620 (if 621 (>= (f2cl-lib:fref iprint-%data% (1) ((1 2)) iprint-%offset%) 0) 622 (lb1 iprint iter nfun gnorm n m x f g stp finish)) 623 (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1)) 624 ((> i n) nil) 625 (tagbody 626 (setf (f2cl-lib:fref scache-%data% (i) ((1 n)) scache-%offset%) 627 (f2cl-lib:fref x-%data% (i) ((1 n)) x-%offset%)) 628 label177)) 629 (cond 630 (finish 631 (setf iflag 0) 632 (go end_label))) 633 (go label80) 634 label190 635 (setf iflag -1) 636 (if (> lp 0) 637 (f2cl-lib:fformat lp 638 ("~%" " IFLAG= -1 " "~%" 639 " LINE SEARCH FAILED. SEE" 640 " DOCUMENTATION OF ROUTINE MCSRCH" "~%" 641 " ERROR RETURN" " OF LINE SEARCH: INFO= " 1 642 (("~2D")) "~%" 643 " POSSIBLE CAUSES: FUNCTION OR GRADIENT ARE INCORRECT" 644 "~%" " OR INCORRECT TOLERANCES" "~%") 645 info)) 646 (go end_label) 647 label195 648 (setf iflag -2) 649 (if (> lp 0) 650 (f2cl-lib:fformat lp 651 ("~%" " IFLAG= -2" "~%" " THE" 1 (("~5D")) 652 "-TH DIAGONAL ELEMENT OF THE" "~%" 653 " INVERSE HESSIAN APPROXIMATION IS NOT POSITIVE" 654 "~%") 655 i)) 656 (go end_label) 657 label196 658 (setf iflag -3) 659 (if (> lp 0) 660 (f2cl-lib:fformat lp 661 ("~%" " IFLAG= -3" "~%" 662 " IMPROPER INPUT PARAMETERS (N OR M" 663 " ARE NOT POSITIVE)" "~%"))) 664 (go end_label) 665 end_label 666 (return 667 (values n nil nil nil nil nil nil nil nil nil nil iflag nil)))))))) 668 669(in-package #-gcl #:cl-user #+gcl "CL-USER") 670#+#.(cl:if (cl:find-package '#:f2cl) '(and) '(or)) 671(eval-when (:load-toplevel :compile-toplevel :execute) 672 (setf (gethash 'fortran-to-lisp::lbfgs fortran-to-lisp::*f2cl-function-info*) 673 (fortran-to-lisp::make-f2cl-finfo 674 :arg-types '((fortran-to-lisp::integer4) (fortran-to-lisp::integer4) 675 (array double-float (*)) (double-float) 676 (array double-float (*)) fortran-to-lisp::logical 677 (array double-float (*)) 678 (array fortran-to-lisp::integer4 (2)) (double-float) 679 (double-float) (array double-float (*)) 680 (fortran-to-lisp::integer4) (array double-float (*))) 681 :return-values '(fortran-to-lisp::n nil nil nil nil nil nil nil nil 682 nil nil fortran-to-lisp::iflag nil) 683 :calls '(fortran-to-lisp::mcsrch fortran-to-lisp::lb1)))) 684 685