File: dmdspf.f

package info (click to toggle)
scilab 4.0-12
  • links: PTS
  • area: non-free
  • in suites: etch, etch-m68k
  • size: 100,640 kB
  • ctags: 57,333
  • sloc: ansic: 377,889; fortran: 242,862; xml: 179,819; tcl: 42,062; sh: 10,593; ml: 9,441; makefile: 4,377; cpp: 1,354; java: 621; csh: 260; yacc: 247; perl: 130; lex: 126; asm: 72; lisp: 30
file content (65 lines) | stat: -rw-r--r-- 1,845 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
C/MEMBR ADD NAME=DMDSPF,SSI=0
c     Copyright INRIA
      subroutine dmdspf(x,nx,m,n,maxc,ll,lunit)
c!but
c     dmdspf ecrit une matrice  (ou un scalaire) sous la forme d'un
c     tableau s, avec gestion automatique de l'espace disponible.
c     Chaque nombre est ecrit sous la forme dmaxc.maxc-7
c!liste d'appel
c
c     subroutine dmdspf(x,nx,m,n,maxc,ll,lunit)
c
c     double precision x(*)
c     integer nx,m,n,maxc,ll,lunit
c
c
c     x : tableau contenant les coefficients de la matrice x
c     nx : entier definissant le rangement dans x
c     m : nombre de ligne de la matrice
c     n : nombre de colonnes de la matrice
c     maxc : nombre de caracteres maximum autorise pour
c            representer un nombre
c     ll : longueur de ligne maximum admissible
c     lunit : etiquette logique du support d'edition
c!
      double precision x(*)
      integer   maxc
      character buf*80,form*20,cw*20
c
      io=0
      ncol=ll/(maxc+2)
      nbloc=(n+ncol-1)/ncol
c
      write(form,130) ncol,maxc,maxc-7
c
      k1=1
      do 70 ib=1,nbloc
      k2=min(k1-1+ncol,n)
      if(nbloc.ne.1) then
         if(k1.eq.k2) then
            write(cw(1:4),'(i4)') k1
            call basout(io,lunit,' ')
            call basout(io,lunit,'         colonne '//cw(1:4))
         else
            write(cw(1:8),'(2i4)') k1,k2
            call basout(io,lunit,' ')
            call basout(io,lunit,'        colonnes '//cw(1:4)//
     &                        ' a '//cw(5:8))
            call basout(io,lunit,' ')
         endif
         call basout(io,lunit,' ')
         if (io.eq.-1) goto 99
      endif
c
      do 60 l=1,m
      write(buf,form) (x(l+(k-1)*nx),k=k1,k2)
      call basout(io,lunit,buf)
      if (io.eq.-1) goto 99
   60 continue
      k1=k2+1
   70 continue
c
   99 return
c
  130 format('(1x,',i2,'(1pd',i2,'.',i2,',2x))')
      end