CMSIS-DSP: MVE version of arm_cfft_f32.
diff --git a/CMSIS/DSP/PythonWrapper/testdsp.py b/CMSIS/DSP/PythonWrapper/testdsp.py
index 77086c7..7d51466 100644
--- a/CMSIS/DSP/PythonWrapper/testdsp.py
+++ b/CMSIS/DSP/PythonWrapper/testdsp.py
@@ -1,76 +1,76 @@
 import cmsisdsp as dsp
 import numpy as np
 from scipy import signal
-#import matplotlib.pyplot as plt
-#from scipy.fftpack import dct 
+import matplotlib.pyplot as plt
+from scipy.fftpack import dct 
 
-#r = dsp.arm_add_f32(np.array([1.,2,3]),np.array([4.,5,7]))
-#print(r)
+r = dsp.arm_add_f32(np.array([1.,2,3]),np.array([4.,5,7]))
+print(r)
 
-#r = dsp.arm_add_q31([1,2,3],[4,5,7])
-#print(r)
-#
-#r = dsp.arm_add_q15([1,2,3],[4,5,7])
-#print(r)
-#
-#r = dsp.arm_add_q7([-1,2,3],[4,127,7])
-#print(r)
-#
-#r = dsp.arm_scale_f32([1.,2,3],2)
-#print(r)
-#
-#r = dsp.arm_scale_q31([0x7FFF,0x3FFF,0x1FFF],1 << 20,2)
-#print(r)
-#
-#r = dsp.arm_scale_q15([0x7FFF,0x3FFF,0x1FFF],1 << 10,2)
-#print(r)
-#
-#r = dsp.arm_scale_q7([0x7F,0x3F,0x1F],1 << 5,2)
-#print(r)
-#
-#
-#r = dsp.arm_negate_f32([1.,2,3])
-#print(r)
-#
-#r = dsp.arm_negate_q31([1,2,3])
-#print(r)
-#
-#r = dsp.arm_negate_q15([1,2,3])
-#print(r)
-#
-#r = dsp.arm_negate_q7(np.array([0x80,0x81,0x82]))
-#print(r)
+r = dsp.arm_add_q31([1,2,3],[4,5,7])
+print(r)
 
-#r = dsp.arm_cmplx_conj_f32([1.,2,3,4])
-#print(r)
+r = dsp.arm_add_q15([1,2,3],[4,5,7])
+print(r)
 
-#r = dsp.arm_cmplx_conj_q31([1,2,3,4])
-#print(r)
+r = dsp.arm_add_q7([-1,2,3],[4,127,7])
+print(r)
 
-#r = dsp.arm_cmplx_conj_q15([1,2,3,4])
-#print(r)
+r = dsp.arm_scale_f32([1.,2,3],2)
+print(r)
 
-#r = dsp.arm_cmplx_dot_prod_f32([1.,2,3,4],[1.,2,3,4])
-#print(r)
+r = dsp.arm_scale_q31([0x7FFF,0x3FFF,0x1FFF],1 << 20,2)
+print(r)
 
-#r = dsp.arm_cmplx_dot_prod_q31([0x1FFF,0x3FFF,0x1FFF,0x3FFF],[0x1FFF,0x3FFF,0x1FFF,0x3FFF])
-#print(r)
+r = dsp.arm_scale_q15([0x7FFF,0x3FFF,0x1FFF],1 << 10,2)
+print(r)
 
-#r = dsp.arm_cmplx_mult_real_f32([1.0,2,3,4],[5.,5.,5.,5.])
-#print(r)
+r = dsp.arm_scale_q7([0x7F,0x3F,0x1F],1 << 5,2)
+print(r)
 
-#pidf32 = dsp.arm_pid_instance_f32(Kp=1.0,Ki=1.2,Kd=0.4)
-#print(pidf32.Kp())
-#print(pidf32.Ki())
-#print(pidf32.Kd())
-#print(pidf32.A0())
-#
-#dsp.arm_pid_init_f32(pidf32,0)
-#print(pidf32.A0())
 
-#print(dsp.arm_cos_f32(3.14/4.))
+r = dsp.arm_negate_f32([1.,2,3])
+print(r)
 
