Fork of mbed-dsp. CMSIS-DSP library of supporting NEON

Dependents:   mbed-os-example-cmsis_dsp_neon

Fork of mbed-dsp by mbed official

Information

Japanese version is available in lower part of this page.
このページの後半に日本語版が用意されています.

CMSIS-DSP of supporting NEON

What is this ?

A library for CMSIS-DSP of supporting NEON.
We supported the NEON to CMSIS-DSP Ver1.4.3(CMSIS V4.1) that ARM supplied, has achieved the processing speed improvement.
If you use the mbed-dsp library, you can use to replace this library.
CMSIS-DSP of supporting NEON is provied as a library.

Library Creation environment

CMSIS-DSP library of supporting NEON was created by the following environment.

  • Compiler
    ARMCC Version 5.03
  • Compile option switch[C Compiler]
   -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING -O3 -Otime --cpu=Cortex-A9 --littleend --arm 
   --apcs=/interwork --no_unaligned_access --fpu=vfpv3_fp16 --fpmode=fast --apcs=/hardfp 
   --vectorize --asm
  • Compile option switch[Assembler]
   --cpreproc --cpu=Cortex-A9 --littleend --arm --apcs=/interwork --no_unaligned_access 
   --fpu=vfpv3_fp16 --fpmode=fast --apcs=/hardfp


Effects of NEON support

In the data which passes to each function, large size will be expected more effective than small size.
Also if the data is a multiple of 16, effect will be expected in every function in the CMSIS-DSP.


NEON対応CMSIS-DSP

概要

NEON対応したCMSIS-DSPのライブラリです。
ARM社提供のCMSIS-DSP Ver1.4.3(CMSIS V4.1)をターゲットにNEON対応を行ない、処理速度向上を実現しております。
mbed-dspライブラリを使用している場合は、本ライブラリに置き換えて使用することができます。
NEON対応したCMSIS-DSPはライブラリで提供します。

ライブラリ作成環境

NEON対応CMSIS-DSPライブラリは、以下の環境で作成しています。

  • コンパイラ
    ARMCC Version 5.03
  • コンパイルオプションスイッチ[C Compiler]
   -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING -O3 -Otime --cpu=Cortex-A9 --littleend --arm 
   --apcs=/interwork --no_unaligned_access --fpu=vfpv3_fp16 --fpmode=fast --apcs=/hardfp 
   --vectorize --asm
  • コンパイルオプションスイッチ[Assembler]
   --cpreproc --cpu=Cortex-A9 --littleend --arm --apcs=/interwork --no_unaligned_access 
   --fpu=vfpv3_fp16 --fpmode=fast --apcs=/hardfp


NEON対応による効果について

CMSIS-DSP内の各関数へ渡すデータは、小さいサイズよりも大きいサイズの方が効果が見込めます。
また、16の倍数のデータであれば、CMSIS-DSP内のどの関数でも効果が見込めます。


Revision:
2:da51fb522205
Parent:
1:fdd22bb7aa52
Child:
3:7a284390b0ce
--- a/cmsis_dsp/arm_math.h	Wed Nov 28 12:30:09 2012 +0000
+++ b/cmsis_dsp/arm_math.h	Thu May 30 17:10:11 2013 +0100
@@ -2,12 +2,12 @@
  * Copyright (C) 2010-2011 ARM Limited. All rights reserved.   
  *   
  * $Date:        15. February 2012  
- * $Revision:     V1.1.0  
+ * $Revision: 	V1.1.0  
  *   
- * Project:         CMSIS DSP Library   
- * Title:             arm_math.h
+ * Project: 	    CMSIS DSP Library   
+ * Title:	     	arm_math.h
  *   
- * Description:     Public header file for CMSIS DSP Library
+ * Description:	 Public header file for CMSIS DSP Library
  *   
  * Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
  *  
@@ -280,7 +280,7 @@
 #undef  __CMSIS_GENERIC         /* enable NVIC and Systick functions */
 #include "string.h"
 #include "math.h"
