0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 SUBROUTINE MEXFUNCTION(NLHS, PLHS, NRHS, PRHS)
0013
0014
0015
0016
0017
0018 INTEGER PLHS(*), PRHS(*)
0019
0020
0021
0022 INTEGER NLHS, NRHS
0023
0024
0025
0026
0027
0028 INTEGER MXCREATEDOUBLEMATRIX, MXGETPR
0029
0030
0031
0032
0033 INTEGER MXGETM, MXGETN
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043 INTEGER rnarp,cargrp,cargip,zrp,zip
0044
0045 INTEGER N1,N2
0046 INTEGER M1,M2,M3
0047
0048 PARAMETER (N1 = 1001)
0049 PARAMETER (N2 = 1001)
0050
0051 PARAMETER (M1 = 1)
0052 PARAMETER (M2 = 1001)
0053 PARAMETER (M3 = 1001)
0054
0055 real*8 rnar(M1),cargr(M2),cargi(M3)
0056 real*8 zr(N1),zi(N2)
0057
0058
0059
0060 IF (NRHS .NE. 3) THEN
0061 CALL MEXERRMSGTXT('R2D2 requires 3 input arguments')
0062 ENDIF
0063 IF (NLHS .GT. 2) THEN
0064 CALL MEXERRMSGTXT('R2D2 requires 2 output argument')
0065 ENDIF
0066
0067
0068
0069 IF (M1 .NE. MXGETN(PRHS(1))) THEN
0070 CALL MEXERRMSGTXT('wrong size for arg 1')
0071 ENDIF
0072
0073 IF (M2 .NE. MXGETN(PRHS(2))) THEN
0074 CALL MEXERRMSGTXT('wrong size for arg 2')
0075 ENDIF
0076
0077 IF (M3 .NE. MXGETN(PRHS(3))) THEN
0078 CALL MEXERRMSGTXT('wrong size for arg 3')
0079 ENDIF
0080
0081
0082
0083 PLHS(1) = MXCREATEDOUBLEMATRIX(1,N1,0)
0084 PLHS(2) = MXCREATEDOUBLEMATRIX(1,N2,0)
0085
0086
0087
0088 zrp = MXGETPR(PLHS(1))
0089 zip = MXGETPR(PLHS(2))
0090
0091 rnarp = MXGETPR(PRHS(1))
0092 cargrp = MXGETPR(PRHS(2))
0093 cargip = MXGETPR(PRHS(3))
0094
0095
0096
0097 CALL MXCOPYPTRTOREAL8(rnarp, rnar, M1)
0098 CALL MXCOPYPTRTOREAL8(cargrp, cargr, M2)
0099 CALL MXCOPYPTRTOREAL8(cargip, cargi, M3)
0100
0101
0102
0103
0104 CALL pdisp(rnar,cargr,cargi,zr,zi)
0105
0106
0107 CALL MXCOPYREAL8TOPTR(zr, zrp, N1)
0108 CALL MXCOPYREAL8TOPTR(zi, zip, N2)
0109
0110 RETURN
0111 END