-#print(dsp.arm_sqrt_q31(0x7FFF))
+r = dsp.arm_negate_q31([1,2,3])
+print(r)
+
+r = dsp.arm_negate_q15([1,2,3])
+print(r)
+
+r = dsp.arm_negate_q7(np.array([0x80,0x81,0x82]))
+print(r)
+
+r = dsp.arm_cmplx_conj_f32([1.,2,3,4])
+print(r)
+
+r = dsp.arm_cmplx_conj_q31([1,2,3,4])
+print(r)
+
+r = dsp.arm_cmplx_conj_q15([1,2,3,4])
+print(r)
+
+r = dsp.arm_cmplx_dot_prod_f32([1.,2,3,4],[1.,2,3,4])
+print(r)
+
+r = dsp.arm_cmplx_dot_prod_q31([0x1FFF,0x3FFF,0x1FFF,0x3FFF],[0x1FFF,0x3FFF,0x1FFF,0x3FFF])
+print(r)
+
+r = dsp.arm_cmplx_mult_real_f32([1.0,2,3,4],[5.,5.,5.,5.])
+print(r)
+
+pidf32 = dsp.arm_pid_instance_f32(Kp=1.0,Ki=1.2,Kd=0.4)
+print(pidf32.Kp())
+print(pidf32.Ki())
+print(pidf32.Kd())
+print(pidf32.A0())
+
+dsp.arm_pid_init_f32(pidf32,0)
+print(pidf32.A0())
+
+print(dsp.arm_cos_f32(3.14/4.))
+
+print(dsp.arm_sqrt_q31(0x7FFF))
 
 firf32 = dsp.arm_fir_instance_f32()
 dsp.arm_fir_init_f32(firf32,3,[1.,2,3],[0,0,0,0,0,0,0])
@@ -128,28 +128,28 @@
 def Q7toF32(x):
      return(1.0*x / 2**7)
 
-#firq31 = dsp.arm_fir_instance_q31()
-#x=np.array([1,2,3,4,5])/10.0
-#taps=np.array([1,2,3])/10.0
-#xQ31=toQ31(x)
-#tapsQ31=toQ31(taps)
-#dsp.arm_fir_init_q31(firq31,3,tapsQ31,[0,0,0,0,0,0,0])
-#print(firq31.numTaps())
-#resultQ31=dsp.arm_fir_q31(firq31,xQ31)
-#result=Q31toF32(resultQ31)
-#print(result)
+firq31 = dsp.arm_fir_instance_q31()
+x=np.array([1,2,3,4,5])/10.0
+taps=np.array([1,2,3])/10.0
+xQ31=toQ31(x)
+tapsQ31=toQ31(taps)
+dsp.arm_fir_init_q31(firq31,3,tapsQ31,[0,0,0,0,0,0,0])
+print(firq31.numTaps())
+resultQ31=dsp.arm_fir_q31(firq31,xQ31)
+result=Q31toF32(resultQ31)
+print(result)
 
-#a=np.array([[1.,2,3,4],[5,6,7,8],[9,10,11,12]])
-#b=np.array([[1.,2,3,4],[5.1,6,7,8],[9.1,10,11,12]])
-#print(a+b)
-#v=dsp.arm_mat_add_f32(a,b)
-#print(v)
+a=np.array([[1.,2,3,4],[5,6,7,8],[9,10,11,12]])
+b=np.array([[1.,2,3,4],[5.1,6,7,8],[9.1,10,11,12]])
+print(a+b)
+v=dsp.arm_mat_add_f32(a,b)
+print(v)
 
-#a=np.array([[1.,2,3,4],[5,6,7,8],[9,10,11,12]])
-#b=np.array([[1.,2,3],[5.1,6,7],[9.1,10,11],[5,8,4]])
-#print(np.dot(a , b))
-#v=dsp.arm_mat_mult_f32(a,b)
-#print(v)
+a=np.array([[1.,2,3,4],[5,6,7,8],[9,10,11,12]])
+b=np.array([[1.,2,3],[5.1,6,7],[9.1,10,11],[5,8,4]])
+print(np.dot(a , b))
+v=dsp.arm_mat_mult_f32(a,b)
+print(v)
 
 def imToReal2D(a):
     ar=np.zeros(np.array(a.shape) * [1,2])
