2
C --------------------------------------------
3
C feval(x1,x2,external) -> external(x1(i),x2(j))
4
C feval(x1,external) -> external(x1(i))
5
c implicit undefined (a-z)
6
c Copyright ENPC (Jean-Philippe Chancelier
9
character*(nlgh+1) ename
10
integer m1,n1,lb,m2,n2,la,i,j,nn,lr,lc,lb1,lbc1,lrr,lcr
11
integer topk,itype,kx1top,kx2top,lr1,iero,kfeval,gettype
12
double precision x1,x2,fval(2)
14
logical type,getexternal,getrmat,cremat
15
C External names (colname), Position in stack (coladr), type (coltyp)
16
common / fevalname / ename
17
common / fevaladr / kfeval,kx1top,kx2top
18
common / fevaltyp / itfeval
19
common/ ierfeval / iero
29
if (.not.getexternal(fname,topk,top,ename,type,
33
if (.not.getrmat(fname,topk,top,m1,n1,lb)) return
39
if (.not.getrmat(fname,topk,top,m2,n2,la)) return
42
C place pour le resultat si on a deux arguments
45
if (.not.cremat(fname,top,1,m1*n1,m2*n2,lr,lc)) return
47
if (.not.cremat(fname,top,0,m1,n1,lb1,lbc1)) return
50
C une variable de taille 1 qui permet de gerer le type d'argument
53
if (.not.cremat(fname,top,0,1,1,lrr,lcr)) return
57
if (.not.cremat(fname,top,0,1,1,lrr,lcr)) return
64
call ffeval(nn,stk(la+i-1),stk(lb+j-1),
67
stk(lr+i-1+m2*n2*(j-1))=fval(1)
68
if (itype.eq.1) stk(lc+i-1+m2*n2*(j-1))=fval(2)
73
call ffeval(nn,stk(lb+i-1),1.0d0,fval,itype,ename)
76
if (itype.eq.1) stk(lb1+i-1)=fval(2)
83
call bfeval(nn,stk(la+i-1),stk(lb+j-1),
90
stk(lr+i-1+m2*n2*(j-1))=fval(1)
91
if (itype.eq.1) stk(lc+i-1+m2*n2*(j-1))=fval(2)
96
call bfeval(nn,stk(lb+i-1),1.0D0,fval,itype,ename)
103
if (itype.eq.1) stk(lb1+i-1)=fval(2)
110
if (.not.cremat(fname,top,itype,m2*n2,m1*n1,lr1,lc)) return
111
call unsfdcopy(m1*n1*m2*n2*(itype+1),stk(lr),1,stk(lr1),1)
114
if (.not.cremat(fname,top,itype,m1,n1,lr,lc)) return
115
call unsfdcopy(m1*n1,stk(lb1),1,stk(lc),1)