RTableCopyImPart - Maple Help

RTableIsReal

test if an rtable contains only real data in external code

RTableCopyImPart

create a copy of only the imaginary part of a complex rtable in external code

RTableCopyRealPart

create a copy of only the real part of a complex rtable in external code

RTableZipReIm

combine two rtables into a single complex rtable in external code

 Calling Sequence RTableIsReal(kv, rt) RTableCopyImPart(kv, rts, rt) RTableCopyRealPart(kv, rts, rt) RTableZipReIm(kv, rts, rt_re, rt_im)

Parameters

 kv - kernel handle returned by StartMaple rt, rt_re, rt_im - Maple rtable objects rts - RTableSettings structure

Description

 • These functions are part of the OpenMaple interface to Microsoft Visual Basic.
 • The RTableIsReal function tests if a rtable contains only real-valued numeric data. Data is scanned only for rtables with data_type = RTABLE_DAG.  When the data_type is RTABLE_COMPLEX or RTABLE_CXDAG, FALSE is immediately returned.  For all other data_types, TRUE is immediately returned.
 • The RTableCopyRealPart function creates a new rtable containing only the real part of complex numeric data in the rtable rt.  The new rtable has the settings in the supplied OpenMaple/VB/RTableSettings structure.
 • The RTableCopyImPart function creates a new rtable containing only the imaginary part of complex numeric data in the rtable rt.  The result is an ordinary rtable of numeric data.  If the specified data_type of rt is RTABLE_CXDAG or RTABLE_COMPLEX, the new rtable has 0s in the imaginary part, and the copied data in the real part. The new rtable has the settings in the supplied OpenMaple/VB/RTableSettings structure.
 • The RTableZipReIm function combines two real numeric rtables rt_re and rt_im into a complex rtable of the form rt_re + I*rt_im. Both rtables must be the same size.  The new rtable has the settings in the supplied OpenMaple/VB/RTableSettings structure, provided such settings allow for storage of complex data.

Examples

 Public Sub TestRTableMisc(ByVal kv As Long) Dim rt, re, im, rt2 As Long Dim index(0 To 1) As Long Dim rts As RTableSettings rt = EvalMapleStatement(kv, "Matrix(5,5,(i,j)->i+I*j);") If Not RTableIsReal(kv, rt) Then RTableGetDefaults kv, rts rts.data_type = RTABLE_FLOAT64 rts.storage = RTABLE_RECT ' split the real and imaginary parts re = RTableCopyRealPart(kv, rts, rt) im = RTableCopyImPart(kv, rts, rt) ' zip them back together rts.data_type = RTABLE_COMPLEX64 rt2 = RTableZipReIm(kv, rts, re, im) MapleALGEB_Printf3 kv, "rtables = %a, %a, %a", re, im, rt2 End If End Sub