Main Page   Class Hierarchy   Data Structures   File List   Data Fields   Globals  

sarith.f

Go to the documentation of this file.
00001 
00002 c
00003 c       Copyright (c) 1986,1987,1988,1989,1990,1991,1992,1993,
00004 c       by Steve McMillan, Drexel University, Philadelphia, PA.
00005 c
00006 c       All rights reserved.
00007 c
00008 c       Redistribution and use in source and binary forms are permitted
00009 c       provided that the above copyright notice and this paragraph are
00010 c       duplicated in all such forms and that any documentation,
00011 c       advertising materials, and other materials related to such
00012 c       distribution and use acknowledge that the software was developed
00013 c       by the author named above.
00014 c
00015 c       THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
00016 c       IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
00017 c       WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00018 c
00019 
00020         subroutine sarith(input,istart,nin,arr,nmax,narr,register,
00021      &                    iprompt,*)
00022         save
00023 c
00024 c       Perform scalar arithmetic (on arrays).
00025 c
00026         character*(*) input
00027         dimension arr(nmax,3),narr(3)
00028 c
00029         character*1 c2
00030         dimension iarg(3)
00031 c
00032         if (nin.le.istart) go to 1001
00033         c2 = input(2:2)
00034 c
00035         ibl=1
00036         narg=0
00037         do 450 i=istart,nin
00038             if (input(i:i).eq.' '.or.input(i:i).eq.',') then
00039                 ibl=1
00040             else
00041                 if (ibl.eq.1) then
00042                     narg=narg+1
00043                     if (narg.ne.2) then
00044                         call decode(input(i:i),iarg(narg),*1001)
00045                     else
00046                         read(input(i:nin),*,err=1001,end=1001)s
00047                     end if
00048                     if (narg.eq.3) go to 451
00049                     ibl=0
00050                 end if
00051             end if
00052 450     continue
00053 c
00054         if (narg.lt.1) then
00055             go to 1001
00056         else if (narg.eq.1) then
00057             s = register
00058         end if
00059 c
00060         if (narg.le.2) iarg(3)=iarg(1)
00061 c
00062 451     n = narr(iarg(1))
00063 c
00064         if (n.le.0) return
00065 c
00066         narr(iarg(3)) = n
00067 c
00068         if (c2.eq.'+') then
00069             do 460 i=1,n
00070 460         arr(i,iarg(3))=arr(i,iarg(1))+s
00071         else if (c2.eq.'-') then
00072             do 470 i=1,n
00073 470         arr(i,iarg(3))=arr(i,iarg(1))-s
00074         else if (c2.eq.'*') then
00075             do 480 i=1,n
00076 480         arr(i,iarg(3))=arr(i,iarg(1))*s
00077         else if (c2.eq.'/') then
00078             if (s.eq.0.)go to 1001
00079             s=1./s
00080             do 490 i=1,n
00081 490         arr(i,iarg(3))=arr(i,iarg(1))*s
00082         else if (c2.eq.'^') then
00083             do 500 i=1,n
00084 500         if (arr(i,iarg(1)).gt.0.) arr(i,iarg(3))=arr(i,iarg(1))**s
00085         else if (c2.eq.'=') then
00086             do 510 i=1,n
00087 510         arr(i,iarg(3))=s
00088         else
00089             go to 1001
00090         end if
00091 c
00092         return
00093 1001    return 1
00094 c
00095         end

Generated at Sun Feb 24 09:57:14 2002 for STARLAB by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001