~ubuntu-branches/ubuntu/raring/python-scipy/raring-proposed

« back to all changes in this revision

Viewing changes to Lib/linalg/src/calc_lwork.f

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2007-01-07 14:12:12 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20070107141212-mm0ebkh5b37hcpzn
* Remove build dependency on python-numpy-dev.
* python-scipy: Depend on python-numpy instead of python-numpy-dev.
* Package builds on other archs than i386. Closes: #402783.

Show diffs side-by-side

added added

removed removed

Lines of Context:
328
328
      min_lwork = MINWRK
329
329
      max_lwork = MAXWRK
330
330
      end
 
331
 
 
332
      subroutine heev(min_lwork,max_lwork,prefix,n,lower)
 
333
 
 
334
      integer min_lwork,max_lwork,n,lower
 
335
      character prefix
 
336
cf2py callstatement (*f2py_func)(&min_lwork,&max_lwork,prefix,&n,&lower)
 
337
cf2py callprotoargument int*,int*,char*,int*,int*
 
338
cf2py intent(out,out=minwrk) :: min_lwork
 
339
cf2py intent(out,out=maxwrk) :: max_lwork
 
340
cf2py integer optional,intent(in) :: lower = 0
 
341
cf2py intent(in) :: prefix
 
342
cf2py intent(in) :: n
 
343
 
 
344
      CHARACTER UPLO
 
345
      INTEGER ILAENV, NB
 
346
      EXTERNAL ILAENV
 
347
      INTRINSIC MAX
 
348
 
 
349
      UPLO = 'L'
 
350
      if (lower.eq.0) then
 
351
        UPLO = 'U'
 
352
      endif
 
