239
239
elseif (mn2.eq.1) then
241
err=l1+mn1*(itr+1)-lstk(bot)
241
246
call dadd(mn1,stk(l2),0,stk(l1),1)
242
247
if(it2+2*it1.eq.1) call unsfdcopy(mn1,stk(l2+mn2),0,
275
err=l1+mn1*(itr+1)-lstk(bot)
265
280
call dadd(mn1,stk(l2),1,stk(l1),1)
266
281
if(it2+2*it1.eq.1) then
267
282
call unsfdcopy(mn1,stk(l2+mn1),1,stk(l1+mn1),1)
606
621
lr=l2+mn2*(it2+1)
607
err=lr+m1*n2*(itr+1)-lstk(bot)
622
c . m1*n2 may overflow
623
temp=float(lr)+float(m1)*n2*(itr+1)-lstk(bot)
624
if(temp.gt.0.0d0) then
612
629
if(it1*it2.ne.1) then
613
call dmmul(stk(l1),m1,stk(l2),m2,stk(lr),m1,m1,n1,n2)
614
if(it1.eq.1) call dmmul(stk(l1+mn1),m1,stk(l2),m2
615
$ ,stk(lr+m1*n2),m1,m1,n1,n2)
616
if(it2.eq.1) call dmmul(stk(l1),m1,stk(l2+mn2),m2
617
$ ,stk(lr+m1*n2),m1,m1,n1,n2)
630
* remplacement de dmmul par dgemm (Bruno le 31/10/2001)
631
call dgemm('n','n',m1,n2,n1,1.d0,stk(l1),m1,stk(l2),m2,
633
if(it1.eq.1) call dgemm('n','n',m1,n2,n1,1.d0,stk(l1+mn1),
634
$ m1,stk(l2),m2,0.d0,stk(lr+m1*n2),m1)
635
if(it2.eq.1) call dgemm('n','n',m1,n2,n1,1.d0,stk(l1),m1,
636
$ stk(l2+mn2),m2,0.d0,stk(lr+m1*n2),m1)
619
638
c . a et a2 sont complexes
620
639
call wmmul(stk(l1),stk(l1+mn1),m1,stk(l2),stk(l2
900
923
if(it2.eq.0) then
901
924
if(it1.eq.0) then
902
925
call ddpow1(mn,stk(l1),inc1,stk(l2),inc2,
903
$ stk(lw),stk(lw+mn),1,err,itr)
926
$ stk(lw),stk(lw+mn),1,ierr,itr)
905
928
call wdpow1(mn,stk(l1),stk(l1+mn1),inc1,stk(l2),inc2,
906
$ stk(lw),stk(lw+mn),1,err)
929
$ stk(lw),stk(lw+mn),1,ierr)
909
932
if(it1.eq.0) then
910
933
call dwpow1(mn,stk(l1),inc1,stk(l2),stk(l2+mn2),inc2,
911
& stk(lw),stk(lw+mn),1,err)
934
& stk(lw),stk(lw+mn),1,ierr)
913
936
call wwpow1(mn,stk(l1),stk(l1+mn1),inc1,stk(l2),stk(l2+mn2),
914
& inc2,stk(lw),stk(lw+mn),1,err)
937
& inc2,stk(lw),stk(lw+mn),1,ierr)
922
945
if(ieee.eq.0) then
1248
1270
if(istk(pstk(pt)).eq.16) goto 54
1273
if (st .eq. 0.0d+0) then
1282
if(isanan(e1).eq.1.or.isanan(st).eq.1.or.isanan(e2).eq.1) then
1251
1291
c floating point used to avoid integer overflow
1252
1292
e1r=dble(l1) + max(3.0d0,(e2-e1)/st) - dble(lstk(bot))
1293
if(isanan(e1r).eq.1) then
1253
1302
if (e1r .gt. 0.0d0) then
2086
2142
istk(il1+1)=mn2
2088
2144
istk(il1+3)=istk(il2+3)
2089
2146
call unsfdcopy(mn2*(it2+1),stk(l2),1,stk(l1),1)
2090
lstk(top+1)=sadr(il1+4)+mn2*(it2+1)
2147
lstk(top+1)=l1+mn2*(it2+1)
2093
2150
c check and convert indices variable
3159
3231
lstk(top+1)=sadr(il1+3+mn1)
3161
elseif(fin.eq.et) then
3162
if(mn1.eq.0.or.mn2.eq.0) then
3167
lstk(top+1)=sadr(il1+4)
3186
if(e1.ne.0.0d0.and.e2.ne.0.0d0) then
3192
lstk(top+1)=sadr(il1+3+mn1)
3194
elseif(fin.eq.ou) then
3195
if(mn1.eq.0.or.mn2.eq.0) then
3200
lstk(top+1)=sadr(il1+4)
3218
if(e1.ne.0.0d0.or.e2.ne.0.0d0) then
3234
if(mn1.eq.0.or.mn2.eq.0) then
3239
lstk(top+1)=sadr(il1+4)
3262
if(e1.ne.0.0d0.or.e2.ne.0.0d0) then
3272
if(e1.ne.0.0d0.and.e2.ne.0.0d0) then
3225
3280
istk(il1+1)=max(m1,m2)
3226
3281
istk(il1+2)=max(n1,n2)