@@ -160,55 +160,55 @@
 def realToIm2D(ar):
     return(ar[::,0::2] + 1j * ar[::,1::2])
 
-#a=np.array([[1. + 2j,3 + 4j],[5 + 6j,7 + 8j],[9 + 10j,11 + 12j]])
-#b=np.array([[1. + 2j, 3 + 5.1j ,6 + 7j],[9.1 + 10j,11 + 5j,8 +4j]])
-#print(np.dot(a , b))
-#
+a=np.array([[1. + 2j,3 + 4j],[5 + 6j,7 + 8j],[9 + 10j,11 + 12j]])
+b=np.array([[1. + 2j, 3 + 5.1j ,6 + 7j],[9.1 + 10j,11 + 5j,8 +4j]])
+print(np.dot(a , b))
+
 # Convert complex array to real array for use in CMSIS DSP
-#ar = imToReal2D(a)
-#br = imToReal2D(b)
-#
-#v=dsp.arm_mat_cmplx_mult_f32(ar,br)
-#print(v)
+ar = imToReal2D(a)
+br = imToReal2D(b)
 
-#a=np.array([[1.,2,3,4],[5,6,7,8],[9,10,11,12]]) / 30.0
-#b=np.array([[1.,2,3,4],[5.1,6,7,8],[9.1,10,11,12]]) / 30.0
-#print(a+b)
-#
-#aQ31=toQ31(a)
-#bQ31=toQ31(b)
-#v=dsp.arm_mat_add_q31(aQ31,bQ31)
-#rQ31=v[1]
-#r=Q31toF32(rQ31)
-#print(r)#
+v=dsp.arm_mat_cmplx_mult_f32(ar,br)
+print(v)
 
-#a=np.array([[1.,2,3,4],[5,6,7,8],[9,10,11,12]])
-#print(np.transpose(a))
-#print(dsp.arm_mat_trans_f32(a))
+a=np.array([[1.,2,3,4],[5,6,7,8],[9,10,11,12]]) / 30.0
+b=np.array([[1.,2,3,4],[5.1,6,7,8],[9.1,10,11,12]]) / 30.0
+print(a+b)
 
-#a = np.array([[1., 2.], [3., 4.]])
-#print(np.linalg.inv(a))
-#print(dsp.arm_mat_inverse_f32(a))
+aQ31=toQ31(a)
+bQ31=toQ31(b)
+v=dsp.arm_mat_add_q31(aQ31,bQ31)
+rQ31=v[1]
+r=Q31toF32(rQ31)
+print(r)
 
-#a = np.array([[1., 2.], [3., 4.]])
-#print(np.linalg.inv(a))
-#print(dsp.arm_mat_inverse_f64(a))
+a=np.array([[1.,2,3,4],[5,6,7,8],[9,10,11,12]])
+print(np.transpose(a))
+print(dsp.arm_mat_trans_f32(a))
 
-#a=np.array([[1.,2,3,4],[5,6,7,8],[9,10,11,12]])
-#print(2.5*a)
-#print(dsp.arm_mat_scale_f32(a,2.5))
+a = np.array([[1., 2.], [3., 4.]])
+print(np.linalg.inv(a))
+print(dsp.arm_mat_inverse_f32(a))
 
-#a=np.array([1.,2,3,4,5,6,7,8,9,10,11,12])
-#print(np.max(a))
-#print(np.argmax(a))
-#print(dsp.arm_max_f32(a))
-#
-#print(np.mean(a))
-#print(dsp.arm_mean_f32(a))
-#
-#print(np.dot(a,a))
-#print(dsp.arm_power_f32(a))
-#
+a = np.array([[1., 2.], [3., 4.]])
+print(np.linalg.inv(a))
+print(dsp.arm_mat_inverse_f64(a))
+
+a=np.array([[1.,2,3,4],[5,6,7,8],[9,10,11,12]])
+print(2.5*a)
+print(dsp.arm_mat_scale_f32(a,2.5))
+
+a=np.array([1.,2,3,4,5,6,7,8,9,10,11,12])
+print(np.max(a))
+print(np.argmax(a))
+print(dsp.arm_max_f32(a))
+
+print(np.mean(a))
+print(dsp.arm_mean_f32(a))
+
+print(np.dot(a,a))
+print(dsp.arm_power_f32(a))
+
 
 def imToReal1D(a):
     ar=np.zeros(np.array(a.shape) * 2)
