1 /* 2 * Copyright (C) 2020 Linux Studio Plugins Project <https://lsp-plug.in/> 3 * (C) 2020 Vladimir Sadovnikov <sadko4u@gmail.com> 4 * 5 * This file is part of lsp-plugins 6 * Created on: 26 нояб. 2019 г. 7 * 8 * lsp-plugins is free software: you can redistribute it and/or modify 9 * it under the terms of the GNU Lesser General Public License as published by 10 * the Free Software Foundation, either version 3 of the License, or 11 * any later version. 12 * 13 * lsp-plugins is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU Lesser General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public License 19 * along with lsp-plugins. If not, see <https://www.gnu.org/licenses/>. 20 */ 21 22 #ifndef DSP_ARCH_NATIVE_PMATH_ABS_VV_H_ 23 #define DSP_ARCH_NATIVE_PMATH_ABS_VV_H_ 24 25 #ifndef __DSP_NATIVE_IMPL 26 #error "This header should not be included directly" 27 #endif /* __DSP_NATIVE_IMPL */ 28 29 namespace native 30 { abs1(float * dst,size_t count)31 void abs1(float *dst, size_t count) 32 { 33 for (size_t i=0; i<count; ++i) 34 dst[i] = fabs(dst[i]); 35 } 36 abs2(float * dst,const float * src,size_t count)37 void abs2(float *dst, const float *src, size_t count) 38 { 39 for (size_t i=0; i<count; ++i) 40 dst[i] = fabs(src[i]); 41 } 42 abs_add2(float * dst,const float * src,size_t count)43 void abs_add2(float *dst, const float *src, size_t count) 44 { 45 for (size_t i=0; i<count; ++i) 46 dst[i] += fabs(src[i]); 47 } 48 abs_sub2(float * dst,const float * src,size_t count)49 void abs_sub2(float *dst, const float *src, size_t count) 50 { 51 for (size_t i=0; i<count; ++i) 52 dst[i] -= fabs(src[i]); 53 } 54 abs_rsub2(float * dst,const float * src,size_t count)55 void abs_rsub2(float *dst, const float *src, size_t count) 56 { 57 for (size_t i=0; i<count; ++i) 58 dst[i] = fabs(src[i]) - dst[i]; 59 } 60 abs_mul2(float * dst,const float * src,size_t count)61 void abs_mul2(float *dst, const float *src, size_t count) 62 { 63 for (size_t i=0; i<count; ++i) 64 dst[i] *= fabs(src[i]); 65 } 66 abs_div2(float * dst,const float * src,size_t count)67 void abs_div2(float *dst, const float *src, size_t count) 68 { 69 for (size_t i=0; i<count; ++i) 70 dst[i] /= fabs(src[i]); 71 } 72 abs_rdiv2(float * dst,const float * src,size_t count)73 void abs_rdiv2(float *dst, const float *src, size_t count) 74 { 75 for (size_t i=0; i<count; ++i) 76 dst[i] = fabs(src[i]) / dst[i]; 77 } 78 abs_add3(float * dst,const float * src1,const float * src2,size_t count)79 void abs_add3(float *dst, const float *src1, const float *src2, size_t count) 80 { 81 for (size_t i=0; i<count; ++i) 82 dst[i] = src1[i] + fabs(src2[i]); 83 } 84 abs_sub3(float * dst,const float * src1,const float * src2,size_t count)85 void abs_sub3(float *dst, const float *src1, const float *src2, size_t count) 86 { 87 for (size_t i=0; i<count; ++i) 88 dst[i] = src1[i] - fabs(src2[i]); 89 } 90 abs_rsub3(float * dst,const float * src1,const float * src2,size_t count)91 void abs_rsub3(float *dst, const float *src1, const float *src2, size_t count) 92 { 93 for (size_t i=0; i<count; ++i) 94 dst[i] = fabs(src2[i]) - src1[i]; 95 } 96 abs_mul3(float * dst,const float * src1,const float * src2,size_t count)97 void abs_mul3(float *dst, const float *src1, const float *src2, size_t count) 98 { 99 for (size_t i=0; i<count; ++i) 100 dst[i] = src1[i] * fabs(src2[i]); 101 } 102 abs_div3(float * dst,const float * src1,const float * src2,size_t count)103 void abs_div3(float *dst, const float *src1, const float *src2, size_t count) 104 { 105 for (size_t i=0; i<count; ++i) 106 dst[i] = src1[i] / fabs(src2[i]); 107 } 108 abs_rdiv3(float * dst,const float * src1,const float * src2,size_t count)109 void abs_rdiv3(float *dst, const float *src1, const float *src2, size_t count) 110 { 111 for (size_t i=0; i<count; ++i) 112 dst[i] = fabs(src2[i]) / src1[i]; 113 } 114 } 115 116 117 #endif /* INCLUDE_DSP_ARCH_NATIVE_PMATH_ABS_VV_H_ */ 118