353
 
 
354
      NB = ILAENV( 1, prefix // 'HETRD', UPLO, N, -1, -1, -1 )
 
355
 
 
356
      min_lwork = MAX(1,2*N-1)
 
357
      max_lwork = MAX( 1, ( NB+1 )*N )
 
358
 
 
359
      end
 
360
 
 
361
      subroutine syev(min_lwork,max_lwork,prefix,n,lower)
 
362
 
 
363
      integer min_lwork,max_lwork,n,lower
 
364
      character prefix
 
365
cf2py callstatement (*f2py_func)(&min_lwork,&max_lwork,prefix,&n,&lower)
 
366
cf2py callprotoargument int*,int*,char*,int*,int*
 
367
cf2py intent(out,out=minwrk) :: min_lwork
 
368
cf2py intent(out,out=maxwrk) :: max_lwork
 
369
cf2py integer optional,intent(in) :: lower = 0
 
370
cf2py intent(in) :: prefix
 
371
cf2py intent(in) :: n
 
372
 
 
373
      CHARACTER UPLO
 
374
      INTEGER ILAENV, NB
 
375
      EXTERNAL ILAENV
 
376
      INTRINSIC MAX
 
377
 
 
378
      UPLO = 'L'
 
379
      if (lower.eq.0) then
 
380
        UPLO = 'U'
 
381
      end if
 
382
 
 
383
      NB = ILAENV( 1, prefix // 'SYTRD', UPLO, N, -1, -1, -1 )
 
384
 
 
385
      min_lwork = MAX(1,3*N-1)
 
386
      max_lwork = MAX( 1, ( NB+2 )*N )
 
387
 
 
388
      end
 
389
 
 
390
      subroutine gees(min_lwork,max_lwork,prefix,n,compute_v)
 
391
 
 
392
      integer min_lwork,max_lwork,n,compute_v
 
393
      character prefix
 
394
 
 
395
cf2py callstatement (*f2py_func)(&min_lwork,&max_lwork,prefix,&n,&compute_v)
 
396
cf2py callprotoargument int*,int*,char*,int*,int*
 
397
cf2py intent(out,out=minwrk) :: min_lwork
 
398
cf2py intent(out,out=maxwrk) :: max_lwork
 
399
cf2py integer optional,intent(in) :: compute_v = 1
 
400
cf2py intent(in) :: prefix
 
401
cf2py intent(in) :: n
 
402
 
 
403
      INTEGER            HSWORK, MAXWRK, MINWRK, MAXB, K
 
404
      INTEGER            ILAENV
 
405
      EXTERNAL           ILAENV
 
406
      INTRINSIC          MAX, MIN
 
407
 
 
408
      MAXWRK = N + N*ILAENV( 1, prefix // 'GEHRD', ' ', N, 1, N, 0 )
 
409
      MINWRK = MAX( 1, 2*N )
 
410
      IF( compute_v.eq.0 ) THEN
 
411
         MAXB = MAX( ILAENV( 8, prefix // 'HSEQR',
 
412
     $        'SN', N, 1, N, -1 ), 2 )
 
413
         K = MIN( MAXB, N, MAX( 2, ILAENV( 4, prefix // 'HSEQR', 
 
414
     $    'SN', N, 1, N, -1 ) ) )
 
415
         HSWORK = MAX( K*( K+2 ), 2*N )
 
416
         MAXWRK = MAX( MAXWRK, HSWORK, 1 )
 
417
      ELSE
 
418
         MAXWRK = MAX( MAXWRK, N+( N-1 )*
 
419
     $        ILAENV( 1, prefix // 'UNGHR', ' ', N, 1, N, -1 ) )
 
420
         MAXB = MAX( ILAENV( 8, prefix // 'HSEQR',
 
421
     $        'EN', N, 1, N, -1 ), 2 )
 
422
         K = MIN( MAXB, N, MAX( 2, ILAENV( 4, prefix // 'HSEQR',
 
423
     $        'EN', N, 1, N, -1 ) ) )
 
424
         HSWORK = MAX( K*( K+2 ), 2*N )
 
425
         MAXWRK = MAX( MAXWRK, HSWORK, 1 )
 
426
      END IF
 
427
 
 
428
      min_lwork = MINWRK
 
429
      max_lwork = MAXWRK
 
430
 
 
431
      end
 
432
 
 
433
      subroutine geqrf(min_lwork,max_lwork,prefix,m,n)
 
434
 
 
435
      integer min_lwork,max_lwork,m,n
 
436
      character prefix      
 
437
 
 
438
cf2py callstatement (*f2py_func)(&min_lwork,&max_lwork,prefix,&m,&n)
 
439
cf2py callprotoargument int*,int*,char*,int*,int*
 
440
cf2py intent(out,out=minwrk) :: min_lwork
 
441
cf2py intent(out,out=maxwrk) :: max_lwork
 
442
cf2py intent(in) :: prefix
 
443
cf2py intent(in) :: m,n
 
444
 
 
445
      INTEGER NB
 
446
      INTEGER ILAENV
 
447
      EXTERNAL ILAENV
 
448
      INTRINSIC MAX
 
449
 
 
450
      NB = ILAENV( 1, prefix // 'GEQRF', ' ', M, N, -1, -1 )
 
451
 
 
452
      min_lwork = MAX(1,N)
 
453
      max_lwork = MAX(1,N*NB)
 
454
      end
 
455
 
 
456
      subroutine gqr(min_lwork,max_lwork,prefix,m,n)
 
457
 
 
458
      integer min_lwork,max_lwork,m,n
 
459
      character prefix
 
460
 
 
461
cf2py callstatement (*f2py_func)(&min_lwork,&max_lwork,prefix,&m,&n)
 
462
cf2py callprotoargument int*,int*,char*,int*,int*
 
463
cf2py intent(out,out=minwrk) :: min_lwork
 
464
cf2py intent(out,out=maxwrk) :: max_lwork
 
465
cf2py intent(in) :: prefix
 
466
cf2py intent(in) :: m,n
 
467
 
 
468
      INTEGER NB
 
469
      INTEGER ILAENV
 
470
      EXTERNAL ILAENV
 
471
      INTRINSIC MAX
 
472
 
 
473
      if ((prefix.eq.'d').or.(prefix.eq.'s')
 
474
     $     .or.(prefix.eq.'D').or.(prefix.eq.'S')) then
 
475
         NB = ILAENV( 1, prefix // 'ORGQR', ' ', M, N, -1, -1 )
 
476
      else
 
477
         NB = ILAENV( 1, prefix // 'UNGQR', ' ', M, N, -1, -1 )
 
478
      endif
 
479
      min_lwork = MAX(1,N)
 
480
      max_lwork = MAX(1,N*NB)
 
481
      end