M_matrix Module

NAME

M_matrix(3f) - [M_matrix::INTRO] The Los Alamos-inspired Linear Algebra Fortran Facility (LALA)
LICENSE(MIT)

DESCRIPTION

The M_matrix module contains the Linear Algebra Fortran Facility (LALA) which allows for interacting with a Fortran program using Matlab or Octave-like commands. LALA is also usable as a simple one-line language. It is a WIP (Work In Progress) but is already useful.

  • You can pass intrinsic-type data easily between your Fortran program and the LALA utility.
  • blocks of LALA commands may be passed to lala(3f) as well.
  • external files containing lala(3f) commands may be read to create data or as configuration files.
  • LALA commands may be recorded and played back.
  • a command-line based command history allowed for recalling and editing input.
  • a stand-alone program lets you create and test LALA files. It is a flexible calculator utility all by itself.
  • a built-in help command describes the many functions and commands
  • a user-added Fortran routine may be called via the USER() function.

All together, this allows lala(3f) to be used for self-describing configuration and data files, inspecting data in existing programs, transferring small amounts of data between programs or assisting in debugging and development, unit testing and macro-level timing.

EXAMPLE

Sample program:

 program demo_M_matrix
 use M_matrix, only : lala, put_into_lala, get_from_lala, ifin_lala
 !real,allocatable             :: r
 !complex,allocatable          :: cvec(:)
 integer,allocatable          :: iarr(:,:)
 character(len=:),allocatable :: t(:)
 integer                      :: ierr
 integer                      :: i

 ! store some data into lala(3)
 call put_into_lala('A',[1,2,3,4,5]*10.5,ierr)
 write(*,*)'is A defined in LALA?',ifin_lala('A')
 call lala('A/2.0')

 ! pass some commands to lala(3f)
 call lala([character(len=80) :: &
 &'PI=atan(1)*4               ', &
 &"mytitle='this is my title';", &
 &'littlearray=<              ', &
 &'   1 2 3;                  ', &
 &'   4 5 6;                  ', &
 &'   7 8 9;                  ', &
 &'>                          ', &
 &'S=sum(A)                   ', &
 &'I=inv(littlearray);        ', &
 &'B=littlearray*sin(PI/3)    ', &
 &"save('keepB',B)            ", &
 &''])

 ! read a file containing lala(3f) commands
 call lala("exec('mycommands');")

 ! interactively interact with lala(3f) interpreter
 call lala()

 ! get some data from LALA into the calling program
 call get_from_lala('littlearray',iarr,ierr)
 write(*,'(a)')'IN CALLING PROGRAM IARR='
 write(*,'(1x,*(g0,1x))')(IARR(i,:),new_line('A'),i=1,size(iarr,dim=1))

 call get_from_lala('mytitle',t,ierr)
 write(*,*)'IN CALLING PROGRAM T=',t

 end program demo_M_matrix

SYNTAX DIAGRAMS (9)

A formal description of the language acceptable to LALA, as well as
a flow chart of the lala program, is provided by the syntax diagrams
or syntax graphs of wirth [6]. There are eleven non-terminal symbols
in the language:

   LINE, STATEMENT, CLAUSE, EXPRESSION, TERM,
   FACTOR, NUMBER, INTEGER, NAME, COMMAND, TEXT .

The diagrams define each of the non-terminal symbols using the others
and the terminal symbols:

   LETTER -- A THROUGH Z,
   DIGIT  -- 0 THROUGH 9,
   CHAR   -- ( ) ; : + - * / \ = . , < >
   QUOTE  -- '

LINE

       |-----> STATEMENT >----|
       |                      |
       |-----> CLAUSE >-------|
       |                      |
-------|-----> EXPR >---------|------>
     | |                      | |
     | |-----> COMMAND >------| |
     | |                      | |
     | |-> > >-> EXPR >-> < >-| |
     | |                      | |
     | |----------------------| |
     |                          |
     |        |-< ; <-|         |
     |--------|       |---------|
              |-< , <-|

STATEMENT

     |-> NAME >--------------------------------|
     |          |                              |
     |          |         |--> : >---|         |
     |          |         |          |         |
     |          |-> ( >---|-> EXPR >-|---> ) >-|
     |                  |              |       |
-----|                  |-----< , <----|       |--> = >--> EXPR >--->
     |                                         |
     |       |--< , <---|                      |
     |       |          |                      |
     |-> < >---> NAME >---> > >----------------|

CLAUSE

     |---> FOR   >---> NAME >---> = >---> EXPR >--------------|
     |                                                        |
     | |-> WHILE >-|                                          |
     |-|           |-> EXPR >----------------------           |
     | |-> IF    >-|          |   |   |   |   |   |           |
-----|                        <   <=  =   <>  >=  >           |---->
     |                        |   |   |   |   |   |           |
     |                        ----------------------> EXPR >--|
     |                                                        |
     |---> ELSE  >--------------------------------------------|
     |                                                        |
     |---> END   >--------------------------------------------|

EXPR

       |-> + >-|
       |       |
-------|-------|-------> TERM >---------->
       |       |    |             |
       |-> - >-|    |  |-< + <-|  |
                    |  |       |  |
                    |--|-< - <-|--|
                       |       |
                       |-< : <-|

TERM

---------------------> FACTOR >---------------------->
        |                                   |
        |             |-< * <-|             |
        |  |-------|  |       |  |-------|  |
        |--|       |--|-< / <-|--|       |--|
           |-< . <-|  |       |  |-< . <-|
                      |-< \ <-|

FACTOR

     |----------------> NUMBER >---------------|
     |                                         |
     |-> NAME >--------------------------------|
     |          |                              |
     |          |         |--> : >---|         |
     |          |         |          |         |
     |          |-> ( >---|-> EXPR >-|---> ) >-|
     |                  |              |       |
     |                  |-----< , <----|       |
     |                                         |
-----|------------> ( >-----> EXPR >-----> ) >-|-|-------|----->
     |                                         | |       | |
     |                  |--------------|       | |-> ' >-| |
     |                  |              |       |           |
     |------------> < >-|---> EXPR >---|-> > >-|           |
     |                    |          |         |           |
     |                    |--<   <---|         |           |
     |                    |          |         |           |
     |                    |--< ; <---|         |           |
     |                    |          |         |           |
     |                    |--< , <---|         |           |
     |                                         |           |
     |------------> > >-----> EXPR >-----> < >-|           |
     |                                         |           |
     |-----> FACTOR >---> ** >---> FACTOR >----|           |
     |                                                     |
     |------------> ' >-----> TEXT >-----> ' >-------------|

NUMBER

    |----------|                          |-> + >-|
    |          |                          |       |
-----> INT >-----> . >---> INT >-----> E >---------> INT >---->
             |                   | |      |       |        |
             |                   | |      |-> - >-|        |
             |                   | |                       |
             |---------------------------------------------|

INT

------------> DIGIT >----------->
          |           |
          |-----------|

NAME

                  |--< LETTER <--|
                  |              |
------> LETTER >--|--------------|----->
                  |              |
                  |--< DIGIT  <--|

COMMAND

                        |--> NAME >--|
                        |            |
--------> NAME >--------|------------|---->
                        |            |
                        |--> CHAR >--|
                        |            |
                        |---> ' >----|

TEXT

                |-> LETTER >--|
                |             |
                |-> DIGIT >---|
----------------|             |-------------->
            |   |-> CHAR >----|   |
            |   |             |   |
            |   |-> ' >-> ' >-|   |
            |                     |
            |---------------------|

Originally based on a routine called MATLAB, although heavily modified since. The original stated …

MATLAB stands for MATrix LABoratory. It is a FORTRAN package
developed by Argonne National Laboratories for in-house use. It
provides comprehensive vector and tensor operations in a package
which may be programmed, either through a macro language or through
execution of script files.