-#ifdef    __cplusplus
+#ifdef	__cplusplus
 extern "C"
 {
 #endif
@@ -290,27 +290,27 @@
    * @brief Macros required for reciprocal calculation in Normalized LMS
    */
 
-#define DELTA_Q31             (0x100)
-#define DELTA_Q15             0x5
-#define INDEX_MASK             0x0000003F
+#define DELTA_Q31 			(0x100)
+#define DELTA_Q15 			0x5
+#define INDEX_MASK 			0x0000003F
 #ifndef PI
-#define PI                    3.14159265358979f
+#define PI					3.14159265358979f
 #endif
 
   /**
    * @brief Macros required for SINE and COSINE Fast math approximations
    */
 
-#define TABLE_SIZE            256
-#define TABLE_SPACING_Q31    0x800000
-#define TABLE_SPACING_Q15    0x80
+#define TABLE_SIZE			256
+#define TABLE_SPACING_Q31	0x800000
+#define TABLE_SPACING_Q15	0x80
 
   /**
    * @brief Macros required for SINE and COSINE Controller functions
    */
   /* 1.31(q31) Fixed value of 2/360 */
   /* -1 to +1 is divided into 360 values so total spacing is (2/360) */
-#define INPUT_SPACING            0xB60B61
+#define INPUT_SPACING			0xB60B61
 
   /**
    * @brief Macro for Unaligned Support
@@ -323,7 +323,7 @@
   #else
     #define ALIGN4 __align(4)
   #endif
-#endif    /*    #ifndef UNALIGNED_SUPPORT_DISABLE    */
+#endif	/*	#ifndef UNALIGNED_SUPPORT_DISABLE	*/
 
   /**
    * @brief Error status returned by some functions in the library.
@@ -400,16 +400,16 @@
    */
 #ifndef ARM_MATH_BIG_ENDIAN
 
-#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) <<  0) & (int32_t)0x000000FF) |    \
-                                (((int32_t)(v1) <<  8) & (int32_t)0x0000FF00) |    \
-                                (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) |    \
-                                (((int32_t)(v3) << 24) & (int32_t)0xFF000000)  )
+#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) <<  0) & (int32_t)0x000000FF) |	\
+                                (((int32_t)(v1) <<  8) & (int32_t)0x0000FF00) |	\
+							    (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) |	\
+							    (((int32_t)(v3) << 24) & (int32_t)0xFF000000)  )
 #else
 
-#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) <<  0) & (int32_t)0x000000FF) |    \
-                                (((int32_t)(v2) <<  8) & (int32_t)0x0000FF00) |    \
-                                (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) |    \
-                                (((int32_t)(v0) << 24) & (int32_t)0xFF000000)  )
+#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) <<  0) & (int32_t)0x000000FF) |	\
+                                (((int32_t)(v2) <<  8) & (int32_t)0x0000FF00) |	\
+							    (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) |	\
+							    (((int32_t)(v0) << 24) & (int32_t)0xFF000000)  )
 
 #endif
 