@@ -219,145 +219,145 @@
 def realToIm1D(ar):
     return(ar[0::2] + 1j * ar[1::2])
 
-#nb = 16
-#signal = np.cos(2 * np.pi * np.arange(nb) / nb)
+nb = 16
+signal = np.cos(2 * np.pi * np.arange(nb) / nb)
 
-#result=np.fft.fft(signal)
-#print(result)
-#signalR = imToReal1D(signal)
-#cfftf32=dsp.arm_cfft_instance_f32()
-#status=dsp.arm_cfft_init_f32(cfftf32,nb)
-#print(status)
-#resultR = dsp.arm_cfft_f32(cfftf32,signalR,0,1)
-#resultI = realToIm1D(resultR)
-#print(resultI)
+result=np.fft.fft(signal)
+print(result)
+signalR = imToReal1D(signal)
+cfftf32=dsp.arm_cfft_instance_f32()
+status=dsp.arm_cfft_init_f32(cfftf32,nb)
+print(status)
+resultR = dsp.arm_cfft_f32(cfftf32,signalR,0,1)
+resultI = realToIm1D(resultR)
+print(resultI)
 
-#signal = signal / 10.0
-#result=np.fft.fft(signal)
-#print(result)
-#
-#signalR = imToReal1D(signal)
-#signalRQ31=toQ31(signalR)
-#cfftq31=dsp.arm_cfft_instance_q31()
-#status=dsp.arm_cfft_init_q31(cfftq31,nb)
-#print(status)
-#resultR = dsp.arm_cfft_q31(cfftq31,signalRQ31,0,1)
-#resultI = realToIm1D(Q31toF32(resultR))*16
-#print(resultI)
+signal = signal / 10.0
+result=np.fft.fft(signal)
+print(result)
 
-#signal = signal / 10.0
-#result=np.fft.fft(signal)
-#print(result)
-##
-#signalR = imToReal1D(signal)
-#signalRQ15=toQ15(signalR)
-#cfftq15=dsp.arm_cfft_instance_q15()
-#status=dsp.arm_cfft_init_q15(cfftq15,nb)
-#print(status)
-#resultR = dsp.arm_cfft_q15(cfftq15,signalRQ15,0,1)
-#resultR=Q15toF32(resultR)
-#resultI = realToIm1D(resultR)*16
-#print(resultI)
+signalR = imToReal1D(signal)
+signalRQ31=toQ31(signalR)
+cfftq31=dsp.arm_cfft_instance_q31()
+status=dsp.arm_cfft_init_q31(cfftq31,nb)
+print(status)
+resultR = dsp.arm_cfft_q31(cfftq31,signalRQ31,0,1)
+resultI = realToIm1D(Q31toF32(resultR))*16
+print(resultI)
 
-#nb = 128
-#signal = np.cos(2 * np.pi * np.arange(nb) / nb)
-#
-#result=np.fft.fft(signal)
-##print(result)
-#cfftradix4f32=dsp.arm_cfft_radix4_instance_f32()
-#rfftf32=dsp.arm_rfft_instance_f32()
-#status=dsp.arm_rfft_init_f32(rfftf32,cfftradix4f32,nb,0,1)
-#print(status)
-#resultI = dsp.arm_rfft_f32(rfftf32,signal)
-#print(result)
+signal = signal / 10.0
+result=np.fft.fft(signal)
+print(result)
 
-#nb = 128
-#signal = np.cos(2 * np.pi * np.arange(nb) / nb)
-#signalRQ31=toQ31(signal)
-#
-#result=np.fft.fft(signal)
-##print(result)
-#rfftq31=dsp.arm_rfft_instance_q31()
-#status=dsp.arm_rfft_init_q31(rfftq31,nb,0,1)
-#print(status)
-#resultI = dsp.arm_rfft_q31(rfftq31,signalRQ31)
-#resultI=Q31toF32(resultI)*(1 << 7)
-##print(result)
+signalR = imToReal1D(signal)
+signalRQ15=toQ15(signalR)
+cfftq15=dsp.arm_cfft_instance_q15()
+status=dsp.arm_cfft_init_q15(cfftq15,nb)
+print(status)
+resultR = dsp.arm_cfft_q15(cfftq15,signalRQ15,0,1)
+resultR=Q15toF32(resultR)
+resultI = realToIm1D(resultR)*16
+print(resultI)
 