Matlab is reentrant and recursive. Functions supported include (but
are not by any means limited to) sin, cos, tan, arc functions, upper
triangular, lower triangular, determinants, matrix multiplication,
identity, Hilbert matrices, eigenvalues and eigenvectors, matrix
roots and products, inversion and so on and so forth.

The file available on the bulletin board as Matlab.arc contains an
Amiga-ized executable copy of MATLAB and the online help file, as
well as this intro.

If you want the source code (over 300K) and a manual, or if your
bulletin board only has this message and not the package, send $5.00
and a 3.5" disk to:

                           Jim Locker
                           4443 N. Hyland Ave.
                           Dayton, OH 45424

The package is public domain, but of course postage and reproduction
cost money. Believe me, this package is a bargain at the price.
Please feel free to distribute the package.

The source was taken off a VAX 11/780. It ran without modification
(except the file handler and some minor error handling) on an Amiga
1000 using ABSoft Fortran v2.2.  It will run in 512K environment.
I have seen it on IBM mainframes and IBM PCs.

Subsequent changes per John S. Urban: see change log and git(1) history

public :: size_lala


Uses

    • M_msg
    • M_intrinsics
    • M_io
    • M_strings
    • M_framework
    • M_LA
    • M_history
    • M_list
    • iso_fortran_env

Contents

LALA_cmd LALA_cmds LALA_init get get_array_from_lala_cmplx get_array_from_lala_dpcmplx get_array_from_lala_int16 get_array_from_lala_int32 get_array_from_lala_int64 get_array_from_lala_int8 get_array_from_lala_logical get_array_from_lala_real128 get_array_from_lala_real32 get_array_from_lala_real64 get_double_from_lala get_fixed_array_from_lala_cmplx get_fixed_array_from_lala_dpcmplx get_fixed_array_from_lala_int16 get_fixed_array_from_lala_int32 get_fixed_array_from_lala_int64 get_fixed_array_from_lala_int8 get_fixed_array_from_lala_logical get_fixed_array_from_lala_real128 get_fixed_array_from_lala_real32 get_fixed_array_from_lala_real64 get_fixed_scalar_from_lala_character get_fixed_vector_from_lala_character get_fixed_vector_from_lala_cmplx get_fixed_vector_from_lala_dpcmplx get_fixed_vector_from_lala_int16 get_fixed_vector_from_lala_int32 get_fixed_vector_from_lala_int64 get_fixed_vector_from_lala_int8 get_fixed_vector_from_lala_logical get_fixed_vector_from_lala_real128 get_fixed_vector_from_lala_real32 get_fixed_vector_from_lala_real64 get_scalar_from_lala_character get_scalar_from_lala_cmplx get_scalar_from_lala_dpcmplx get_scalar_from_lala_int16 get_scalar_from_lala_int32 get_scalar_from_lala_int64 get_scalar_from_lala_int8 get_scalar_from_lala_logical get_scalar_from_lala_real128 get_scalar_from_lala_real32 get_scalar_from_lala_real64 get_vector_from_lala_character get_vector_from_lala_cmplx get_vector_from_lala_dpcmplx get_vector_from_lala_int16 get_vector_from_lala_int32 get_vector_from_lala_int64 get_vector_from_lala_int8 get_vector_from_lala_logical get_vector_from_lala_real128 get_vector_from_lala_real32 get_vector_from_lala_real64 ints2str mat_base mat_buf2str mat_clause mat_comand mat_copyid mat_err mat_expr mat_factor mat_files mat_formz mat_funs mat_getch mat_getlin mat_getsym mat_getval mat_help_text mat_matfn1 mat_matfn2 mat_matfn3 mat_matfn4 mat_matfn5 mat_matfn6 mat_parse mat_plot mat_print mat_print_id mat_prompt mat_savlod mat_stack1 mat_stack2 mat_stack_get mat_stack_put mat_str2buf mat_term mat_watan mat_wdiv mat_wlog printit set_usersub sh_command store_array_into_lala store_double_into_lala store_scalar_into_lala store_vector_into_lala update

Variables

Type Visibility Attributes Name Initial
integer, public, parameter :: GG_EOL = 99999
integer, public, parameter :: GG_LINELEN = 1024
integer, public, parameter :: GG_MAX_NAME_LENGTH = 63
integer, public, parameter :: GG_MAX_NUMBER_OF_NAMES = 480
integer, public, parameter :: GG_PAD(63) = blank
integer, public, save :: GM_BIGMEM = -1
doubleprecision, public, allocatable :: GM_IMAGS(:)
doubleprecision, public, allocatable :: GM_REALS(:)
integer, public :: G_ARGUMENT_POINTER
integer, public :: G_BUF(GG_LINELEN)
integer, public, parameter :: G_CHARSET_SIZE = 256
integer, public :: G_CHRA
integer, public :: G_CURRENT_RANDOM_SEED
integer, public :: G_CURRENT_RANDOM_TYPE
integer, public :: G_DEBUG_LEVEL
logical, public, save :: G_ECHO = .false.
integer, public :: G_ERR
logical, public :: G_FILE_OPEN_ERROR
integer, public :: G_FIN
integer, public :: G_FLOP_COUNTER(2)
integer, public :: G_FMT
character(len=:), public, allocatable :: G_FORTRAN_TEXT(:)
integer, public :: G_FUN
character(len=:), public, allocatable :: G_HELP_TEXT(:)
integer, public :: G_IDS(GG_MAX_NAME_LENGTH,G_PSIZE)
integer, public :: G_INPUT_LUN
integer, public :: G_LHS
integer, public :: G_LIN(GG_LINELEN)
integer, public :: G_LINECOUNT(4)
integer, public :: G_LINE_POINTER(6)
logical, public :: G_PROMPT
character(len=GG_LINELEN), public, allocatable, save :: G_PSEUDO_FILE(:)
integer, public, parameter :: G_PSIZE = 32
integer, public :: G_PSTK(G_PSIZE)
integer, public :: G_PT
integer, public :: G_PTZ
integer, public :: G_RHS
integer, public :: G_RIO
integer, public :: G_RSTK(G_PSIZE)
integer, public :: G_SYM
integer, public :: G_SYN(GG_MAX_NAME_LENGTH)
integer, public :: G_TOP_OF_SAVED
integer, public :: G_VAR_COLS(GG_MAX_NUMBER_OF_NAMES)
integer, public :: G_VAR_DATALOC(GG_MAX_NUMBER_OF_NAMES)
integer, public :: G_VAR_IDS(GG_MAX_NAME_LENGTH,GG_MAX_NUMBER_OF_NAMES)
integer, public :: G_VAR_ROWS(GG_MAX_NUMBER_OF_NAMES)
integer, public, parameter :: a_low = 97
integer, public, parameter :: a_up = 65
character(len=*), public, parameter :: big = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
integer, public, parameter :: blank = 32
integer, public, parameter :: bslash = 92
integer, public, parameter :: colon = 58
integer, public, allocatable :: cols(:)
integer, public, parameter :: comma = 44
integer, public, parameter :: d_low = 100
integer, public, parameter :: d_up = 68
character(len=*), public, parameter :: digit = '0123456789'
integer, public, parameter :: dot = 46
integer, public, parameter :: dstar = 3042
integer, public, parameter :: e_low = 101
integer, public, parameter :: e_up = 69
integer, public, parameter :: equal = 61
character(len=*), public, parameter :: gen0 = '(*(g0))'
character(len=*), public, parameter :: gen1 = '(*(g0,1x))'
integer, public, parameter :: great = 62
integer, public, parameter :: isname = 0
integer, public, parameter :: isnum = 1
character(len=:), public, allocatable :: keywords(:)
integer, public, parameter :: lbrace = 123
integer, public, parameter :: lbracket = 91
integer, public, parameter :: less = 60
character(len=*), public, parameter :: little = 'abcdefghijklmnopqrstuvwxyz'
integer, public, allocatable :: locs(:)
integer, public, parameter :: lparen = 40
integer, public, parameter :: minus = 45
integer, public, parameter :: plus = 43
integer, public, parameter :: quote = 39
integer, public, parameter :: rbrace = 125
integer, public, parameter :: rbracket = 93
integer, public, allocatable :: rows(:)
integer, public, parameter :: rparen = 41
integer, public, parameter :: score = 95
integer, public, allocatable :: scr_cols(:)
character(len=:), public, allocatable :: scr_keywords(:)
integer, public, allocatable :: scr_locs(:)
integer, public, allocatable :: scr_rows(:)
integer, public, parameter :: semi = 59
integer, public, parameter :: slash = 47
integer, public, parameter :: star = 42
procedure(usersub_interface), public, pointer :: usersub => usersub_placeholder
type(vctr), public, allocatable :: vals(:)
integer, public, parameter :: z_low = 122
integer, public, parameter :: z_up = 90
integer, public, parameter :: zero = 48

