Lines Matching +full:in +full:-
1 /* Copyright (C) 2010-2021 ARM Limited or its affiliates. All rights reserved.
2 * SPDX-License-Identifier: Apache-2.0
29 * Element-by-element multiplication of two vectors.
33 * There are separate functions for floating-point, Q7, Q15, and Q31 data types.
44 * @param[in] src_a points to the first input vector
45 * @param[in] src_b points to the second input vector
47 * @param[in] block_size number of samples in each vector
59 * @param[in] src_a points to the first input vector
60 * @param[in] src_b points to the second input vector
62 * @param[in] block_size number of samples in each vector
74 * @param[in] src_a points to the first input vector
75 * @param[in] src_b points to the second input vector
77 * @param[in] block_size number of samples in each vector
83 * @brief Floating-point vector multiplication.
84 * @param[in] src_a points to the first input vector
85 * @param[in] src_b points to the second input vector
87 * @param[in] block_size number of samples in each vector
100 * Element-by-element addition of two vectors.
104 * There are separate functions for floating-point, Q7, Q15, and Q31 data types.
109 * @brief Floating-point vector addition.
110 * @param[in] src_a points to the first input vector
111 * @param[in] src_b points to the second input vector
113 * @param[in] block_size number of samples in each vector
125 * @param[in] src_a points to the first input vector
126 * @param[in] src_b points to the second input vector
128 * @param[in] block_size number of samples in each vector
140 * @param[in] src_a points to the first input vector
141 * @param[in] src_b points to the second input vector
143 * @param[in] block_size number of samples in each vector
155 * @param[in] src_a points to the first input vector
156 * @param[in] src_b points to the second input vector
158 * @param[in] block_size number of samples in each vector
171 * Element-by-element subtraction of two vectors.
173 * dst[n] = src_a[n] - src_b[n], 0 <= n < block_size.
175 * There are separate functions for floating-point, Q7, Q15, and Q31 data types.
180 * @brief Floating-point vector subtraction.
181 * @param[in] src_a points to the first input vector
182 * @param[in] src_b points to the second input vector
184 * @param[in] block_size number of samples in each vector
196 * @param[in] src_a points to the first input vector
197 * @param[in] src_b points to the second input vector
199 * @param[in] block_size number of samples in each vector
211 * @param[in] src_a points to the first input vector
212 * @param[in] src_b points to the second input vector
214 * @param[in] block_size number of samples in each vector
226 * @param[in] src_a points to the first input vector
227 * @param[in] src_b points to the second input vector
229 * @param[in] block_size number of samples in each vector
242 * Multiply a vector by a scalar value. For floating-point data, the algorithm used is:
247 * In the fixed-point Q7, Q15, and Q31 functions, scale is represented by a fractional
249 * allows the gain of the scaling operation to exceed 1.0. The algorithm used with fixed-point data
255 * The overall scale factor applied to the fixed-point data is
259 * The functions support in-place computation allowing the source and destination pointers to
265 * @brief Multiplies a floating-point vector by a scalar.
266 * @param[in] src points to the input vector
267 * @param[in] scale scale factor to be applied
269 * @param[in] block_size number of samples in the vector
278 * The input data <code>*src</code> and <code>scale_fract</code> are in 1.7 format.
282 * @param[in] src points to the input vector
283 * @param[in] scale_fract fractional portion of the scale value
284 * @param[in] shift number of bits to shift the result by
286 * @param[in] block_size number of samples in the vector
295 * The input data <code>*src</code> and <code>scale_fract</code> are in 1.15 format.
299 * @param[in] src points to the input vector
300 * @param[in] scale_fract fractional portion of the scale value
301 * @param[in] shift number of bits to shift the result by
303 * @param[in] block_size number of samples in the vector
312 * The input data <code>*src</code> and <code>scale_fract</code> are in 1.31 format.
316 * @param[in] src points to the input vector
317 * @param[in] scale_fract fractional portion of the scale value
318 * @param[in] shift number of bits to shift the result by
320 * @param[in] block_size number of samples in the vector
333 * Computes the absolute value of a vector on an element-by-element basis.
337 * The functions support in-place computation allowing the source and destination pointers to
338 * reference the same memory buffer. There are separate functions for floating-point, Q7, Q15, and
344 * @brief Floating-point vector absolute value.
345 * @param[in] src points to the input buffer
347 * @param[in] block_size number of samples in each vector
357 * The Q7 value -1 (0x80) will be saturated to the maximum allowable positive value 0x7F.
359 * @param[in] src points to the input buffer
361 * @param[in] block_size number of samples in each vector
370 * The Q15 value -1 (0x8000) will be saturated to the maximum allowable positive value 0x7FFF.
372 * @param[in] src points to the input buffer
374 * @param[in] block_size number of samples in each vector
384 * The Q31 value -1 (0x80000000) will be saturated to the maximum allowable positive value
387 * @param[in] src points to the input buffer
389 * @param[in] block_size number of samples in each vector
402 * Computes the dot product of two vectors. The vectors are multiplied element-by-element and then
405 * sum = src_a[0]*src_b[0] + src_a[1]*src_b[1] + ... + src_a[block_size-1]*src_b[block_size-1]
407 * There are separate functions for floating-point, Q7, Q15, and Q31 data types.
412 * @brief Dot product of floating-point vectors.
413 * @param[in] src_a points to the first input vector
414 * @param[in] src_b points to the second input vector
415 * @param[in] block_size number of samples in each vector
426 * The intermediate multiplications are in 1.7 x 1.7 = 2.14 format and these results are added to
427 * an accumulator in 18.14 format. Nonsaturating additions are used and there is no danger of wrap
428 * around as long as the vectors are less than 2^18 elements long. The return result is in 18.14
431 * @param[in] src_a points to the first input vector
432 * @param[in] src_b points to the second input vector
433 * @param[in] block_size number of samples in each vector
443 * The intermediate multiplications are in 1.15 x 1.15 = 2.30 format and these results are added
444 * to a 64-bit accumulator in 34.30 format. Nonsaturating additions are used and given that there
445 * are 33 guard bits in the accumulator there is no risk of overflow. The return result is in
448 * @param[in] src_a points to the first input vector
449 * @param[in] src_b points to the second input vector
450 * @param[in] block_size number of samples in each vector
460 * The intermediate multiplications are in 1.31 x 1.31 = 2.62 format and these are truncated to
462 * to a 64-bit accumulator in 16.48 format. There are 15 guard bits in the accumulator and there
464 * return result is in 16.48 format.
466 * @param[in] src_a points to the first input vector
467 * @param[in] src_b points to the second input vector
468 * @param[in] block_size number of samples in each vector
482 * Shifts the elements of a fixed-point vector by a specified number of bits.
490 * The functions support in-place computation allowing the source and destination pointers to
502 * @param[in] src points to the input vector
503 * @param[in] shift_bits number of bits to shift. A positive value shifts left; a negative value
506 * @param[in] block_size number of samples in the vector
518 * @param[in] src points to the input vector
519 * @param[in] shift_bits number of bits to shift. A positive value shifts left; a negative value
522 * @param[in] block_size number of samples in the vector
534 * @param[in] src points to the input vector
535 * @param[in] shift_bits number of bits to shift. A positive value shifts left; a negative value
538 * @param[in] block_size number of samples in the vector
555 * The functions support in-place computation allowing the source and destination pointers to
556 * reference the same memory buffer. There are separate functions for floating-point, Q7, Q15, and
563 * @brief Adds a constant offset to a floating-point vector.
564 * @param[in] src points to the input vector
565 * @param[in] offset is the offset to be added
567 * @param[in] block_size number of samples in the vector
579 * @param[in] src points to the input vector
580 * @param[in] offset is the offset to be added
582 * @param[in] block_size number of samples in the vector
594 * @param[in] src points to the input vector
595 * @param[in] offset is the offset to be added
597 * @param[in] block_size number of samples in the vector
609 * @param[in] src points to the input vector
610 * @param[in] offset is the offset to be added
612 * @param[in] block_size number of samples in the vector
627 * dst[n] = -src[n], 0 <= n < block_size.
629 * The functions support in-place computation allowing the source and destination pointers to
630 * reference the same memory buffer. There are separate functions for floating-point, Q7, Q15, and
637 * @brief Negates the elements of a floating-point vector.
638 * @param[in] src points to the input vector
640 * @param[in] block_size number of samples in the vector
650 * The Q7 value -1 (0x80) is saturated to the maximum allowable positive value 0x7F.
652 * @param[in] src points to the input vector
654 * @param[in] block_size number of samples in the vector
664 * The Q15 value -1 (0x8000) is saturated to the maximum allowable positive value 0x7FFF.
666 * @param[in] src points to the input vector
668 * @param[in] block_size number of samples in the vector
678 * The Q31 value -1 (0x80000000) is saturated to the maximum allowable positive value 0x7FFFFFFF.
680 * @param[in] src points to the input vector
682 * @param[in] block_size number of samples in the vector
702 * @brief Compute the logical bitwise AND of two fixed-point vectors.
703 * @param[in] src_a points to input vector A
704 * @param[in] src_b points to input vector B
706 * @param[in] block_size number of samples in each vector
712 * @brief Compute the logical bitwise AND of two fixed-point vectors.
713 * @param[in] src_a points to input vector A
714 * @param[in] src_b points to input vector B
716 * @param[in] block_size number of samples in each vector
722 * @brief Compute the logical bitwise AND of two fixed-point vectors.
723 * @param[in] src_a points to input vector A
724 * @param[in] src_b points to input vector B
726 * @param[in] block_size number of samples in each vector
746 * @brief Compute the logical bitwise OR of two fixed-point vectors.
747 * @param[in] src_a points to input vector A
748 * @param[in] src_b points to input vector B
750 * @param[in] block_size number of samples in each vector
756 * @brief Compute the logical bitwise OR of two fixed-point vectors.
757 * @param[in] src_a points to input vector A
758 * @param[in] src_b points to input vector B
760 * @param[in] block_size number of samples in each vector
766 * @brief Compute the logical bitwise OR of two fixed-point vectors.
767 * @param[in] src_a points to input vector A
768 * @param[in] src_b points to input vector B
770 * @param[in] block_size number of samples in each vector
790 * @brief Compute the logical bitwise NOT of a fixed-point vector.
791 * @param[in] src points to input vector
793 * @param[in] block_size number of samples in each vector
799 * @brief Compute the logical bitwise NOT of a fixed-point vector.
800 * @param[in] src points to input vector
802 * @param[in] block_size number of samples in each vector
808 * @brief Compute the logical bitwise NOT of a fixed-point vector.
809 * @param[in] src points to input vector
811 * @param[in] block_size number of samples in each vector
831 * @brief Compute the logical bitwise XOR of two fixed-point vectors.
832 * @param[in] src_a points to input vector A
833 * @param[in] src_b points to input vector B
835 * @param[in] block_size number of samples in each vector
841 * @brief Compute the logical bitwise XOR of two fixed-point vectors.
842 * @param[in] src_a points to input vector A
843 * @param[in] src_b points to input vector B
845 * @param[in] block_size number of samples in each vector
851 * @brief Compute the logical bitwise XOR of two fixed-point vectors.
852 * @param[in] src_a points to input vector A
853 * @param[in] src_b points to input vector B
855 * @param[in] block_size number of samples in each vector
868 * Element-by-element clipping of a value.
872 * There are separate functions for floating-point, Q7, Q15, and Q31 data types.
877 * @brief Elementwise floating-point clipping
878 * @param[in] src points to input values
880 * @param[in] low lower bound
881 * @param[in] high higher bound
882 * @param[in] num_samples number of samples to clip
888 * @brief Elementwise fixed-point clipping
889 * @param[in] src points to input values
891 * @param[in] low lower bound
892 * @param[in] high higher bound
893 * @param[in] num_samples number of samples to clip
899 * @brief Elementwise fixed-point clipping
900 * @param[in] src points to input values
902 * @param[in] low lower bound
903 * @param[in] high higher bound
904 * @param[in] num_samples number of samples to clip
910 * @brief Elementwise fixed-point clipping
911 * @param[in] src points to input values
913 * @param[in] low lower bound
914 * @param[in] high higher bound
915 * @param[in] num_samples number of samples to clip