mathlib-lapack-svd.c

     1  //! @file mathlib-lapack-svd.c
     2  //
     3  //! @section copyright
     4  //
     5  // This file is part of VIF - vintage fortran compiler.
     6  // Copyright 2020-2025 J. Marcel van der Veer <algol68g@xs4all.nl>.
     7  //
     8  //! @section license
     9  //
    10  // This program is free software; you can redistribute it and/or modify it 
    11  // under the terms of the gnu general public license as published by the 
    12  // free software foundation; either version 3 of the license, or 
    13  // (at your option) any later version.
    14  //
    15  // This program is distributed in the hope that it will be useful, but 
    16  // without any warranty; without even the implied warranty of merchantability 
    17  // or fitness for a particular purpose. See the GNU general public license for 
    18  // more details. you should have received a copy of the GNU general public 
    19  // license along with this program. If not, see <http://www.gnu.org/licenses/>.
    20  //
    21  //! @Synopsis
    22  //
    23  //! 85 subprograms from LAPACK-SVD
    24  
    25  // Compiled from Fortran source code by VIF.
    26  // Selected subprograms are:
    27  //
    28  // DBDSDC DGELSS DGSVJ1 DLALSA DLARF  DLASD2 DLASDQ DLASQ6 DORGBR DORMQR
    29  // DBDSQR DGEQP3 DISNAN DLALSD DLARFB DLASD3 DLASDT DLASR  DORGL2 DPOCON
    30  // DCOMBS DGEQR2 DLABAD DLAMRG DLARFG DLASD4 DLASET DLASRT DORGLQ DRSCL
    31  // DGEBD2 DGEQRF DLABRD DLANGE DLARFT DLASD5 DLASQ1 DLASSQ DORGQR IEEECK
    32  // DGEBRD DGESDD DLACN2 DLANST DLARTG DLASD6 DLASQ2 DLASV2 DORM2R ILADLC
    33  // DGEJSV DGESVD DLACPY DLAPMT DLAS2  DLASD7 DLASQ3 DLASWP DORMBR ILADLR
    34  // DGELQ2 DGESVD DLAED6 DLAPY2 DLASCL DLASD8 DLASQ4 DLATRS DORML2 ILAENV
    35  // DGELQF DGESVJ DLAISN DLAQP2 DLASD0 DLASDA DLASQ5 DORG2R DORMLQ IPARMQ
    36  // DGELSD DGSVJ0 DLALS0 DLAQPS DLASD1
    37  
    38  // Selected SVD functionality from LAPACK. 
    39  // 
    40  // The original code is F90 from 2023, but could be made to compile 
    41  // with VIF trivially.
    42  // 
    43  // Included LAPACK routines of interest to VIF are:
    44  // 
    45  //   DGEJSV
    46  //   DGELSD 
    47  //   DGELSS 
    48  //   DGESDD
    49  //   DGESVD
    50  //   DGESVDQ
    51  //   DGESVJ
    52  // 
    53  // Source: netlib.org/lapack
    54  // LAPACK 3.12.0
    55  
    56  // The license for LAPACK Fortran source code is:
    57  //
    58  // Copyright (c) 1992-2013 The University of Tennessee and The University
    59  //                         of Tennessee Research Foundation.  All rights
    60  //                         reserved.
    61  // Copyright (c) 2000-2013 The University of California Berkeley. All
    62  //                         rights reserved.
    63  // Copyright (c) 2006-2013 The University of Colorado Denver.  All rights
    64  //                         reserved.
    65  // 
    66  // $COPYRIGHT$
    67  // 
    68  // Additional copyrights may follow
    69  // 
    70  // $HEADER$
    71  // 
    72  // Redistribution and use in source and binary forms, with or without
    73  // modification, are permitted provided that the following conditions are
    74  // met:
    75  // 
    76  // - Redistributions of source code must retain the above copyright
    77  //   notice, this list of conditions and the following disclaimer.
    78  // 
    79  // - Redistributions in binary form must reproduce the above copyright
    80  //   notice, this list of conditions and the following disclaimer listed
    81  //   in this license in the documentation and/or other materials
    82  //   provided with the distribution.
    83  // 
    84  // - Neither the name of the copyright holders nor the names of its
    85  //   contributors may be used to endorse or promote products derived from
    86  //   this software without specific prior written permission.
    87  // 
    88  // The copyright holders provide no reassurances that the source code
    89  // provided does not infringe any patent, copyright, or any other
    90  // intellectual property rights of third parties.  The copyright holders
    91  // disclaim any liability to any recipient for claims brought against
    92  // recipient by any third party for infringement of that parties
    93  // intellectual property rights.
    94  // 
    95  // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    96  // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    97  // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    98  // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
    99  // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   100  // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   101  // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   102  // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   103  // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   104  // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   105  // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   106  // `
   107  
   108  /*
   109  Generated by VIF - experimental VIntage Fortran compiler.
   110  VIF release 1.1.7
   111  */
   264  static CALLS __calls[__ncalls] = {
   265    {"dbdsdc", 0}, // subroutine
   266    {"dbdsqr", 0}, // subroutine
   267    {"dcombssq", 0}, // subroutine
   268    {"dgebd2", 0}, // subroutine
   269    {"dgebrd", 0}, // subroutine
   270    {"dgejsv", 0}, // subroutine
   271    {"dgelq2", 0}, // subroutine
   272    {"dgelqf", 0}, // subroutine
   273    {"dgelsd", 0}, // subroutine
   274    {"dgelss", 0}, // subroutine
   275    {"dgeqp3", 0}, // subroutine
   276    {"dgeqr2", 0}, // subroutine
   277    {"dgeqrf", 0}, // subroutine
   278    {"dgesdd", 0}, // subroutine
   279    {"dgesvd", 0}, // subroutine
   280    {"dgesvdq", 0}, // subroutine
   281    {"dgesvj", 0}, // subroutine
   282    {"dgsvj0", 0}, // subroutine
   283    {"dgsvj1", 0}, // subroutine
   284    {"disnan", 0}, // logical*4 function
   285    {"dlabad", 0}, // subroutine
   286    {"dlabrd", 0}, // subroutine
   287    {"dlacn2", 0}, // subroutine
   288    {"dlacpy", 0}, // subroutine
   289    {"dlaed6", 0}, // subroutine
   290    {"dlaisnan", 0}, // logical*4 function
   291    {"dlals0", 0}, // subroutine
   292    {"dlalsa", 0}, // subroutine
   293    {"dlalsd", 0}, // subroutine
   294    {"dlamrg", 0}, // subroutine
   295    {"dlange", 0}, // real*8 function
   296    {"dlanst", 0}, // real*8 function
   297    {"dlapmt", 0}, // subroutine
   298    {"dlapy2", 0}, // real*8 function
   299    {"dlaqp2", 0}, // subroutine
   300    {"dlaqps", 0}, // subroutine
   301    {"dlarfb", 0}, // subroutine
   302    {"dlarf", 0}, // subroutine
   303    {"dlarfg", 0}, // subroutine
   304    {"dlarft", 0}, // subroutine
   305    {"dlartg", 0}, // subroutine
   306    {"dlas2", 0}, // subroutine
   307    {"dlascl", 0}, // subroutine
   308    {"dlasd0", 0}, // subroutine
   309    {"dlasd1", 0}, // subroutine
   310    {"dlasd2", 0}, // subroutine
   311    {"dlasd3", 0}, // subroutine
   312    {"dlasd4", 0}, // subroutine
   313    {"dlasd5", 0}, // subroutine
   314    {"dlasd6", 0}, // subroutine
   315    {"dlasd7", 0}, // subroutine
   316    {"dlasd8", 0}, // subroutine
   317    {"dlasda", 0}, // subroutine
   318    {"dlasdq", 0}, // subroutine
   319    {"dlasdt", 0}, // subroutine
   320    {"dlaset", 0}, // subroutine
   321    {"dlasq1", 0}, // subroutine
   322    {"dlasq2", 0}, // subroutine
   323    {"dlasq3", 0}, // subroutine
   324    {"dlasq4", 0}, // subroutine
   325    {"dlasq5", 0}, // subroutine
   326    {"dlasq6", 0}, // subroutine
   327    {"dlasr", 0}, // subroutine
   328    {"dlasrt", 0}, // subroutine
   329    {"dlassq", 0}, // subroutine
   330    {"dlasv2", 0}, // subroutine
   331    {"dlaswp", 0}, // subroutine
   332    {"dlatrs", 0}, // subroutine
   333    {"dorg2r", 0}, // subroutine
   334    {"dorgbr", 0}, // subroutine
   335    {"dorgl2", 0}, // subroutine
   336    {"dorglq", 0}, // subroutine
   337    {"dorgqr", 0}, // subroutine
   338    {"dorm2r", 0}, // subroutine
   339    {"dormbr", 0}, // subroutine
   340    {"dorml2", 0}, // subroutine
   341    {"dormlq", 0}, // subroutine
   342    {"dormqr", 0}, // subroutine
   343    {"dpocon", 0}, // subroutine
   344    {"drscl", 0}, // subroutine
   345    {"ieeeck", 0}, // integer*4 function
   346    {"iladlc", 0}, // integer*4 function
   347    {"iladlr", 0}, // integer*4 function
   348    {"ilaenv", 0}, // integer*4 function
   349    {"iparmq", 0}, // integer*4 function
   350    {NULL, 0}
   351  };
   353  int_4 _p_ ldu_, real_8 _p_ vt_, int_4 _p_ ldvt_, real_8 _p_ q_, int_4 _p_ iq_, real_8 _p_ work_, int_4 _p_ iwork_, 
   354  int_4 _p_ info_);
   356  real_8 _p_ e_, real_8 _p_ vt_, int_4 _p_ ldvt_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ c_, int_4 _p_ ldc_, real_8 
   357  _p_ work_, int_4 _p_ info_);
   360  real_8 _p_ tauq_, real_8 _p_ taup_, real_8 _p_ work_, int_4 _p_ info_);
   362  real_8 _p_ tauq_, real_8 _p_ taup_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_);
   364  , int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ sva_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ 
   365  v_, int_4 _p_ ldv_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ iwork_, int_4 _p_ info_);
   367  int_4 _p_ info_);
   369  int_4 _p_ lwork_, int_4 _p_ info_);
   371  int_4 _p_ ldb_, real_8 _p_ s_, real_8 _p_ rcond_, int_4 _p_ rank_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ iwork_
   372  , int_4 _p_ info_);
   374  int_4 _p_ ldb_, real_8 _p_ s_, real_8 _p_ rcond_, int_4 _p_ rank_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_)
   375  ;
   377  real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_);
   379  int_4 _p_ info_);
   381  int_4 _p_ lwork_, int_4 _p_ info_);
   383  real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ vt_, int_4 _p_ ldvt_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ iwork_, 
   384  int_4 _p_ info_);
   386  real_8 _p_ s_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ vt_, int_4 _p_ ldvt_, real_8 _p_ work_, int_4 _p_ lwork_, 
   387  int_4 _p_ info_);
   389  int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ s_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ v_, int_4 _p_ 
   390  ldv_, int_4 _p_ numrank_, int_4 _p_ iwork_, int_4 _p_ liwork_, real_8 _p_ work_, int_4 _p_ lwork_, real_8 _p_ rwork_, 
   391  int_4 _p_ lrwork_, int_4 _p_ info_);
   393  int_4 _p_ lda_, real_8 _p_ sva_, int_4 _p_ mv_, real_8 _p_ v_, int_4 _p_ ldv_, real_8 _p_ work_, int_4 _p_ lwork_, 
   394  int_4 _p_ info_);
   396  real_8 _p_ sva_, int_4 _p_ mv_, real_8 _p_ v_, int_4 _p_ ldv_, real_8 _p_ eps_, real_8 _p_ sfmin_, real_8 _p_ tol_, 
   397  int_4 _p_ nsweep_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_);
   399  real_8 _p_ d_, real_8 _p_ sva_, int_4 _p_ mv_, real_8 _p_ v_, int_4 _p_ ldv_, real_8 _p_ eps_, real_8 _p_ sfmin_, 
   400  real_8 _p_ tol_, int_4 _p_ nsweep_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_);
   404  real_8 _p_ e_, real_8 _p_ tauq_, real_8 _p_ taup_, real_8 _p_ x_, int_4 _p_ ldx_, real_8 _p_ y_, int_4 _p_ ldy_);
   406  int_4 _p_ isave_);
   408  int_4 _p_ ldb_);
   410  real_8 _p_ finit_, real_8 _p_ tau_, int_4 _p_ info_);
   413  b_, int_4 _p_ ldb_, real_8 _p_ bx_, int_4 _p_ ldbx_, int_4 _p_ perm_, int_4 _p_ givptr_, int_4 _p_ givcol_, int_4 _p_ 
   414  ldgcol_, real_8 _p_ givnum_, int_4 _p_ ldgnum_, real_8 _p_ poles_, real_8 _p_ difl_, real_8 _p_ difr_, real_8 _p_ z_, 
   415  int_4 _p_ k_, real_8 _p_ c_, real_8 _p_ s_, real_8 _p_ work_, int_4 _p_ info_);
   417  ldb_, real_8 _p_ bx_, int_4 _p_ ldbx_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ vt_, int_4 _p_ k_, real_8 _p_ difl_, 
   418  real_8 _p_ difr_, real_8 _p_ z_, real_8 _p_ poles_, int_4 _p_ givptr_, int_4 _p_ givcol_, int_4 _p_ ldgcol_, int_4 _p_ 
   419  perm_, real_8 _p_ givnum_, real_8 _p_ c_, real_8 _p_ s_, real_8 _p_ work_, int_4 _p_ iwork_, int_4 _p_ info_);
   421  , real_8 _p_ b_, int_4 _p_ ldb_, real_8 _p_ rcond_, int_4 _p_ rank_, real_8 _p_ work_, int_4 _p_ iwork_, int_4 _p_ 
   422  info_);
   424  index_);
   428  );
   431  real_8 _p_ tau_, real_8 _p_ vn1_, real_8 _p_ vn2_, real_8 _p_ work_);
   433  int_4 _p_ lda_, int_4 _p_ jpvt_, real_8 _p_ tau_, real_8 _p_ vn1_, real_8 _p_ vn2_, real_8 _p_ auxv_, real_8 _p_ f_, 
   434  int_4 _p_ ldf_);
   436  n_, int_4 _p_ k_, real_8 _p_ v_, int_4 _p_ ldv_, real_8 _p_ t_, int_4 _p_ ldt_, real_8 _p_ c_, int_4 _p_ ldc_, real_8 
   437  _p_ work_, int_4 _p_ ldwork_);
   439  real_8 _p_ c_, int_4 _p_ ldc_, real_8 _p_ work_);
   442  real_8 _p_ tau_, real_8 _p_ t_, int_4 _p_ ldt_);
   446  , int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, int_4 _p_ info_);
   448  real_8 _p_ vt_, int_4 _p_ ldvt_, int_4 _p_ smlsiz_, int_4 _p_ iwork_, real_8 _p_ work_, int_4 _p_ info_);
   450  beta_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ vt_, int_4 _p_ ldvt_, int_4 _p_ idxq_, int_4 _p_ iwork_, real_8 _p_ 
   451  work_, int_4 _p_ info_);
   453  real_8 _p_ alpha_, real_8 _p_ beta_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ vt_, int_4 _p_ ldvt_, real_8 _p_ dsigma_
   454  , real_8 _p_ u2_, int_4 _p_ ldu2_, real_8 _p_ vt2_, int_4 _p_ ldvt2_, int_4 _p_ idxp_, int_4 _p_ idx_, int_4 _p_ idxc_, 
   455  int_4 _p_ idxq_, int_4 _p_ coltyp_, int_4 _p_ info_);
   457  int_4 _p_ ldq_, real_8 _p_ dsigma_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ u2_, int_4 _p_ ldu2_, real_8 _p_ vt_, 
   458  int_4 _p_ ldvt_, real_8 _p_ vt2_, int_4 _p_ ldvt2_, int_4 _p_ idxc_, int_4 _p_ ctot_, real_8 _p_ z_, int_4 _p_ info_);
   460  real_8 _p_ sigma_, real_8 _p_ work_, int_4 _p_ info_);
   462  dsigma_, real_8 _p_ work_);
   464  vf_, real_8 _p_ vl_, real_8 _p_ alpha_, real_8 _p_ beta_, int_4 _p_ idxq_, int_4 _p_ perm_, int_4 _p_ givptr_, int_4 
   465  _p_ givcol_, int_4 _p_ ldgcol_, real_8 _p_ givnum_, int_4 _p_ ldgnum_, real_8 _p_ poles_, real_8 _p_ difl_, real_8 _p_ 
   466  difr_, real_8 _p_ z_, int_4 _p_ k_, real_8 _p_ c_, real_8 _p_ s_, real_8 _p_ work_, int_4 _p_ iwork_, int_4 _p_ info_);
   468  real_8 _p_ z_, real_8 _p_ zw_, real_8 _p_ vf_, real_8 _p_ vfw_, real_8 _p_ vl_, real_8 _p_ vlw_, real_8 _p_ alpha_, 
   469  real_8 _p_ beta_, real_8 _p_ dsigma_, int_4 _p_ idx_, int_4 _p_ idxp_, int_4 _p_ idxq_, int_4 _p_ perm_, int_4 _p_ 
   470  givptr_, int_4 _p_ givcol_, int_4 _p_ ldgcol_, real_8 _p_ givnum_, int_4 _p_ ldgnum_, real_8 _p_ c_, real_8 _p_ s_, 
   471  int_4 _p_ info_);
   473  real_8 _p_ difl_, real_8 _p_ difr_, int_4 _p_ lddifr_, real_8 _p_ dsigma_, real_8 _p_ work_, int_4 _p_ info_);
   475  e_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ vt_, int_4 _p_ k_, real_8 _p_ difl_, real_8 _p_ difr_, real_8 _p_ z_, 
   476  real_8 _p_ poles_, int_4 _p_ givptr_, int_4 _p_ givcol_, int_4 _p_ ldgcol_, int_4 _p_ perm_, real_8 _p_ givnum_, real_8 
   477  _p_ c_, real_8 _p_ s_, real_8 _p_ work_, int_4 _p_ iwork_, int_4 _p_ info_);
   479  , real_8 _p_ d_, real_8 _p_ e_, real_8 _p_ vt_, int_4 _p_ ldvt_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ c_, int_4 
   480  _p_ ldc_, real_8 _p_ work_, int_4 _p_ info_);
   482  ndimr_, int_4 _p_ msub_);
   484  , int_4 _p_ lda_);
   488  sigma_, real_8 _p_ desig_, real_8 _p_ qmax_, int_4 _p_ nfail_, int_4 _p_ iter_, int_4 _p_ ndiv_, logical_4 _p_ ieee_, 
   489  int_4 _p_ ttype_, real_8 _p_ dmin1_, real_8 _p_ dmin2_, real_8 _p_ dn_, real_8 _p_ dn1_, real_8 _p_ dn2_, real_8 _p_ g_
   490  , real_8 _p_ tau_);
   492  real_8 _p_ dmin1_, real_8 _p_ dmin2_, real_8 _p_ dn_, real_8 _p_ dn1_, real_8 _p_ dn2_, real_8 _p_ tau_, int_4 _p_ 
   493  ttype_, real_8 _p_ g_);
   495  , real_8 _p_ dmin_, real_8 _p_ dmin1_, real_8 _p_ dmin2_, real_8 _p_ dn_, real_8 _p_ dnm1_, real_8 _p_ dnm2_, logical_4 
   496  _p_ ieee_, real_8 _p_ eps_);
   498  dmin1_, real_8 _p_ dmin2_, real_8 _p_ dn_, real_8 _p_ dnm1_, real_8 _p_ dnm2_);
   500  real_8 _p_ s_, real_8 _p_ a_, int_4 _p_ lda_);
   504  snr_, real_8 _p_ csr_, real_8 _p_ snl_, real_8 _p_ csl_);
   506  int_4 _p_ incx_);
   508  , int_4 _p_ lda_, real_8 _p_ x_, real_8 _p_ scale_, real_8 _p_ cnorm_, int_4 _p_ info_);
   510  real_8 _p_ work_, int_4 _p_ info_);
   512  real_8 _p_ tau_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_);
   514  real_8 _p_ work_, int_4 _p_ info_);
   516  real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_);
   518  real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_);
   520  int_4 _p_ lda_, real_8 _p_ tau_, real_8 _p_ c_, int_4 _p_ ldc_, real_8 _p_ work_, int_4 _p_ info_);
   522  real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ tau_, real_8 _p_ c_, int_4 _p_ ldc_, real_8 _p_ work_, int_4 _p_ lwork_, 
   523  int_4 _p_ info_);
   525  int_4 _p_ lda_, real_8 _p_ tau_, real_8 _p_ c_, int_4 _p_ ldc_, real_8 _p_ work_, int_4 _p_ info_);
   527  int_4 _p_ lda_, real_8 _p_ tau_, real_8 _p_ c_, int_4 _p_ ldc_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_);
   529  int_4 _p_ lda_, real_8 _p_ tau_, real_8 _p_ c_, int_4 _p_ ldc_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_);
   531  rcond_, real_8 _p_ work_, int_4 _p_ iwork_, int_4 _p_ info_);
   537  int_4 _p_ n4_);
   539  , int_4 _p_ lwork_);
   540  int_4 _dbdsdc (char _p_ uplo_, char _p_ compq_, int_4 _p_ n_, real_8 _p_ d_, real_8 _p_ e_, real_8 _p_ u_, int_4 _p_ 
   541  ldu_, real_8 _p_ vt_, int_4 _p_ ldvt_, real_8 _p_ q_, int_4 _p_ iq_, real_8 _p_ work_, int_4 _p_ iwork_, int_4 _p_ 
   542  info_)
   543  { // ** body not listed **
   771  }
   772  int_4 _dbdsqr (char _p_ uplo_, int_4 _p_ n_, int_4 _p_ ncvt_, int_4 _p_ nru_, int_4 _p_ ncc_, real_8 _p_ d_, real_8 _p_ 
   773  e_, real_8 _p_ vt_, int_4 _p_ ldvt_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ c_, int_4 _p_ ldc_, real_8 _p_ work_, 
   774  int_4 _p_ info_)
   775  { // ** body not listed **
  1212  }
  1213  int_4 _dcombssq (real_8 _p_ v1_, real_8 _p_ v2_)
  1214  { // ** body not listed **
  1230  }
  1231  int_4 _dgebd2 (int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ d_, real_8 _p_ e_, real_8 _p_ 
  1232  tauq_, real_8 _p_ taup_, real_8 _p_ work_, int_4 _p_ info_)
  1233  { // ** body not listed **
  1304  }
  1305  int_4 _dgebrd (int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ d_, real_8 _p_ e_, real_8 _p_ 
  1306  tauq_, real_8 _p_ taup_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_)
  1307  { // ** body not listed **
  1394  }
  1395  int_4 _dgejsv (char _p_ joba_, char _p_ jobu_, char _p_ jobv_, char _p_ jobr_, char _p_ jobt_, char _p_ jobp_, int_4 
  1396  _p_ m_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ sva_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ v_, 
  1397  int_4 _p_ ldv_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ iwork_, int_4 _p_ info_)
  1398  { // ** body not listed **
  2381  }
  2382  int_4 _dgelq2 (int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ tau_, real_8 _p_ work_, int_4 _p_ 
  2383  info_)
  2384  { // ** body not listed **
  2418  }
  2419  int_4 _dgelqf (int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ tau_, real_8 _p_ work_, int_4 _p_ 
  2420  lwork_, int_4 _p_ info_)
  2421  { // ** body not listed **
  2494  }
  2495  int_4 _dgelsd (int_4 _p_ m_, int_4 _p_ n_, int_4 _p_ nrhs_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ b_, int_4 _p_ 
  2496  ldb_, real_8 _p_ s_, real_8 _p_ rcond_, int_4 _p_ rank_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ iwork_, int_4 
  2497  _p_ info_)
  2498  { // ** body not listed **
  2736  }
  2737  int_4 _dgelss (int_4 _p_ m_, int_4 _p_ n_, int_4 _p_ nrhs_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ b_, int_4 _p_ 
  2738  ldb_, real_8 _p_ s_, real_8 _p_ rcond_, int_4 _p_ rank_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_)
  2739  { // ** body not listed **
  3097  }
  3098  int_4 _dgeqp3 (int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, int_4 _p_ jpvt_, real_8 _p_ tau_, real_8 _p_ 
  3099  work_, int_4 _p_ lwork_, int_4 _p_ info_)
  3100  { // ** body not listed **
  3216  }
  3217  int_4 _dgeqr2 (int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ tau_, real_8 _p_ work_, int_4 _p_ 
  3218  info_)
  3219  { // ** body not listed **
  3253  }
  3254  int_4 _dgeqrf (int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ tau_, real_8 _p_ work_, int_4 _p_ 
  3255  lwork_, int_4 _p_ info_)
  3256  { // ** body not listed **
  3329  }
  3330  int_4 _dgesdd (char _p_ jobz_, int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ s_, real_8 _p_ u_, 
  3331  int_4 _p_ ldu_, real_8 _p_ vt_, int_4 _p_ ldvt_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ iwork_, int_4 _p_ info_)
  3332  { // ** body not listed **
  3975  }
  3976  int_4 _dgesvd (char _p_ jobu_, char _p_ jobvt_, int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ 
  3977  s_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ vt_, int_4 _p_ ldvt_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_
  3978  )
  3979  { // ** body not listed **
  5574  }
  5575      int_4 _dgesvdq (char _p_ joba_, char _p_ jobp_, char _p_ jobr_, char _p_ jobu_, char _p_ jobv_, int_4 _p_ m_, int_4 _p_ 
  5576      n_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ s_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ v_, int_4 _p_ ldv_, int_4 
  5577      _p_ numrank_, int_4 _p_ iwork_, int_4 _p_ liwork_, real_8 _p_ work_, int_4 _p_ lwork_, real_8 _p_ rwork_, int_4 _p_ 
  5578      lrwork_, int_4 _p_ info_)
  5579      {
  5580        static int_4 ierr_, iwoff_, nr_, n1_, optratio_, p_, q_, lwcon_, lwqp3_, lwrk_dgelqf_, lwrk_dgesvd_, lwrk_dgesvd2_, 
  5581        lwrk_dgeqp3_, lwrk_dgeqrf_, lwrk_dormlq_, lwrk_dormqr_, lwrk_dormqr2_, lwlqf_, lwqrf_, lwsvd_, lwsvd2_, lworq_, lworq2_
  5582        , lworlq_, minwrk_, minwrk2_, optwrk_, optwrk2_, iminwrk_, rminwrk_;
  5583        static logical_4 accla_, acclm_, acclh_, ascaled_, conda_, dntwu_, dntwv_, lquery_, lsvc0_, lsvec_, rowprm_, rsvec_, 
  5584        rtrans_, wntua_, wntuf_, wntur_, wntus_, wntva_, wntvr_;
  5586        int_4 $0_, $1_, $2_, $3_, $4_, $5_, $6_, $7_, $8_, $9_, $10_, $11_, $12_, $13_, $14_, $15_, $16_, $17_, $18_, $19_, 
  5587        $20_, $21_, $22_, $23_, $24_, $25_, $26_, $41_, $42_, $45_, $49_, $50_, $53_, $54_, $57_, $58_, $59_, $62_, $63_, $66_, 
  5588        $69_, $70_, $73_, $74_, $75_, $76_, $79_, $81_, $84_, $86_, $87_, $90_, $92_, $95_, $97_, $98_, $101_, $103_, $106_, 
  5589        $109_, $110_, $113_, $114_, $117_, $120_, $122_, $125_, $128_, $129_, $132_, $133_, $136_, $137_, $138_, $141_, $142_, 
  5590        $145_, $148_, $149_, $152_, $154_, $157_, $160_, $161_, $164_, $165_, $168_, $170_, $173_, $176_, $177_, $180_, $181_, 
  5591        $184_, $187_, $189_, $192_, $195_, $196_, $199_, $200_, $203_, $204_, $205_, $208_, $209_, $212_, $215_, $216_, $219_, 
  5592        $221_, $224_, $227_, $228_, $231_, $232_, $233_;
  5593        logical_4 $80_, $85_, $91_, $96_, $102_, $121_, $153_, $169_, $188_, $220_;
  5594        real_8 $27_, $28_, $29_, $30_, $31_, $32_, $33_, $34_, $35_, $36_, $37_, $38_, $39_, $40_, $43_, $44_, $46_, $47_, $48_
  5595        , $51_, $52_, $55_, $56_, $60_, $61_, $64_, $65_, $67_, $68_, $71_, $72_, $77_, $78_, $82_, $83_, $88_, $89_, $93_, 
  5596        $94_, $99_, $100_, $104_, $105_, $107_, $108_, $111_, $112_, $115_, $116_, $118_, $119_, $123_, $124_, $126_, $127_, 
  5597        $130_, $131_, $134_, $135_, $139_, $140_, $143_, $144_, $146_, $147_, $150_, $151_, $155_, $156_, $158_, $159_, $162_, 
  5598        $163_, $166_, $167_, $171_, $172_, $174_, $175_, $178_, $179_, $182_, $183_, $185_, $186_, $190_, $191_, $193_, $194_, 
  5599        $197_, $198_, $201_, $202_, $206_, $207_, $210_, $211_, $213_, $214_, $217_, $218_, $222_, $223_, $225_, $226_, $229_, 
  5600        $230_, $234_, $235_, $236_, $237_;
  5601        extern int_4 _dscal ();
  5602        extern int_4 _xerbla ();
  5603        extern logical_4 _lsame ();
  5604        extern int_4 _idamax ();
  5605        extern real_8 _dnrm2 ();
  5606        extern real_8 _dlamch ();
  5607        wntus_ = _lsame (jobu_, _dc_52) || _lsame (jobu_, _dc_0);
  5608        wntur_ = _lsame (jobu_, _dc_15);
  5609        wntua_ = _lsame (jobu_, _dc_7);
  5610        wntuf_ = _lsame (jobu_, _dc_16);
  5611        lsvc0_ = wntus_ || wntur_ || wntua_;
  5612        lsvec_ = lsvc0_ || wntuf_;
  5613        dntwu_ = _lsame (jobu_, _dc_2);
  5614        wntvr_ = _lsame (jobv_, _dc_15);
  5615        wntva_ = _lsame (jobv_, _dc_7) || _lsame (jobv_, _dc_11);
  5616        rsvec_ = wntvr_ || wntva_;
  5617        dntwv_ = _lsame (jobv_, _dc_2);
  5618        accla_ = _lsame (joba_, _dc_7);
  5619        acclm_ = _lsame (joba_, _dc_8);
  5620        conda_ = _lsame (joba_, _dc_24);
  5621        acclh_ = _lsame (joba_, _dc_60) || conda_;
  5622        rowprm_ = _lsame (jobp_, _dc_3);
  5623        rtrans_ = _lsame (jobr_, _dc_25);
  5624        if (rowprm_) {
  5625          if (conda_) {
  5626            iminwrk_ = _max (1, (*n_) + (*m_) - 1 + (*n_));
  5627          }
  5628          else {
  5629            iminwrk_ = _max (1, (*n_) + (*m_) - 1);
  5630          }
  5631          rminwrk_ = _max (2, (*m_));
  5632        }
  5633        else {
  5634          if (conda_) {
  5635            iminwrk_ = _max (1, (*n_) + (*n_));
  5636          }
  5637          else {
  5638            iminwrk_ = _max (1, (*n_));
  5639          }
  5640          rminwrk_ = 2;
  5641        }
  5642        lquery_ = ((*liwork_) == -1 || (*lwork_) == -1 || (*lrwork_) == -1);
  5643        (*info_) = 0;
  5644        if (! ((accla_ || acclm_ || acclh_))) {
  5645          (*info_) = -1;
  5646        }
  5647        else if (! ((rowprm_ || _lsame (jobp_, _dc_2)))) {
  5648          (*info_) = -2;
  5649        }
  5650        else if (! ((rtrans_ || _lsame (jobr_, _dc_2)))) {
  5651          (*info_) = -3;
  5652        }
  5653        else if (! ((lsvec_ || dntwu_))) {
  5654          (*info_) = -4;
  5655        }
  5656        else if (wntur_ && wntva_) {
  5657          (*info_) = -5;
  5658        }
  5659        else if (! ((rsvec_ || dntwv_))) {
  5660          (*info_) = -5;
  5661        }
  5662        else if ((*m_) < 0) {
  5663          (*info_) = -6;
  5664        }
  5665        else if (((*n_) < 0) || ((*n_) > (*m_))) {
  5666          (*info_) = -7;
  5667        }
  5668        else if ((*lda_) < _max (1, (*m_))) {
  5669          (*info_) = -9;
  5670        }
  5671        else if ((*ldu_) < 1 || (lsvc0_ && (*ldu_) < (*m_)) || (wntuf_ && (*ldu_) < (*n_))) {
  5672          (*info_) = -12;
  5673        }
  5674        else if ((*ldv_) < 1 || (rsvec_ && (*ldv_) < (*n_)) || (conda_ && (*ldv_) < (*n_))) {
  5675          (*info_) = -14;
  5676        }
  5677        else if ((*liwork_) < iminwrk_ && ! (lquery_)) {
  5678          (*info_) = -17;
  5679        }
  5680        if ((*info_) == 0) {
  5681          lwqp3_ = 3 * (*n_) + 1;
  5682          if (wntus_ || wntur_) {
  5683            lworq_ = _max ((*n_), 1);
  5684          }
  5685          else if (wntua_) {
  5686            lworq_ = _max ((*m_), 1);
  5687          }
  5688          lwcon_ = 3 * (*n_);
  5689          lwsvd_ = _max (5 * (*n_), 1);
  5690          if (lquery_) {
  5691            (void) _dgeqp3 (m_, n_, a_, lda_, iwork_, rdummy_, rdummy_, &_km1, &ierr_);
  5692            lwrk_dgeqp3_ = (int_4) (_aintd (rdummy_[0]));
  5693            if (wntus_ || wntur_) {
  5694              (void) _dormqr (_dc_1, _dc_2, m_, n_, n_, a_, lda_, rdummy_, u_, ldu_, rdummy_, &_km1, &ierr_);
  5695              lwrk_dormqr_ = (int_4) (_aintd (rdummy_[0]));
  5696            }
  5697            else if (wntua_) {
  5698              (void) _dormqr (_dc_1, _dc_2, m_, m_, n_, a_, lda_, rdummy_, u_, ldu_, rdummy_, &_km1, &ierr_);
  5699              lwrk_dormqr_ = (int_4) (_aintd (rdummy_[0]));
  5700            }
  5701            else {
  5702              lwrk_dormqr_ = 0;
  5703            }
  5704          }
  5705          minwrk_ = 2;
  5706          optwrk_ = 2;
  5707          if (! ((lsvec_ || rsvec_))) {
  5708            if (conda_) {
  5709              minwrk_ = ($0_ = _max ((*n_) + lwqp3_, lwcon_), _max ($0_, lwsvd_));
  5710            }
  5711            else {
  5712              minwrk_ = _max ((*n_) + lwqp3_, lwsvd_);
  5713            }
  5714            if (lquery_) {
  5715              (void) _dgesvd (_dc_2, _dc_2, n_, n_, a_, lda_, s_, u_, ldu_, v_, ldv_, rdummy_, &_km1, &ierr_);
  5716              lwrk_dgesvd_ = (int_4) (_aintd (rdummy_[0]));
  5717              if (conda_) {
  5718                optwrk_ = ($1_ = _max ((*n_) + lwrk_dgeqp3_, (*n_) + lwcon_), _max ($1_, lwrk_dgesvd_));
  5719              }
  5720              else {
  5721                optwrk_ = _max ((*n_) + lwrk_dgeqp3_, lwrk_dgesvd_);
  5722              }
  5723            }
  5724          }
  5725          else if (lsvec_ && (! (rsvec_))) {
  5726            if (conda_) {
  5727              minwrk_ = (*n_) + ($2_ = _max (lwqp3_, lwcon_), $2_ = _max ($2_, lwsvd_), _max ($2_, lworq_));
  5728            }
  5729            else {
  5730              minwrk_ = (*n_) + ($3_ = _max (lwqp3_, lwsvd_), _max ($3_, lworq_));
  5731            }
  5732            if (lquery_) {
  5733              if (rtrans_) {
  5734                (void) _dgesvd (_dc_2, _dc_30, n_, n_, a_, lda_, s_, u_, ldu_, v_, ldv_, rdummy_, &_km1, &ierr_);
  5735              }
  5736              else {
  5737                (void) _dgesvd (_dc_30, _dc_2, n_, n_, a_, lda_, s_, u_, ldu_, v_, ldv_, rdummy_, &_km1, &ierr_);
  5738              }
  5739              lwrk_dgesvd_ = (int_4) (_aintd (rdummy_[0]));
  5740              if (conda_) {
  5741                optwrk_ = (*n_) + ($4_ = _max (lwrk_dgeqp3_, lwcon_), $4_ = _max ($4_, lwrk_dgesvd_), _max ($4_, lwrk_dormqr_));
  5742              }
  5743              else {
  5744                optwrk_ = (*n_) + ($5_ = _max (lwrk_dgeqp3_, lwrk_dgesvd_), _max ($5_, lwrk_dormqr_));
  5745              }
  5746            }
  5747          }
  5748          else if (rsvec_ && (! (lsvec_))) {
  5749            if (conda_) {
  5750              minwrk_ = (*n_) + ($6_ = _max (lwqp3_, lwcon_), _max ($6_, lwsvd_));
  5751            }
  5752            else {
  5753              minwrk_ = (*n_) + _max (lwqp3_, lwsvd_);
  5754            }
  5755            if (lquery_) {
  5756              if (rtrans_) {
  5757                (void) _dgesvd (_dc_30, _dc_2, n_, n_, a_, lda_, s_, u_, ldu_, v_, ldv_, rdummy_, &_km1, &ierr_);
  5758              }
  5759              else {
  5760                (void) _dgesvd (_dc_2, _dc_30, n_, n_, a_, lda_, s_, u_, ldu_, v_, ldv_, rdummy_, &_km1, &ierr_);
  5761              }
  5762              lwrk_dgesvd_ = (int_4) (_aintd (rdummy_[0]));
  5763              if (conda_) {
  5764                optwrk_ = (*n_) + ($7_ = _max (lwrk_dgeqp3_, lwcon_), _max ($7_, lwrk_dgesvd_));
  5765              }
  5766              else {
  5767                optwrk_ = (*n_) + _max (lwrk_dgeqp3_, lwrk_dgesvd_);
  5768              }
  5769            }
  5770          }
  5771          else {
  5772            if (rtrans_) {
  5773              minwrk_ = ($8_ = _max (lwqp3_, lwsvd_), _max ($8_, lworq_));
  5774              if (conda_) {
  5775                minwrk_ = _max (minwrk_, lwcon_);
  5776              }
  5777              minwrk_ = minwrk_ + (*n_);
  5778              if (wntva_) {
  5779                lwqrf_ = _max ((*n_) / 2, 1);
  5780                lwsvd2_ = _max (5 * ((*n_) / 2), 1);
  5781                lworq2_ = _max ((*n_), 1);
  5782                minwrk2_ = ($9_ = _max (lwqp3_, (*n_) / 2 + lwqrf_), $9_ = _max ($9_, (*n_) / 2 + lwsvd2_), $9_ = _max ($9_, (*n_) / 2 
  5783                + lworq2_), _max ($9_, lworq_));
  5784                if (conda_) {
  5785                  minwrk2_ = _max (minwrk2_, lwcon_);
  5786                }
  5787                minwrk2_ = (*n_) + minwrk2_;
  5788                minwrk_ = _max (minwrk_, minwrk2_);
  5789              }
  5790            }
  5791            else {
  5792              minwrk_ = ($10_ = _max (lwqp3_, lwsvd_), _max ($10_, lworq_));
  5793              if (conda_) {
  5794                minwrk_ = _max (minwrk_, lwcon_);
  5795              }
  5796              minwrk_ = minwrk_ + (*n_);
  5797              if (wntva_) {
  5798                lwlqf_ = _max ((*n_) / 2, 1);
  5799                lwsvd2_ = _max (5 * ((*n_) / 2), 1);
  5800                lworlq_ = _max ((*n_), 1);
  5801                minwrk2_ = ($11_ = _max (lwqp3_, (*n_) / 2 + lwlqf_), $11_ = _max ($11_, (*n_) / 2 + lwsvd2_), $11_ = _max ($11_, (*n_) 
  5802                / 2 + lworlq_), _max ($11_, lworq_));
  5803                if (conda_) {
  5804                  minwrk2_ = _max (minwrk2_, lwcon_);
  5805                }
  5806                minwrk2_ = (*n_) + minwrk2_;
  5807                minwrk_ = _max (minwrk_, minwrk2_);
  5808              }
  5809            }
  5810            if (lquery_) {
  5811              if (rtrans_) {
  5812                (void) _dgesvd (_dc_30, _dc_7, n_, n_, a_, lda_, s_, u_, ldu_, v_, ldv_, rdummy_, &_km1, &ierr_);
  5813                lwrk_dgesvd_ = (int_4) (_aintd (rdummy_[0]));
  5814                optwrk_ = ($12_ = _max (lwrk_dgeqp3_, lwrk_dgesvd_), _max ($12_, lwrk_dormqr_));
  5815                if (conda_) {
  5816                  optwrk_ = _max (optwrk_, lwcon_);
  5817                }
  5818                optwrk_ = (*n_) + optwrk_;
  5819                if (wntva_) {
  5820                  (void) _dgeqrf (n_, ($13_ = (*n_) / 2, &$13_), u_, ldu_, rdummy_, rdummy_, &_km1, &ierr_);
  5821                  lwrk_dgeqrf_ = (int_4) (_aintd (rdummy_[0]));
  5822                  (void) _dgesvd (_dc_52, _dc_30, ($14_ = (*n_) / 2, &$14_), ($15_ = (*n_) / 2, &$15_), v_, ldv_, s_, u_, ldu_, v_, ldv_, 
  5823                  rdummy_, &_km1, &ierr_);
  5824                  lwrk_dgesvd2_ = (int_4) (_aintd (rdummy_[0]));
  5825                  (void) _dormqr (_dc_15, _dc_26, n_, n_, ($16_ = (*n_) / 2, &$16_), u_, ldu_, rdummy_, v_, ldv_, rdummy_, &_km1, &ierr_)
  5826                  ;
  5827                  lwrk_dormqr2_ = (int_4) (_aintd (rdummy_[0]));
  5828                  optwrk2_ = ($17_ = _max (lwrk_dgeqp3_, (*n_) / 2 + lwrk_dgeqrf_), $17_ = _max ($17_, (*n_) / 2 + lwrk_dgesvd2_), _max 
  5829                  ($17_, (*n_) / 2 + lwrk_dormqr2_));
  5830                  if (conda_) {
  5831                    optwrk2_ = _max (optwrk2_, lwcon_);
  5832                  }
  5833                  optwrk2_ = (*n_) + optwrk2_;
  5834                  optwrk_ = _max (optwrk_, optwrk2_);
  5835                }
  5836              }
  5837              else {
  5838                (void) _dgesvd (_dc_52, _dc_30, n_, n_, a_, lda_, s_, u_, ldu_, v_, ldv_, rdummy_, &_km1, &ierr_);
  5839                lwrk_dgesvd_ = (int_4) (_aintd (rdummy_[0]));
  5840                optwrk_ = ($18_ = _max (lwrk_dgeqp3_, lwrk_dgesvd_), _max ($18_, lwrk_dormqr_));
  5841                if (conda_) {
  5842                  optwrk_ = _max (optwrk_, lwcon_);
  5843                }
  5844                optwrk_ = (*n_) + optwrk_;
  5845                if (wntva_) {
  5846                  (void) _dgelqf (($19_ = (*n_) / 2, &$19_), n_, u_, ldu_, rdummy_, rdummy_, &_km1, &ierr_);
  5847                  lwrk_dgelqf_ = (int_4) (_aintd (rdummy_[0]));
  5848                  (void) _dgesvd (_dc_52, _dc_30, ($20_ = (*n_) / 2, &$20_), ($21_ = (*n_) / 2, &$21_), v_, ldv_, s_, u_, ldu_, v_, ldv_, 
  5849                  rdummy_, &_km1, &ierr_);
  5850                  lwrk_dgesvd2_ = (int_4) (_aintd (rdummy_[0]));
  5851                  (void) _dormlq (_dc_15, _dc_2, n_, n_, ($22_ = (*n_) / 2, &$22_), u_, ldu_, rdummy_, v_, ldv_, rdummy_, &_km1, &ierr_)
  5852                  ;
  5853                  lwrk_dormlq_ = (int_4) (_aintd (rdummy_[0]));
  5854                  optwrk2_ = ($23_ = _max (lwrk_dgeqp3_, (*n_) / 2 + lwrk_dgelqf_), $23_ = _max ($23_, (*n_) / 2 + lwrk_dgesvd2_), _max 
  5855                  ($23_, (*n_) / 2 + lwrk_dormlq_));
  5856                  if (conda_) {
  5857                    optwrk2_ = _max (optwrk2_, lwcon_);
  5858                  }
  5859                  optwrk2_ = (*n_) + optwrk2_;
  5860                  optwrk_ = _max (optwrk_, optwrk2_);
  5861                }
  5862              }
  5863            }
  5864          }
  5865          minwrk_ = _max (2, minwrk_);
  5866          optwrk_ = _max (2, optwrk_);
  5867          if ((*lwork_) < minwrk_ && (! (lquery_))) {
  5868            (*info_) = -19;
  5869          }
  5870        }
  5871        if ((*info_) == 0 && (*lrwork_) < rminwrk_ && ! (lquery_)) {
  5872          (*info_) = -21;
  5873        }
  5874        if ((*info_) != 0) {
  5875          (void) _xerbla (_dc_61, ($24_ = -(*info_), &$24_));
  5876          goto _l0;
  5877        }
  5878        else if (lquery_) {
  5879          iwork_[0] = iminwrk_;
  5880          work_[0] = optwrk_;
  5881          work_[1] = minwrk_;
  5882          rwork_[0] = rminwrk_;
  5883          goto _l0;
  5884        }
  5885        if (((*m_) == 0) || ((*n_) == 0)) {
  5886          goto _l0;
  5887        }
  5888        big_ = _dlamch (_dc_30);
  5889        ascaled_ = FALSE;
  5890        iwoff_ = 1;
  5891        if (rowprm_) {
  5892          iwoff_ = (*m_);
  5893          for (p_ = 1; p_ <= (*m_); (p_)++) {
  5894            rwork_[p_ - 1] = _dlange (_dc_8, &_k1, n_, &a_[p_ - 1 + ((*lda_)) * ((0))], lda_, rdummy_);
  5895            if ((rwork_[p_ - 1] != rwork_[p_ - 1]) || ((rwork_[p_ - 1] * 0.0) != 0.0)) {
  5896              (*info_) = -8;
  5897              (void) _xerbla (_dc_61, ($25_ = -(*info_), &$25_));
  5898              goto _l0;
  5899            }
  5900          }
  5901          for (p_ = 1; p_ <= (*m_) - 1; (p_)++) {
  5902            q_ = _idamax (($26_ = (*m_) - p_ + 1, &$26_), &rwork_[p_ - 1], &_k1) + p_ - 1;
  5903            iwork_[(*n_) + p_ - 1] = q_;
  5904            if (p_ != q_) {
  5905              rtmp_ = rwork_[p_ - 1];
  5906              rwork_[p_ - 1] = rwork_[q_ - 1];
  5907              rwork_[q_ - 1] = rtmp_;
  5908            }
  5909          }
  5910          if (rwork_[0] == 0.0) {
  5911            (*numrank_) = 0;
  5912            (void) _dlaset (_dc_9, n_, &_k1, ($27_ = 0.0, &$27_), ($28_ = 0.0, &$28_), s_, n_);
  5913            if (wntus_) {
  5914              (void) _dlaset (_dc_9, m_, n_, ($29_ = 0.0, &$29_), ($30_ = 1.0, &$30_), u_, ldu_);
  5915            }
  5916            if (wntua_) {
  5917              (void) _dlaset (_dc_9, m_, m_, ($31_ = 0.0, &$31_), ($32_ = 1.0, &$32_), u_, ldu_);
  5918            }
  5919            if (wntva_) {
  5920              (void) _dlaset (_dc_9, n_, n_, ($33_ = 0.0, &$33_), ($34_ = 1.0, &$34_), v_, ldv_);
  5921            }
  5922            if (wntuf_) {
  5923              (void) _dlaset (_dc_9, n_, &_k1, ($35_ = 0.0, &$35_), ($36_ = 0.0, &$36_), work_, n_);
  5924              (void) _dlaset (_dc_9, m_, n_, ($37_ = 0.0, &$37_), ($38_ = 1.0, &$38_), u_, ldu_);
  5925            }
  5926            for (p_ = 1; p_ <= (*n_); (p_)++) {
  5927              iwork_[p_ - 1] = p_;
  5928            }
  5929            if (rowprm_) {
  5930              for (p_ = (*n_) + 1; p_ <= (*n_) + (*m_) - 1; (p_)++) {
  5931                iwork_[p_ - 1] = p_ - (*n_);
  5932              }
  5933            }
  5934            if (conda_) {
  5935              rwork_[0] = -1;
  5936            }
  5937            rwork_[1] = -1;
  5938            goto _l0;
  5939          }
  5940          if (rwork_[0] > big_ / sqrt ((real_8) ((*m_)))) {
  5941            (void) _dlascl (_dc_9, &_k0, &_k0, ($39_ = sqrt ((real_8) ((*m_))), &$39_), ($40_ = 1.0, &$40_), m_, n_, a_, lda_, 
  5942            &ierr_);
  5943            ascaled_ = TRUE;
  5944          }
  5945          (void) _dlaswp (n_, a_, lda_, &_k1, ($41_ = (*m_) - 1, &$41_), &iwork_[(*n_) + 1 - 1], &_k1);
  5946        }
  5947        if (! (rowprm_)) {
  5948          rtmp_ = _dlange (_dc_8, m_, n_, a_, lda_, rdummy_);
  5949          if ((rtmp_ != rtmp_) || ((rtmp_ * 0.0) != 0.0)) {
  5950            (*info_) = -8;
  5951            (void) _xerbla (_dc_61, ($42_ = -(*info_), &$42_));
  5952            goto _l0;
  5953          }
  5954          if (rtmp_ > big_ / sqrt ((real_8) ((*m_)))) {
  5955            (void) _dlascl (_dc_9, &_k0, &_k0, ($43_ = sqrt ((real_8) ((*m_))), &$43_), ($44_ = 1.0, &$44_), m_, n_, a_, lda_, 
  5956            &ierr_);
  5957            ascaled_ = TRUE;
  5958          }
  5959        }
  5960        for (p_ = 1; p_ <= (*n_); (p_)++) {
  5961          iwork_[p_ - 1] = 0;
  5962        }
  5963        (void) _dgeqp3 (m_, n_, a_, lda_, iwork_, work_, &work_[(*n_) + 1 - 1], ($45_ = (*lwork_) - (*n_), &$45_), &ierr_);
  5964        epsln_ = _dlamch (_dc_24);
  5965        sfmin_ = _dlamch (_dc_52);
  5966        nr_ = (*n_);
  5967        if (accla_) {
  5968          nr_ = 1;
  5969          rtmp_ = sqrt ((real_8) ((*n_))) * epsln_;
  5970          for (p_ = 2; p_ <= (*n_); (p_)++) {
  5971            if (_abs (a_[p_ - 1 + ((*lda_)) * ((p_ - 1))]) < (rtmp_ * _abs (a_[0 + ((*lda_)) * ((0))]))) {
  5972              goto _l3002;
  5973            }
  5974            nr_ = nr_ + 1;
  5975          }
  5976          _l3002:;
  5977        }
  5978        else if (acclm_) {
  5979          nr_ = 1;
  5980          for (p_ = 2; p_ <= (*n_); (p_)++) {
  5981            if ((_abs (a_[p_ - 1 + ((*lda_)) * ((p_ - 1))]) < (epsln_ * _abs (a_[p_ - 1 - 1 + ((*lda_)) * ((p_ - 1 - 1))]))) || 
  5982              (_abs (a_[p_ - 1 + ((*lda_)) * ((p_ - 1))]) < sfmin_)) {
  5983              goto _l3402;
  5984            }
  5985            nr_ = nr_ + 1;
  5986          }
  5987          _l3402:;
  5988        }
  5989        else {
  5990          nr_ = 1;
  5991          for (p_ = 2; p_ <= (*n_); (p_)++) {
  5992            if (_abs (a_[p_ - 1 + ((*lda_)) * ((p_ - 1))]) == 0.0) {
  5993              goto _l3502;
  5994            }
  5995            nr_ = nr_ + 1;
  5996          }
  5997          _l3502:;
  5998          if (conda_) {
  5999            (void) _dlacpy (_dc_0, n_, n_, a_, lda_, v_, ldv_);
  6000            for (p_ = 1; p_ <= nr_; (p_)++) {
  6001              rtmp_ = _dnrm2 (&p_, &v_[0 + ((*ldv_)) * ((p_ - 1))], &_k1);
  6002              (void) _dscal (&p_, ($46_ = 1.0 / rtmp_, &$46_), &v_[0 + ((*ldv_)) * ((p_ - 1))], &_k1);
  6003            }
  6004            if (! ((lsvec_ || rsvec_))) {
  6005              (void) _dpocon (_dc_0, &nr_, v_, ldv_, ($47_ = 1.0, &$47_), &rtmp_, work_, &iwork_[(*n_) + iwoff_ - 1], &ierr_);
  6006            }
  6007            else {
  6008              (void) _dpocon (_dc_0, &nr_, v_, ldv_, ($48_ = 1.0, &$48_), &rtmp_, &work_[(*n_) + 1 - 1], &iwork_[(*n_) + iwoff_ - 1], 
  6009              &ierr_);
  6010            }
  6011            sconda_ = 1.0 / sqrt (rtmp_);
  6012          }
  6013        }
  6014        if (wntur_) {
  6015          n1_ = nr_;
  6016        }
  6017        else if (wntus_ || wntuf_) {
  6018          n1_ = (*n_);
  6019        }
  6020        else if (wntua_) {
  6021          n1_ = (*m_);
  6022        }
  6023        if (! ((rsvec_ || lsvec_))) {
  6024          if (rtrans_) {
  6025            for (p_ = 1; p_ <= _min ((*n_), nr_); (p_)++) {
  6026              for (q_ = p_ + 1; q_ <= (*n_); (q_)++) {
  6027                a_[q_ - 1 + ((*lda_)) * ((p_ - 1))] = a_[p_ - 1 + ((*lda_)) * ((q_ - 1))];
  6028                if (q_ <= nr_) {
  6029                  a_[p_ - 1 + ((*lda_)) * ((q_ - 1))] = 0.0;
  6030                }
  6031              }
  6032            }
  6033            (void) _dgesvd (_dc_2, _dc_2, n_, &nr_, a_, lda_, s_, u_, ldu_, v_, ldv_, work_, lwork_, info_);
  6034          }
  6035          else {
  6036            if (nr_ > 1) {
  6037              (void) _dlaset (_dc_1, ($49_ = nr_ - 1, &$49_), ($50_ = nr_ - 1, &$50_), ($51_ = 0.0, &$51_), ($52_ = 0.0, &$52_), 
  6038              &a_[1 + ((*lda_)) * ((0))], lda_);
  6039            }
  6040            (void) _dgesvd (_dc_2, _dc_2, &nr_, n_, a_, lda_, s_, u_, ldu_, v_, ldv_, work_, lwork_, info_);
  6041          }
  6042        }
  6043        else if (lsvec_ && (! (rsvec_))) {
  6044          if (rtrans_) {
  6045            for (p_ = 1; p_ <= nr_; (p_)++) {
  6046              for (q_ = p_; q_ <= (*n_); (q_)++) {
  6047                u_[q_ - 1 + ((*ldu_)) * ((p_ - 1))] = a_[p_ - 1 + ((*lda_)) * ((q_ - 1))];
  6048              }
  6049            }
  6050            if (nr_ > 1) {
  6051              (void) _dlaset (_dc_0, ($53_ = nr_ - 1, &$53_), ($54_ = nr_ - 1, &$54_), ($55_ = 0.0, &$55_), ($56_ = 0.0, &$56_), 
  6052              &u_[0 + ((*ldu_)) * ((1))], ldu_);
  6053            }
  6054            (void) _dgesvd (_dc_2, _dc_30, n_, &nr_, u_, ldu_, s_, u_, ldu_, u_, ldu_, &work_[(*n_) + 1 - 1], ($57_ = (*lwork_) - 
  6055            (*n_), &$57_), info_);
  6056            for (p_ = 1; p_ <= nr_; (p_)++) {
  6057              for (q_ = p_ + 1; q_ <= nr_; (q_)++) {
  6058                rtmp_ = u_[q_ - 1 + ((*ldu_)) * ((p_ - 1))];
  6059                u_[q_ - 1 + ((*ldu_)) * ((p_ - 1))] = u_[p_ - 1 + ((*ldu_)) * ((q_ - 1))];
  6060                u_[p_ - 1 + ((*ldu_)) * ((q_ - 1))] = rtmp_;
  6061              }
  6062            }
  6063          }
  6064          else {
  6065            (void) _dlacpy (_dc_0, &nr_, n_, a_, lda_, u_, ldu_);
  6066            if (nr_ > 1) {
  6067              (void) _dlaset (_dc_1, ($58_ = nr_ - 1, &$58_), ($59_ = nr_ - 1, &$59_), ($60_ = 0.0, &$60_), ($61_ = 0.0, &$61_), 
  6068              &u_[1 + ((*ldu_)) * ((0))], ldu_);
  6069            }
  6070            (void) _dgesvd (_dc_30, _dc_2, &nr_, n_, u_, ldu_, s_, u_, ldu_, v_, ldv_, &work_[(*n_) + 1 - 1], ($62_ = (*lwork_) - 
  6071            (*n_), &$62_), info_);
  6072          }
  6073          if ((nr_ < (*m_)) && (! (wntuf_))) {
  6074            (void) _dlaset (_dc_7, ($63_ = (*m_) - nr_, &$63_), &nr_, ($64_ = 0.0, &$64_), ($65_ = 0.0, &$65_), &u_[nr_ + 1 - 1 + 
  6075            ((*ldu_)) * ((0))], ldu_);
  6076            if (nr_ < n1_) {
  6077              (void) _dlaset (_dc_7, &nr_, ($66_ = n1_ - nr_, &$66_), ($67_ = 0.0, &$67_), ($68_ = 0.0, &$68_), &u_[0 + ((*ldu_)) * 
  6078              ((nr_ + 1 - 1))], ldu_);
  6079              (void) _dlaset (_dc_7, ($69_ = (*m_) - nr_, &$69_), ($70_ = n1_ - nr_, &$70_), ($71_ = 0.0, &$71_), ($72_ = 1.0, 
  6080              &$72_), &u_[nr_ + 1 - 1 + ((*ldu_)) * ((nr_ + 1 - 1))], ldu_);
  6081            }
  6082          }
  6083          if (! (wntuf_)) {
  6084            (void) _dormqr (_dc_1, _dc_2, m_, &n1_, n_, a_, lda_, work_, u_, ldu_, &work_[(*n_) + 1 - 1], ($73_ = (*lwork_) - 
  6085            (*n_), &$73_), &ierr_);
  6086          }
  6087          if (rowprm_ && ! (wntuf_)) {
  6088            (void) _dlaswp (&n1_, u_, ldu_, &_k1, ($74_ = (*m_) - 1, &$74_), &iwork_[(*n_) + 1 - 1], &_km1);
  6089          }
  6090        }
  6091        else if (rsvec_ && (! (lsvec_))) {
  6092          if (rtrans_) {
  6093            for (p_ = 1; p_ <= nr_; (p_)++) {
  6094              for (q_ = p_; q_ <= (*n_); (q_)++) {
  6095                v_[q_ - 1 + ((*ldv_)) * ((p_ - 1))] = (a_[p_ - 1 + ((*lda_)) * ((q_ - 1))]);
  6096              }
  6097            }
  6098            if (nr_ > 1) {
  6099              (void) _dlaset (_dc_0, ($75_ = nr_ - 1, &$75_), ($76_ = nr_ - 1, &$76_), ($77_ = 0.0, &$77_), ($78_ = 0.0, &$78_), 
  6100              &v_[0 + ((*ldv_)) * ((1))], ldv_);
  6101            }
  6102            if (wntvr_ || (nr_ == (*n_))) {
  6103              (void) _dgesvd (_dc_30, _dc_2, n_, &nr_, v_, ldv_, s_, u_, ldu_, u_, ldu_, &work_[(*n_) + 1 - 1], ($79_ = (*lwork_) - 
  6104              (*n_), &$79_), info_);
  6105              for (p_ = 1; p_ <= nr_; (p_)++) {
  6106                for (q_ = p_ + 1; q_ <= nr_; (q_)++) {
  6107                  rtmp_ = v_[q_ - 1 + ((*ldv_)) * ((p_ - 1))];
  6108                  v_[q_ - 1 + ((*ldv_)) * ((p_ - 1))] = v_[p_ - 1 + ((*ldv_)) * ((q_ - 1))];
  6109                  v_[p_ - 1 + ((*ldv_)) * ((q_ - 1))] = rtmp_;
  6110                }
  6111              }
  6112              if (nr_ < (*n_)) {
  6113                for (p_ = 1; p_ <= nr_; (p_)++) {
  6114                  for (q_ = nr_ + 1; q_ <= (*n_); (q_)++) {
  6115                    v_[p_ - 1 + ((*ldv_)) * ((q_ - 1))] = v_[q_ - 1 + ((*ldv_)) * ((p_ - 1))];
  6116                  }
  6117                }
  6118              }
  6119              (void) _dlapmt (($80_ = FALSE, &$80_), &nr_, n_, v_, ldv_, iwork_);
  6120            }
  6121            else {
  6122              (void) _dlaset (_dc_9, n_, ($81_ = (*n_) - nr_, &$81_), ($82_ = 0.0, &$82_), ($83_ = 0.0, &$83_), &v_[0 + ((*ldv_)) * 
  6123              ((nr_ + 1 - 1))], ldv_);
  6124              (void) _dgesvd (_dc_30, _dc_2, n_, n_, v_, ldv_, s_, u_, ldu_, u_, ldu_, &work_[(*n_) + 1 - 1], ($84_ = (*lwork_) - 
  6125              (*n_), &$84_), info_);
  6126              for (p_ = 1; p_ <= (*n_); (p_)++) {
  6127                for (q_ = p_ + 1; q_ <= (*n_); (q_)++) {
  6128                  rtmp_ = v_[q_ - 1 + ((*ldv_)) * ((p_ - 1))];
  6129                  v_[q_ - 1 + ((*ldv_)) * ((p_ - 1))] = v_[p_ - 1 + ((*ldv_)) * ((q_ - 1))];
  6130                  v_[p_ - 1 + ((*ldv_)) * ((q_ - 1))] = rtmp_;
  6131                }
  6132              }
  6133              (void) _dlapmt (($85_ = FALSE, &$85_), n_, n_, v_, ldv_, iwork_);
  6134            }
  6135          }
  6136          else {
  6137            (void) _dlacpy (_dc_0, &nr_, n_, a_, lda_, v_, ldv_);
  6138            if (nr_ > 1) {
  6139              (void) _dlaset (_dc_1, ($86_ = nr_ - 1, &$86_), ($87_ = nr_ - 1, &$87_), ($88_ = 0.0, &$88_), ($89_ = 0.0, &$89_), 
  6140              &v_[1 + ((*ldv_)) * ((0))], ldv_);
  6141            }
  6142            if (wntvr_ || (nr_ == (*n_))) {
  6143              (void) _dgesvd (_dc_2, _dc_30, &nr_, n_, v_, ldv_, s_, u_, ldu_, v_, ldv_, &work_[(*n_) + 1 - 1], ($90_ = (*lwork_) - 
  6144              (*n_), &$90_), info_);
  6145              (void) _dlapmt (($91_ = FALSE, &$91_), &nr_, n_, v_, ldv_, iwork_);
  6146            }
  6147            else {
  6148              (void) _dlaset (_dc_9, ($92_ = (*n_) - nr_, &$92_), n_, ($93_ = 0.0, &$93_), ($94_ = 0.0, &$94_), &v_[nr_ + 1 - 1 + 
  6149              ((*ldv_)) * ((0))], ldv_);
  6150              (void) _dgesvd (_dc_2, _dc_30, n_, n_, v_, ldv_, s_, u_, ldu_, v_, ldv_, &work_[(*n_) + 1 - 1], ($95_ = (*lwork_) - 
  6151              (*n_), &$95_), info_);
  6152              (void) _dlapmt (($96_ = FALSE, &$96_), n_, n_, v_, ldv_, iwork_);
  6153            }
  6154          }
  6155        }
  6156        else {
  6157          if (rtrans_) {
  6158            if (wntvr_ || (nr_ == (*n_))) {
  6159              for (p_ = 1; p_ <= nr_; (p_)++) {
  6160                for (q_ = p_; q_ <= (*n_); (q_)++) {
  6161                  v_[q_ - 1 + ((*ldv_)) * ((p_ - 1))] = a_[p_ - 1 + ((*lda_)) * ((q_ - 1))];
  6162                }
  6163              }
  6164              if (nr_ > 1) {
  6165                (void) _dlaset (_dc_0, ($97_ = nr_ - 1, &$97_), ($98_ = nr_ - 1, &$98_), ($99_ = 0.0, &$99_), ($100_ = 0.0, &$100_), 
  6166                &v_[0 + ((*ldv_)) * ((1))], ldv_);
  6167              }
  6168              (void) _dgesvd (_dc_30, _dc_7, n_, &nr_, v_, ldv_, s_, v_, ldv_, u_, ldu_, &work_[(*n_) + 1 - 1], ($101_ = (*lwork_) - 
  6169              (*n_), &$101_), info_);
  6170              for (p_ = 1; p_ <= nr_; (p_)++) {
  6171                for (q_ = p_ + 1; q_ <= nr_; (q_)++) {
  6172                  rtmp_ = v_[q_ - 1 + ((*ldv_)) * ((p_ - 1))];
  6173                  v_[q_ - 1 + ((*ldv_)) * ((p_ - 1))] = v_[p_ - 1 + ((*ldv_)) * ((q_ - 1))];
  6174                  v_[p_ - 1 + ((*ldv_)) * ((q_ - 1))] = rtmp_;
  6175                }
  6176              }
  6177              if (nr_ < (*n_)) {
  6178                for (p_ = 1; p_ <= nr_; (p_)++) {
  6179                  for (q_ = nr_ + 1; q_ <= (*n_); (q_)++) {
  6180                    v_[p_ - 1 + ((*ldv_)) * ((q_ - 1))] = v_[q_ - 1 + ((*ldv_)) * ((p_ - 1))];
  6181                  }
  6182                }
  6183              }
  6184              (void) _dlapmt (($102_ = FALSE, &$102_), &nr_, n_, v_, ldv_, iwork_);
  6185              for (p_ = 1; p_ <= nr_; (p_)++) {
  6186                for (q_ = p_ + 1; q_ <= nr_; (q_)++) {
  6187                  rtmp_ = u_[q_ - 1 + ((*ldu_)) * ((p_ - 1))];
  6188                  u_[q_ - 1 + ((*ldu_)) * ((p_ - 1))] = u_[p_ - 1 + ((*ldu_)) * ((q_ - 1))];
  6189                  u_[p_ - 1 + ((*ldu_)) * ((q_ - 1))] = rtmp_;
  6190                }
  6191              }
  6192              if ((nr_ < (*m_)) && ! ((wntuf_))) {
  6193                (void) _dlaset (_dc_7, ($103_ = (*m_) - nr_, &$103_), &nr_, ($104_ = 0.0, &$104_), ($105_ = 0.0, &$105_), &u_[nr_ + 1 - 
  6194                1 + ((*ldu_)) * ((0))], ldu_);
  6195                if (nr_ < n1_) {
  6196                  (void) _dlaset (_dc_7, &nr_, ($106_ = n1_ - nr_, &$106_), ($107_ = 0.0, &$107_), ($108_ = 0.0, &$108_), &u_[0 + 
  6197                  ((*ldu_)) * ((nr_ + 1 - 1))], ldu_);
  6198                  (void) _dlaset (_dc_7, ($109_ = (*m_) - nr_, &$109_), ($110_ = n1_ - nr_, &$110_), ($111_ = 0.0, &$111_), ($112_ = 1.0, 
  6199                  &$112_), &u_[nr_ + 1 - 1 + ((*ldu_)) * ((nr_ + 1 - 1))], ldu_);
  6200                }
  6201              }
  6202            }
  6203            else {
  6204              optratio_ = 2;
  6205              if (optratio_ * nr_ > (*n_)) {
  6206                for (p_ = 1; p_ <= nr_; (p_)++) {
  6207                  for (q_ = p_; q_ <= (*n_); (q_)++) {
  6208                    v_[q_ - 1 + ((*ldv_)) * ((p_ - 1))] = a_[p_ - 1 + ((*lda_)) * ((q_ - 1))];
  6209                  }
  6210                }
  6211                if (nr_ > 1) {
  6212                  (void) _dlaset (_dc_0, ($113_ = nr_ - 1, &$113_), ($114_ = nr_ - 1, &$114_), ($115_ = 0.0, &$115_), ($116_ = 0.0, 
  6213                  &$116_), &v_[0 + ((*ldv_)) * ((1))], ldv_);
  6214                }
  6215                (void) _dlaset (_dc_7, n_, ($117_ = (*n_) - nr_, &$117_), ($118_ = 0.0, &$118_), ($119_ = 0.0, &$119_), &v_[0 + 
  6216                ((*ldv_)) * ((nr_ + 1 - 1))], ldv_);
  6217                (void) _dgesvd (_dc_30, _dc_7, n_, n_, v_, ldv_, s_, v_, ldv_, u_, ldu_, &work_[(*n_) + 1 - 1], ($120_ = (*lwork_) - 
  6218                (*n_), &$120_), info_);
  6219                for (p_ = 1; p_ <= (*n_); (p_)++) {
  6220                  for (q_ = p_ + 1; q_ <= (*n_); (q_)++) {
  6221                    rtmp_ = v_[q_ - 1 + ((*ldv_)) * ((p_ - 1))];
  6222                    v_[q_ - 1 + ((*ldv_)) * ((p_ - 1))] = v_[p_ - 1 + ((*ldv_)) * ((q_ - 1))];
  6223                    v_[p_ - 1 + ((*ldv_)) * ((q_ - 1))] = rtmp_;
  6224                  }
  6225                }
  6226                (void) _dlapmt (($121_ = FALSE, &$121_), n_, n_, v_, ldv_, iwork_);
  6227                for (p_ = 1; p_ <= (*n_); (p_)++) {
  6228                  for (q_ = p_ + 1; q_ <= (*n_); (q_)++) {
  6229                    rtmp_ = u_[q_ - 1 + ((*ldu_)) * ((p_ - 1))];
  6230                    u_[q_ - 1 + ((*ldu_)) * ((p_ - 1))] = u_[p_ - 1 + ((*ldu_)) * ((q_ - 1))];
  6231                    u_[p_ - 1 + ((*ldu_)) * ((q_ - 1))] = rtmp_;
  6232                  }
  6233                }
  6234                if (((*n_) < (*m_)) && ! ((wntuf_))) {
  6235                  (void) _dlaset (_dc_7, ($122_ = (*m_) - (*n_), &$122_), n_, ($123_ = 0.0, &$123_), ($124_ = 0.0, &$124_), &u_[(*n_) + 1 
  6236                  - 1 + ((*ldu_)) * ((0))], ldu_);
  6237                  if ((*n_) < n1_) {
  6238                    (void) _dlaset (_dc_7, n_, ($125_ = n1_ - (*n_), &$125_), ($126_ = 0.0, &$126_), ($127_ = 0.0, &$127_), &u_[0 + 
  6239                    ((*ldu_)) * (((*n_) + 1 - 1))], ldu_);
  6240                    (void) _dlaset (_dc_7, ($128_ = (*m_) - (*n_), &$128_), ($129_ = n1_ - (*n_), &$129_), ($130_ = 0.0, &$130_), ($131_ = 
  6241                    1.0, &$131_), &u_[(*n_) + 1 - 1 + ((*ldu_)) * (((*n_) + 1 - 1))], ldu_);
  6242                  }
  6243                }
  6244              }
  6245              else {
  6246                for (p_ = 1; p_ <= nr_; (p_)++) {
  6247                  for (q_ = p_; q_ <= (*n_); (q_)++) {
  6248                    u_[q_ - 1 + ((*ldu_)) * ((nr_ + p_ - 1))] = a_[p_ - 1 + ((*lda_)) * ((q_ - 1))];
  6249                  }
  6250                }
  6251                if (nr_ > 1) {
  6252                  (void) _dlaset (_dc_0, ($132_ = nr_ - 1, &$132_), ($133_ = nr_ - 1, &$133_), ($134_ = 0.0, &$134_), ($135_ = 0.0, 
  6253                  &$135_), &u_[0 + ((*ldu_)) * ((nr_ + 2 - 1))], ldu_);
  6254                }
  6255                (void) _dgeqrf (n_, &nr_, &u_[0 + ((*ldu_)) * ((nr_ + 1 - 1))], ldu_, &work_[(*n_) + 1 - 1], &work_[(*n_) + nr_ + 1 - 
  6256                1], ($136_ = (*lwork_) - (*n_) - nr_, &$136_), &ierr_);
  6257                for (p_ = 1; p_ <= nr_; (p_)++) {
  6258                  for (q_ = 1; q_ <= (*n_); (q_)++) {
  6259                    v_[q_ - 1 + ((*ldv_)) * ((p_ - 1))] = u_[p_ - 1 + ((*ldu_)) * ((nr_ + q_ - 1))];
  6260                  }
  6261                }
  6262                (void) _dlaset (_dc_0, ($137_ = nr_ - 1, &$137_), ($138_ = nr_ - 1, &$138_), ($139_ = 0.0, &$139_), ($140_ = 0.0, 
  6263                &$140_), &v_[0 + ((*ldv_)) * ((1))], ldv_);
  6264                (void) _dgesvd (_dc_52, _dc_30, &nr_, &nr_, v_, ldv_, s_, u_, ldu_, v_, ldv_, &work_[(*n_) + nr_ + 1 - 1], ($141_ = 
  6265                (*lwork_) - (*n_) - nr_, &$141_), info_);
  6266                (void) _dlaset (_dc_7, ($142_ = (*n_) - nr_, &$142_), &nr_, ($143_ = 0.0, &$143_), ($144_ = 0.0, &$144_), &v_[nr_ + 1 - 
  6267                1 + ((*ldv_)) * ((0))], ldv_);
  6268                (void) _dlaset (_dc_7, &nr_, ($145_ = (*n_) - nr_, &$145_), ($146_ = 0.0, &$146_), ($147_ = 0.0, &$147_), &v_[0 + 
  6269                ((*ldv_)) * ((nr_ + 1 - 1))], ldv_);
  6270                (void) _dlaset (_dc_7, ($148_ = (*n_) - nr_, &$148_), ($149_ = (*n_) - nr_, &$149_), ($150_ = 0.0, &$150_), ($151_ = 
  6271                1.0, &$151_), &v_[nr_ + 1 - 1 + ((*ldv_)) * ((nr_ + 1 - 1))], ldv_);
  6272                (void) _dormqr (_dc_15, _dc_26, n_, n_, &nr_, &u_[0 + ((*ldu_)) * ((nr_ + 1 - 1))], ldu_, &work_[(*n_) + 1 - 1], v_, 
  6273                ldv_, &work_[(*n_) + nr_ + 1 - 1], ($152_ = (*lwork_) - (*n_) - nr_, &$152_), &ierr_);
  6274                (void) _dlapmt (($153_ = FALSE, &$153_), n_, n_, v_, ldv_, iwork_);
  6275                if ((nr_ < (*m_)) && ! ((wntuf_))) {
  6276                  (void) _dlaset (_dc_7, ($154_ = (*m_) - nr_, &$154_), &nr_, ($155_ = 0.0, &$155_), ($156_ = 0.0, &$156_), &u_[nr_ + 1 - 
  6277                  1 + ((*ldu_)) * ((0))], ldu_);
  6278                  if (nr_ < n1_) {
  6279                    (void) _dlaset (_dc_7, &nr_, ($157_ = n1_ - nr_, &$157_), ($158_ = 0.0, &$158_), ($159_ = 0.0, &$159_), &u_[0 + 
  6280                    ((*ldu_)) * ((nr_ + 1 - 1))], ldu_);
  6281                    (void) _dlaset (_dc_7, ($160_ = (*m_) - nr_, &$160_), ($161_ = n1_ - nr_, &$161_), ($162_ = 0.0, &$162_), ($163_ = 1.0, 
  6282                    &$163_), &u_[nr_ + 1 - 1 + ((*ldu_)) * ((nr_ + 1 - 1))], ldu_);
  6283                  }
  6284                }
  6285              }
  6286            }
  6287          }
  6288          else {
  6289            if (wntvr_ || (nr_ == (*n_))) {
  6290              (void) _dlacpy (_dc_0, &nr_, n_, a_, lda_, v_, ldv_);
  6291              if (nr_ > 1) {
  6292                (void) _dlaset (_dc_1, ($164_ = nr_ - 1, &$164_), ($165_ = nr_ - 1, &$165_), ($166_ = 0.0, &$166_), ($167_ = 0.0, 
  6293                &$167_), &v_[1 + ((*ldv_)) * ((0))], ldv_);
  6294              }
  6295              (void) _dgesvd (_dc_52, _dc_30, &nr_, n_, v_, ldv_, s_, u_, ldu_, v_, ldv_, &work_[(*n_) + 1 - 1], ($168_ = (*lwork_) - 
  6296              (*n_), &$168_), info_);
  6297              (void) _dlapmt (($169_ = FALSE, &$169_), &nr_, n_, v_, ldv_, iwork_);
  6298              if ((nr_ < (*m_)) && ! ((wntuf_))) {
  6299                (void) _dlaset (_dc_7, ($170_ = (*m_) - nr_, &$170_), &nr_, ($171_ = 0.0, &$171_), ($172_ = 0.0, &$172_), &u_[nr_ + 1 - 
  6300                1 + ((*ldu_)) * ((0))], ldu_);
  6301                if (nr_ < n1_) {
  6302                  (void) _dlaset (_dc_7, &nr_, ($173_ = n1_ - nr_, &$173_), ($174_ = 0.0, &$174_), ($175_ = 0.0, &$175_), &u_[0 + 
  6303                  ((*ldu_)) * ((nr_ + 1 - 1))], ldu_);
  6304                  (void) _dlaset (_dc_7, ($176_ = (*m_) - nr_, &$176_), ($177_ = n1_ - nr_, &$177_), ($178_ = 0.0, &$178_), ($179_ = 1.0, 
  6305                  &$179_), &u_[nr_ + 1 - 1 + ((*ldu_)) * ((nr_ + 1 - 1))], ldu_);
  6306                }
  6307              }
  6308            }
  6309            else {
  6310              optratio_ = 2;
  6311              if (optratio_ * nr_ > (*n_)) {
  6312                (void) _dlacpy (_dc_0, &nr_, n_, a_, lda_, v_, ldv_);
  6313                if (nr_ > 1) {
  6314                  (void) _dlaset (_dc_1, ($180_ = nr_ - 1, &$180_), ($181_ = nr_ - 1, &$181_), ($182_ = 0.0, &$182_), ($183_ = 0.0, 
  6315                  &$183_), &v_[1 + ((*ldv_)) * ((0))], ldv_);
  6316                }
  6317                (void) _dlaset (_dc_7, ($184_ = (*n_) - nr_, &$184_), n_, ($185_ = 0.0, &$185_), ($186_ = 0.0, &$186_), &v_[nr_ + 1 - 1 
  6318                + ((*ldv_)) * ((0))], ldv_);
  6319                (void) _dgesvd (_dc_52, _dc_30, n_, n_, v_, ldv_, s_, u_, ldu_, v_, ldv_, &work_[(*n_) + 1 - 1], ($187_ = (*lwork_) - 
  6320                (*n_), &$187_), info_);
  6321                (void) _dlapmt (($188_ = FALSE, &$188_), n_, n_, v_, ldv_, iwork_);
  6322                if (((*n_) < (*m_)) && ! ((wntuf_))) {
  6323                  (void) _dlaset (_dc_7, ($189_ = (*m_) - (*n_), &$189_), n_, ($190_ = 0.0, &$190_), ($191_ = 0.0, &$191_), &u_[(*n_) + 1 
  6324                  - 1 + ((*ldu_)) * ((0))], ldu_);
  6325                  if ((*n_) < n1_) {
  6326                    (void) _dlaset (_dc_7, n_, ($192_ = n1_ - (*n_), &$192_), ($193_ = 0.0, &$193_), ($194_ = 0.0, &$194_), &u_[0 + 
  6327                    ((*ldu_)) * (((*n_) + 1 - 1))], ldu_);
  6328                    (void) _dlaset (_dc_7, ($195_ = (*m_) - (*n_), &$195_), ($196_ = n1_ - (*n_), &$196_), ($197_ = 0.0, &$197_), ($198_ = 
  6329                    1.0, &$198_), &u_[(*n_) + 1 - 1 + ((*ldu_)) * (((*n_) + 1 - 1))], ldu_);
  6330                  }
  6331                }
  6332              }
  6333              else {
  6334                (void) _dlacpy (_dc_0, &nr_, n_, a_, lda_, &u_[nr_ + 1 - 1 + ((*ldu_)) * ((0))], ldu_);
  6335                if (nr_ > 1) {
  6336                  (void) _dlaset (_dc_1, ($199_ = nr_ - 1, &$199_), ($200_ = nr_ - 1, &$200_), ($201_ = 0.0, &$201_), ($202_ = 0.0, 
  6337                  &$202_), &u_[nr_ + 2 - 1 + ((*ldu_)) * ((0))], ldu_);
  6338                }
  6339                (void) _dgelqf (&nr_, n_, &u_[nr_ + 1 - 1 + ((*ldu_)) * ((0))], ldu_, &work_[(*n_) + 1 - 1], &work_[(*n_) + nr_ + 1 - 
  6340                1], ($203_ = (*lwork_) - (*n_) - nr_, &$203_), &ierr_);
  6341                (void) _dlacpy (_dc_1, &nr_, &nr_, &u_[nr_ + 1 - 1 + ((*ldu_)) * ((0))], ldu_, v_, ldv_);
  6342                if (nr_ > 1) {
  6343                  (void) _dlaset (_dc_0, ($204_ = nr_ - 1, &$204_), ($205_ = nr_ - 1, &$205_), ($206_ = 0.0, &$206_), ($207_ = 0.0, 
  6344                  &$207_), &v_[0 + ((*ldv_)) * ((1))], ldv_);
  6345                }
  6346                (void) _dgesvd (_dc_52, _dc_30, &nr_, &nr_, v_, ldv_, s_, u_, ldu_, v_, ldv_, &work_[(*n_) + nr_ + 1 - 1], ($208_ = 
  6347                (*lwork_) - (*n_) - nr_, &$208_), info_);
  6348                (void) _dlaset (_dc_7, ($209_ = (*n_) - nr_, &$209_), &nr_, ($210_ = 0.0, &$210_), ($211_ = 0.0, &$211_), &v_[nr_ + 1 - 
  6349                1 + ((*ldv_)) * ((0))], ldv_);
  6350                (void) _dlaset (_dc_7, &nr_, ($212_ = (*n_) - nr_, &$212_), ($213_ = 0.0, &$213_), ($214_ = 0.0, &$214_), &v_[0 + 
  6351                ((*ldv_)) * ((nr_ + 1 - 1))], ldv_);
  6352                (void) _dlaset (_dc_7, ($215_ = (*n_) - nr_, &$215_), ($216_ = (*n_) - nr_, &$216_), ($217_ = 0.0, &$217_), ($218_ = 
  6353                1.0, &$218_), &v_[nr_ + 1 - 1 + ((*ldv_)) * ((nr_ + 1 - 1))], ldv_);
  6354                (void) _dormlq (_dc_15, _dc_2, n_, n_, &nr_, &u_[nr_ + 1 - 1 + ((*ldu_)) * ((0))], ldu_, &work_[(*n_) + 1 - 1], v_, 
  6355                ldv_, &work_[(*n_) + nr_ + 1 - 1], ($219_ = (*lwork_) - (*n_) - nr_, &$219_), &ierr_);
  6356                (void) _dlapmt (($220_ = FALSE, &$220_), n_, n_, v_, ldv_, iwork_);
  6357                if ((nr_ < (*m_)) && ! ((wntuf_))) {
  6358                  (void) _dlaset (_dc_7, ($221_ = (*m_) - nr_, &$221_), &nr_, ($222_ = 0.0, &$222_), ($223_ = 0.0, &$223_), &u_[nr_ + 1 - 
  6359                  1 + ((*ldu_)) * ((0))], ldu_);
  6360                  if (nr_ < n1_) {
  6361                    (void) _dlaset (_dc_7, &nr_, ($224_ = n1_ - nr_, &$224_), ($225_ = 0.0, &$225_), ($226_ = 0.0, &$226_), &u_[0 + 
  6362                    ((*ldu_)) * ((nr_ + 1 - 1))], ldu_);
  6363                    (void) _dlaset (_dc_7, ($227_ = (*m_) - nr_, &$227_), ($228_ = n1_ - nr_, &$228_), ($229_ = 0.0, &$229_), ($230_ = 1.0, 
  6364                    &$230_), &u_[nr_ + 1 - 1 + ((*ldu_)) * ((nr_ + 1 - 1))], ldu_);
  6365                  }
  6366                }
  6367              }
  6368            }
  6369          }
  6370          if (! (wntuf_)) {
  6371            (void) _dormqr (_dc_1, _dc_2, m_, &n1_, n_, a_, lda_, work_, u_, ldu_, &work_[(*n_) + 1 - 1], ($231_ = (*lwork_) - 
  6372            (*n_), &$231_), &ierr_);
  6373          }
  6374          if (rowprm_ && ! (wntuf_)) {
  6375            (void) _dlaswp (&n1_, u_, ldu_, &_k1, ($232_ = (*m_) - 1, &$232_), &iwork_[(*n_) + 1 - 1], &_km1);
  6376          }
  6377        }
  6378        p_ = nr_;
  6379        for (q_ = p_; q_ >= 1; (q_)--) {
  6380          if (s_[q_ - 1] > 0.0) {
  6381            goto _l4002;
  6382          }
  6383          nr_ = nr_ - 1;
  6384        }
  6385        _l4002:;
  6386        if (nr_ < (*n_)) {
  6387          (void) _dlaset (_dc_9, ($233_ = (*n_) - nr_, &$233_), &_k1, ($234_ = 0.0, &$234_), ($235_ = 0.0, &$235_), &s_[nr_ + 1 - 
  6388          1], n_);
  6389        }
  6390        if (ascaled_) {
  6391          (void) _dlascl (_dc_9, &_k0, &_k0, ($236_ = 1.0, &$236_), ($237_ = sqrt ((real_8) ((*m_))), &$237_), &nr_, &_k1, s_, 
  6392          n_, &ierr_);
  6393        }
  6394        if (conda_) {
  6395          rwork_[0] = sconda_;
  6396        }
  6397        rwork_[1] = p_ - nr_;
  6398        (*numrank_) = nr_;
  6399        _l0:;
  6400        __calls[15].calls++;
  6401        return 0;
  6402      }
  6403  int_4 _dgesvj (char _p_ joba_, char _p_ jobu_, char _p_ jobv_, int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ 
  6404  lda_, real_8 _p_ sva_, int_4 _p_ mv_, real_8 _p_ v_, int_4 _p_ ldv_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ 
  6405  info_)
  6406  { // ** body not listed **
  7299  }
  7300  int_4 _dgsvj0 (char _p_ jobv_, int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ d_, real_8 _p_ 
  7301  sva_, int_4 _p_ mv_, real_8 _p_ v_, int_4 _p_ ldv_, real_8 _p_ eps_, real_8 _p_ sfmin_, real_8 _p_ tol_, int_4 _p_ 
  7302  nsweep_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_)
  7303  { // ** body not listed **
  7927  }
  7928  int_4 _dgsvj1 (char _p_ jobv_, int_4 _p_ m_, int_4 _p_ n_, int_4 _p_ n1_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ d_, 
  7929  real_8 _p_ sva_, int_4 _p_ mv_, real_8 _p_ v_, int_4 _p_ ldv_, real_8 _p_ eps_, real_8 _p_ sfmin_, real_8 _p_ tol_, 
  7930  int_4 _p_ nsweep_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_)
  7931  { // ** body not listed **
  8322  }
  8323  logical_4 _disnan (real_8 _p_ din_)
  8324  { // ** body not listed **
  8329  }
  8330  int_4 _dlabad (real_8 _p_ small_, real_8 _p_ large_)
  8331  { // ** body not listed **
  8338  }
  8339  int_4 _dlabrd (int_4 _p_ m_, int_4 _p_ n_, int_4 _p_ nb_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ d_, real_8 _p_ e_, 
  8340  real_8 _p_ tauq_, real_8 _p_ taup_, real_8 _p_ x_, int_4 _p_ ldx_, real_8 _p_ y_, int_4 _p_ ldy_)
  8341  { // ** body not listed **
  8465  }
  8466  int_4 _dlacn2 (int_4 _p_ n_, real_8 _p_ v_, real_8 _p_ x_, int_4 _p_ isgn_, real_8 _p_ est_, int_4 _p_ kase_, int_4 _p_ 
  8467  isave_)
  8468  { // ** body not listed **
  8579  }
  8580  int_4 _dlacpy (char _p_ uplo_, int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ b_, int_4 _p_ ldb_
  8581  )
  8582  { // ** body not listed **
  8608  }
  8609  int_4 _dlaed6 (int_4 _p_ kniter_, logical_4 _p_ orgati_, real_8 _p_ rho_, real_8 _p_ d_, real_8 _p_ z_, real_8 _p_ 
  8610  finit_, real_8 _p_ tau_, int_4 _p_ info_)
  8611  { // ** body not listed **
  8812  }
  8813  logical_4 _dlaisnan (real_8 _p_ din1_, real_8 _p_ din2_)
  8814  { // ** body not listed **
  8819  }
  8820  int_4 _dlals0 (int_4 _p_ icompq_, int_4 _p_ nl_, int_4 _p_ nr_, int_4 _p_ sqre_, int_4 _p_ nrhs_, real_8 _p_ b_, int_4 
  8821  _p_ ldb_, real_8 _p_ bx_, int_4 _p_ ldbx_, int_4 _p_ perm_, int_4 _p_ givptr_, int_4 _p_ givcol_, int_4 _p_ ldgcol_, 
  8822  real_8 _p_ givnum_, int_4 _p_ ldgnum_, real_8 _p_ poles_, real_8 _p_ difl_, real_8 _p_ difr_, real_8 _p_ z_, int_4 _p_ 
  8823  k_, real_8 _p_ c_, real_8 _p_ s_, real_8 _p_ work_, int_4 _p_ info_)
  8824  { // ** body not listed **
  9000  }
  9001  int_4 _dlalsa (int_4 _p_ icompq_, int_4 _p_ smlsiz_, int_4 _p_ n_, int_4 _p_ nrhs_, real_8 _p_ b_, int_4 _p_ ldb_, 
  9002  real_8 _p_ bx_, int_4 _p_ ldbx_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ vt_, int_4 _p_ k_, real_8 _p_ difl_, real_8 
  9003  _p_ difr_, real_8 _p_ z_, real_8 _p_ poles_, int_4 _p_ givptr_, int_4 _p_ givcol_, int_4 _p_ ldgcol_, int_4 _p_ perm_, 
  9004  real_8 _p_ givnum_, real_8 _p_ c_, real_8 _p_ s_, real_8 _p_ work_, int_4 _p_ iwork_, int_4 _p_ info_)
  9005  { // ** body not listed **
  9151  }
  9152  int_4 _dlalsd (char _p_ uplo_, int_4 _p_ smlsiz_, int_4 _p_ n_, int_4 _p_ nrhs_, real_8 _p_ d_, real_8 _p_ e_, real_8 
  9153  _p_ b_, int_4 _p_ ldb_, real_8 _p_ rcond_, int_4 _p_ rank_, real_8 _p_ work_, int_4 _p_ iwork_, int_4 _p_ info_)
  9154  { // ** body not listed **
  9389  }
  9390  int_4 _dlamrg (int_4 _p_ n1_, int_4 _p_ n2_, real_8 _p_ a_, int_4 _p_ dtrd1_, int_4 _p_ dtrd2_, int_4 _p_ index_)
  9391  { // ** body not listed **
  9440  }
  9441  real_8 _dlange (char _p_ norm_, int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ work_)
  9442  { // ** body not listed **
  9504  }
  9505  real_8 _dlanst (char _p_ norm_, int_4 _p_ n_, real_8 _p_ d_, real_8 _p_ e_)
  9506  { // ** body not listed **
  9559  }
  9560  int_4 _dlapmt (logical_4 _p_ forwrd_, int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ x_, int_4 _p_ ldx_, int_4 _p_ k_)
  9561  { // ** body not listed **
  9619  }
  9620  real_8 _dlapy2 (real_8 _p_ x_, real_8 _p_ y_)
  9621  { // ** body not listed **
  9648  }
  9649  int_4 _dlaqp2 (int_4 _p_ m_, int_4 _p_ n_, int_4 _p_ offset_, real_8 _p_ a_, int_4 _p_ lda_, int_4 _p_ jpvt_, real_8 
  9650  _p_ tau_, real_8 _p_ vn1_, real_8 _p_ vn2_, real_8 _p_ work_)
  9651  { // ** body not listed **
  9711  }
  9712  int_4 _dlaqps (int_4 _p_ m_, int_4 _p_ n_, int_4 _p_ offset_, int_4 _p_ nb_, int_4 _p_ kb_, real_8 _p_ a_, int_4 _p_ 
  9713  lda_, int_4 _p_ jpvt_, real_8 _p_ tau_, real_8 _p_ vn1_, real_8 _p_ vn2_, real_8 _p_ auxv_, real_8 _p_ f_, int_4 _p_ 
  9714  ldf_)
  9715  { // ** body not listed **
  9813  }
  9814  int_4 _dlarfb (char _p_ side_, char _p_ trans_, char _p_ direct_, char _p_ storev_, int_4 _p_ m_, int_4 _p_ n_, int_4 
  9815  _p_ k_, real_8 _p_ v_, int_4 _p_ ldv_, real_8 _p_ t_, int_4 _p_ ldt_, real_8 _p_ c_, int_4 _p_ ldc_, real_8 _p_ work_, 
  9816  int_4 _p_ ldwork_)
  9817  { // ** body not listed **
 10036  }
 10037  int_4 _dlarf (char _p_ side_, int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ v_, int_4 _p_ incv_, real_8 _p_ tau_, real_8 _p_ 
 10038  c_, int_4 _p_ ldc_, real_8 _p_ work_)
 10039  { // ** body not listed **
 10087  }
 10088  int_4 _dlarfg (int_4 _p_ n_, real_8 _p_ alpha_, real_8 _p_ x_, int_4 _p_ incx_, real_8 _p_ tau_)
 10089  { // ** body not listed **
 10132  }
 10133  int_4 _dlarft (char _p_ direct_, char _p_ storev_, int_4 _p_ n_, int_4 _p_ k_, real_8 _p_ v_, int_4 _p_ ldv_, real_8 
 10134  _p_ tau_, real_8 _p_ t_, int_4 _p_ ldt_)
 10135  { // ** body not listed **
 10248  }
 10249  int_4 _dlartg (real_8 _p_ f_, real_8 _p_ g_, real_8 _p_ cs_, real_8 _p_ sn_, real_8 _p_ r_)
 10250  { // ** body not listed **
 10319  }
 10320  int_4 _dlas2 (real_8 _p_ f_, real_8 _p_ g_, real_8 _p_ h_, real_8 _p_ ssmin_, real_8 _p_ ssmax_)
 10321  { // ** body not listed **
 10365  }
 10366  int_4 _dlascl (char _p_ type_, int_4 _p_ kl_, int_4 _p_ ku_, real_8 _p_ cfrom_, real_8 _p_ cto_, int_4 _p_ m_, int_4 
 10367  _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, int_4 _p_ info_)
 10368  { // ** body not listed **
 10534  }
 10535  int_4 _dlasd0 (int_4 _p_ n_, int_4 _p_ sqre_, real_8 _p_ d_, real_8 _p_ e_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ 
 10536  vt_, int_4 _p_ ldvt_, int_4 _p_ smlsiz_, int_4 _p_ iwork_, real_8 _p_ work_, int_4 _p_ info_)
 10537  { // ** body not listed **
 10648  }
 10649  int_4 _dlasd1 (int_4 _p_ nl_, int_4 _p_ nr_, int_4 _p_ sqre_, real_8 _p_ d_, real_8 _p_ alpha_, real_8 _p_ beta_, 
 10650  real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ vt_, int_4 _p_ ldvt_, int_4 _p_ idxq_, int_4 _p_ iwork_, real_8 _p_ work_, 
 10651  int_4 _p_ info_)
 10652  { // ** body not listed **
 10712  }
 10713  int_4 _dlasd2 (int_4 _p_ nl_, int_4 _p_ nr_, int_4 _p_ sqre_, int_4 _p_ k_, real_8 _p_ d_, real_8 _p_ z_, real_8 _p_ 
 10714  alpha_, real_8 _p_ beta_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ vt_, int_4 _p_ ldvt_, real_8 _p_ dsigma_, real_8 
 10715  _p_ u2_, int_4 _p_ ldu2_, real_8 _p_ vt2_, int_4 _p_ ldvt2_, int_4 _p_ idxp_, int_4 _p_ idx_, int_4 _p_ idxc_, int_4 
 10716  _p_ idxq_, int_4 _p_ coltyp_, int_4 _p_ info_)
 10717  { // ** body not listed **
 10945  }
 10946  int_4 _dlasd3 (int_4 _p_ nl_, int_4 _p_ nr_, int_4 _p_ sqre_, int_4 _p_ k_, real_8 _p_ d_, real_8 _p_ q_, int_4 _p_ 
 10947  ldq_, real_8 _p_ dsigma_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ u2_, int_4 _p_ ldu2_, real_8 _p_ vt_, int_4 _p_ 
 10948  ldvt_, real_8 _p_ vt2_, int_4 _p_ ldvt2_, int_4 _p_ idxc_, int_4 _p_ ctot_, real_8 _p_ z_, int_4 _p_ info_)
 10949  { // ** body not listed **
 11114  }
 11115  int_4 _dlasd4 (int_4 _p_ n_, int_4 _p_ i_, real_8 _p_ d_, real_8 _p_ z_, real_8 _p_ delta_, real_8 _p_ rho_, real_8 _p_ 
 11116  sigma_, real_8 _p_ work_, int_4 _p_ info_)
 11117  { // ** body not listed **
 11794  }
 11795  int_4 _dlasd5 (int_4 _p_ i_, real_8 _p_ d_, real_8 _p_ z_, real_8 _p_ delta_, real_8 _p_ rho_, real_8 _p_ dsigma_, 
 11796  real_8 _p_ work_)
 11797  { // ** body not listed **
 11849  }
 11850  int_4 _dlasd6 (int_4 _p_ icompq_, int_4 _p_ nl_, int_4 _p_ nr_, int_4 _p_ sqre_, real_8 _p_ d_, real_8 _p_ vf_, real_8 
 11851  _p_ vl_, real_8 _p_ alpha_, real_8 _p_ beta_, int_4 _p_ idxq_, int_4 _p_ perm_, int_4 _p_ givptr_, int_4 _p_ givcol_, 
 11852  int_4 _p_ ldgcol_, real_8 _p_ givnum_, int_4 _p_ ldgnum_, real_8 _p_ poles_, real_8 _p_ difl_, real_8 _p_ difr_, real_8 
 11853  _p_ z_, int_4 _p_ k_, real_8 _p_ c_, real_8 _p_ s_, real_8 _p_ work_, int_4 _p_ iwork_, int_4 _p_ info_)
 11854  { // ** body not listed **
 11921  }
 11922  int_4 _dlasd7 (int_4 _p_ icompq_, int_4 _p_ nl_, int_4 _p_ nr_, int_4 _p_ sqre_, int_4 _p_ k_, real_8 _p_ d_, real_8 
 11923  _p_ z_, real_8 _p_ zw_, real_8 _p_ vf_, real_8 _p_ vfw_, real_8 _p_ vl_, real_8 _p_ vlw_, real_8 _p_ alpha_, real_8 _p_ 
 11924  beta_, real_8 _p_ dsigma_, int_4 _p_ idx_, int_4 _p_ idxp_, int_4 _p_ idxq_, int_4 _p_ perm_, int_4 _p_ givptr_, int_4 
 11925  _p_ givcol_, int_4 _p_ ldgcol_, real_8 _p_ givnum_, int_4 _p_ ldgnum_, real_8 _p_ c_, real_8 _p_ s_, int_4 _p_ info_)
 11926  { // ** body not listed **
 12119  }
 12120  int_4 _dlasd8 (int_4 _p_ icompq_, int_4 _p_ k_, real_8 _p_ d_, real_8 _p_ z_, real_8 _p_ vf_, real_8 _p_ vl_, real_8 
 12121  _p_ difl_, real_8 _p_ difr_, int_4 _p_ lddifr_, real_8 _p_ dsigma_, real_8 _p_ work_, int_4 _p_ info_)
 12122  { // ** body not listed **
 12214  }
 12215  int_4 _dlasda (int_4 _p_ icompq_, int_4 _p_ smlsiz_, int_4 _p_ n_, int_4 _p_ sqre_, real_8 _p_ d_, real_8 _p_ e_, 
 12216  real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ vt_, int_4 _p_ k_, real_8 _p_ difl_, real_8 _p_ difr_, real_8 _p_ z_, real_8 
 12217  _p_ poles_, int_4 _p_ givptr_, int_4 _p_ givcol_, int_4 _p_ ldgcol_, int_4 _p_ perm_, real_8 _p_ givnum_, real_8 _p_ c_
 12218  , real_8 _p_ s_, real_8 _p_ work_, int_4 _p_ iwork_, int_4 _p_ info_)
 12219  { // ** body not listed **
 12396  }
 12397  int_4 _dlasdq (char _p_ uplo_, int_4 _p_ sqre_, int_4 _p_ n_, int_4 _p_ ncvt_, int_4 _p_ nru_, int_4 _p_ ncc_, real_8 
 12398  _p_ d_, real_8 _p_ e_, real_8 _p_ vt_, int_4 _p_ ldvt_, real_8 _p_ u_, int_4 _p_ ldu_, real_8 _p_ c_, int_4 _p_ ldc_, 
 12399  real_8 _p_ work_, int_4 _p_ info_)
 12400  { // ** body not listed **
 12540  }
 12541  int_4 _dlasdt (int_4 _p_ n_, int_4 _p_ lvl_, int_4 _p_ nd_, int_4 _p_ inode_, int_4 _p_ ndiml_, int_4 _p_ ndimr_, int_4 
 12542  _p_ msub_)
 12543  { // ** body not listed **
 12574  }
 12575  int_4 _dlaset (char _p_ uplo_, int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ alpha_, real_8 _p_ beta_, real_8 _p_ a_, int_4 
 12576  _p_ lda_)
 12577  { // ** body not listed **
 12606  }
 12607  int_4 _dlasq1 (int_4 _p_ n_, real_8 _p_ d_, real_8 _p_ e_, real_8 _p_ work_, int_4 _p_ info_)
 12608  { // ** body not listed **
 12676  }
 12677  int_4 _dlasq2 (int_4 _p_ n_, real_8 _p_ z_, int_4 _p_ info_)
 12678  { // ** body not listed **
 13009  }
 13010  int_4 _dlasq3 (int_4 _p_ i0_, int_4 _p_ n0_, real_8 _p_ z_, int_4 _p_ pp_, real_8 _p_ dmin_, real_8 _p_ sigma_, real_8 
 13011  _p_ desig_, real_8 _p_ qmax_, int_4 _p_ nfail_, int_4 _p_ iter_, int_4 _p_ ndiv_, logical_4 _p_ ieee_, int_4 _p_ ttype_
 13012  , real_8 _p_ dmin1_, real_8 _p_ dmin2_, real_8 _p_ dn_, real_8 _p_ dn1_, real_8 _p_ dn2_, real_8 _p_ g_, real_8 _p_ 
 13013  tau_)
 13014  { // ** body not listed **
 13163  }
 13164  int_4 _dlasq4 (int_4 _p_ i0_, int_4 _p_ n0_, real_8 _p_ z_, int_4 _p_ pp_, int_4 _p_ n0in_, real_8 _p_ dmin_, real_8 
 13165  _p_ dmin1_, real_8 _p_ dmin2_, real_8 _p_ dn_, real_8 _p_ dn1_, real_8 _p_ dn2_, real_8 _p_ tau_, int_4 _p_ ttype_, 
 13166  real_8 _p_ g_)
 13167  { // ** body not listed **
 13392  }
 13393  int_4 _dlasq5 (int_4 _p_ i0_, int_4 _p_ n0_, real_8 _p_ z_, int_4 _p_ pp_, real_8 _p_ tau_, real_8 _p_ sigma_, real_8 
 13394  _p_ dmin_, real_8 _p_ dmin1_, real_8 _p_ dmin2_, real_8 _p_ dn_, real_8 _p_ dnm1_, real_8 _p_ dnm2_, logical_4 _p_ 
 13395  ieee_, real_8 _p_ eps_)
 13396  { // ** body not listed **
 13621  }
 13622  int_4 _dlasq6 (int_4 _p_ i0_, int_4 _p_ n0_, real_8 _p_ z_, int_4 _p_ pp_, real_8 _p_ dmin_, real_8 _p_ dmin1_, real_8 
 13623  _p_ dmin2_, real_8 _p_ dn_, real_8 _p_ dnm1_, real_8 _p_ dnm2_)
 13624  { // ** body not listed **
 13726  }
 13727  int_4 _dlasr (char _p_ side_, char _p_ pivot_, char _p_ direct_, int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ c_, real_8 _p_ 
 13728  s_, real_8 _p_ a_, int_4 _p_ lda_)
 13729  { // ** body not listed **
 13935  }
 13936  int_4 _dlasrt (char _p_ id_, int_4 _p_ n_, real_8 _p_ d_, int_4 _p_ info_)
 13937  { // ** body not listed **
 14111  }
 14112  int_4 _dlassq (int_4 _p_ n_, real_8 _p_ x_, int_4 _p_ incx_, real_8 _p_ scale_, real_8 _p_ sumsq_)
 14113  { // ** body not listed **
 14134  }
 14135  int_4 _dlasv2 (real_8 _p_ f_, real_8 _p_ g_, real_8 _p_ h_, real_8 _p_ ssmin_, real_8 _p_ ssmax_, real_8 _p_ snr_, 
 14136  real_8 _p_ csr_, real_8 _p_ snl_, real_8 _p_ csl_)
 14137  { // ** body not listed **
 14252  }
 14253  int_4 _dlaswp (int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, int_4 _p_ k1_, int_4 _p_ k2_, int_4 _p_ ipiv_, int_4 _p_ 
 14254  incx_)
 14255  { // ** body not listed **
 14308  }
 14309  int_4 _dlatrs (char _p_ uplo_, char _p_ trans_, char _p_ diag_, char _p_ normin_, int_4 _p_ n_, real_8 _p_ a_, int_4 
 14310  _p_ lda_, real_8 _p_ x_, real_8 _p_ scale_, real_8 _p_ cnorm_, int_4 _p_ info_)
 14311  { // ** body not listed **
 14659  }
 14660  int_4 _dorg2r (int_4 _p_ m_, int_4 _p_ n_, int_4 _p_ k_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ tau_, real_8 _p_ 
 14661  work_, int_4 _p_ info_)
 14662  { // ** body not listed **
 14711  }
 14712  int_4 _dorgbr (char _p_ vect_, int_4 _p_ m_, int_4 _p_ n_, int_4 _p_ k_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ tau_
 14713  , real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_)
 14714  { // ** body not listed **
 14828  }
 14829  int_4 _dorgl2 (int_4 _p_ m_, int_4 _p_ n_, int_4 _p_ k_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ tau_, real_8 _p_ 
 14830  work_, int_4 _p_ info_)
 14831  { // ** body not listed **
 14884  }
 14885  int_4 _dorglq (int_4 _p_ m_, int_4 _p_ n_, int_4 _p_ k_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ tau_, real_8 _p_ 
 14886  work_, int_4 _p_ lwork_, int_4 _p_ info_)
 14887  { // ** body not listed **
 14976  }
 14977  int_4 _dorgqr (int_4 _p_ m_, int_4 _p_ n_, int_4 _p_ k_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ tau_, real_8 _p_ 
 14978  work_, int_4 _p_ lwork_, int_4 _p_ info_)
 14979  { // ** body not listed **
 15068  }
 15069  int_4 _dorm2r (char _p_ side_, char _p_ trans_, int_4 _p_ m_, int_4 _p_ n_, int_4 _p_ k_, real_8 _p_ a_, int_4 _p_ lda_
 15070  , real_8 _p_ tau_, real_8 _p_ c_, int_4 _p_ ldc_, real_8 _p_ work_, int_4 _p_ info_)
 15071  { // ** body not listed **
 15151  }
 15152  int_4 _dormbr (char _p_ vect_, char _p_ side_, char _p_ trans_, int_4 _p_ m_, int_4 _p_ n_, int_4 _p_ k_, real_8 _p_ a_
 15153  , int_4 _p_ lda_, real_8 _p_ tau_, real_8 _p_ c_, int_4 _p_ ldc_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_)
 15154  { // ** body not listed **
 15289  }
 15290  int_4 _dorml2 (char _p_ side_, char _p_ trans_, int_4 _p_ m_, int_4 _p_ n_, int_4 _p_ k_, real_8 _p_ a_, int_4 _p_ lda_
 15291  , real_8 _p_ tau_, real_8 _p_ c_, int_4 _p_ ldc_, real_8 _p_ work_, int_4 _p_ info_)
 15292  { // ** body not listed **
 15372  }
 15373  int_4 _dormlq (char _p_ side_, char _p_ trans_, int_4 _p_ m_, int_4 _p_ n_, int_4 _p_ k_, real_8 _p_ a_, int_4 _p_ lda_
 15374  , real_8 _p_ tau_, real_8 _p_ c_, int_4 _p_ ldc_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_)
 15375  { // ** body not listed **
 15493  }
 15494  int_4 _dormqr (char _p_ side_, char _p_ trans_, int_4 _p_ m_, int_4 _p_ n_, int_4 _p_ k_, real_8 _p_ a_, int_4 _p_ lda_
 15495  , real_8 _p_ tau_, real_8 _p_ c_, int_4 _p_ ldc_, real_8 _p_ work_, int_4 _p_ lwork_, int_4 _p_ info_)
 15496  { // ** body not listed **
 15607  }
 15608  int_4 _dpocon (char _p_ uplo_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_, real_8 _p_ anorm_, real_8 _p_ rcond_, 
 15609  real_8 _p_ work_, int_4 _p_ iwork_, int_4 _p_ info_)
 15610  { // ** body not listed **
 15679  }
 15680  int_4 _drscl (int_4 _p_ n_, real_8 _p_ sa_, real_8 _p_ sx_, int_4 _p_ incx_)
 15681  { // ** body not listed **
 15718  }
 15719  int_4 _ieeeck (int_4 _p_ ispec_, real_4 _p_ zero_, real_4 _p_ one_)
 15720  { // ** body not listed **
 15800  }
 15801  int_4 _iladlc (int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_)
 15802  { // ** body not listed **
 15823  }
 15824  int_4 _iladlr (int_4 _p_ m_, int_4 _p_ n_, real_8 _p_ a_, int_4 _p_ lda_)
 15825  { // ** body not listed **
 15846  }
 15847  int_4 _ilaenv (int_4 _p_ ispec_, char _p_ name_, char _p_ opts_, int_4 _p_ n1_, int_4 _p_ n2_, int_4 _p_ n3_, int_4 _p_ 
 15848  n4_)
 15849  { // ** body not listed **
 16399  }
 16400  int_4 _iparmq (int_4 _p_ ispec_, char _p_ name_, char _p_ opts_, int_4 _p_ n_, int_4 _p_ ilo_, int_4 _p_ ihi_, int_4 
 16401  _p_ lwork_)
 16402  { // ** body not listed **
 16516  }


© 2002-2025 J.M. van der Veer (jmvdveer@xs4all.nl)