Interfaces

public interface get_from_lala

  • public subroutine get_fixed_array_from_lala_dpcmplx(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    complex(kind=dp), intent(out) :: out(:,:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_array_from_lala_cmplx(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    complex, intent(out) :: out(:,:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_array_from_lala_real32(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    real(kind=real32), intent(out) :: out(:,:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_array_from_lala_real64(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    real(kind=real64), intent(out) :: out(:,:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_array_from_lala_real128(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    real(kind=real128), intent(out) :: out(:,:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_array_from_lala_int8(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int8), intent(out) :: out(:,:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_array_from_lala_int16(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int16), intent(out) :: out(:,:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_array_from_lala_int32(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int32), intent(out) :: out(:,:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_array_from_lala_int64(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int64), intent(out) :: out(:,:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_array_from_lala_logical(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    logical, intent(out) :: out(:,:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_vector_from_lala_dpcmplx(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    complex(kind=dp), intent(out) :: out(:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_vector_from_lala_cmplx(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    complex, intent(out) :: out(:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_vector_from_lala_real32(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    real(kind=real32), intent(out) :: out(:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_vector_from_lala_real64(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    real(kind=real64), intent(out) :: out(:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_vector_from_lala_real128(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    real(kind=real128), intent(out) :: out(:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_vector_from_lala_int8(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int8), intent(out) :: out(:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_vector_from_lala_int16(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int16), intent(out) :: out(:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_vector_from_lala_int32(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int32), intent(out) :: out(:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_vector_from_lala_int64(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int64), intent(out) :: out(:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_vector_from_lala_logical(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    logical, intent(out) :: out(:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_vector_from_lala_character(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    character(len=*), intent(out) :: out(:)
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_fixed_scalar_from_lala_character(varname, out, ierr, fixed)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    character(len=*), intent(out) :: out
    integer, intent(out) :: ierr
    logical, intent(in) :: fixed
  • public subroutine get_array_from_lala_dpcmplx(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    complex(kind=dp), intent(out), allocatable :: out(:,:)
    integer, intent(out) :: ierr
  • public subroutine get_array_from_lala_cmplx(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    complex, intent(out), allocatable :: out(:,:)
    integer, intent(out) :: ierr
  • public subroutine get_array_from_lala_real32(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    real(kind=real32), intent(out), allocatable :: out(:,:)
    integer, intent(out) :: ierr
  • public subroutine get_array_from_lala_real64(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    real(kind=real64), intent(out), allocatable :: out(:,:)
    integer, intent(out) :: ierr
  • public subroutine get_array_from_lala_real128(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    real(kind=real128), intent(out), allocatable :: out(:,:)
    integer, intent(out) :: ierr
  • public subroutine get_array_from_lala_int8(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int8), intent(out), allocatable :: out(:,:)
    integer, intent(out) :: ierr
  • public subroutine get_array_from_lala_int16(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int16), intent(out), allocatable :: out(:,:)
    integer, intent(out) :: ierr
  • public subroutine get_array_from_lala_int32(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int32), intent(out), allocatable :: out(:,:)
    integer, intent(out) :: ierr
  • public subroutine get_array_from_lala_int64(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int64), intent(out), allocatable :: out(:,:)
    integer, intent(out) :: ierr
  • public subroutine get_array_from_lala_logical(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    logical, intent(out), allocatable :: out(:,:)
    integer, intent(out) :: ierr
  • public subroutine get_vector_from_lala_dpcmplx(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    complex(kind=dp), intent(out), allocatable :: out(:)
    integer, intent(out) :: ierr
  • public subroutine get_vector_from_lala_cmplx(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    complex, intent(out), allocatable :: out(:)
    integer, intent(out) :: ierr
  • public subroutine get_vector_from_lala_real32(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    real(kind=real32), intent(out), allocatable :: out(:)
    integer, intent(out) :: ierr
  • public subroutine get_vector_from_lala_real64(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    real(kind=real64), intent(out), allocatable :: out(:)
    integer, intent(out) :: ierr
  • public subroutine get_vector_from_lala_real128(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    real(kind=real128), intent(out), allocatable :: out(:)
    integer, intent(out) :: ierr
  • public subroutine get_vector_from_lala_int8(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int8), intent(out), allocatable :: out(:)
    integer, intent(out) :: ierr
  • public subroutine get_vector_from_lala_int16(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int16), intent(out), allocatable :: out(:)
    integer, intent(out) :: ierr
  • public subroutine get_vector_from_lala_int32(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int32), intent(out), allocatable :: out(:)
    integer, intent(out) :: ierr
  • public subroutine get_vector_from_lala_int64(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int64), intent(out), allocatable :: out(:)
    integer, intent(out) :: ierr
  • public subroutine get_vector_from_lala_logical(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    logical, intent(out), allocatable :: out(:)
    integer, intent(out) :: ierr
  • public subroutine get_vector_from_lala_character(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    character(len=:), intent(out), allocatable :: out(:)
    integer, intent(out) :: ierr
  • public subroutine get_scalar_from_lala_dpcmplx(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    complex(kind=dp), intent(out) :: out
    integer, intent(out) :: ierr
  • public subroutine get_scalar_from_lala_cmplx(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    complex, intent(out) :: out
    integer, intent(out) :: ierr
  • public subroutine get_scalar_from_lala_real32(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    real(kind=real32), intent(out) :: out
    integer, intent(out) :: ierr
  • public subroutine get_scalar_from_lala_real64(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    real(kind=real64), intent(out) :: out
    integer, intent(out) :: ierr
  • public subroutine get_scalar_from_lala_real128(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    real(kind=real128), intent(out) :: out
    integer, intent(out) :: ierr
  • public subroutine get_scalar_from_lala_int8(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int8), intent(out) :: out
    integer, intent(out) :: ierr
  • public subroutine get_scalar_from_lala_int16(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int16), intent(out) :: out
    integer, intent(out) :: ierr
  • public subroutine get_scalar_from_lala_int32(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int32), intent(out) :: out
    integer, intent(out) :: ierr
  • public subroutine get_scalar_from_lala_int64(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    integer(kind=int64), intent(out) :: out
    integer, intent(out) :: ierr
  • public subroutine get_scalar_from_lala_logical(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    logical, intent(out) :: out
    integer, intent(out) :: ierr
  • public subroutine get_scalar_from_lala_character(varname, out, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    character(len=:), intent(out), allocatable :: out
    integer, intent(out) :: ierr

public interface lala

  • public subroutine LALA_init(init, echo)

    NAME

    LALA(3f) - [M_matrix] initialize and/or pass commands to matrix
    laboratory interpreter
    LICENSE(MIT)
    

    SYNOPSIS

     subroutine lala(init,cmd)
    
      integer,intent(in),optional :: init
      character(len=*),intent(in),optional :: cmd
         or
      character(len=*),intent(in),optional :: cmd(:)
    

    DESCRIPTION

    LALA(3f) is modeled on MATLAB(3f) (MATrix LABoratory), a FORTRAN
    package developed by Argonne National Laboratories for in-house use.
    It provides comprehensive vector and tensor operations in a package
    which may be programmed, either through a macro language or through
    execution of script files.
    
    LALA(3f) Functions supported include (but are not by any means limited
    to) sin, cos, tan, arcfunctions, upper triangular, lower triangular,
    determinants, matrix multiplication, identity, Hilbert matrices,
    eigenvalues and eigenvectors, matrix roots and products, inversion
    and so on and so forth.
    
    LALA() can be used
       + as a stand-alone utility for working with lala() files and
         for basic computations.
       + embedded in a Fortran program, passing variables back and forth
         between the calling program and the utility.
       + to read configuration and data files that contain expressions
         and conditionally selected values.
       + for interactively inspecting data generated by the calling program.
       + for creating unit tests that allow for further interactive examination.
    
    The HELP command describes using the interpreter.
    

    OPTIONS

    INIT    indicate size of scratch space to allocate and (re)initialize
            LALA.
    
    CMD     LALA command(s) to perform. May be CHARACTER scalar or vector
    
    INIT and CMD cannot be combined on a single call.
    
    The first call may be an initialization declaring the number of
    doubleprecision complex values to allocate for the combined scratch
    and variable storage area. This form may be repeated and reinitializes
    the utility at each call. A size of zero will deallocate any allocated
    storage (after which the routine cannot be called with commands until
    reallocated by another call to lala()).
    
    If no parameters are supplied interactive mode is entered.
    
    If a CMD is passed and no previous initialization call was made the
    scratch space will be allocated to 200000.
    

    EXAMPLE

    Example 1:

       program demo_LALA
       use M_matrix, only : lala
    
          write(*,'(a)')'optionally initialize scratch area size'
          call LALA(20000)
    
          write(*,'(a)')'do some commands'
          call LALA([character(len=80) :: &
          & 'semi;                         ',&
          & 'a=magic(4),b=-a               ',&
          & 'a+b;a;b                       ',&
          & "display('That is all Folks!') "])
    
          write(*,'(a)')'do a single command'
          call LALA('who')
    
          write(*,'(a)')'enter interactive mode'
          call LALA()
    
          write(*,'(a)')'ending program'
       end program demo_LALA
    

    Example 2:

    program bigmat
    use M_matrix, only : lala
       ! pass strings to LALA but do not enter interactive mode
       call lala(20000)                  ! initialize silently
       call lala( 'a=[1 2 3 4; 5 6 7 8]')
       call lala( [character(len=80) :: &
        & 'semi;lines(999999)                                    ',&
        & '// create a magic square and add 100 to all the values',&
        & 'A=magic(4),<X,Y>=shape(A)                             ',&
        & 'B=A+ones(X,Y)*100                                     ',&
        & '// save all current values to a file                  ',&
        & "save('sample.laf')                                    ",&
        & '// clear all user values                              ',&
        & 'clear                                                 ',&
        & '// show variable names, load values from file         ',&
        & '// and show again to show the variables are restored  ',&
        & "who;load('sample.laf');who                            "])
    end program bigmat
    

    Example 3: Sample program with custom user function

       program custom_user
       use M_matrix
       implicit none
       call set_usersub(lala_user)
       call lala()
       contains
       !-------------------------------------------------------------
       subroutine lala_user(a,m,n,s,t)  ! sample user routine
       ! Allows personal  Fortran  subroutines  to  be  linked  into
       ! LALA. The subroutine should have the heading
       !
       !    subroutine name(a,m,n,s,t)
       !    integer :: m,n
       !    doubleprecision a(:),s,t
       !
       ! The LALA statement Y = USER(X,s,t) results in a call to
       ! the subroutine with a copy of the matrix X stored in the
       ! argument A, its column and row dimensions in M and N,
       ! and the scalar parameters S and T stored in S and T.
       ! If S and T are omitted, they are set to 0.0. After
       ! the return, A is stored in Y. The dimensions M and
       ! N may be reset within the subroutine. The statement Y =
       ! USER(K) results in a call with M = 1, N = 1 and A(1,1) =
       ! FLOAT(K). After the subroutine has been written, it must
       ! be compiled and linked to the LALA object code within the
       ! local programming environment.
       !
       implicit none
       integer                    :: m,n
       doubleprecision            :: a(:)
       doubleprecision            :: s,t
       integer                    :: i, j, k
          write(*,*)'MY ROUTINE'
          write(*,*)'M=',m
          write(*,*)'N=',n
          write(*,*)'S=',s
          write(*,*)'T=',t
          k=0
          do i = 1, m
             do j = 1, n
                k=k+1
                write(*,*)i,j,a(k)
             enddo
          enddo
          k=0
          if(s.eq.0)s=1
          do i = 1, m
             do j = 1, n
                k=k+1
                a(k)=a(k)*s+t
             enddo
          enddo
       end subroutine lala_user
       end program custom_user
    

    Example inputs

      >:avg:
    
      >for i = 2:2:n, for j = 2:2:n, t = (a(i-1,j-1)+a(i-1,j)+a(i,j-1)+a(i,j))/4; ...
      >a(i-1,j-1) = t; a(i,j-1) = t; a(i-1,j) = t; a(i,j) = t;
    
      >:cdiv:
    
      >// ======================================================
      >// cdiv
      >a=sqrt(random(8))
      >ar = real(a); ai = imag(a); br = real(b); bi = imag(b);
      >p = bi/br;
      >t = (ai - p*ar)/(br + p*bi);
      >cr = p*t + ar/br;
      >ci = t;
      >p2 = br/bi;
      >t2 = (ai + p2*ar)/(bi + p2*br);
      >ci2 = p2*t2 - ar/bi;
      >cr2 = t2;
      >s = abs(br) + abs(bi);
      >ars = ar/s;
      >ais = ai/s;
      >brs = br/s;
      >bis = bi/s;
      >s = brs**2 + bis**2;
      >cr3 = (ars*brs + ais*bis)/s;
      >ci3 = (ais*brs - ars*bis)/s;
      >[cr ci; cr2 ci2; cr3 ci3]
      >// ======================================================
    
      >:exp:
    
      >t = 0*x + eye; s = 0*eye(x); n = 1;
      >while abs(s+t-s) > 0, s = s+t, t = x*t/n, n = n + 1
    
      >:four:
      > n
      > pi = 4*atan(1);
      > i = sqrt(-1);
      > w = exp(2*pi*i/n);
      > F = [];
      > for k = 1:n, for j = 1:n, F(k,j) = w**((j-1)*(k-1));
      > F = F/sqrt(n);
      > alpha = r*pi;
      > rho = exp(i*alpha);
      > S = log(rho*F)/i - alpha*eye;
      > serr = norm(imag(S),1);
      > S = real(S);
      > serr = serr + norm(S-S',1)
      > S = (S + S')/2;
      > ferr = norm(F-exp(i*S),1)
    
      > :gs:
      > for k = 1:n, for j = 1:k-1, d = x(k,:)*x(j,:)'; x(k,:) = x(k,:) - d*x(j,:); ...
      > end, s = norm(x(k,:)), x(k,:) = x(k,:)/s;
    
      > :jacobi:
      > [n, n] = shape(A);
      > X = eye(n);
      > anorm = norm(A,'fro');
      > cnt = 1;
      > while cnt > 0, ...
      >   cnt = 0; ...
      >   for p = 1:n-1, ...
      >     for q = p+1:n, ...
      >       if anorm + abs(a(p,q)) > anorm, ...
      >         cnt = cnt + 1; ...
      >         exec('jacstep'); ...
      >       end, ...
      >     end, ...
      >   end, ...
      >   display(rat(A)), ...
      > end
    
      > :jacstep:
    
      > d = (a(q,q)-a(p,p))*0.5/a(p,q);
      > t = 1/(abs(d)+sqrt(d*d+1));
      > if d < 0, t = -t; end;
      > c = 1/sqrt(1+t*t);  s = t*c;
      > R = eye(n); r(p,p)=c; r(q,q)=c; r(p,q)=s; r(q,p)=-s;
      > X = X*R;
      > A = R'*A*R;
    
      > :kron:
    
      > //  C = Kronecker product of A and B
      > [m, n] = shape(A);
      > for i = 1:m, ...
      >    ci = a(i,1)*B; ...
      >    for j = 2:n, ci = [ci a(i,j)*B]; end ...
      >    if i = 1, C = ci; else, C = [C; ci];
    
      > :lanczos:
    
      > [n,n] = shape(A);
      > q1 = rand(n,1);
      > ort
      > alpha = []; beta = [];
      > q = q1/norm(q1); r = A*q(:,1);
      > for j = 1:n, exec('lanstep',0);
    
      > :lanstep:
    
      > alpha(j) = q(:,j)'*r;
      > r = r - alpha(j)*q(:,j);
      > if ort <> 0, for k = 1:j-1, r = r - r'*q(:,k)*q(:,k);
      > beta(j) = norm(r);
      > q(:,j+1) = r/beta(j);
      > r = A*q(:,j+1) - beta(j)*q(:,j);
      > if j > 1, T = diag(beta(1:j-1),1); T = diag(alpha) + T + T'; eig(T)
    
      > :mgs:
    
      > for k = 1:n, s = norm(x(k,:)), x(k,:) = x(k,:)/s; ...
      >    for j = k+1:n, d = x(j,:)*x(k,:)'; x(j,:) = x(j,:) - d*x(k,:);
    
      > :net:
    
      > C = [
      > 1   2   15  .   .   .
      > 2   1   3   .   .   .
      > 3   2   4   11  .   .
      > 4   3   5   .   .   .
      > 5   4   6   7   .   .
      > 6   5   8   .   .   .
      > 7   5   9   30  .   .
      > 8   6   9   10  11  .
      > 9   7   8   30  .   .
      > 10  8   12  30  31  34
      > 11  3   8   12  13  .
      > 12  10  11  34  36  .
      > 13  11  14  .   .   .
      > 14  13  15  16  38  .
      > 15  1   14  .   .   .
      > 16  14  17  20  35  37
      > 17  16  18  .   .   .
      > 18  17  19  .   .   .
      > 19  18  20  .   .   .
      > 20  16  19  21  .   .
      > 21  20  22  .   .   .
      > 22  21  23  .   .   .
      > 23  22  24  35  .   .
      > 24  23  25  39  .   .
      > 25  24  .   .   .   .
      > 26  27  33  39  .   .
      > 27  26  32  .   .   .
      > 28  29  32  .   .   .
      > 29  28  30  .   .   .
      > 30  7   9   10  29  .
      > 31  10  32  .   .   .
      > 32  27  28  31  34  .
      > 33  26  34  .   .   .
      > 34  10  12  32  33  35
      > 35  16  23  34  36  .
      > 36  12  35  38  .   .
      > 37  16  38  .   .   .
      > 38  14  36  37  .   .
      > 39  24  26  .   .   .
      > ];
      > [n, m] = shape(C);
      > A = 0*ones(n,n);
      > for i=1:n, for j=2:m, k=c(i,j); if k>0, a(i,k)=1;
      > check = norm(A-A',1), if check > 0, quit
      > [X,D] = eig(A+eye);
      > D = diag(D);  D = D(n:-1:1)
      > X = X(:,n:-1:1);
      > [x(:,1)/sum(x(:,1)) x(:,2) x(:,3) x(:,19)]
    
      > :pascal:
    
      > //Generate next Pascal matrix
      > [k,k] = shape(L);
      > k = k + 1;
      > L(k,1:k) = [L(k-1,:) 0] + [0 L(k-1,:)];
    
      > :pdq:
    
      > alpha = []; beta = 0; q = []; p = p(:,1)/norm(p(:,1));
      > t = A'*p(:,1);
      > alpha(1) = norm(t);
      > q(:,1) = t/alpha(1);
      > X = p(:,1)*(alpha(1)*q(:,1))'
      > e(1) = norm(A-X,1)
      > for j = 2:r, exec('pdqstep',ip); ...
      >    X = X + p(:,j)*(alpha(j)*q(:,j)+beta(j)*q(:,j-1))', ...
      >    e(j) = norm(A-X,1)
    
      > :pdqstep:
    
      > t = A*q(:,j-1) - alpha(j-1)*p(:,j-1);
      >    if ort>0, for i = 1:j-1, t = t - t'*p(:,i)*p(:,i);
      > beta(j) = norm(t);
      > p(:,j) = t/beta(j);
      > t = A'*p(:,j) - beta(j)*q(:,j-1);
      >    if ort>0, for i = 1:j-1, t = t - t'*q(:,i)*q(:,i);
      > alpha(j) = norm(t);
      > q(:,j) = t/alpha(j);
    
      > :pop:
    
      > y = [ 75.995   91.972  105.711  123.203   ...
      >      131.669  150.697  179.323  203.212]'
      > t = [ 1900:10:1970 ]'
      > t = (t - 1940*ones(t))/40;   [t y]
      > n = 8;  A(:,1) = ones(t);  for j = 2:n, A(:,j) = t .* A(:,j-1);
      > A
      > c = A\y
    
      > :qr:
    
      > scale = s(m);
      > sm = s(m)/scale; smm1 = s(m-1)/scale; emm1 = e(m-1)/scale;
      > sl = s(l)/scale; el = e(l)/scale;
      > b = ((smm1 + sm)*(smm1 - sm) + emm1**2)/2;
      > c = (sm*emm1)**2;
      > shift = sqrt(b**2+c); if b < 0, shift = -shift;
      > shift = c/(b + shift)
      > f = (sl + sm)*(sl-sm) - shift
      > g = sl*el
      > for k = l: m-1, exec('qrstep',ip)
      > e(m-1) = f
    
      > :qrstep:
    
      > exec('rot');
      > if k <> l, e(k-1) = f
      > f = cs*s(k) + sn*e(k)
      > e(k) = cs*e(k) - sn*s(k)
      > g = sn*s(k+1)
      > s(k+1) = cs*s(k+1)
      > exec('rot');
      > s(k) = f
      > f = cs*e(k) + sn*s(k+1)
      > s(k+1) = -sn*e(k) + cs*s(k+1)
      > g = sn*e(k+1)
      > e(k+1) = cs*e(k+1)
    
      > :rho:
    
      > //Conductivity example.
      > //Parameters ---
      >    rho       //radius of cylindrical inclusion
      >    n         //number of terms in solution
      >    m         //number of boundary points
      > //initialize operation counter
      >    flop = [0 0];
      > //initialize variables
      >    m1 = round(m/3);   //number of points on each straight edge
      >    m2 = m - m1;       //number of points with Dirichlet conditions
      >    pi = 4*atan(1);
      > //generate points in Cartesian coordinates
      >    //right hand edge
      >    for i = 1:m1, x(i) = 1; y(i) = (1-rho)*(i-1)/(m1-1);
      >    //top edge
      >    for i = m2+1:m, x(i) = (1-rho)*(m-i)/(m-m2-1); y(i) = 1;
      >    //circular edge
      >    for i = m1+1:m2, t = pi/2*(i-m1)/(m2-m1+1); ...
      >       x(i) = 1-rho*sin(t);  y(i) = 1-rho*cos(t);
      > //convert to polar coordinates
      >    for i = 1:m-1, th(i) = atan(y(i)/x(i));  ...
      >       r(i) = sqrt(x(i)**2+y(i)**2);
      >    th(m) = pi/2;  r(m) = 1;
      > //generate matrix
      >    //Dirichlet conditions
      >    for i = 1:m2, for j = 1:n, k = 2*j-1; ...
      >       a(i,j) = r(i)**k*cos(k*th(i));
      >    //Neumann conditions
      >    for i = m2+1:m, for j = 1:n, k = 2*j-1; ...
      >       a(i,j) = k*r(i)**(k-1)*sin((k-1)*th(i));
      > //generate right hand side
      >    for i = 1:m2, b(i) = 1;
      >    for i = m2+1:m, b(i) = 0;
      > //solve for coefficients
      >    c = A\b
      > //compute effective conductivity
      >    c(2:2:n) = -c(2:2:n)
      >    sigma = sum(c)
      > //output total operation count
      >    ops = flop(2)
    
      > :rogers.exec:
    
      > exec('d.boug');                // reads data
      > [g,k] = shape(p);              // p is matrix of gene frequencies
      > wv = ncen/sum(ncen);           // ncen contains population sizes
      > pbar = wv*p;                   // weighted average of p
      > p = p - ones(g,1)*pbar;        // deviations from mean
      > p = sqrt(diag(wv)) * p;        // weight rows of p by sqrt of pop size
      > h = diag(pbar); h = h*(eye-h); // diagonal contains binomial variance: p*(1-p)
      > r = p*inv(h)*p'/k;             // normalized covariance matrix
      > eig(r)'
    
      > :rosser:
    
      > A  = [
      >   611.  196. -192.  407.   -8.  -52.  -49.   29.
      >   196.  899.  113. -192.  -71.  -43.   -8.  -44.
      >  -192.  113.  899.  196.   61.   49.    8.   52.
      >   407. -192.  196.  611.    8.   44.   59.  -23.
      >    -8.  -71.   61.    8.  411. -599.  208.  208.
      >   -52.  -43.   49.   44. -599.  411.  208.  208.
      >   -49.   -8.    8.   59.  208.  208.   99. -911.
      >    29.  -44.   52.  -23.  208.  208. -911.   99.  ];
    
      > :rot:
    
      > // subexec rot(f,g,cs,sn)
      >    rho = g; if abs(f) > abs(g), rho = f;
      >    cs = 1.0; sn = 0.0; z = 1.0;
      >    r = norm([f g]); if rho < 0, r = -r; r
      >    if r <> 0.0, cs = f/r
      >    if r <> 0.0, sn = g/r
      >    if abs(f) > abs(g), z = sn;
      >    if abs(g) >= abs(f), if cs <> 0, z = 1/cs;
      >    f = r;
      >    g = z;
    
      > :rqi:
    
      > rho = (x'*A*x)
      > x = (A-rho*eye)\x;
      > x = x/norm(x)
    
      > :setup:
    
      > diary('xxx')
      > !tail -f xxx > /dev/tty1 &
      > !tail -f xxx > /dev/tty2 &
    
      > :sigma:
    
      > RHO = .5  M = 20  N = 10   SIGMA =  1.488934271883534
      > RHO = .5  M = 40  N = 20   SIGMA =  1.488920312974229
      > RHO = .5  M = 60  N = 30   SIGMA =  1.488920697912116
    
      > :strut.laf:
    
      > // Structure problem, Forsythe, Malcolm and Moler, p. 62
      > s =  sqrt(2)/2;
      > A = [
      > -s  .  .  1  s   .  .  .  .  .  .  .  .  .  .  .  .
      > -s  . -1  . -s   .  .  .  .  .  .  .  .  .  .  .  .
      >  . -1  .  .  .   1  .  .  .  .  .  .  .  .  .  .  .
      >  .  .  1  .  .   .  .  .  .  .  .  .  .  .  .  .  .
      >  .  .  . -1  .   .  .  1  .  .  .  .  .  .  .  .  .
      >  .  .  .  .  .   . -1  .  .  .  .  .  .  .  .  .  .
      >  .  .  .  . -s -1  .  .  s  1  .  .  .   .  .  .  .
      >  .  .  .  .  s   .  1  .  s  .  .  .  .  .  .  .  .
      >  .  .  .  .  .   .  . -1 -s  .  .  1  s  .  .  .  .
      >  .  .  .  .  .   .  .  . -s  . -1  . -s  .  .  .  .
      >  .  .  .  .  .   .  .  .  . -1  .  .  .  1  .  .  .
      >  .  .  .  .  .   .  .  .  .  .  1  .  .  .  .  .  .
      >  .  .  .  .  .   .  .  .  .  .  . -1  .  .  .  s  .
      >  .  .  .  .  .   .  .  .  .  .  .  .  .  . -1 -s  .
      >  .  .  .  .  .   .  .  .  .  .  .  . -s -1  .  .  1
      >  .  .  .  .  .   .  .  .  .  .  .  .  s  .  1  .  .
      >  .  .  .  .  .   .  .  .  .  .  .  .  .  .  . -s -1];
      > b = [
      >  .  .  . 10  .   .  . 15  .  .  .  .  .  .  . 10  .]';
    
      > :test1:
    
      > // -----------------------------------------------------------------
      > // start a new log file
      > sh rm -fv log.txt
      > diary('log.txt')
      > // -----------------------------------------------------------------
      > titles=['GNP deflator'
      >  'GNP         '
      >  'Unemployment'
      >  'Armed Force '
      >  'Population  '
      >  'Year        '
      >  'Employment  '];
      > data = ...
      > [ 83.0  234.289  235.6  159.0  107.608  1947  60.323
      >   88.5  259.426  232.5  145.6  108.632  1948  61.122
      >   88.2  258.054  368.2  161.6  109.773  1949  60.171
      >   89.5  284.599  335.1  165.0  110.929  1950  61.187
      >   96.2  328.975  209.9  309.9  112.075  1951  63.221
      >   98.1  346.999  193.2  359.4  113.270  1952  63.639
      >   99.0  365.385  187.0  354.7  115.094  1953  64.989
      >  100.0  363.112  357.8  335.0  116.219  1954  63.761
      >  101.2  397.469  290.4  304.8  117.388  1955  66.019
      >  104.6  419.180  282.2  285.7  118.734  1956  67.857
      >  108.4  442.769  293.6  279.8  120.445  1957  68.169
      >  110.8  444.546  468.1  263.7  121.950  1958  66.513
      >  112.6  482.704  381.3  255.2  123.366  1959  68.655
      >  114.2  502.601  393.1  251.4  125.368  1960  69.564
      >  115.7  518.173  480.6  257.2  127.852  1961  69.331
      >  116.9  554.894  400.7  282.7  130.081  1962  70.551];
      > short
      > X = data;
      > [n,p] = shape(X)
      > mu = ones(1,n)*X/n
      > X = X - ones(n,1)*mu;  X = X/diag(sqrt(diag(X'*X)))
      > corr = X'*X
      > y = data(:,p); X = [ones(y) data(:,1:p-1)];
      > long e
      > beta = X\y
      > expected = [ ...
      >    -3.482258634594421D+03
      >     1.506187227124484D-02
      >    -3.581917929257409D-02
      >    -2.020229803816908D-02
      >    -1.033226867173703D-02
      >    -5.110410565317738D-02
      >     1.829151464612817D+00
      > ]
      > display('EXPE and BETA should be the same')
    
      > :tryall:
    
      > diary('log.txt')
      > a=magic(8)
      > n=3
      > exec('avg')
      > b=random(8,8)
      > exec('cdiv')
      > exec('exp')
      > exec('four')
      > exec('gs')
      > exec('jacobi')
      > // jacstep
      > exec('kron')
      > exec('lanczos')
      > // lanstep
      > exec('longley')
      > exec('mgs')
      > exec('net')
      > exec('pascal')
      > exec('pdq')
      > // pdqstep
      > exec('pop')
      > exec('qr')
      > // qrstep
      > exec('rho')
      > exec('rosser')
      > // rot
      > exec('rqi')
      > exec('setup')
      > exec('sigma')
      > exec('strut.laf')
      > exec('w5')
      > exec('rogers.exec
      > exec('rogers.load
    
      > :w5:
    
      > w5 = [
      >         1.     1.      0.      0.      0.
      >       -10.     1.      1.      0.      0.
      >        40.     0.      1.      1.      0.
      >       205.     0.      0.      1.      1.
      >       024.     0.      0.      0.     -4.
      >      ]
    

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: init
    logical, intent(in), optional :: echo
  • public subroutine LALA_cmd(input_string, echo)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: input_string
    logical, intent(in), optional :: echo
  • public subroutine LALA_cmds(pseudo_file, echo)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in), optional :: pseudo_file(:)
    logical, intent(in), optional :: echo

public interface put_into_lala

  • public subroutine store_array_into_lala(varname, anything, ierr)

    type is (character(len=*)); call store_double_into_lala(varname, reshape(real(str2ade(anything),kind=dp),[1,len(anything)]) ,ierr=ierr) call store_double_into_lala(varname,reshape(real(str2ade(anything),kind=dp),[1,len(anything)]),ierr=ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    class(*) :: anything(:,:)
    integer, intent(out) :: ierr
  • public subroutine store_vector_into_lala(varname, anything, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    class(*) :: anything(:)
    integer, intent(out) :: ierr
  • public subroutine store_scalar_into_lala(varname, anything, ierr)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: varname
    class(*) :: anything
    integer, intent(out) :: ierr

Abstract Interfaces

abstract interface

  • public subroutine usersub_interface(a, m, n, s, t)

    Arguments

    Type IntentOptional Attributes Name
    doubleprecision :: a(:)
    integer :: m
    integer :: n
    doubleprecision :: s
    doubleprecision :: t

Derived Types

type, public ::  vctr

Components

Type Visibility Attributes Name Initial
integer, public :: cols
doubleprecision, public, allocatable :: im(:)
doubleprecision, public, allocatable :: re(:)
integer, public :: rows

Functions

public function ade2str(buf) result(string)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: buf(:)

Return Value character(len=:), allocatable

public function exists(filename) result(r)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: filename

Return Value logical

public function find_exec_file(filename) result(returned)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: filename

Return Value character(len=:), allocatable

public function ifin_lala(varname)

sample program:

Read more…

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname

Return Value logical

public function mat_eqid(x, y)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: x(GG_MAX_NAME_LENGTH)
integer, intent(in) :: y(GG_MAX_NAME_LENGTH)

Return Value logical

public function mat_is_name(line) result(lout)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: line

Return Value logical

public function rowpack(arr) result(vec)

Arguments

Type IntentOptional Attributes Name
doubleprecision, intent(in) :: arr(:,:)

Return Value doubleprecision, allocatable, (:)

public function str2ade(string) result(vec)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: string

Return Value integer, allocatable, (:)

public function system_getenv(name, default) result(value)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: name
character(len=*), intent(in), optional :: default

Return Value character(len=:), allocatable

public function too_much_memory(expression)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: expression

Return Value logical


Subroutines

public subroutine LALA_cmd(input_string, echo)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: input_string
logical, intent(in), optional :: echo

public subroutine LALA_cmds(pseudo_file, echo)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in), optional :: pseudo_file(:)
logical, intent(in), optional :: echo

public subroutine LALA_init(init, echo)

Example 1:

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: init
logical, intent(in), optional :: echo

public subroutine get(key, valout1, valout2, valout3)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: key
integer :: valout1
integer :: valout2
integer :: valout3

public subroutine get_array_from_lala_cmplx(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
complex, intent(out), allocatable :: out(:,:)
integer, intent(out) :: ierr

public subroutine get_array_from_lala_dpcmplx(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
complex(kind=dp), intent(out), allocatable :: out(:,:)
integer, intent(out) :: ierr

public subroutine get_array_from_lala_int16(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int16), intent(out), allocatable :: out(:,:)
integer, intent(out) :: ierr

public subroutine get_array_from_lala_int32(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int32), intent(out), allocatable :: out(:,:)
integer, intent(out) :: ierr

public subroutine get_array_from_lala_int64(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int64), intent(out), allocatable :: out(:,:)
integer, intent(out) :: ierr

public subroutine get_array_from_lala_int8(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int8), intent(out), allocatable :: out(:,:)
integer, intent(out) :: ierr

public subroutine get_array_from_lala_logical(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
logical, intent(out), allocatable :: out(:,:)
integer, intent(out) :: ierr

public subroutine get_array_from_lala_real128(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
real(kind=real128), intent(out), allocatable :: out(:,:)
integer, intent(out) :: ierr

public subroutine get_array_from_lala_real32(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
real(kind=real32), intent(out), allocatable :: out(:,:)
integer, intent(out) :: ierr

public subroutine get_array_from_lala_real64(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
real(kind=real64), intent(out), allocatable :: out(:,:)
integer, intent(out) :: ierr

public subroutine get_double_from_lala(varname, a, type, ierr)

sample program:

Read more…

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
doubleprecision, intent(out), allocatable :: a(:,:)
integer, intent(in) :: type
integer, intent(out) :: ierr

public subroutine get_fixed_array_from_lala_cmplx(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
complex, intent(out) :: out(:,:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_array_from_lala_dpcmplx(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
complex(kind=dp), intent(out) :: out(:,:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_array_from_lala_int16(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int16), intent(out) :: out(:,:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_array_from_lala_int32(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int32), intent(out) :: out(:,:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_array_from_lala_int64(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int64), intent(out) :: out(:,:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_array_from_lala_int8(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int8), intent(out) :: out(:,:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_array_from_lala_logical(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
logical, intent(out) :: out(:,:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_array_from_lala_real128(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
real(kind=real128), intent(out) :: out(:,:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_array_from_lala_real32(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
real(kind=real32), intent(out) :: out(:,:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_array_from_lala_real64(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
real(kind=real64), intent(out) :: out(:,:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_scalar_from_lala_character(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
character(len=*), intent(out) :: out
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_vector_from_lala_character(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
character(len=*), intent(out) :: out(:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_vector_from_lala_cmplx(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
complex, intent(out) :: out(:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_vector_from_lala_dpcmplx(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
complex(kind=dp), intent(out) :: out(:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_vector_from_lala_int16(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int16), intent(out) :: out(:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_vector_from_lala_int32(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int32), intent(out) :: out(:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_vector_from_lala_int64(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int64), intent(out) :: out(:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_vector_from_lala_int8(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int8), intent(out) :: out(:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_vector_from_lala_logical(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
logical, intent(out) :: out(:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_vector_from_lala_real128(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
real(kind=real128), intent(out) :: out(:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_vector_from_lala_real32(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
real(kind=real32), intent(out) :: out(:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_fixed_vector_from_lala_real64(varname, out, ierr, fixed)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
real(kind=real64), intent(out) :: out(:)
integer, intent(out) :: ierr
logical, intent(in) :: fixed

public subroutine get_scalar_from_lala_character(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
character(len=:), intent(out), allocatable :: out
integer, intent(out) :: ierr

public subroutine get_scalar_from_lala_cmplx(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
complex, intent(out) :: out
integer, intent(out) :: ierr

public subroutine get_scalar_from_lala_dpcmplx(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
complex(kind=dp), intent(out) :: out
integer, intent(out) :: ierr

public subroutine get_scalar_from_lala_int16(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int16), intent(out) :: out
integer, intent(out) :: ierr

public subroutine get_scalar_from_lala_int32(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int32), intent(out) :: out
integer, intent(out) :: ierr

public subroutine get_scalar_from_lala_int64(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int64), intent(out) :: out
integer, intent(out) :: ierr

public subroutine get_scalar_from_lala_int8(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int8), intent(out) :: out
integer, intent(out) :: ierr

public subroutine get_scalar_from_lala_logical(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
logical, intent(out) :: out
integer, intent(out) :: ierr

public subroutine get_scalar_from_lala_real128(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
real(kind=real128), intent(out) :: out
integer, intent(out) :: ierr

public subroutine get_scalar_from_lala_real32(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
real(kind=real32), intent(out) :: out
integer, intent(out) :: ierr

public subroutine get_scalar_from_lala_real64(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
real(kind=real64), intent(out) :: out
integer, intent(out) :: ierr

public subroutine get_vector_from_lala_character(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
character(len=:), intent(out), allocatable :: out(:)
integer, intent(out) :: ierr

public subroutine get_vector_from_lala_cmplx(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
complex, intent(out), allocatable :: out(:)
integer, intent(out) :: ierr

public subroutine get_vector_from_lala_dpcmplx(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
complex(kind=dp), intent(out), allocatable :: out(:)
integer, intent(out) :: ierr

public subroutine get_vector_from_lala_int16(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int16), intent(out), allocatable :: out(:)
integer, intent(out) :: ierr

public subroutine get_vector_from_lala_int32(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int32), intent(out), allocatable :: out(:)
integer, intent(out) :: ierr

public subroutine get_vector_from_lala_int64(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int64), intent(out), allocatable :: out(:)
integer, intent(out) :: ierr

public subroutine get_vector_from_lala_int8(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
integer(kind=int8), intent(out), allocatable :: out(:)
integer, intent(out) :: ierr

public subroutine get_vector_from_lala_logical(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
logical, intent(out), allocatable :: out(:)
integer, intent(out) :: ierr

public subroutine get_vector_from_lala_real128(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
real(kind=real128), intent(out), allocatable :: out(:)
integer, intent(out) :: ierr

public subroutine get_vector_from_lala_real32(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
real(kind=real32), intent(out), allocatable :: out(:)
integer, intent(out) :: ierr

public subroutine get_vector_from_lala_real64(varname, out, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
real(kind=real64), intent(out), allocatable :: out(:)
integer, intent(out) :: ierr

public subroutine ints2str(ints, string, ierr)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ints(:)
character(len=:), intent(out), allocatable :: string
integer, intent(out) :: ierr

public subroutine mat_base(x, base, eps, s, n)

Arguments

Type IntentOptional Attributes Name
doubleprecision :: x
doubleprecision, intent(in) :: base
doubleprecision, intent(in) :: eps
doubleprecision :: s(*)
integer :: n

public subroutine mat_buf2str(string, buf, lrecl)

Arguments

Type IntentOptional Attributes Name
character(len=*) :: string
integer, intent(in) :: buf(:)
integer, intent(in) :: lrecl

public subroutine mat_clause()

Arguments

None

public subroutine mat_comand(id)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: id

public subroutine mat_copyid(x, y)

Arguments

Type IntentOptional Attributes Name
integer, intent(out) :: x(GG_MAX_NAME_LENGTH)
integer, intent(in) :: y(GG_MAX_NAME_LENGTH)

public subroutine mat_err(n)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n

public subroutine mat_expr()

Arguments

None

public subroutine mat_factor()

Arguments

None

public subroutine mat_files(lunit, iname, status)

Arguments

Type IntentOptional Attributes Name
integer :: lunit
integer :: iname(GG_LINELEN)
character(len=*), optional :: status

public subroutine mat_formz(x, y)

Arguments

Type IntentOptional Attributes Name
doubleprecision, intent(in) :: x
doubleprecision, intent(in) :: y

public subroutine mat_funs(id)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: id(GG_MAX_NAME_LENGTH)

public subroutine mat_getch()

Arguments

None

public subroutine mat_getlin()

Arguments

None

public subroutine mat_getsym()

Arguments

None

public subroutine mat_getval(s)

Arguments

Type IntentOptional Attributes Name
doubleprecision, intent(out) :: s

public subroutine mat_help_text()

Arguments

None

public subroutine mat_matfn1()

Arguments

None

public subroutine mat_matfn2()

Arguments

None

public subroutine mat_matfn3()

Arguments

None

public subroutine mat_matfn4()

Arguments

None

public subroutine mat_matfn5()

! BROKEN BY GOING TO ASCII. ELIMINATE OR CORRECT

Arguments

None

public subroutine mat_matfn6()

Arguments

None

public subroutine mat_parse()

Read more…

Arguments

None

public subroutine mat_plot(lplot, x, y, n, p, k)

Arguments

Type IntentOptional Attributes Name
integer :: lplot
doubleprecision :: x(n)
doubleprecision :: y(n)
integer :: n
doubleprecision :: p(*)
integer :: k

public subroutine mat_print(id, k)

Arguments

Type IntentOptional Attributes Name
integer :: id(GG_MAX_NAME_LENGTH)
integer :: k

public subroutine mat_print_id(id, argcnt)

Arguments

Type IntentOptional Attributes Name
integer :: id(GG_MAX_NAME_LENGTH,*)
integer :: argcnt

public subroutine mat_prompt(pause)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: pause

public subroutine mat_savlod(lun, id, m, n, img, space_left, xreal, ximag)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: lun
integer :: id(GG_MAX_NAME_LENGTH)
integer :: m
integer :: n
integer :: img
integer :: space_left
doubleprecision :: xreal(*)
doubleprecision :: ximag(*)

public subroutine mat_stack1(op)

Arguments

Type IntentOptional Attributes Name
integer :: op

public subroutine mat_stack2(op)

Arguments

Type IntentOptional Attributes Name
integer :: op

public subroutine mat_stack_get(id)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: id(GG_MAX_NAME_LENGTH)

public subroutine mat_stack_put(id)

Arguments

Type IntentOptional Attributes Name
integer :: id(GG_MAX_NAME_LENGTH)

public subroutine mat_str2buf(string, buf, lrecl)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: string
integer, intent(out) :: buf(:)
integer, intent(in) :: lrecl

public subroutine mat_term()

Arguments

None

public subroutine mat_watan(xr, xi, yr, yi)

Arguments

Type IntentOptional Attributes Name
doubleprecision, intent(in) :: xr
doubleprecision, intent(in) :: xi
doubleprecision, intent(out) :: yr
doubleprecision, intent(out) :: yi

public subroutine mat_wdiv(ar, ai, br, bi, cr, ci)

Arguments

Type IntentOptional Attributes Name
doubleprecision :: ar
doubleprecision :: ai
doubleprecision :: br
doubleprecision :: bi
doubleprecision :: cr
doubleprecision :: ci

public subroutine mat_wlog(in_real, in_imag, out_real, out_imag)

Arguments

Type IntentOptional Attributes Name
doubleprecision :: in_real
doubleprecision :: in_imag
doubleprecision :: out_real
doubleprecision :: out_imag

public subroutine printit()

Arguments

None

public subroutine set_usersub(proc)

Arguments

Type IntentOptional Attributes Name
procedure(usersub_interface) :: proc

public subroutine sh_command()

Arguments

None

public subroutine store_array_into_lala(varname, anything, ierr)

type is (character(len=*)); call store_double_into_lala(varname, reshape(real(str2ade(anything),kind=dp),[1,len(anything)]) ,ierr=ierr) call store_double_into_lala(varname,reshape(real(str2ade(anything),kind=dp),[1,len(anything)]),ierr=ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
class(*) :: anything(:,:)
integer, intent(out) :: ierr

public subroutine store_double_into_lala(varname, realxx, imagxx, ierr)

subroutine put_into_lala(varname,A,IERR)

Read more…

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
doubleprecision, intent(in) :: realxx(:,:)
doubleprecision, intent(in), optional :: imagxx(:,:)
integer, intent(out) :: ierr

public subroutine store_scalar_into_lala(varname, anything, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
class(*) :: anything
integer, intent(out) :: ierr

public subroutine store_vector_into_lala(varname, anything, ierr)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: varname
class(*) :: anything(:)
integer, intent(out) :: ierr

public subroutine update(key, valin1, valin2, valin3)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: key
integer, optional :: valin1
integer, optional :: valin2
integer, optional :: valin3