123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- #include "arm_math.h"
- arm_status arm_mat_scale_f32(
- const arm_matrix_instance_f32 * pSrc,
- float32_t scale,
- arm_matrix_instance_f32 * pDst)
- {
- float32_t *pIn = pSrc->pData;
- float32_t *pOut = pDst->pData;
- uint32_t numSamples;
- uint32_t blkCnt;
- arm_status status;
- #ifndef ARM_MATH_CM0_FAMILY
- float32_t in1, in2, in3, in4;
- float32_t out1, out2, out3, out4;
- #endif
- #ifdef ARM_MATH_MATRIX_CHECK
-
- if((pSrc->numRows != pDst->numRows) || (pSrc->numCols != pDst->numCols))
- {
-
- status = ARM_MATH_SIZE_MISMATCH;
- }
- else
- #endif
- {
-
- numSamples = (uint32_t) pSrc->numRows * pSrc->numCols;
- #ifndef ARM_MATH_CM0_FAMILY
-
-
- blkCnt = numSamples >> 2;
-
- while(blkCnt > 0u)
- {
-
-
- in1 = pIn[0];
- in2 = pIn[1];
- in3 = pIn[2];
- in4 = pIn[3];
- out1 = in1 * scale;
- out2 = in2 * scale;
- out3 = in3 * scale;
- out4 = in4 * scale;
- pOut[0] = out1;
- pOut[1] = out2;
- pOut[2] = out3;
- pOut[3] = out4;
-
- pIn += 4u;
- pOut += 4u;
-
- blkCnt--;
- }
-
- blkCnt = numSamples % 0x4u;
- #else
-
-
- blkCnt = numSamples;
- #endif
- while(blkCnt > 0u)
- {
-
-
- *pOut++ = (*pIn++) * scale;
-
- blkCnt--;
- }
-
- status = ARM_MATH_SUCCESS;
- }
-
- return (status);
- }
|