-#nb = 128
-#signal = np.cos(2 * np.pi * np.arange(nb) / nb)
-#signalRQ15=toQ15(signal)
-#
-#result=np.fft.fft(signal)
-##print(result)
-#rfftq15=dsp.arm_rfft_instance_q15()
-#status=dsp.arm_rfft_init_q15(rfftq15,nb,0,1)
-#print(status)
-#resultI = dsp.arm_rfft_q15(rfftq15,signalRQ15)
-#resultI=Q15toF32(resultI)*(1 << 7)
-#print(result)
+nb = 128
+signal = np.cos(2 * np.pi * np.arange(nb) / nb)
+
+result=np.fft.fft(signal)
+print(result)
+cfftradix4f32=dsp.arm_cfft_radix4_instance_f32()
+rfftf32=dsp.arm_rfft_instance_f32()
+status=dsp.arm_rfft_init_f32(rfftf32,cfftradix4f32,nb,0,1)
+print(status)
+resultI = dsp.arm_rfft_f32(rfftf32,signal)
+print(result)
+
+nb = 128
+signal = np.cos(2 * np.pi * np.arange(nb) / nb)
+signalRQ31=toQ31(signal)
+
+result=np.fft.fft(signal)
+print(result)
+rfftq31=dsp.arm_rfft_instance_q31()
+status=dsp.arm_rfft_init_q31(rfftq31,nb,0,1)
+print(status)
+resultI = dsp.arm_rfft_q31(rfftq31,signalRQ31)
+resultI=Q31toF32(resultI)*(1 << 7)
+print(result)
+
+nb = 128
+signal = np.cos(2 * np.pi * np.arange(nb) / nb)
+signalRQ15=toQ15(signal)
+
+result=np.fft.fft(signal)
+print(result)
+rfftq15=dsp.arm_rfft_instance_q15()
+status=dsp.arm_rfft_init_q15(rfftq15,nb,0,1)
+print(status)
+resultI = dsp.arm_rfft_q15(rfftq15,signalRQ15)
+resultI=Q15toF32(resultI)*(1 << 7)
+print(result)
 
 
-#nb = 128
-#nb2=64
-#signal = np.cos(2 * np.pi * np.arange(nb) / nb)
-#result=dct(signal,4,norm='ortho')
-##print(result)
+nb = 128
+nb2=64
+signal = np.cos(2 * np.pi * np.arange(nb) / nb)
+result=dct(signal,4,norm='ortho')
+print(result)
 
-#cfftradix4f32=dsp.arm_cfft_radix4_instance_f32()
-#rfftf32=dsp.arm_rfft_instance_f32()
-#dct4f32=dsp.arm_dct4_instance_f32()
-#status=dsp.arm_dct4_init_f32(dct4f32,rfftf32,cfftradix4f32,nb,nb2,0.125)
-#print(status)
-#state=np.zeros(2*nb)
-#resultI = dsp.arm_dct4_f32(dct4f32,state,signal)
-##print(resultI)
+cfftradix4f32=dsp.arm_cfft_radix4_instance_f32()
+rfftf32=dsp.arm_rfft_instance_f32()
+dct4f32=dsp.arm_dct4_instance_f32()
+status=dsp.arm_dct4_init_f32(dct4f32,rfftf32,cfftradix4f32,nb,nb2,0.125)
+print(status)
+state=np.zeros(2*nb)
+resultI = dsp.arm_dct4_f32(dct4f32,state,signal)
+print(resultI)
 
 
-#signal = signal / 10.0
-#result=dct(signal,4,norm='ortho')
-#signalQ31=toQ31(signal)
-#cfftradix4q31=dsp.arm_cfft_radix4_instance_q31()
-#rfftq31=dsp.arm_rfft_instance_q31()
-#dct4q31=dsp.arm_dct4_instance_q31()
-#status=dsp.arm_dct4_init_q31(dct4q31,rfftq31,cfftradix4q31,nb,nb2,0x10000000)
-#print(status)
-#state=np.zeros(2*nb)
-#resultI = dsp.arm_dct4_q31(dct4q31,state,signalQ31)
-#resultI=Q31toF32(resultI)*(1 << 7)
+signal = signal / 10.0
+result=dct(signal,4,norm='ortho')
+signalQ31=toQ31(signal)
+cfftradix4q31=dsp.arm_cfft_radix4_instance_q31()
+rfftq31=dsp.arm_rfft_instance_q31()
+dct4q31=dsp.arm_dct4_instance_q31()
+status=dsp.arm_dct4_init_q31(dct4q31,rfftq31,cfftradix4q31,nb,nb2,0x10000000)
+print(status)
+state=np.zeros(2*nb)
+resultI = dsp.arm_dct4_q31(dct4q31,state,signalQ31)
+resultI=Q31toF32(resultI)*(1 << 7)
 