@@ -1177,11 +1177,11 @@
   /**
    * @brief  Initialization function for the Q31 FIR filter.
    * @param[in,out] *S points to an instance of the Q31 FIR structure.
-   * @param[in]     numTaps  Number of filter coefficients in the filter.
-   * @param[in]     *pCoeffs points to the filter coefficients.
-   * @param[in]     *pState points to the state buffer.
-   * @param[in]     blockSize number of samples that are processed at a time.
-   * @return         none.
+   * @param[in] 	numTaps  Number of filter coefficients in the filter.
+   * @param[in] 	*pCoeffs points to the filter coefficients.
+   * @param[in] 	*pState points to the state buffer.
+   * @param[in] 	blockSize number of samples that are processed at a time.
+   * @return 		none.
    */
   void arm_fir_init_q31(
   arm_fir_instance_q31 * S,
@@ -1207,11 +1207,11 @@
   /**
    * @brief  Initialization function for the floating-point FIR filter.
    * @param[in,out] *S points to an instance of the floating-point FIR filter structure.
-   * @param[in]     numTaps  Number of filter coefficients in the filter.
-   * @param[in]     *pCoeffs points to the filter coefficients.
-   * @param[in]     *pState points to the state buffer.
-   * @param[in]     blockSize number of samples that are processed at a time.
-   * @return        none.
+   * @param[in] 	numTaps  Number of filter coefficients in the filter.
+   * @param[in] 	*pCoeffs points to the filter coefficients.
+   * @param[in] 	*pState points to the state buffer.
+   * @param[in] 	blockSize number of samples that are processed at a time.
+   * @return    	none.
    */
   void arm_fir_init_f32(
   arm_fir_instance_f32 * S,
@@ -1471,7 +1471,7 @@
    * @brief Floating-point matrix transpose.
    * @param[in]  *pSrc points to the input matrix
    * @param[out] *pDst points to the output matrix
-   * @return     The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
+   * @return 	The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
    * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
    */
 
@@ -1484,7 +1484,7 @@
    * @brief Q15 matrix transpose.
    * @param[in]  *pSrc points to the input matrix
    * @param[out] *pDst points to the output matrix
-   * @return     The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
+   * @return 	The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
    * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
    */
 
@@ -1496,7 +1496,7 @@
    * @brief Q31 matrix transpose.
    * @param[in]  *pSrc points to the input matrix
    * @param[out] *pDst points to the output matrix
-   * @return     The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
+   * @return 	The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
    * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
    */
 
@@ -1539,7 +1539,7 @@
    * @param[in]       *pSrcA  points to the first input matrix structure
    * @param[in]       *pSrcB  points to the second input matrix structure
    * @param[out]      *pDst   points to output matrix structure
-   * @param[in]          *pState points to the array for storing intermediate results  
+   * @param[in]		  *pState points to the array for storing intermediate results  
    * @return     The function returns either
    * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
    */
@@ -1673,7 +1673,7 @@
    * @param[in,out] *S             points to an instance of the floating-point matrix structure.
    * @param[in]     nRows          number of rows in the matrix.
    * @param[in]     nColumns       number of columns in the matrix.
-   * @param[in]     *pData           points to the matrix data array.
+   * @param[in]     *pData	       points to the matrix data array.
    * @return        none
    */
 
@@ -1688,7 +1688,7 @@
    * @param[in,out] *S             points to an instance of the floating-point matrix structure.
    * @param[in]     nRows          number of rows in the matrix.
    * @param[in]     nColumns       number of columns in the matrix.
-   * @param[in]     *pData           points to the matrix data array.
+   * @param[in]     *pData	       points to the matrix data array.
    * @return        none
    */
 
@@ -1703,7 +1703,7 @@
    * @param[in,out] *S             points to an instance of the floating-point matrix structure.
    * @param[in]     nRows          number of rows in the matrix.
    * @param[in]     nColumns       number of columns in the matrix.
-   * @param[in]     *pData           points to the matrix data array.
+   * @param[in]     *pData	       points to the matrix data array.
    * @return        none
    */
 
@@ -2195,7 +2195,7 @@
 
 
   /*----------------------------------------------------------------------
-   *        Internal functions prototypes FFT function
+   *		Internal functions prototypes FFT function
    ----------------------------------------------------------------------*/
 
   /**
@@ -2264,7 +2264,7 @@
    * @brief  Core function for the f32 FFT butterfly process.
    * @param[in, out] *pSrc            points to the in-place buffer of f32 data type.
    * @param[in]      fftLen           length of the FFT.
-   * @param[in]      *pCoef              points to Twiddle coefficient buffer.
+   * @param[in]      *pCoef        	  points to Twiddle coefficient buffer.
    * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
    * @return none.
    */
@@ -2276,13 +2276,13 @@
   uint16_t twidCoefModifier);
 
         /**  
-     * @brief  Core function for the Radix-2 Q31 CFFT butterfly process. 
-     * @param[in, out] *pSrc            points to the in-place buffer of Q31 data type. 
-     * @param[in]      fftLen           length of the FFT. 
-     * @param[in]      *pCoef             points to Twiddle coefficient buffer.
-     * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. 
-     * @return none. 
-     */
+	 * @brief  Core function for the Radix-2 Q31 CFFT butterfly process. 
+	 * @param[in, out] *pSrc            points to the in-place buffer of Q31 data type. 
+	 * @param[in]      fftLen           length of the FFT. 
+	 * @param[in]      *pCoef         	points to Twiddle coefficient buffer.
+	 * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. 
+	 * @return none. 
+	 */
 
   void arm_radix2_butterfly_q31(
   q31_t * pSrc,
@@ -2291,13 +2291,13 @@
   uint16_t twidCoefModifier);
 
         /**  
-     * @brief  Core function for the Radix-2 Q15 CFFT butterfly process. 
-     * @param[in, out] *pSrc            points to the in-place buffer of Q15 data type. 
-     * @param[in]      fftLen           length of the FFT. 
-     * @param[in]      *pCoef           points to Twiddle coefficient buffer.
-     * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. 
-     * @return none. 
-     */
+	 * @brief  Core function for the Radix-2 Q15 CFFT butterfly process. 
+	 * @param[in, out] *pSrc            points to the in-place buffer of Q15 data type. 
+	 * @param[in]      fftLen           length of the FFT. 
+	 * @param[in]      *pCoef           points to Twiddle coefficient buffer.
+	 * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. 
+	 * @return none. 
+	 */
 
   void arm_radix2_butterfly_q15(
   q15_t * pSrc,
@@ -2306,13 +2306,13 @@
   uint16_t twidCoefModifier);
 
         /**  
-     * @brief  Core function for the Radix-2 Q15 CFFT Inverse butterfly process. 
-     * @param[in, out] *pSrc            points to the in-place buffer of Q15 data type. 
-     * @param[in]      fftLen           length of the FFT. 
-     * @param[in]      *pCoef           points to Twiddle coefficient buffer.
-     * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. 
-     * @return none. 
-     */
+	 * @brief  Core function for the Radix-2 Q15 CFFT Inverse butterfly process. 
+	 * @param[in, out] *pSrc            points to the in-place buffer of Q15 data type. 
+	 * @param[in]      fftLen           length of the FFT. 
+	 * @param[in]      *pCoef       	points to Twiddle coefficient buffer.
+	 * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. 
+	 * @return none. 
+	 */
 
   void arm_radix2_butterfly_inverse_q15(
   q15_t * pSrc,
@@ -2321,13 +2321,13 @@
   uint16_t twidCoefModifier);
 
         /**  
-     * @brief  Core function for the Radix-2 Q31 CFFT Inverse butterfly process. 
-     * @param[in, out] *pSrc            points to the in-place buffer of Q31 data type. 
-     * @param[in]      fftLen           length of the FFT. 
-     * @param[in]      *pCoef             points to Twiddle coefficient buffer.
-     * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. 
-     * @return none. 
-     */
+	 * @brief  Core function for the Radix-2 Q31 CFFT Inverse butterfly process. 
+	 * @param[in, out] *pSrc            points to the in-place buffer of Q31 data type. 
+	 * @param[in]      fftLen           length of the FFT. 
+	 * @param[in]      *pCoef         	points to Twiddle coefficient buffer.
+	 * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. 
+	 * @return none. 
+	 */
 
   void arm_radix2_butterfly_inverse_q31(
   q31_t * pSrc,
@@ -2339,9 +2339,9 @@
    * @brief  Core function for the f32 IFFT butterfly process.
    * @param[in, out] *pSrc            points to the in-place buffer of f32 data type.
    * @param[in]      fftLen           length of the FFT.
-   * @param[in]      *pCoef              points to Twiddle coefficient buffer.
+   * @param[in]      *pCoef        	  points to Twiddle coefficient buffer.
    * @param[in]      twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
-   * @param[in]         onebyfftLen      1/fftLenfth
+   * @param[in]		 onebyfftLen	  1/fftLenfth
    * @return none.
    */
 
@@ -2497,7 +2497,7 @@
    * @param[in]      fftLenReal     length of the FFT.
    * @param[in]      ifftFlagR      flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform.
    * @param[in]      bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.
-   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported value.
+   * @return		The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported value.
    */
 
   arm_status arm_rfft_init_q15(
@@ -2527,7 +2527,7 @@
    * @param[in]      fftLenReal     length of the FFT.
    * @param[in]      ifftFlagR      flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform.
    * @param[in]      bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.
-   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported value.
+   * @return		The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported value.
    */
 
   arm_status arm_rfft_init_q31(
@@ -2544,7 +2544,7 @@
    * @param[in]     fftLenReal     length of the FFT.
    * @param[in]     ifftFlagR      flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform.
    * @param[in]     bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.
-   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported value.
+   * @return		The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported value.
    */
 
   arm_status arm_rfft_init_f32(
@@ -2590,7 +2590,7 @@
    * @param[in]     N          length of the DCT4.
    * @param[in]     Nby2       half of the length of the DCT4.
    * @param[in]     normalize  normalizing factor.
-   * @return        arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported transform length.
+   * @return		arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported transform length.
    */
 
   arm_status arm_dct4_init_f32(
@@ -2637,7 +2637,7 @@
    * @param[in]     N          length of the DCT4.
    * @param[in]     Nby2       half of the length of the DCT4.
    * @param[in]     normalize  normalizing factor.
-   * @return        arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.
+   * @return		arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.
    */
 
   arm_status arm_dct4_init_q31(
@@ -2684,7 +2684,7 @@
    * @param[in]     N          length of the DCT4.
    * @param[in]     Nby2       half of the length of the DCT4.
    * @param[in]     normalize  normalizing factor.
-   * @return        arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.
+   * @return		arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.
    */
 
   arm_status arm_dct4_init_q15(
@@ -3326,11 +3326,11 @@
    */
 
   void arm_conv_fast_q15(
-              q15_t * pSrcA,
-             uint32_t srcALen,
-              q15_t * pSrcB,
-             uint32_t srcBLen,
-             q15_t * pDst);
+			  q15_t * pSrcA,
+			 uint32_t srcALen,
+			  q15_t * pSrcB,
+			 uint32_t srcBLen,
+			 q15_t * pDst);
 
   /**
    * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
@@ -3512,13 +3512,13 @@
    */
 
   arm_status arm_conv_partial_fast_q15(
-                        q15_t * pSrcA,
-                       uint32_t srcALen,
-                        q15_t * pSrcB,
-                       uint32_t srcBLen,
-                       q15_t * pDst,
-                       uint32_t firstIndex,
-                       uint32_t numPoints);
+				        q15_t * pSrcA,
+				       uint32_t srcALen,
+				        q15_t * pSrcB,
+				       uint32_t srcBLen,
+				       q15_t * pDst,
+				       uint32_t firstIndex,
+				       uint32_t numPoints);
 
 
   /**
@@ -4709,11 +4709,11 @@
    */
 
   void arm_correlate_fast_q15(
-                   q15_t * pSrcA,
-                  uint32_t srcALen,
-                   q15_t * pSrcB,
-                  uint32_t srcBLen,
-                  q15_t * pDst);
+			       q15_t * pSrcA,
+			      uint32_t srcALen,
+			       q15_t * pSrcB,
+			      uint32_t srcBLen,
+			      q15_t * pDst);
 
 
 
@@ -5612,8 +5612,8 @@
    * @brief Floating-point Park transform
    * @param[in]       Ialpha input two-phase vector coordinate alpha
    * @param[in]       Ibeta  input two-phase vector coordinate beta
-   * @param[out]      *pId   points to output    rotor reference frame d
-   * @param[out]      *pIq   points to output    rotor reference frame q
+   * @param[out]      *pId   points to output	rotor reference frame d
+   * @param[out]      *pIq   points to output	rotor reference frame q
    * @param[in]       sinVal sine value of rotation angle theta
    * @param[in]       cosVal cosine value of rotation angle theta
    * @return none.
@@ -5759,7 +5759,7 @@
 
 
   /**
-   * @brief  Inverse Park transform for    Q31 version 
+   * @brief  Inverse Park transform for	Q31 version 
    * @param[in]       Id        input coordinate of rotor reference frame d
    * @param[in]       Iq        input coordinate of rotor reference frame q
    * @param[out]      *pIalpha  points to output two-phase orthogonal vector axis alpha
@@ -7551,7 +7551,7 @@
 
 
 
-#ifdef    __cplusplus
+#ifdef	__cplusplus
 }
 #endif