-#nb = 128
-#nb2=64
-#signal = np.cos(2 * np.pi * np.arange(nb) / nb)
-#signal = signal / 10.0
-#result=dct(signal,4,norm='ortho')
-#signalQ15=toQ15(signal)
-#cfftradix4q15=dsp.arm_cfft_radix4_instance_q15()
-#rfftq15=dsp.arm_rfft_instance_q15()
-#dct4q15=dsp.arm_dct4_instance_q15()
-#status=dsp.arm_dct4_init_q15(dct4q15,rfftq15,cfftradix4q15,nb,nb2,0x1000)
-#print(status)
-#state=np.zeros(2*nb)
-#resultI = dsp.arm_dct4_q15(dct4q15,state,signalQ15)
-#resultI=Q15toF32(resultI)*(1 << 7)
-#
-#
-#from pylab import figure, clf, plot, xlabel, ylabel, xlim, ylim, title, grid, axes, show
-#figure(1)
-#plot(np.absolute(signal))
-#t = np.arange(nb)
-#freq = np.fft.fftfreq(t.shape[-1])
-#resultmag=np.absolute(result)
-#figure(2)
-#plot(resultmag)
-#figure(3)
-#cmsigmag=np.absolute(resultI)
-#plot(cmsigmag)
-#show()##
+nb = 128
+nb2=64
+signal = np.cos(2 * np.pi * np.arange(nb) / nb)
+signal = signal / 10.0
+result=dct(signal,4,norm='ortho')
+signalQ15=toQ15(signal)
+cfftradix4q15=dsp.arm_cfft_radix4_instance_q15()
+rfftq15=dsp.arm_rfft_instance_q15()
+dct4q15=dsp.arm_dct4_instance_q15()
+status=dsp.arm_dct4_init_q15(dct4q15,rfftq15,cfftradix4q15,nb,nb2,0x1000)
+print(status)
+state=np.zeros(2*nb)
+resultI = dsp.arm_dct4_q15(dct4q15,state,signalQ15)
+resultI=Q15toF32(resultI)*(1 << 7)
 
-#biquadf32 = dsp.arm_biquad_casd_df1_inst_f32()
-#numStages=1
-#state=np.zeros(numStages*4)
-#coefs=[1.,2,3,4,5]
-#dsp.arm_biquad_cascade_df1_init_f32(biquadf32,1,coefs,state)
-#print(dsp.arm_biquad_cascade_df1_f32(biquadf32,[1,2,3,4,5]))#
\ No newline at end of file
+
+from pylab import figure, clf, plot, xlabel, ylabel, xlim, ylim, title, grid, axes, show
+figure(1)
+plot(np.absolute(signal))
+t = np.arange(nb)
+freq = np.fft.fftfreq(t.shape[-1])
+resultmag=np.absolute(result)
+figure(2)
+plot(resultmag)
+figure(3)
+cmsigmag=np.absolute(resultI)
+plot(cmsigmag)
+show()
+
+biquadf32 = dsp.arm_biquad_casd_df1_inst_f32()
+numStages=1
+state=np.zeros(numStages*4)
+coefs=[1.,2,3,4,5]
+dsp.arm_biquad_cascade_df1_init_f32(biquadf32,1,coefs,state)
+print(dsp.arm_biquad_cascade_df1_f32(biquadf32,[1,2,3,4,5]))
\ No newline at end of file