/src/aac/libFDK/include/fixpoint_math.h
Line  | Count  | Source  | 
1  |  | /* -----------------------------------------------------------------------------  | 
2  |  | Software License for The Fraunhofer FDK AAC Codec Library for Android  | 
3  |  |  | 
4  |  | © Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  | 
5  |  | Forschung e.V. All rights reserved.  | 
6  |  |  | 
7  |  |  1.    INTRODUCTION  | 
8  |  | The Fraunhofer FDK AAC Codec Library for Android ("FDK AAC Codec") is software | 
9  |  | that implements the MPEG Advanced Audio Coding ("AAC") encoding and decoding | 
10  |  | scheme for digital audio. This FDK AAC Codec software is intended to be used on  | 
11  |  | a wide variety of Android devices.  | 
12  |  |  | 
13  |  | AAC's HE-AAC and HE-AAC v2 versions are regarded as today's most efficient  | 
14  |  | general perceptual audio codecs. AAC-ELD is considered the best-performing  | 
15  |  | full-bandwidth communications codec by independent studies and is widely  | 
16  |  | deployed. AAC has been standardized by ISO and IEC as part of the MPEG  | 
17  |  | specifications.  | 
18  |  |  | 
19  |  | Patent licenses for necessary patent claims for the FDK AAC Codec (including  | 
20  |  | those of Fraunhofer) may be obtained through Via Licensing  | 
21  |  | (www.vialicensing.com) or through the respective patent owners individually for  | 
22  |  | the purpose of encoding or decoding bit streams in products that are compliant  | 
23  |  | with the ISO/IEC MPEG audio standards. Please note that most manufacturers of  | 
24  |  | Android devices already license these patent claims through Via Licensing or  | 
25  |  | directly from the patent owners, and therefore FDK AAC Codec software may  | 
26  |  | already be covered under those patent licenses when it is used for those  | 
27  |  | licensed purposes only.  | 
28  |  |  | 
29  |  | Commercially-licensed AAC software libraries, including floating-point versions  | 
30  |  | with enhanced sound quality, are also available from Fraunhofer. Users are  | 
31  |  | encouraged to check the Fraunhofer website for additional applications  | 
32  |  | information and documentation.  | 
33  |  |  | 
34  |  | 2.    COPYRIGHT LICENSE  | 
35  |  |  | 
36  |  | Redistribution and use in source and binary forms, with or without modification,  | 
37  |  | are permitted without payment of copyright license fees provided that you  | 
38  |  | satisfy the following conditions:  | 
39  |  |  | 
40  |  | You must retain the complete text of this software license in redistributions of  | 
41  |  | the FDK AAC Codec or your modifications thereto in source code form.  | 
42  |  |  | 
43  |  | You must retain the complete text of this software license in the documentation  | 
44  |  | and/or other materials provided with redistributions of the FDK AAC Codec or  | 
45  |  | your modifications thereto in binary form. You must make available free of  | 
46  |  | charge copies of the complete source code of the FDK AAC Codec and your  | 
47  |  | modifications thereto to recipients of copies in binary form.  | 
48  |  |  | 
49  |  | The name of Fraunhofer may not be used to endorse or promote products derived  | 
50  |  | from this library without prior written permission.  | 
51  |  |  | 
52  |  | You may not charge copyright license fees for anyone to use, copy or distribute  | 
53  |  | the FDK AAC Codec software or your modifications thereto.  | 
54  |  |  | 
55  |  | Your modified versions of the FDK AAC Codec must carry prominent notices stating  | 
56  |  | that you changed the software and the date of any change. For modified versions  | 
57  |  | of the FDK AAC Codec, the term "Fraunhofer FDK AAC Codec Library for Android"  | 
58  |  | must be replaced by the term "Third-Party Modified Version of the Fraunhofer FDK  | 
59  |  | AAC Codec Library for Android."  | 
60  |  |  | 
61  |  | 3.    NO PATENT LICENSE  | 
62  |  |  | 
63  |  | NO EXPRESS OR IMPLIED LICENSES TO ANY PATENT CLAIMS, including without  | 
64  |  | limitation the patents of Fraunhofer, ARE GRANTED BY THIS SOFTWARE LICENSE.  | 
65  |  | Fraunhofer provides no warranty of patent non-infringement with respect to this  | 
66  |  | software.  | 
67  |  |  | 
68  |  | You may use this FDK AAC Codec software or modifications thereto only for  | 
69  |  | purposes that are authorized by appropriate patent licenses.  | 
70  |  |  | 
71  |  | 4.    DISCLAIMER  | 
72  |  |  | 
73  |  | This FDK AAC Codec software is provided by Fraunhofer on behalf of the copyright  | 
74  |  | holders and contributors "AS IS" and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES,  | 
75  |  | including but not limited to the implied warranties of merchantability and  | 
76  |  | fitness for a particular purpose. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR  | 
77  |  | CONTRIBUTORS BE LIABLE for any direct, indirect, incidental, special, exemplary,  | 
78  |  | or consequential damages, including but not limited to procurement of substitute  | 
79  |  | goods or services; loss of use, data, or profits, or business interruption,  | 
80  |  | however caused and on any theory of liability, whether in contract, strict  | 
81  |  | liability, or tort (including negligence), arising in any way out of the use of  | 
82  |  | this software, even if advised of the possibility of such damage.  | 
83  |  |  | 
84  |  | 5.    CONTACT INFORMATION  | 
85  |  |  | 
86  |  | Fraunhofer Institute for Integrated Circuits IIS  | 
87  |  | Attention: Audio and Multimedia Departments - FDK AAC LL  | 
88  |  | Am Wolfsmantel 33  | 
89  |  | 91058 Erlangen, Germany  | 
90  |  |  | 
91  |  | www.iis.fraunhofer.de/amm  | 
92  |  | amm-info@iis.fraunhofer.de  | 
93  |  | ----------------------------------------------------------------------------- */  | 
94  |  |  | 
95  |  | /******************* Library for basic calculation routines ********************  | 
96  |  |  | 
97  |  |    Author(s):   M. Gayer  | 
98  |  |  | 
99  |  |    Description: Fixed point specific mathematical functions  | 
100  |  |  | 
101  |  | *******************************************************************************/  | 
102  |  |  | 
103  |  | #ifndef FIXPOINT_MATH_H  | 
104  |  | #define FIXPOINT_MATH_H  | 
105  |  |  | 
106  |  | #include "common_fix.h"  | 
107  |  | #include "scale.h"  | 
108  |  |  | 
109  |  | /*  | 
110  |  |  * Data definitions  | 
111  |  |  */  | 
112  |  |  | 
113  |  | #define LD_DATA_SCALING (64.0f)  | 
114  | 272k  | #define LD_DATA_SHIFT 6 /* pow(2, LD_DATA_SHIFT) = LD_DATA_SCALING */  | 
115  |  |  | 
116  |  | #define MAX_LD_PRECISION 10  | 
117  | 81.0M  | #define LD_PRECISION 10  | 
118  |  |  | 
119  |  | /* Taylor series coefficients for ln(1-x), centered at 0 (MacLaurin polynomial).  | 
120  |  |  */  | 
121  |  | #ifndef LDCOEFF_16BIT  | 
122  |  | LNK_SECTION_CONSTDATA_L1  | 
123  |  | static const FIXP_DBL ldCoeff[MAX_LD_PRECISION] = { | 
124  |  |     FL2FXCONST_DBL(-1.0),       FL2FXCONST_DBL(-1.0 / 2.0),  | 
125  |  |     FL2FXCONST_DBL(-1.0 / 3.0), FL2FXCONST_DBL(-1.0 / 4.0),  | 
126  |  |     FL2FXCONST_DBL(-1.0 / 5.0), FL2FXCONST_DBL(-1.0 / 6.0),  | 
127  |  |     FL2FXCONST_DBL(-1.0 / 7.0), FL2FXCONST_DBL(-1.0 / 8.0),  | 
128  |  |     FL2FXCONST_DBL(-1.0 / 9.0), FL2FXCONST_DBL(-1.0 / 10.0)};  | 
129  |  | #else  /* LDCOEFF_16BIT */  | 
130  |  | LNK_SECTION_CONSTDATA_L1  | 
131  |  | static const FIXP_SGL ldCoeff[MAX_LD_PRECISION] = { | 
132  |  |     FL2FXCONST_SGL(-1.0),       FL2FXCONST_SGL(-1.0 / 2.0),  | 
133  |  |     FL2FXCONST_SGL(-1.0 / 3.0), FL2FXCONST_SGL(-1.0 / 4.0),  | 
134  |  |     FL2FXCONST_SGL(-1.0 / 5.0), FL2FXCONST_SGL(-1.0 / 6.0),  | 
135  |  |     FL2FXCONST_SGL(-1.0 / 7.0), FL2FXCONST_SGL(-1.0 / 8.0),  | 
136  |  |     FL2FXCONST_SGL(-1.0 / 9.0), FL2FXCONST_SGL(-1.0 / 10.0)};  | 
137  |  | #endif /* LDCOEFF_16BIT */  | 
138  |  |  | 
139  |  | /*****************************************************************************  | 
140  |  |  | 
141  |  |     functionname: invSqrtNorm2  | 
142  |  |     description:  delivers 1/sqrt(op) normalized to .5...1 and the shift value  | 
143  |  | of the OUTPUT  | 
144  |  |  | 
145  |  | *****************************************************************************/  | 
146  |  | #define SQRT_BITS 7  | 
147  |  | #define SQRT_VALUES (128 + 2)  | 
148  |  | #define SQRT_BITS_MASK 0x7f  | 
149  |  | #define SQRT_FRACT_BITS_MASK 0x007FFFFF  | 
150  |  |  | 
151  |  | extern const FIXP_DBL invSqrtTab[SQRT_VALUES];  | 
152  |  |  | 
153  |  | /*  | 
154  |  |  * Hardware specific implementations  | 
155  |  |  */  | 
156  |  |  | 
157  |  | #if defined(__x86__)  | 
158  |  | #include "x86/fixpoint_math_x86.h"  | 
159  |  | #endif /* target architecture selector */  | 
160  |  |  | 
161  |  | /*  | 
162  |  |  * Fallback implementations  | 
163  |  |  */  | 
164  |  | #if !defined(FUNCTION_fIsLessThan)  | 
165  |  | /**  | 
166  |  |  * \brief Compares two fixpoint values incl. scaling.  | 
167  |  |  * \param a_m mantissa of the first input value.  | 
168  |  |  * \param a_e exponent of the first input value.  | 
169  |  |  * \param b_m mantissa of the second input value.  | 
170  |  |  * \param b_e exponent of the second input value.  | 
171  |  |  * \return non-zero if (a_m*2^a_e) < (b_m*2^b_e), 0 otherwise  | 
172  |  |  */  | 
173  | 545k  | FDK_INLINE INT fIsLessThan(FIXP_DBL a_m, INT a_e, FIXP_DBL b_m, INT b_e) { | 
174  | 545k  |   INT n;  | 
175  |  |  | 
176  | 545k  |   n = fixnorm_D(a_m);  | 
177  | 545k  |   a_m <<= n;  | 
178  | 545k  |   a_e -= n;  | 
179  |  |  | 
180  | 545k  |   n = fixnorm_D(b_m);  | 
181  | 545k  |   b_m <<= n;  | 
182  | 545k  |   b_e -= n;  | 
183  |  |  | 
184  | 545k  |   if (a_m == (FIXP_DBL)0) a_e = b_e;  | 
185  | 545k  |   if (b_m == (FIXP_DBL)0) b_e = a_e;  | 
186  |  |  | 
187  | 545k  |   if (a_e > b_e) { | 
188  | 480k  |     return ((b_m >> fMin(a_e - b_e, DFRACT_BITS - 1)) > a_m);  | 
189  | 480k  |   } else { | 
190  | 65.3k  |     return ((a_m >> fMin(b_e - a_e, DFRACT_BITS - 1)) < b_m);  | 
191  | 65.3k  |   }  | 
192  | 545k  | } Unexecuted instantiation: FDK_bitbuffer.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: FDK_decorrelate.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: FDK_delay.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: FDK_drcDecLib.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: FDK_hybrid.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: FDK_lpc.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: FDK_qmf_domain.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: FDK_tools_rom.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: FDK_trigFcts.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: HFgen_preFlat.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: aacEnc_ram.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: aacEnc_rom.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: aac_ram.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: aac_rom.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: aacdec_drc.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: aacdec_hcr.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: aacdec_hcr_bit.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: aacdec_hcrs.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: aacdec_pns.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: aacdec_tns.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: aacdecoder.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: aacdecoder_lib.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: aacenc.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: aacenc_lib.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: aacenc_pns.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: aacenc_tns.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: ac_arith_coder.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: adj_thr.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: autocorr2nd.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: band_nrg.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: bandwidth.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: bit_cnt.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: bit_sbr.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: bitenc.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: block.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: block_switch.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: channel.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: channel_map.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: channelinfo.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: chaosmeasure.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: code_env.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: conceal.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: dct.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: drcDec_gainDecoder.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: drcDec_reader.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: drcDec_rom.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: drcDec_selectionProcess.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: drcDec_tools.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: drcGainDec_init.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: drcGainDec_preprocess.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: drcGainDec_process.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: dyn_bits.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: env_bit.cpp:fIsLessThan(int, int, int, int) env_calc.cpp:fIsLessThan(int, int, int, int) Line  | Count  | Source  |  173  | 545k  | FDK_INLINE INT fIsLessThan(FIXP_DBL a_m, INT a_e, FIXP_DBL b_m, INT b_e) { |  174  | 545k  |   INT n;  |  175  |  |  |  176  | 545k  |   n = fixnorm_D(a_m);  |  177  | 545k  |   a_m <<= n;  |  178  | 545k  |   a_e -= n;  |  179  |  |  |  180  | 545k  |   n = fixnorm_D(b_m);  |  181  | 545k  |   b_m <<= n;  |  182  | 545k  |   b_e -= n;  |  183  |  |  |  184  | 545k  |   if (a_m == (FIXP_DBL)0) a_e = b_e;  |  185  | 545k  |   if (b_m == (FIXP_DBL)0) b_e = a_e;  |  186  |  |  |  187  | 545k  |   if (a_e > b_e) { |  188  | 480k  |     return ((b_m >> fMin(a_e - b_e, DFRACT_BITS - 1)) > a_m);  |  189  | 480k  |   } else { |  190  | 65.3k  |     return ((a_m >> fMin(b_e - a_e, DFRACT_BITS - 1)) < b_m);  |  191  | 65.3k  |   }  |  192  | 545k  | }  |  
 Unexecuted instantiation: env_dec.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: env_est.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: env_extr.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: fft.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: fft_rad2.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: fixpoint_math.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: fram_gen.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: grp_data.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: hbe.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: huff_dec.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: intensity.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: invf_est.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: ldfiltbank.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: limiter.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: line_pe.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: lpp_tran.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: mdct.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: metadata_compressor.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: metadata_main.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: mh_det.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: mps_main.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: ms_stereo.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: nf_est.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: nlc_dec.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: noisedet.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: pcm_utils.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: pcmdmx_lib.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: pnsparam.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: pre_echo_control.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: ps_bitenc.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: ps_encode.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: ps_main.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: psbitdec.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: psdec.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: psdec_drm.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: psdecrom_drm.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: psy_configuration.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: psy_main.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: pulsedata.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: pvc_dec.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: qc_main.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: qmf.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: quantize.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: resampler.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: rvlc.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: rvlcbit.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: rvlcconceal.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sac_bitdec.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sac_calcM1andM2.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sac_dec.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sac_dec_conceal.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sac_dec_lib.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sac_process.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sac_qmf.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sac_reshapeBBEnv.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sac_rom.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sac_smoothing.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sac_stp.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sac_tsd.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sacenc_bitstream.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sacenc_dmx_tdom_enh.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sacenc_filter.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sacenc_framewindowing.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sacenc_lib.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sacenc_nlc_enc.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sacenc_onsetdetect.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sacenc_paramextract.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sacenc_staticgain.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sacenc_tree.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sacenc_vectorfunctions.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sbr_deb.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sbr_dec.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sbr_encoder.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sbr_misc.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sbr_ram.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sbr_rom.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sbrdec_drc.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sbrdec_freq_sca.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sbrdecoder.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sbrenc_freq_sca.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sbrenc_ram.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sbrenc_rom.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: scale.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: sf_estim.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: spreading.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: stereo.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: ton_corr.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: tonality.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: tpdec_asc.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: tran_det.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: transform.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: usacdec_ace_d4t64.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: usacdec_ace_ltp.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: usacdec_acelp.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: usacdec_fac.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: usacdec_lpc.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: usacdec_lpd.cpp:fIsLessThan(int, int, int, int) Unexecuted instantiation: usacdec_rom.cpp:fIsLessThan(int, int, int, int)  | 
193  |  |  | 
194  | 0  | FDK_INLINE INT fIsLessThan(FIXP_SGL a_m, INT a_e, FIXP_SGL b_m, INT b_e) { | 
195  | 0  |   INT n;  | 
196  | 0  | 
  | 
197  | 0  |   n = fixnorm_S(a_m);  | 
198  | 0  |   a_m <<= n;  | 
199  | 0  |   a_e -= n;  | 
200  | 0  | 
  | 
201  | 0  |   n = fixnorm_S(b_m);  | 
202  | 0  |   b_m <<= n;  | 
203  | 0  |   b_e -= n;  | 
204  | 0  | 
  | 
205  | 0  |   if (a_m == (FIXP_SGL)0) a_e = b_e;  | 
206  | 0  |   if (b_m == (FIXP_SGL)0) b_e = a_e;  | 
207  | 0  | 
  | 
208  | 0  |   if (a_e > b_e) { | 
209  | 0  |     return ((b_m >> fMin(a_e - b_e, FRACT_BITS - 1)) > a_m);  | 
210  | 0  |   } else { | 
211  | 0  |     return ((a_m >> fMin(b_e - a_e, FRACT_BITS - 1)) < b_m);  | 
212  | 0  |   }  | 
213  | 0  | } Unexecuted instantiation: FDK_bitbuffer.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: FDK_decorrelate.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: FDK_delay.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: FDK_drcDecLib.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: FDK_hybrid.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: FDK_lpc.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: FDK_qmf_domain.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: FDK_tools_rom.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: FDK_trigFcts.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: HFgen_preFlat.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: aacEnc_ram.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: aacEnc_rom.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: aac_ram.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: aac_rom.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: aacdec_drc.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: aacdec_hcr.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: aacdec_hcr_bit.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: aacdec_hcrs.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: aacdec_pns.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: aacdec_tns.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: aacdecoder.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: aacdecoder_lib.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: aacenc.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: aacenc_lib.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: aacenc_pns.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: aacenc_tns.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: ac_arith_coder.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: adj_thr.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: autocorr2nd.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: band_nrg.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: bandwidth.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: bit_cnt.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: bit_sbr.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: bitenc.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: block.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: block_switch.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: channel.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: channel_map.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: channelinfo.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: chaosmeasure.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: code_env.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: conceal.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: dct.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: drcDec_gainDecoder.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: drcDec_reader.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: drcDec_rom.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: drcDec_selectionProcess.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: drcDec_tools.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: drcGainDec_init.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: drcGainDec_preprocess.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: drcGainDec_process.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: dyn_bits.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: env_bit.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: env_calc.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: env_dec.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: env_est.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: env_extr.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: fft.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: fft_rad2.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: fixpoint_math.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: fram_gen.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: grp_data.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: hbe.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: huff_dec.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: intensity.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: invf_est.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: ldfiltbank.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: limiter.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: line_pe.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: lpp_tran.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: mdct.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: metadata_compressor.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: metadata_main.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: mh_det.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: mps_main.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: ms_stereo.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: nf_est.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: nlc_dec.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: noisedet.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: pcm_utils.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: pcmdmx_lib.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: pnsparam.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: pre_echo_control.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: ps_bitenc.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: ps_encode.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: ps_main.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: psbitdec.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: psdec.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: psdec_drm.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: psdecrom_drm.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: psy_configuration.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: psy_main.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: pulsedata.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: pvc_dec.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: qc_main.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: qmf.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: quantize.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: resampler.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: rvlc.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: rvlcbit.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: rvlcconceal.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sac_bitdec.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sac_calcM1andM2.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sac_dec.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sac_dec_conceal.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sac_dec_lib.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sac_process.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sac_qmf.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sac_reshapeBBEnv.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sac_rom.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sac_smoothing.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sac_stp.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sac_tsd.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sacenc_bitstream.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sacenc_dmx_tdom_enh.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sacenc_filter.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sacenc_framewindowing.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sacenc_lib.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sacenc_nlc_enc.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sacenc_onsetdetect.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sacenc_paramextract.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sacenc_staticgain.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sacenc_tree.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sacenc_vectorfunctions.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sbr_deb.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sbr_dec.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sbr_encoder.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sbr_misc.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sbr_ram.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sbr_rom.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sbrdec_drc.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sbrdec_freq_sca.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sbrdecoder.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sbrenc_freq_sca.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sbrenc_ram.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sbrenc_rom.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: scale.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: sf_estim.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: spreading.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: stereo.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: ton_corr.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: tonality.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: tpdec_asc.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: tran_det.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: transform.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: usacdec_ace_d4t64.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: usacdec_ace_ltp.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: usacdec_acelp.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: usacdec_fac.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: usacdec_lpc.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: usacdec_lpd.cpp:fIsLessThan(short, int, short, int) Unexecuted instantiation: usacdec_rom.cpp:fIsLessThan(short, int, short, int)  | 
214  |  | #endif  | 
215  |  |  | 
216  |  | /**  | 
217  |  |  * \brief deprecated. Use fLog2() instead.  | 
218  |  |  */  | 
219  | 88.4k  | #define CalcLdData(op) fLog2(op, 0)  | 
220  |  |  | 
221  |  | void LdDataVector(FIXP_DBL *srcVector, FIXP_DBL *destVector, INT number);  | 
222  |  |  | 
223  |  | extern const UINT exp2_tab_long[32];  | 
224  |  | extern const UINT exp2w_tab_long[32];  | 
225  |  | extern const UINT exp2x_tab_long[32];  | 
226  |  |  | 
227  |  | LNK_SECTION_CODE_L1  | 
228  | 57.6k  | FDK_INLINE FIXP_DBL CalcInvLdData(const FIXP_DBL x) { | 
229  | 57.6k  |   int set_zero = (x < FL2FXCONST_DBL(-31.0 / 64.0)) ? 0 : 1;  | 
230  | 57.6k  |   int set_max = (x >= FL2FXCONST_DBL(31.0 / 64.0)) | (x == FL2FXCONST_DBL(0.0));  | 
231  |  |  | 
232  | 57.6k  |   FIXP_SGL frac = (FIXP_SGL)((LONG)x & 0x3FF);  | 
233  | 57.6k  |   UINT index3 = (UINT)(LONG)(x >> 10) & 0x1F;  | 
234  | 57.6k  |   UINT index2 = (UINT)(LONG)(x >> 15) & 0x1F;  | 
235  | 57.6k  |   UINT index1 = (UINT)(LONG)(x >> 20) & 0x1F;  | 
236  | 57.6k  |   int exp = fMin(31, ((x > FL2FXCONST_DBL(0.0f)) ? (31 - (int)(x >> 25))  | 
237  | 57.6k  |                                                  : (int)(-(x >> 25))));  | 
238  |  |  | 
239  | 57.6k  |   UINT lookup1 = exp2_tab_long[index1] * set_zero;  | 
240  | 57.6k  |   UINT lookup2 = exp2w_tab_long[index2];  | 
241  | 57.6k  |   UINT lookup3 = exp2x_tab_long[index3];  | 
242  | 57.6k  |   UINT lookup3f =  | 
243  | 57.6k  |       lookup3 + (UINT)(LONG)fMultDiv2((FIXP_DBL)(0x0016302F), (FIXP_SGL)frac);  | 
244  |  |  | 
245  | 57.6k  |   UINT lookup12 = (UINT)(LONG)fMult((FIXP_DBL)lookup1, (FIXP_DBL)lookup2);  | 
246  | 57.6k  |   UINT lookup = (UINT)(LONG)fMult((FIXP_DBL)lookup12, (FIXP_DBL)lookup3f);  | 
247  |  |  | 
248  | 57.6k  |   FIXP_DBL retVal = (lookup << 3) >> exp;  | 
249  |  |  | 
250  | 57.6k  |   if (set_max) { | 
251  | 0  |     retVal = (FIXP_DBL)MAXVAL_DBL;  | 
252  | 0  |   }  | 
253  |  |  | 
254  | 57.6k  |   return retVal;  | 
255  | 57.6k  | } Unexecuted instantiation: FDK_bitbuffer.cpp:CalcInvLdData(int) Unexecuted instantiation: FDK_decorrelate.cpp:CalcInvLdData(int) Unexecuted instantiation: FDK_delay.cpp:CalcInvLdData(int) Unexecuted instantiation: FDK_drcDecLib.cpp:CalcInvLdData(int) Unexecuted instantiation: FDK_hybrid.cpp:CalcInvLdData(int) Unexecuted instantiation: FDK_lpc.cpp:CalcInvLdData(int) Unexecuted instantiation: FDK_qmf_domain.cpp:CalcInvLdData(int) Unexecuted instantiation: FDK_tools_rom.cpp:CalcInvLdData(int) Unexecuted instantiation: FDK_trigFcts.cpp:CalcInvLdData(int) Unexecuted instantiation: HFgen_preFlat.cpp:CalcInvLdData(int) Unexecuted instantiation: aacEnc_ram.cpp:CalcInvLdData(int) Unexecuted instantiation: aacEnc_rom.cpp:CalcInvLdData(int) Unexecuted instantiation: aac_ram.cpp:CalcInvLdData(int) Unexecuted instantiation: aac_rom.cpp:CalcInvLdData(int) Unexecuted instantiation: aacdec_drc.cpp:CalcInvLdData(int) Unexecuted instantiation: aacdec_hcr.cpp:CalcInvLdData(int) Unexecuted instantiation: aacdec_hcr_bit.cpp:CalcInvLdData(int) Unexecuted instantiation: aacdec_hcrs.cpp:CalcInvLdData(int) Unexecuted instantiation: aacdec_pns.cpp:CalcInvLdData(int) Unexecuted instantiation: aacdec_tns.cpp:CalcInvLdData(int) Unexecuted instantiation: aacdecoder.cpp:CalcInvLdData(int) Unexecuted instantiation: aacdecoder_lib.cpp:CalcInvLdData(int) Unexecuted instantiation: aacenc.cpp:CalcInvLdData(int) Unexecuted instantiation: aacenc_lib.cpp:CalcInvLdData(int) Unexecuted instantiation: aacenc_pns.cpp:CalcInvLdData(int) Unexecuted instantiation: aacenc_tns.cpp:CalcInvLdData(int) Unexecuted instantiation: ac_arith_coder.cpp:CalcInvLdData(int) Unexecuted instantiation: adj_thr.cpp:CalcInvLdData(int) Unexecuted instantiation: autocorr2nd.cpp:CalcInvLdData(int) Unexecuted instantiation: band_nrg.cpp:CalcInvLdData(int) Unexecuted instantiation: bandwidth.cpp:CalcInvLdData(int) Unexecuted instantiation: bit_cnt.cpp:CalcInvLdData(int) Unexecuted instantiation: bit_sbr.cpp:CalcInvLdData(int) Unexecuted instantiation: bitenc.cpp:CalcInvLdData(int) Unexecuted instantiation: block.cpp:CalcInvLdData(int) Unexecuted instantiation: block_switch.cpp:CalcInvLdData(int) Unexecuted instantiation: channel.cpp:CalcInvLdData(int) Unexecuted instantiation: channel_map.cpp:CalcInvLdData(int) Unexecuted instantiation: channelinfo.cpp:CalcInvLdData(int) Unexecuted instantiation: chaosmeasure.cpp:CalcInvLdData(int) Unexecuted instantiation: code_env.cpp:CalcInvLdData(int) Unexecuted instantiation: conceal.cpp:CalcInvLdData(int) Unexecuted instantiation: dct.cpp:CalcInvLdData(int) Unexecuted instantiation: drcDec_gainDecoder.cpp:CalcInvLdData(int) Unexecuted instantiation: drcDec_reader.cpp:CalcInvLdData(int) Unexecuted instantiation: drcDec_rom.cpp:CalcInvLdData(int) Unexecuted instantiation: drcDec_selectionProcess.cpp:CalcInvLdData(int) Unexecuted instantiation: drcDec_tools.cpp:CalcInvLdData(int) Unexecuted instantiation: drcGainDec_init.cpp:CalcInvLdData(int) Unexecuted instantiation: drcGainDec_preprocess.cpp:CalcInvLdData(int) Unexecuted instantiation: drcGainDec_process.cpp:CalcInvLdData(int) Unexecuted instantiation: dyn_bits.cpp:CalcInvLdData(int) Unexecuted instantiation: env_bit.cpp:CalcInvLdData(int) Unexecuted instantiation: env_calc.cpp:CalcInvLdData(int) Unexecuted instantiation: env_dec.cpp:CalcInvLdData(int) Unexecuted instantiation: env_est.cpp:CalcInvLdData(int) Unexecuted instantiation: env_extr.cpp:CalcInvLdData(int) Unexecuted instantiation: fft.cpp:CalcInvLdData(int) Unexecuted instantiation: fft_rad2.cpp:CalcInvLdData(int) Unexecuted instantiation: fixpoint_math.cpp:CalcInvLdData(int) Unexecuted instantiation: fram_gen.cpp:CalcInvLdData(int) Unexecuted instantiation: grp_data.cpp:CalcInvLdData(int) Unexecuted instantiation: hbe.cpp:CalcInvLdData(int) Unexecuted instantiation: huff_dec.cpp:CalcInvLdData(int) Unexecuted instantiation: intensity.cpp:CalcInvLdData(int) Unexecuted instantiation: invf_est.cpp:CalcInvLdData(int) Unexecuted instantiation: ldfiltbank.cpp:CalcInvLdData(int) Unexecuted instantiation: limiter.cpp:CalcInvLdData(int) Unexecuted instantiation: line_pe.cpp:CalcInvLdData(int) Unexecuted instantiation: lpp_tran.cpp:CalcInvLdData(int) Unexecuted instantiation: mdct.cpp:CalcInvLdData(int) Unexecuted instantiation: metadata_compressor.cpp:CalcInvLdData(int) Unexecuted instantiation: metadata_main.cpp:CalcInvLdData(int) Unexecuted instantiation: mh_det.cpp:CalcInvLdData(int) Unexecuted instantiation: mps_main.cpp:CalcInvLdData(int) Unexecuted instantiation: ms_stereo.cpp:CalcInvLdData(int) Unexecuted instantiation: nf_est.cpp:CalcInvLdData(int) Unexecuted instantiation: nlc_dec.cpp:CalcInvLdData(int) Unexecuted instantiation: noisedet.cpp:CalcInvLdData(int) Unexecuted instantiation: pcm_utils.cpp:CalcInvLdData(int) Unexecuted instantiation: pcmdmx_lib.cpp:CalcInvLdData(int) Unexecuted instantiation: pnsparam.cpp:CalcInvLdData(int) Unexecuted instantiation: pre_echo_control.cpp:CalcInvLdData(int) Unexecuted instantiation: ps_bitenc.cpp:CalcInvLdData(int) Unexecuted instantiation: ps_encode.cpp:CalcInvLdData(int) Unexecuted instantiation: ps_main.cpp:CalcInvLdData(int) Unexecuted instantiation: psbitdec.cpp:CalcInvLdData(int) Unexecuted instantiation: psdec.cpp:CalcInvLdData(int) Unexecuted instantiation: psdec_drm.cpp:CalcInvLdData(int) Unexecuted instantiation: psdecrom_drm.cpp:CalcInvLdData(int) Unexecuted instantiation: psy_configuration.cpp:CalcInvLdData(int) Unexecuted instantiation: psy_main.cpp:CalcInvLdData(int) Unexecuted instantiation: pulsedata.cpp:CalcInvLdData(int) Unexecuted instantiation: pvc_dec.cpp:CalcInvLdData(int) Unexecuted instantiation: qc_main.cpp:CalcInvLdData(int) Unexecuted instantiation: qmf.cpp:CalcInvLdData(int) Unexecuted instantiation: quantize.cpp:CalcInvLdData(int) Unexecuted instantiation: resampler.cpp:CalcInvLdData(int) Unexecuted instantiation: rvlc.cpp:CalcInvLdData(int) Unexecuted instantiation: rvlcbit.cpp:CalcInvLdData(int) Unexecuted instantiation: rvlcconceal.cpp:CalcInvLdData(int) Unexecuted instantiation: sac_bitdec.cpp:CalcInvLdData(int) Unexecuted instantiation: sac_calcM1andM2.cpp:CalcInvLdData(int) Unexecuted instantiation: sac_dec.cpp:CalcInvLdData(int) Unexecuted instantiation: sac_dec_conceal.cpp:CalcInvLdData(int) Unexecuted instantiation: sac_dec_lib.cpp:CalcInvLdData(int) Unexecuted instantiation: sac_process.cpp:CalcInvLdData(int) Unexecuted instantiation: sac_qmf.cpp:CalcInvLdData(int) Unexecuted instantiation: sac_reshapeBBEnv.cpp:CalcInvLdData(int) Unexecuted instantiation: sac_rom.cpp:CalcInvLdData(int) Unexecuted instantiation: sac_smoothing.cpp:CalcInvLdData(int) sac_stp.cpp:CalcInvLdData(int) Line  | Count  | Source  |  228  | 57.6k  | FDK_INLINE FIXP_DBL CalcInvLdData(const FIXP_DBL x) { |  229  | 57.6k  |   int set_zero = (x < FL2FXCONST_DBL(-31.0 / 64.0)) ? 0 : 1;  |  230  | 57.6k  |   int set_max = (x >= FL2FXCONST_DBL(31.0 / 64.0)) | (x == FL2FXCONST_DBL(0.0));  |  231  |  |  |  232  | 57.6k  |   FIXP_SGL frac = (FIXP_SGL)((LONG)x & 0x3FF);  |  233  | 57.6k  |   UINT index3 = (UINT)(LONG)(x >> 10) & 0x1F;  |  234  | 57.6k  |   UINT index2 = (UINT)(LONG)(x >> 15) & 0x1F;  |  235  | 57.6k  |   UINT index1 = (UINT)(LONG)(x >> 20) & 0x1F;  |  236  | 57.6k  |   int exp = fMin(31, ((x > FL2FXCONST_DBL(0.0f)) ? (31 - (int)(x >> 25))  |  237  | 57.6k  |                                                  : (int)(-(x >> 25))));  |  238  |  |  |  239  | 57.6k  |   UINT lookup1 = exp2_tab_long[index1] * set_zero;  |  240  | 57.6k  |   UINT lookup2 = exp2w_tab_long[index2];  |  241  | 57.6k  |   UINT lookup3 = exp2x_tab_long[index3];  |  242  | 57.6k  |   UINT lookup3f =  |  243  | 57.6k  |       lookup3 + (UINT)(LONG)fMultDiv2((FIXP_DBL)(0x0016302F), (FIXP_SGL)frac);  |  244  |  |  |  245  | 57.6k  |   UINT lookup12 = (UINT)(LONG)fMult((FIXP_DBL)lookup1, (FIXP_DBL)lookup2);  |  246  | 57.6k  |   UINT lookup = (UINT)(LONG)fMult((FIXP_DBL)lookup12, (FIXP_DBL)lookup3f);  |  247  |  |  |  248  | 57.6k  |   FIXP_DBL retVal = (lookup << 3) >> exp;  |  249  |  |  |  250  | 57.6k  |   if (set_max) { |  251  | 0  |     retVal = (FIXP_DBL)MAXVAL_DBL;  |  252  | 0  |   }  |  253  |  |  |  254  | 57.6k  |   return retVal;  |  255  | 57.6k  | }  |  
 Unexecuted instantiation: sac_tsd.cpp:CalcInvLdData(int) Unexecuted instantiation: sacenc_bitstream.cpp:CalcInvLdData(int) Unexecuted instantiation: sacenc_dmx_tdom_enh.cpp:CalcInvLdData(int) Unexecuted instantiation: sacenc_filter.cpp:CalcInvLdData(int) Unexecuted instantiation: sacenc_framewindowing.cpp:CalcInvLdData(int) Unexecuted instantiation: sacenc_lib.cpp:CalcInvLdData(int) Unexecuted instantiation: sacenc_nlc_enc.cpp:CalcInvLdData(int) Unexecuted instantiation: sacenc_onsetdetect.cpp:CalcInvLdData(int) Unexecuted instantiation: sacenc_paramextract.cpp:CalcInvLdData(int) Unexecuted instantiation: sacenc_staticgain.cpp:CalcInvLdData(int) Unexecuted instantiation: sacenc_tree.cpp:CalcInvLdData(int) Unexecuted instantiation: sacenc_vectorfunctions.cpp:CalcInvLdData(int) Unexecuted instantiation: sbr_deb.cpp:CalcInvLdData(int) Unexecuted instantiation: sbr_dec.cpp:CalcInvLdData(int) Unexecuted instantiation: sbr_encoder.cpp:CalcInvLdData(int) Unexecuted instantiation: sbr_misc.cpp:CalcInvLdData(int) Unexecuted instantiation: sbr_ram.cpp:CalcInvLdData(int) Unexecuted instantiation: sbr_rom.cpp:CalcInvLdData(int) Unexecuted instantiation: sbrdec_drc.cpp:CalcInvLdData(int) Unexecuted instantiation: sbrdec_freq_sca.cpp:CalcInvLdData(int) Unexecuted instantiation: sbrdecoder.cpp:CalcInvLdData(int) Unexecuted instantiation: sbrenc_freq_sca.cpp:CalcInvLdData(int) Unexecuted instantiation: sbrenc_ram.cpp:CalcInvLdData(int) Unexecuted instantiation: sbrenc_rom.cpp:CalcInvLdData(int) Unexecuted instantiation: scale.cpp:CalcInvLdData(int) Unexecuted instantiation: sf_estim.cpp:CalcInvLdData(int) Unexecuted instantiation: spreading.cpp:CalcInvLdData(int) Unexecuted instantiation: stereo.cpp:CalcInvLdData(int) Unexecuted instantiation: ton_corr.cpp:CalcInvLdData(int) Unexecuted instantiation: tonality.cpp:CalcInvLdData(int) Unexecuted instantiation: tpdec_asc.cpp:CalcInvLdData(int) Unexecuted instantiation: tran_det.cpp:CalcInvLdData(int) Unexecuted instantiation: transform.cpp:CalcInvLdData(int) Unexecuted instantiation: usacdec_ace_d4t64.cpp:CalcInvLdData(int) Unexecuted instantiation: usacdec_ace_ltp.cpp:CalcInvLdData(int) Unexecuted instantiation: usacdec_acelp.cpp:CalcInvLdData(int) Unexecuted instantiation: usacdec_fac.cpp:CalcInvLdData(int) Unexecuted instantiation: usacdec_lpc.cpp:CalcInvLdData(int) Unexecuted instantiation: usacdec_lpd.cpp:CalcInvLdData(int) Unexecuted instantiation: usacdec_rom.cpp:CalcInvLdData(int)  | 
256  |  |  | 
257  |  | void InitLdInt();  | 
258  |  | FIXP_DBL CalcLdInt(INT i);  | 
259  |  |  | 
260  |  | extern const USHORT sqrt_tab[49];  | 
261  |  |  | 
262  | 0  | inline FIXP_DBL sqrtFixp_lookup(FIXP_DBL x) { | 
263  | 0  |   UINT y = (INT)x;  | 
264  | 0  |   UCHAR is_zero = (y == 0);  | 
265  | 0  |   INT zeros = fixnormz_D(y) & 0x1e;  | 
266  | 0  |   y <<= zeros;  | 
267  | 0  |   UINT idx = (y >> 26) - 16;  | 
268  | 0  |   USHORT frac = (y >> 10) & 0xffff;  | 
269  | 0  |   USHORT nfrac = 0xffff ^ frac;  | 
270  | 0  |   UINT t = (UINT)nfrac * sqrt_tab[idx] + (UINT)frac * sqrt_tab[idx + 1];  | 
271  | 0  |   t = t >> (zeros >> 1);  | 
272  | 0  |   return (is_zero ? 0 : t);  | 
273  | 0  | }  | 
274  |  |  | 
275  | 154M  | inline FIXP_DBL sqrtFixp_lookup(FIXP_DBL x, INT *x_e) { | 
276  | 154M  |   UINT y = (INT)x;  | 
277  | 154M  |   INT e;  | 
278  |  |  | 
279  | 154M  |   if (x == (FIXP_DBL)0) { | 
280  | 51.6M  |     return x;  | 
281  | 51.6M  |   }  | 
282  |  |  | 
283  |  |   /* Normalize */  | 
284  | 102M  |   e = fixnormz_D(y);  | 
285  | 102M  |   y <<= e;  | 
286  | 102M  |   e = *x_e - e + 2;  | 
287  |  |  | 
288  |  |   /* Correct odd exponent. */  | 
289  | 102M  |   if (e & 1) { | 
290  | 56.7M  |     y >>= 1;  | 
291  | 56.7M  |     e++;  | 
292  | 56.7M  |   }  | 
293  |  |   /* Get square root */  | 
294  | 102M  |   UINT idx = (y >> 26) - 16;  | 
295  | 102M  |   USHORT frac = (y >> 10) & 0xffff;  | 
296  | 102M  |   USHORT nfrac = 0xffff ^ frac;  | 
297  | 102M  |   UINT t = (UINT)nfrac * sqrt_tab[idx] + (UINT)frac * sqrt_tab[idx + 1];  | 
298  |  |  | 
299  |  |   /* Write back exponent */  | 
300  | 102M  |   *x_e = e >> 1;  | 
301  | 102M  |   return (FIXP_DBL)(LONG)(t >> 1);  | 
302  | 154M  | }  | 
303  |  |  | 
304  |  | void InitInvSqrtTab();  | 
305  |  |  | 
306  |  | #ifndef FUNCTION_invSqrtNorm2  | 
307  |  | /**  | 
308  |  |  * \brief calculate 1.0/sqrt(op)  | 
309  |  |  * \param op_m mantissa of input value.  | 
310  |  |  * \param result_e pointer to return the exponent of the result  | 
311  |  |  * \return mantissa of the result  | 
312  |  |  */  | 
313  |  | /*****************************************************************************  | 
314  |  |   delivers 1/sqrt(op) normalized to .5...1 and the shift value of the OUTPUT,  | 
315  |  |   i.e. the denormalized result is 1/sqrt(op) = invSqrtNorm(op) * 2^(shift)  | 
316  |  |   uses Newton-iteration for approximation  | 
317  |  |       Q(n+1) = Q(n) + Q(n) * (0.5 - 2 * V * Q(n)^2)  | 
318  |  |       with Q = 0.5* V ^-0.5; 0.5 <= V < 1.0  | 
319  |  | *****************************************************************************/  | 
320  |  | static FDK_FORCEINLINE FIXP_DBL invSqrtNorm2(FIXP_DBL op, INT *shift) { | 
321  |  |   FIXP_DBL val = op;  | 
322  |  |   FIXP_DBL reg1, reg2;  | 
323  |  |  | 
324  |  |   if (val == FL2FXCONST_DBL(0.0)) { | 
325  |  |     *shift = 16;  | 
326  |  |     return ((LONG)MAXVAL_DBL); /* maximum positive value */  | 
327  |  |   }  | 
328  |  |  | 
329  |  | #define INVSQRTNORM2_LINEAR_INTERPOLATE  | 
330  |  | #define INVSQRTNORM2_LINEAR_INTERPOLATE_HQ  | 
331  |  |  | 
332  |  |   /* normalize input, calculate shift value */  | 
333  |  |   FDK_ASSERT(val > FL2FXCONST_DBL(0.0));  | 
334  |  |   *shift = fNormz(val) - 1; /* CountLeadingBits() is not necessary here since  | 
335  |  |                                test value is always > 0 */  | 
336  |  |   val <<= *shift;           /* normalized input V */  | 
337  |  |   *shift += 2;              /* bias for exponent */  | 
338  |  |  | 
339  |  | #if defined(INVSQRTNORM2_LINEAR_INTERPOLATE)  | 
340  |  |   INT index =  | 
341  |  |       (INT)(val >> (DFRACT_BITS - 1 - (SQRT_BITS + 1))) & SQRT_BITS_MASK;  | 
342  |  |   FIXP_DBL Fract =  | 
343  |  |       (FIXP_DBL)(((INT)val & SQRT_FRACT_BITS_MASK) << (SQRT_BITS + 1));  | 
344  |  |   FIXP_DBL diff = invSqrtTab[index + 1] - invSqrtTab[index];  | 
345  |  |   reg1 = invSqrtTab[index] + (fMultDiv2(diff, Fract) << 1);  | 
346  |  | #if defined(INVSQRTNORM2_LINEAR_INTERPOLATE_HQ)  | 
347  |  |   /* reg1 = t[i] + (t[i+1]-t[i])*fract ... already computed ...  | 
348  |  |                                        + (1-fract)fract*(t[i+2]-t[i+1])/2 */  | 
349  |  |   if (Fract != (FIXP_DBL)0) { | 
350  |  |     /* fract = fract * (1 - fract) */  | 
351  |  |     Fract = fMultDiv2(Fract, (FIXP_DBL)((ULONG)0x80000000 - (ULONG)Fract)) << 1;  | 
352  |  |     diff = diff - (invSqrtTab[index + 2] - invSqrtTab[index + 1]);  | 
353  |  |     reg1 = fMultAddDiv2(reg1, Fract, diff);  | 
354  |  |   }  | 
355  |  | #endif /* INVSQRTNORM2_LINEAR_INTERPOLATE_HQ */  | 
356  |  | #else  | 
357  |  | #error \  | 
358  |  |     "Either define INVSQRTNORM2_NEWTON_ITERATE or INVSQRTNORM2_LINEAR_INTERPOLATE"  | 
359  |  | #endif  | 
360  |  |   /* calculate the output exponent = input exp/2 */  | 
361  |  |   if (*shift & 0x00000001) { /* odd shift values ? */ | 
362  |  |     /* Note: Do not use rounded value 0x5A82799A to avoid overflow with  | 
363  |  |      * shift-by-2 */  | 
364  |  |     reg2 = (FIXP_DBL)0x5A827999;  | 
365  |  |     /* FL2FXCONST_DBL(0.707106781186547524400844362104849f);*/ /* 1/sqrt(2);  | 
366  |  |                                                                 */  | 
367  |  |     reg1 = fMultDiv2(reg1, reg2) << 2;  | 
368  |  |   }  | 
369  |  |  | 
370  |  |   *shift = *shift >> 1;  | 
371  |  |  | 
372  |  |   return (reg1);  | 
373  |  | }  | 
374  |  | #endif /* FUNCTION_invSqrtNorm2 */  | 
375  |  |  | 
376  |  | #ifndef FUNCTION_sqrtFixp  | 
377  |  | static FDK_FORCEINLINE FIXP_DBL sqrtFixp(FIXP_DBL op) { | 
378  |  |   INT tmp_exp = 0;  | 
379  |  |   FIXP_DBL tmp_inv = invSqrtNorm2(op, &tmp_exp);  | 
380  |  |  | 
381  |  |   FDK_ASSERT(tmp_exp > 0);  | 
382  |  |   return ((FIXP_DBL)(fMultDiv2((op << (tmp_exp - 1)), tmp_inv) << 2));  | 
383  |  | }  | 
384  |  | #endif /* FUNCTION_sqrtFixp */  | 
385  |  |  | 
386  |  | #ifndef FUNCTION_invFixp  | 
387  |  | /**  | 
388  |  |  * \brief calculate 1.0/op  | 
389  |  |  * \param op mantissa of the input value.  | 
390  |  |  * \return mantissa of the result with implicit exponent of 31  | 
391  |  |  * \exceptions are provided for op=0,1 setting max. positive value  | 
392  |  |  */  | 
393  |  | static inline FIXP_DBL invFixp(FIXP_DBL op) { | 
394  |  |   if ((op == (FIXP_DBL)0x00000000) || (op == (FIXP_DBL)0x00000001)) { | 
395  |  |     return ((LONG)MAXVAL_DBL);  | 
396  |  |   }  | 
397  |  |   INT tmp_exp;  | 
398  |  |   FIXP_DBL tmp_inv = invSqrtNorm2(op, &tmp_exp);  | 
399  |  |   FDK_ASSERT((31 - (2 * tmp_exp + 1)) >= 0);  | 
400  |  |   int shift = 31 - (2 * tmp_exp + 1);  | 
401  |  |   tmp_inv = fPow2Div2(tmp_inv);  | 
402  |  |   if (shift) { | 
403  |  |     tmp_inv = ((tmp_inv >> (shift - 1)) + (FIXP_DBL)1) >> 1;  | 
404  |  |   }  | 
405  |  |   return tmp_inv;  | 
406  |  | }  | 
407  |  |  | 
408  |  | /**  | 
409  |  |  * \brief calculate 1.0/(op_m * 2^op_e)  | 
410  |  |  * \param op_m mantissa of the input value.  | 
411  |  |  * \param op_e pointer into were the exponent of the input value is stored, and  | 
412  |  |  * the result will be stored into.  | 
413  |  |  * \return mantissa of the result  | 
414  |  |  */  | 
415  |  | static inline FIXP_DBL invFixp(FIXP_DBL op_m, int *op_e) { | 
416  |  |   if ((op_m == (FIXP_DBL)0x00000000) || (op_m == (FIXP_DBL)0x00000001)) { | 
417  |  |     *op_e = 31 - *op_e;  | 
418  |  |     return ((LONG)MAXVAL_DBL);  | 
419  |  |   }  | 
420  |  |  | 
421  |  |   INT tmp_exp;  | 
422  |  |   FIXP_DBL tmp_inv = invSqrtNorm2(op_m, &tmp_exp);  | 
423  |  |  | 
424  |  |   *op_e = (tmp_exp << 1) - *op_e + 1;  | 
425  |  |   return fPow2Div2(tmp_inv);  | 
426  |  | }  | 
427  |  | #endif /* FUNCTION_invFixp */  | 
428  |  |  | 
429  |  | #ifndef FUNCTION_schur_div  | 
430  |  |  | 
431  |  | /**  | 
432  |  |  * \brief Divide two FIXP_DBL values with given precision.  | 
433  |  |  * \param num dividend  | 
434  |  |  * \param denum divisor  | 
435  |  |  * \param count amount of significant bits of the result (starting to the MSB)  | 
436  |  |  * \return num/divisor  | 
437  |  |  */  | 
438  |  |  | 
439  |  | FIXP_DBL schur_div(FIXP_DBL num, FIXP_DBL denum, INT count);  | 
440  |  |  | 
441  |  | #endif /* FUNCTION_schur_div */  | 
442  |  |  | 
443  |  | FIXP_DBL mul_dbl_sgl_rnd(const FIXP_DBL op1, const FIXP_SGL op2);  | 
444  |  |  | 
445  |  | #ifndef FUNCTION_fMultNorm  | 
446  |  | /**  | 
447  |  |  * \brief multiply two values with normalization, thus max precision.  | 
448  |  |  * Author: Robert Weidner  | 
449  |  |  *  | 
450  |  |  * \param f1 first factor  | 
451  |  |  * \param f2 second factor  | 
452  |  |  * \param result_e pointer to an INT where the exponent of the result is stored  | 
453  |  |  * into  | 
454  |  |  * \return mantissa of the product f1*f2  | 
455  |  |  */  | 
456  |  | FIXP_DBL fMultNorm(FIXP_DBL f1, FIXP_DBL f2, INT *result_e);  | 
457  |  |  | 
458  |  | /**  | 
459  |  |  * \brief Multiply 2 values using maximum precision. The exponent of the result  | 
460  |  |  * is 0.  | 
461  |  |  * \param f1_m mantissa of factor 1  | 
462  |  |  * \param f2_m mantissa of factor 2  | 
463  |  |  * \return mantissa of the result with exponent equal to 0  | 
464  |  |  */  | 
465  | 0  | inline FIXP_DBL fMultNorm(FIXP_DBL f1, FIXP_DBL f2) { | 
466  | 0  |   FIXP_DBL m;  | 
467  | 0  |   INT e;  | 
468  |  | 
  | 
469  | 0  |   m = fMultNorm(f1, f2, &e);  | 
470  |  | 
  | 
471  | 0  |   m = scaleValueSaturate(m, e);  | 
472  |  | 
  | 
473  | 0  |   return m;  | 
474  | 0  | }  | 
475  |  |  | 
476  |  | /**  | 
477  |  |  * \brief Multiply 2 values with exponent and use given exponent for the  | 
478  |  |  * mantissa of the result.  | 
479  |  |  * \param f1_m mantissa of factor 1  | 
480  |  |  * \param f1_e exponent of factor 1  | 
481  |  |  * \param f2_m mantissa of factor 2  | 
482  |  |  * \param f2_e exponent of factor 2  | 
483  |  |  * \param result_e exponent for the returned mantissa of the result  | 
484  |  |  * \return mantissa of the result with exponent equal to result_e  | 
485  |  |  */  | 
486  |  | inline FIXP_DBL fMultNorm(FIXP_DBL f1_m, INT f1_e, FIXP_DBL f2_m, INT f2_e,  | 
487  | 448k  |                           INT result_e) { | 
488  | 448k  |   FIXP_DBL m;  | 
489  | 448k  |   INT e;  | 
490  |  |  | 
491  | 448k  |   m = fMultNorm(f1_m, f2_m, &e);  | 
492  |  |  | 
493  | 448k  |   m = scaleValueSaturate(m, e + f1_e + f2_e - result_e);  | 
494  |  |  | 
495  | 448k  |   return m;  | 
496  | 448k  | }  | 
497  |  | #endif /* FUNCTION_fMultNorm */  | 
498  |  |  | 
499  |  | #ifndef FUNCTION_fMultI  | 
500  |  | /**  | 
501  |  |  * \brief Multiplies a fractional value and a integer value and performs  | 
502  |  |  * rounding to nearest  | 
503  |  |  * \param a fractional value  | 
504  |  |  * \param b integer value  | 
505  |  |  * \return integer value  | 
506  |  |  */  | 
507  | 170k  | inline INT fMultI(FIXP_DBL a, INT b) { | 
508  | 170k  |   FIXP_DBL m, mi;  | 
509  | 170k  |   INT m_e;  | 
510  |  |  | 
511  | 170k  |   m = fMultNorm(a, (FIXP_DBL)b, &m_e);  | 
512  |  |  | 
513  | 170k  |   if (m_e < (INT)0) { | 
514  | 7.86k  |     if (m_e > (INT)-DFRACT_BITS) { | 
515  | 5.10k  |       m = m >> ((-m_e) - 1);  | 
516  | 5.10k  |       mi = (m + (FIXP_DBL)1) >> 1;  | 
517  | 5.10k  |     } else { | 
518  | 2.76k  |       mi = (FIXP_DBL)0;  | 
519  | 2.76k  |     }  | 
520  | 162k  |   } else { | 
521  | 162k  |     mi = scaleValueSaturate(m, m_e);  | 
522  | 162k  |   }  | 
523  |  |  | 
524  | 170k  |   return ((INT)mi);  | 
525  | 170k  | }  | 
526  |  | #endif /* FUNCTION_fMultI */  | 
527  |  |  | 
528  |  | #ifndef FUNCTION_fMultIfloor  | 
529  |  | /**  | 
530  |  |  * \brief Multiplies a fractional value and a integer value and performs floor  | 
531  |  |  * rounding  | 
532  |  |  * \param a fractional value  | 
533  |  |  * \param b integer value  | 
534  |  |  * \return integer value  | 
535  |  |  */  | 
536  | 4.57M  | inline INT fMultIfloor(FIXP_DBL a, INT b) { | 
537  | 4.57M  |   FIXP_DBL m, mi;  | 
538  | 4.57M  |   INT m_e;  | 
539  |  |  | 
540  | 4.57M  |   m = fMultNorm(a, (FIXP_DBL)b, &m_e);  | 
541  |  |  | 
542  | 4.57M  |   if (m_e < (INT)0) { | 
543  | 3.66M  |     if (m_e > (INT)-DFRACT_BITS) { | 
544  | 3.48M  |       mi = m >> (-m_e);  | 
545  | 3.48M  |     } else { | 
546  | 176k  |       mi = (FIXP_DBL)0;  | 
547  | 176k  |       if (m < (FIXP_DBL)0) { | 
548  | 0  |         mi = (FIXP_DBL)-1;  | 
549  | 0  |       }  | 
550  | 176k  |     }  | 
551  | 3.66M  |   } else { | 
552  | 912k  |     mi = scaleValueSaturate(m, m_e);  | 
553  | 912k  |   }  | 
554  |  |  | 
555  | 4.57M  |   return ((INT)mi);  | 
556  | 4.57M  | }  | 
557  |  | #endif /* FUNCTION_fMultIfloor */  | 
558  |  |  | 
559  |  | #ifndef FUNCTION_fMultIceil  | 
560  |  | /**  | 
561  |  |  * \brief Multiplies a fractional value and a integer value and performs ceil  | 
562  |  |  * rounding  | 
563  |  |  * \param a fractional value  | 
564  |  |  * \param b integer value  | 
565  |  |  * \return integer value  | 
566  |  |  */  | 
567  | 1.07M  | inline INT fMultIceil(FIXP_DBL a, INT b) { | 
568  | 1.07M  |   FIXP_DBL m, mi;  | 
569  | 1.07M  |   INT m_e;  | 
570  |  |  | 
571  | 1.07M  |   m = fMultNorm(a, (FIXP_DBL)b, &m_e);  | 
572  |  |  | 
573  | 1.07M  |   if (m_e < (INT)0) { | 
574  | 1.07M  |     if (m_e > (INT) - (DFRACT_BITS - 1)) { | 
575  | 770k  |       mi = (m >> (-m_e));  | 
576  | 770k  |       if ((LONG)m & ((1 << (-m_e)) - 1)) { | 
577  | 694k  |         mi = mi + (FIXP_DBL)1;  | 
578  | 694k  |       }  | 
579  | 770k  |     } else { | 
580  | 302k  |       if (m > (FIXP_DBL)0) { | 
581  | 302k  |         mi = (FIXP_DBL)1;  | 
582  | 302k  |       } else { | 
583  | 0  |         if ((m_e == -(DFRACT_BITS - 1)) && (m == (FIXP_DBL)MINVAL_DBL)) { | 
584  | 0  |           mi = (FIXP_DBL)-1;  | 
585  | 0  |         } else { | 
586  | 0  |           mi = (FIXP_DBL)0;  | 
587  | 0  |         }  | 
588  | 0  |       }  | 
589  | 302k  |     }  | 
590  | 1.07M  |   } else { | 
591  | 0  |     mi = scaleValueSaturate(m, m_e);  | 
592  | 0  |   }  | 
593  |  |  | 
594  | 1.07M  |   return ((INT)mi);  | 
595  | 1.07M  | }  | 
596  |  | #endif /* FUNCTION_fMultIceil */  | 
597  |  |  | 
598  |  | #ifndef FUNCTION_fDivNorm  | 
599  |  | /**  | 
600  |  |  * \brief Divide 2 FIXP_DBL values with normalization of input values.  | 
601  |  |  * \param num numerator  | 
602  |  |  * \param denum denominator  | 
603  |  |  * \param result_e pointer to an INT where the exponent of the result is stored  | 
604  |  |  * into  | 
605  |  |  * \return num/denum with exponent = *result_e  | 
606  |  |  */  | 
607  |  | FIXP_DBL fDivNorm(FIXP_DBL num, FIXP_DBL denom, INT *result_e);  | 
608  |  |  | 
609  |  | /**  | 
610  |  |  * \brief Divide 2 positive FIXP_DBL values with normalization of input values.  | 
611  |  |  * \param num numerator  | 
612  |  |  * \param denum denominator  | 
613  |  |  * \return num/denum with exponent = 0  | 
614  |  |  */  | 
615  |  | FIXP_DBL fDivNorm(FIXP_DBL num, FIXP_DBL denom);  | 
616  |  |  | 
617  |  | /**  | 
618  |  |  * \brief Divide 2 signed FIXP_DBL values with normalization of input values.  | 
619  |  |  * \param num numerator  | 
620  |  |  * \param denum denominator  | 
621  |  |  * \param result_e pointer to an INT where the exponent of the result is stored  | 
622  |  |  * into  | 
623  |  |  * \return num/denum with exponent = *result_e  | 
624  |  |  */  | 
625  |  | FIXP_DBL fDivNormSigned(FIXP_DBL L_num, FIXP_DBL L_denum, INT *result_e);  | 
626  |  |  | 
627  |  | /**  | 
628  |  |  * \brief Divide 2 signed FIXP_DBL values with normalization of input values.  | 
629  |  |  * \param num numerator  | 
630  |  |  * \param denum denominator  | 
631  |  |  * \return num/denum with exponent = 0  | 
632  |  |  */  | 
633  |  | FIXP_DBL fDivNormSigned(FIXP_DBL num, FIXP_DBL denom);  | 
634  |  | #endif /* FUNCTION_fDivNorm */  | 
635  |  |  | 
636  |  | /**  | 
637  |  |  * \brief Adjust mantissa to exponent -1  | 
638  |  |  * \param a_m mantissa of value to be adjusted  | 
639  |  |  * \param pA_e pointer to the exponen of a_m  | 
640  |  |  * \return adjusted mantissa  | 
641  |  |  */  | 
642  | 4.37M  | inline FIXP_DBL fAdjust(FIXP_DBL a_m, INT *pA_e) { | 
643  | 4.37M  |   INT shift;  | 
644  |  |  | 
645  | 4.37M  |   shift = fNorm(a_m) - 1;  | 
646  | 4.37M  |   *pA_e -= shift;  | 
647  |  |  | 
648  | 4.37M  |   return scaleValue(a_m, shift);  | 
649  | 4.37M  | }  | 
650  |  |  | 
651  |  | #ifndef FUNCTION_fAddNorm  | 
652  |  | /**  | 
653  |  |  * \brief Add two values with normalization  | 
654  |  |  * \param a_m mantissa of first summand  | 
655  |  |  * \param a_e exponent of first summand  | 
656  |  |  * \param a_m mantissa of second summand  | 
657  |  |  * \param a_e exponent of second summand  | 
658  |  |  * \param pResult_e pointer to where the exponent of the result will be stored  | 
659  |  |  * to.  | 
660  |  |  * \return mantissa of result  | 
661  |  |  */  | 
662  |  | inline FIXP_DBL fAddNorm(FIXP_DBL a_m, INT a_e, FIXP_DBL b_m, INT b_e,  | 
663  | 2.19M  |                          INT *pResult_e) { | 
664  | 2.19M  |   INT result_e;  | 
665  | 2.19M  |   FIXP_DBL result_m;  | 
666  |  |  | 
667  |  |   /* If one of the summands is zero, return the other.  | 
668  |  |      This is necessary for the summation of a very small number to zero */  | 
669  | 2.19M  |   if (a_m == (FIXP_DBL)0) { | 
670  | 4.13k  |     *pResult_e = b_e;  | 
671  | 4.13k  |     return b_m;  | 
672  | 4.13k  |   }  | 
673  | 2.18M  |   if (b_m == (FIXP_DBL)0) { | 
674  | 683  |     *pResult_e = a_e;  | 
675  | 683  |     return a_m;  | 
676  | 683  |   }  | 
677  |  |  | 
678  | 2.18M  |   a_m = fAdjust(a_m, &a_e);  | 
679  | 2.18M  |   b_m = fAdjust(b_m, &b_e);  | 
680  |  |  | 
681  | 2.18M  |   if (a_e > b_e) { | 
682  | 1.53M  |     result_m = a_m + (b_m >> fMin(a_e - b_e, DFRACT_BITS - 1));  | 
683  | 1.53M  |     result_e = a_e;  | 
684  | 1.53M  |   } else { | 
685  | 654k  |     result_m = (a_m >> fMin(b_e - a_e, DFRACT_BITS - 1)) + b_m;  | 
686  | 654k  |     result_e = b_e;  | 
687  | 654k  |   }  | 
688  |  |  | 
689  | 2.18M  |   *pResult_e = result_e;  | 
690  | 2.18M  |   return result_m;  | 
691  | 2.18M  | }  | 
692  |  |  | 
693  |  | inline FIXP_DBL fAddNorm(FIXP_DBL a_m, INT a_e, FIXP_DBL b_m, INT b_e,  | 
694  | 0  |                          INT result_e) { | 
695  | 0  |   FIXP_DBL result_m;  | 
696  | 0  | 
  | 
697  | 0  |   a_m = scaleValue(a_m, a_e - result_e);  | 
698  | 0  |   b_m = scaleValue(b_m, b_e - result_e);  | 
699  | 0  | 
  | 
700  | 0  |   result_m = a_m + b_m;  | 
701  | 0  | 
  | 
702  | 0  |   return result_m;  | 
703  | 0  | }  | 
704  |  | #endif /* FUNCTION_fAddNorm */  | 
705  |  |  | 
706  |  | /**  | 
707  |  |  * \brief Divide 2 FIXP_DBL values with normalization of input values.  | 
708  |  |  * \param num numerator  | 
709  |  |  * \param denum denomintator  | 
710  |  |  * \return num/denum with exponent = 0  | 
711  |  |  */  | 
712  |  | FIXP_DBL fDivNormHighPrec(FIXP_DBL L_num, FIXP_DBL L_denum, INT *result_e);  | 
713  |  |  | 
714  |  | #ifndef FUNCTION_fPow  | 
715  |  | /**  | 
716  |  |  * \brief return 2 ^ (exp_m * 2^exp_e)  | 
717  |  |  * \param exp_m mantissa of the exponent to 2.0f  | 
718  |  |  * \param exp_e exponent of the exponent to 2.0f  | 
719  |  |  * \param result_e pointer to a INT where the exponent of the result will be  | 
720  |  |  * stored into  | 
721  |  |  * \return mantissa of the result  | 
722  |  |  */  | 
723  |  | FIXP_DBL f2Pow(const FIXP_DBL exp_m, const INT exp_e, INT *result_e);  | 
724  |  |  | 
725  |  | /**  | 
726  |  |  * \brief return 2 ^ (exp_m * 2^exp_e). This version returns only the mantissa  | 
727  |  |  * with implicit exponent of zero.  | 
728  |  |  * \param exp_m mantissa of the exponent to 2.0f  | 
729  |  |  * \param exp_e exponent of the exponent to 2.0f  | 
730  |  |  * \return mantissa of the result  | 
731  |  |  */  | 
732  |  | FIXP_DBL f2Pow(const FIXP_DBL exp_m, const INT exp_e);  | 
733  |  |  | 
734  |  | /**  | 
735  |  |  * \brief return x ^ (exp_m * 2^exp_e), where log2(x) = baseLd_m * 2^(baseLd_e).  | 
736  |  |  * This saves the need to compute log2() of constant values (when x is a  | 
737  |  |  * constant).  | 
738  |  |  * \param baseLd_m mantissa of log2() of x.  | 
739  |  |  * \param baseLd_e exponent of log2() of x.  | 
740  |  |  * \param exp_m mantissa of the exponent to 2.0f  | 
741  |  |  * \param exp_e exponent of the exponent to 2.0f  | 
742  |  |  * \param result_e pointer to a INT where the exponent of the result will be  | 
743  |  |  * stored into  | 
744  |  |  * \return mantissa of the result  | 
745  |  |  */  | 
746  |  | FIXP_DBL fLdPow(FIXP_DBL baseLd_m, INT baseLd_e, FIXP_DBL exp_m, INT exp_e,  | 
747  |  |                 INT *result_e);  | 
748  |  |  | 
749  |  | /**  | 
750  |  |  * \brief return x ^ (exp_m * 2^exp_e), where log2(x) = baseLd_m * 2^(baseLd_e).  | 
751  |  |  * This saves the need to compute log2() of constant values (when x is a  | 
752  |  |  * constant). This version does not return an exponent, which is  | 
753  |  |  * implicitly 0.  | 
754  |  |  * \param baseLd_m mantissa of log2() of x.  | 
755  |  |  * \param baseLd_e exponent of log2() of x.  | 
756  |  |  * \param exp_m mantissa of the exponent to 2.0f  | 
757  |  |  * \param exp_e exponent of the exponent to 2.0f  | 
758  |  |  * \return mantissa of the result  | 
759  |  |  */  | 
760  |  | FIXP_DBL fLdPow(FIXP_DBL baseLd_m, INT baseLd_e, FIXP_DBL exp_m, INT exp_e);  | 
761  |  |  | 
762  |  | /**  | 
763  |  |  * \brief return (base_m * 2^base_e) ^ (exp * 2^exp_e). Use fLdPow() instead  | 
764  |  |  * whenever possible.  | 
765  |  |  * \param base_m mantissa of the base.  | 
766  |  |  * \param base_e exponent of the base.  | 
767  |  |  * \param exp_m mantissa of power to be calculated of the base.  | 
768  |  |  * \param exp_e exponent of power to be calculated of the base.  | 
769  |  |  * \param result_e pointer to a INT where the exponent of the result will be  | 
770  |  |  * stored into.  | 
771  |  |  * \return mantissa of the result.  | 
772  |  |  */  | 
773  |  | FIXP_DBL fPow(FIXP_DBL base_m, INT base_e, FIXP_DBL exp_m, INT exp_e,  | 
774  |  |               INT *result_e);  | 
775  |  |  | 
776  |  | /**  | 
777  |  |  * \brief return (base_m * 2^base_e) ^ N  | 
778  |  |  * \param base_m mantissa of the base. Must not be negative.  | 
779  |  |  * \param base_e exponent of the base  | 
780  |  |  * \param N power to be calculated of the base  | 
781  |  |  * \param result_e pointer to a INT where the exponent of the result will be  | 
782  |  |  * stored into  | 
783  |  |  * \return mantissa of the result  | 
784  |  |  */  | 
785  |  | FIXP_DBL fPowInt(FIXP_DBL base_m, INT base_e, INT N, INT *result_e);  | 
786  |  | #endif /* #ifndef FUNCTION_fPow */  | 
787  |  |  | 
788  |  | #ifndef FUNCTION_fLog2  | 
789  |  | /**  | 
790  |  |  * \brief Calculate log(argument)/log(2) (logarithm with base 2). deprecated.  | 
791  |  |  * Use fLog2() instead.  | 
792  |  |  * \param arg mantissa of the argument  | 
793  |  |  * \param arg_e exponent of the argument  | 
794  |  |  * \param result_e pointer to an INT to store the exponent of the result  | 
795  |  |  * \return the mantissa of the result.  | 
796  |  |  * \param  | 
797  |  |  */  | 
798  |  | FIXP_DBL CalcLog2(FIXP_DBL arg, INT arg_e, INT *result_e);  | 
799  |  |  | 
800  |  | /**  | 
801  |  |  * \brief calculate logarithm of base 2 of x_m * 2^(x_e)  | 
802  |  |  * \param x_m mantissa of the input value.  | 
803  |  |  * \param x_e exponent of the input value.  | 
804  |  |  * \param pointer to an INT where the exponent of the result is returned into.  | 
805  |  |  * \return mantissa of the result.  | 
806  |  |  */  | 
807  | 7.36M  | FDK_INLINE FIXP_DBL fLog2(FIXP_DBL x_m, INT x_e, INT *result_e) { | 
808  | 7.36M  |   FIXP_DBL result_m;  | 
809  |  |  | 
810  |  |   /* Short cut for zero and negative numbers. */  | 
811  | 7.36M  |   if (x_m <= FL2FXCONST_DBL(0.0f)) { | 
812  | 0  |     *result_e = DFRACT_BITS - 1;  | 
813  | 0  |     return FL2FXCONST_DBL(-1.0f);  | 
814  | 0  |   }  | 
815  |  |  | 
816  |  |   /* Calculate log2() */  | 
817  | 7.36M  |   { | 
818  | 7.36M  |     FIXP_DBL x2_m;  | 
819  |  |  | 
820  |  |     /* Move input value x_m * 2^x_e toward 1.0, where the taylor approximation  | 
821  |  |        of the function log(1-x) centered at 0 is most accurate. */  | 
822  | 7.36M  |     { | 
823  | 7.36M  |       INT b_norm;  | 
824  |  |  | 
825  | 7.36M  |       b_norm = fNormz(x_m) - 1;  | 
826  | 7.36M  |       x2_m = x_m << b_norm;  | 
827  | 7.36M  |       x_e = x_e - b_norm;  | 
828  | 7.36M  |     }  | 
829  |  |  | 
830  |  |     /* map x from log(x) domain to log(1-x) domain. */  | 
831  | 7.36M  |     x2_m = -(x2_m + FL2FXCONST_DBL(-1.0));  | 
832  |  |  | 
833  |  |     /* Taylor polynomial approximation of ln(1-x) */  | 
834  | 7.36M  |     { | 
835  | 7.36M  |       FIXP_DBL px2_m;  | 
836  | 7.36M  |       result_m = FL2FXCONST_DBL(0.0);  | 
837  | 7.36M  |       px2_m = x2_m;  | 
838  | 81.0M  |       for (int i = 0; i < LD_PRECISION; i++) { | 
839  | 73.6M  |         result_m = fMultAddDiv2(result_m, ldCoeff[i], px2_m);  | 
840  | 73.6M  |         px2_m = fMult(px2_m, x2_m);  | 
841  | 73.6M  |       }  | 
842  | 7.36M  |     }  | 
843  |  |     /* Multiply result with 1/ln(2) = 1.0 + 0.442695040888 (get log2(x) from  | 
844  |  |      * ln(x) result). */  | 
845  | 7.36M  |     result_m =  | 
846  | 7.36M  |         fMultAddDiv2(result_m, result_m,  | 
847  | 7.36M  |                      FL2FXCONST_DBL(2.0 * 0.4426950408889634073599246810019));  | 
848  |  |  | 
849  |  |     /* Add exponent part. log2(x_m * 2^x_e) = log2(x_m) + x_e */  | 
850  | 7.36M  |     if (x_e != 0) { | 
851  | 7.31M  |       int enorm;  | 
852  |  |  | 
853  | 7.31M  |       enorm = DFRACT_BITS - fNorm((FIXP_DBL)x_e);  | 
854  |  |       /* The -1 in the right shift of result_m compensates the fMultDiv2() above  | 
855  |  |        * in the taylor polynomial evaluation loop.*/  | 
856  | 7.31M  |       result_m = (result_m >> (enorm - 1)) +  | 
857  | 7.31M  |                  ((FIXP_DBL)x_e << (DFRACT_BITS - 1 - enorm));  | 
858  |  |  | 
859  | 7.31M  |       *result_e = enorm;  | 
860  | 7.31M  |     } else { | 
861  |  |       /* 1 compensates the fMultDiv2() above in the taylor polynomial evaluation  | 
862  |  |        * loop.*/  | 
863  | 51.1k  |       *result_e = 1;  | 
864  | 51.1k  |     }  | 
865  | 7.36M  |   }  | 
866  |  |  | 
867  | 7.36M  |   return result_m;  | 
868  | 7.36M  | } Unexecuted instantiation: FDK_bitbuffer.cpp:fLog2(int, int, int*) Unexecuted instantiation: FDK_decorrelate.cpp:fLog2(int, int, int*) Unexecuted instantiation: FDK_delay.cpp:fLog2(int, int, int*) Unexecuted instantiation: FDK_drcDecLib.cpp:fLog2(int, int, int*) Unexecuted instantiation: FDK_hybrid.cpp:fLog2(int, int, int*) Unexecuted instantiation: FDK_lpc.cpp:fLog2(int, int, int*) Unexecuted instantiation: FDK_qmf_domain.cpp:fLog2(int, int, int*) Unexecuted instantiation: FDK_tools_rom.cpp:fLog2(int, int, int*) Unexecuted instantiation: FDK_trigFcts.cpp:fLog2(int, int, int*) Unexecuted instantiation: HFgen_preFlat.cpp:fLog2(int, int, int*) Unexecuted instantiation: aacEnc_ram.cpp:fLog2(int, int, int*) Unexecuted instantiation: aacEnc_rom.cpp:fLog2(int, int, int*) Unexecuted instantiation: aac_ram.cpp:fLog2(int, int, int*) Unexecuted instantiation: aac_rom.cpp:fLog2(int, int, int*) Unexecuted instantiation: aacdec_drc.cpp:fLog2(int, int, int*) Unexecuted instantiation: aacdec_hcr.cpp:fLog2(int, int, int*) Unexecuted instantiation: aacdec_hcr_bit.cpp:fLog2(int, int, int*) Unexecuted instantiation: aacdec_hcrs.cpp:fLog2(int, int, int*) Unexecuted instantiation: aacdec_pns.cpp:fLog2(int, int, int*) Unexecuted instantiation: aacdec_tns.cpp:fLog2(int, int, int*) Unexecuted instantiation: aacdecoder.cpp:fLog2(int, int, int*) Unexecuted instantiation: aacdecoder_lib.cpp:fLog2(int, int, int*) Unexecuted instantiation: aacenc.cpp:fLog2(int, int, int*) Unexecuted instantiation: aacenc_lib.cpp:fLog2(int, int, int*) Unexecuted instantiation: aacenc_pns.cpp:fLog2(int, int, int*) Unexecuted instantiation: aacenc_tns.cpp:fLog2(int, int, int*) Unexecuted instantiation: ac_arith_coder.cpp:fLog2(int, int, int*) Unexecuted instantiation: adj_thr.cpp:fLog2(int, int, int*) Unexecuted instantiation: autocorr2nd.cpp:fLog2(int, int, int*) Unexecuted instantiation: band_nrg.cpp:fLog2(int, int, int*) Unexecuted instantiation: bandwidth.cpp:fLog2(int, int, int*) Unexecuted instantiation: bit_cnt.cpp:fLog2(int, int, int*) Unexecuted instantiation: bit_sbr.cpp:fLog2(int, int, int*) Unexecuted instantiation: bitenc.cpp:fLog2(int, int, int*) Unexecuted instantiation: block.cpp:fLog2(int, int, int*) Unexecuted instantiation: block_switch.cpp:fLog2(int, int, int*) Unexecuted instantiation: channel.cpp:fLog2(int, int, int*) Unexecuted instantiation: channel_map.cpp:fLog2(int, int, int*) Unexecuted instantiation: channelinfo.cpp:fLog2(int, int, int*) Unexecuted instantiation: chaosmeasure.cpp:fLog2(int, int, int*) Unexecuted instantiation: code_env.cpp:fLog2(int, int, int*) Unexecuted instantiation: conceal.cpp:fLog2(int, int, int*) Unexecuted instantiation: dct.cpp:fLog2(int, int, int*) Unexecuted instantiation: drcDec_gainDecoder.cpp:fLog2(int, int, int*) Unexecuted instantiation: drcDec_reader.cpp:fLog2(int, int, int*) Unexecuted instantiation: drcDec_rom.cpp:fLog2(int, int, int*) Unexecuted instantiation: drcDec_selectionProcess.cpp:fLog2(int, int, int*) Unexecuted instantiation: drcDec_tools.cpp:fLog2(int, int, int*) Unexecuted instantiation: drcGainDec_init.cpp:fLog2(int, int, int*) Unexecuted instantiation: drcGainDec_preprocess.cpp:fLog2(int, int, int*) Unexecuted instantiation: drcGainDec_process.cpp:fLog2(int, int, int*) Unexecuted instantiation: dyn_bits.cpp:fLog2(int, int, int*) Unexecuted instantiation: env_bit.cpp:fLog2(int, int, int*) env_calc.cpp:fLog2(int, int, int*) Line  | Count  | Source  |  807  | 2.13M  | FDK_INLINE FIXP_DBL fLog2(FIXP_DBL x_m, INT x_e, INT *result_e) { |  808  | 2.13M  |   FIXP_DBL result_m;  |  809  |  |  |  810  |  |   /* Short cut for zero and negative numbers. */  |  811  | 2.13M  |   if (x_m <= FL2FXCONST_DBL(0.0f)) { |  812  | 0  |     *result_e = DFRACT_BITS - 1;  |  813  | 0  |     return FL2FXCONST_DBL(-1.0f);  |  814  | 0  |   }  |  815  |  |  |  816  |  |   /* Calculate log2() */  |  817  | 2.13M  |   { |  818  | 2.13M  |     FIXP_DBL x2_m;  |  819  |  |  |  820  |  |     /* Move input value x_m * 2^x_e toward 1.0, where the taylor approximation  |  821  |  |        of the function log(1-x) centered at 0 is most accurate. */  |  822  | 2.13M  |     { |  823  | 2.13M  |       INT b_norm;  |  824  |  |  |  825  | 2.13M  |       b_norm = fNormz(x_m) - 1;  |  826  | 2.13M  |       x2_m = x_m << b_norm;  |  827  | 2.13M  |       x_e = x_e - b_norm;  |  828  | 2.13M  |     }  |  829  |  |  |  830  |  |     /* map x from log(x) domain to log(1-x) domain. */  |  831  | 2.13M  |     x2_m = -(x2_m + FL2FXCONST_DBL(-1.0));  |  832  |  |  |  833  |  |     /* Taylor polynomial approximation of ln(1-x) */  |  834  | 2.13M  |     { |  835  | 2.13M  |       FIXP_DBL px2_m;  |  836  | 2.13M  |       result_m = FL2FXCONST_DBL(0.0);  |  837  | 2.13M  |       px2_m = x2_m;  |  838  | 23.5M  |       for (int i = 0; i < LD_PRECISION; i++) { |  839  | 21.3M  |         result_m = fMultAddDiv2(result_m, ldCoeff[i], px2_m);  |  840  | 21.3M  |         px2_m = fMult(px2_m, x2_m);  |  841  | 21.3M  |       }  |  842  | 2.13M  |     }  |  843  |  |     /* Multiply result with 1/ln(2) = 1.0 + 0.442695040888 (get log2(x) from  |  844  |  |      * ln(x) result). */  |  845  | 2.13M  |     result_m =  |  846  | 2.13M  |         fMultAddDiv2(result_m, result_m,  |  847  | 2.13M  |                      FL2FXCONST_DBL(2.0 * 0.4426950408889634073599246810019));  |  848  |  |  |  849  |  |     /* Add exponent part. log2(x_m * 2^x_e) = log2(x_m) + x_e */  |  850  | 2.13M  |     if (x_e != 0) { |  851  | 2.13M  |       int enorm;  |  852  |  |  |  853  | 2.13M  |       enorm = DFRACT_BITS - fNorm((FIXP_DBL)x_e);  |  854  |  |       /* The -1 in the right shift of result_m compensates the fMultDiv2() above  |  855  |  |        * in the taylor polynomial evaluation loop.*/  |  856  | 2.13M  |       result_m = (result_m >> (enorm - 1)) +  |  857  | 2.13M  |                  ((FIXP_DBL)x_e << (DFRACT_BITS - 1 - enorm));  |  858  |  |  |  859  | 2.13M  |       *result_e = enorm;  |  860  | 2.13M  |     } else { |  861  |  |       /* 1 compensates the fMultDiv2() above in the taylor polynomial evaluation  |  862  |  |        * loop.*/  |  863  | 0  |       *result_e = 1;  |  864  | 0  |     }  |  865  | 2.13M  |   }  |  866  |  |  |  867  | 2.13M  |   return result_m;  |  868  | 2.13M  | }  |  
 Unexecuted instantiation: env_dec.cpp:fLog2(int, int, int*) Unexecuted instantiation: env_est.cpp:fLog2(int, int, int*) Unexecuted instantiation: env_extr.cpp:fLog2(int, int, int*) Unexecuted instantiation: fft.cpp:fLog2(int, int, int*) Unexecuted instantiation: fft_rad2.cpp:fLog2(int, int, int*) fixpoint_math.cpp:fLog2(int, int, int*) Line  | Count  | Source  |  807  | 4.95M  | FDK_INLINE FIXP_DBL fLog2(FIXP_DBL x_m, INT x_e, INT *result_e) { |  808  | 4.95M  |   FIXP_DBL result_m;  |  809  |  |  |  810  |  |   /* Short cut for zero and negative numbers. */  |  811  | 4.95M  |   if (x_m <= FL2FXCONST_DBL(0.0f)) { |  812  | 0  |     *result_e = DFRACT_BITS - 1;  |  813  | 0  |     return FL2FXCONST_DBL(-1.0f);  |  814  | 0  |   }  |  815  |  |  |  816  |  |   /* Calculate log2() */  |  817  | 4.95M  |   { |  818  | 4.95M  |     FIXP_DBL x2_m;  |  819  |  |  |  820  |  |     /* Move input value x_m * 2^x_e toward 1.0, where the taylor approximation  |  821  |  |        of the function log(1-x) centered at 0 is most accurate. */  |  822  | 4.95M  |     { |  823  | 4.95M  |       INT b_norm;  |  824  |  |  |  825  | 4.95M  |       b_norm = fNormz(x_m) - 1;  |  826  | 4.95M  |       x2_m = x_m << b_norm;  |  827  | 4.95M  |       x_e = x_e - b_norm;  |  828  | 4.95M  |     }  |  829  |  |  |  830  |  |     /* map x from log(x) domain to log(1-x) domain. */  |  831  | 4.95M  |     x2_m = -(x2_m + FL2FXCONST_DBL(-1.0));  |  832  |  |  |  833  |  |     /* Taylor polynomial approximation of ln(1-x) */  |  834  | 4.95M  |     { |  835  | 4.95M  |       FIXP_DBL px2_m;  |  836  | 4.95M  |       result_m = FL2FXCONST_DBL(0.0);  |  837  | 4.95M  |       px2_m = x2_m;  |  838  | 54.5M  |       for (int i = 0; i < LD_PRECISION; i++) { |  839  | 49.5M  |         result_m = fMultAddDiv2(result_m, ldCoeff[i], px2_m);  |  840  | 49.5M  |         px2_m = fMult(px2_m, x2_m);  |  841  | 49.5M  |       }  |  842  | 4.95M  |     }  |  843  |  |     /* Multiply result with 1/ln(2) = 1.0 + 0.442695040888 (get log2(x) from  |  844  |  |      * ln(x) result). */  |  845  | 4.95M  |     result_m =  |  846  | 4.95M  |         fMultAddDiv2(result_m, result_m,  |  847  | 4.95M  |                      FL2FXCONST_DBL(2.0 * 0.4426950408889634073599246810019));  |  848  |  |  |  849  |  |     /* Add exponent part. log2(x_m * 2^x_e) = log2(x_m) + x_e */  |  850  | 4.95M  |     if (x_e != 0) { |  851  | 4.95M  |       int enorm;  |  852  |  |  |  853  | 4.95M  |       enorm = DFRACT_BITS - fNorm((FIXP_DBL)x_e);  |  854  |  |       /* The -1 in the right shift of result_m compensates the fMultDiv2() above  |  855  |  |        * in the taylor polynomial evaluation loop.*/  |  856  | 4.95M  |       result_m = (result_m >> (enorm - 1)) +  |  857  | 4.95M  |                  ((FIXP_DBL)x_e << (DFRACT_BITS - 1 - enorm));  |  858  |  |  |  859  | 4.95M  |       *result_e = enorm;  |  860  | 4.95M  |     } else { |  861  |  |       /* 1 compensates the fMultDiv2() above in the taylor polynomial evaluation  |  862  |  |        * loop.*/  |  863  | 1.77k  |       *result_e = 1;  |  864  | 1.77k  |     }  |  865  | 4.95M  |   }  |  866  |  |  |  867  | 4.95M  |   return result_m;  |  868  | 4.95M  | }  |  
 Unexecuted instantiation: fram_gen.cpp:fLog2(int, int, int*) Unexecuted instantiation: grp_data.cpp:fLog2(int, int, int*) Unexecuted instantiation: hbe.cpp:fLog2(int, int, int*) Unexecuted instantiation: huff_dec.cpp:fLog2(int, int, int*) Unexecuted instantiation: intensity.cpp:fLog2(int, int, int*) Unexecuted instantiation: invf_est.cpp:fLog2(int, int, int*) Unexecuted instantiation: ldfiltbank.cpp:fLog2(int, int, int*) Unexecuted instantiation: limiter.cpp:fLog2(int, int, int*) Unexecuted instantiation: line_pe.cpp:fLog2(int, int, int*) Unexecuted instantiation: lpp_tran.cpp:fLog2(int, int, int*) Unexecuted instantiation: mdct.cpp:fLog2(int, int, int*) Unexecuted instantiation: metadata_compressor.cpp:fLog2(int, int, int*) Unexecuted instantiation: metadata_main.cpp:fLog2(int, int, int*) Unexecuted instantiation: mh_det.cpp:fLog2(int, int, int*) Unexecuted instantiation: mps_main.cpp:fLog2(int, int, int*) Unexecuted instantiation: ms_stereo.cpp:fLog2(int, int, int*) Unexecuted instantiation: nf_est.cpp:fLog2(int, int, int*) Unexecuted instantiation: nlc_dec.cpp:fLog2(int, int, int*) Unexecuted instantiation: noisedet.cpp:fLog2(int, int, int*) Unexecuted instantiation: pcm_utils.cpp:fLog2(int, int, int*) Unexecuted instantiation: pcmdmx_lib.cpp:fLog2(int, int, int*) Unexecuted instantiation: pnsparam.cpp:fLog2(int, int, int*) Unexecuted instantiation: pre_echo_control.cpp:fLog2(int, int, int*) Unexecuted instantiation: ps_bitenc.cpp:fLog2(int, int, int*) Unexecuted instantiation: ps_encode.cpp:fLog2(int, int, int*) Unexecuted instantiation: ps_main.cpp:fLog2(int, int, int*) Unexecuted instantiation: psbitdec.cpp:fLog2(int, int, int*) Unexecuted instantiation: psdec.cpp:fLog2(int, int, int*) Unexecuted instantiation: psdec_drm.cpp:fLog2(int, int, int*) Unexecuted instantiation: psdecrom_drm.cpp:fLog2(int, int, int*) Unexecuted instantiation: psy_configuration.cpp:fLog2(int, int, int*) Unexecuted instantiation: psy_main.cpp:fLog2(int, int, int*) Unexecuted instantiation: pulsedata.cpp:fLog2(int, int, int*) Unexecuted instantiation: pvc_dec.cpp:fLog2(int, int, int*) Unexecuted instantiation: qc_main.cpp:fLog2(int, int, int*) Unexecuted instantiation: qmf.cpp:fLog2(int, int, int*) Unexecuted instantiation: quantize.cpp:fLog2(int, int, int*) Unexecuted instantiation: resampler.cpp:fLog2(int, int, int*) Unexecuted instantiation: rvlc.cpp:fLog2(int, int, int*) Unexecuted instantiation: rvlcbit.cpp:fLog2(int, int, int*) Unexecuted instantiation: rvlcconceal.cpp:fLog2(int, int, int*) Unexecuted instantiation: sac_bitdec.cpp:fLog2(int, int, int*) Unexecuted instantiation: sac_calcM1andM2.cpp:fLog2(int, int, int*) Unexecuted instantiation: sac_dec.cpp:fLog2(int, int, int*) Unexecuted instantiation: sac_dec_conceal.cpp:fLog2(int, int, int*) Unexecuted instantiation: sac_dec_lib.cpp:fLog2(int, int, int*) Unexecuted instantiation: sac_process.cpp:fLog2(int, int, int*) Unexecuted instantiation: sac_qmf.cpp:fLog2(int, int, int*) Unexecuted instantiation: sac_reshapeBBEnv.cpp:fLog2(int, int, int*) Unexecuted instantiation: sac_rom.cpp:fLog2(int, int, int*) Unexecuted instantiation: sac_smoothing.cpp:fLog2(int, int, int*) sac_stp.cpp:fLog2(int, int, int*) Line  | Count  | Source  |  807  | 272k  | FDK_INLINE FIXP_DBL fLog2(FIXP_DBL x_m, INT x_e, INT *result_e) { |  808  | 272k  |   FIXP_DBL result_m;  |  809  |  |  |  810  |  |   /* Short cut for zero and negative numbers. */  |  811  | 272k  |   if (x_m <= FL2FXCONST_DBL(0.0f)) { |  812  | 0  |     *result_e = DFRACT_BITS - 1;  |  813  | 0  |     return FL2FXCONST_DBL(-1.0f);  |  814  | 0  |   }  |  815  |  |  |  816  |  |   /* Calculate log2() */  |  817  | 272k  |   { |  818  | 272k  |     FIXP_DBL x2_m;  |  819  |  |  |  820  |  |     /* Move input value x_m * 2^x_e toward 1.0, where the taylor approximation  |  821  |  |        of the function log(1-x) centered at 0 is most accurate. */  |  822  | 272k  |     { |  823  | 272k  |       INT b_norm;  |  824  |  |  |  825  | 272k  |       b_norm = fNormz(x_m) - 1;  |  826  | 272k  |       x2_m = x_m << b_norm;  |  827  | 272k  |       x_e = x_e - b_norm;  |  828  | 272k  |     }  |  829  |  |  |  830  |  |     /* map x from log(x) domain to log(1-x) domain. */  |  831  | 272k  |     x2_m = -(x2_m + FL2FXCONST_DBL(-1.0));  |  832  |  |  |  833  |  |     /* Taylor polynomial approximation of ln(1-x) */  |  834  | 272k  |     { |  835  | 272k  |       FIXP_DBL px2_m;  |  836  | 272k  |       result_m = FL2FXCONST_DBL(0.0);  |  837  | 272k  |       px2_m = x2_m;  |  838  | 2.99M  |       for (int i = 0; i < LD_PRECISION; i++) { |  839  | 2.72M  |         result_m = fMultAddDiv2(result_m, ldCoeff[i], px2_m);  |  840  | 2.72M  |         px2_m = fMult(px2_m, x2_m);  |  841  | 2.72M  |       }  |  842  | 272k  |     }  |  843  |  |     /* Multiply result with 1/ln(2) = 1.0 + 0.442695040888 (get log2(x) from  |  844  |  |      * ln(x) result). */  |  845  | 272k  |     result_m =  |  846  | 272k  |         fMultAddDiv2(result_m, result_m,  |  847  | 272k  |                      FL2FXCONST_DBL(2.0 * 0.4426950408889634073599246810019));  |  848  |  |  |  849  |  |     /* Add exponent part. log2(x_m * 2^x_e) = log2(x_m) + x_e */  |  850  | 272k  |     if (x_e != 0) { |  851  | 222k  |       int enorm;  |  852  |  |  |  853  | 222k  |       enorm = DFRACT_BITS - fNorm((FIXP_DBL)x_e);  |  854  |  |       /* The -1 in the right shift of result_m compensates the fMultDiv2() above  |  855  |  |        * in the taylor polynomial evaluation loop.*/  |  856  | 222k  |       result_m = (result_m >> (enorm - 1)) +  |  857  | 222k  |                  ((FIXP_DBL)x_e << (DFRACT_BITS - 1 - enorm));  |  858  |  |  |  859  | 222k  |       *result_e = enorm;  |  860  | 222k  |     } else { |  861  |  |       /* 1 compensates the fMultDiv2() above in the taylor polynomial evaluation  |  862  |  |        * loop.*/  |  863  | 49.4k  |       *result_e = 1;  |  864  | 49.4k  |     }  |  865  | 272k  |   }  |  866  |  |  |  867  | 272k  |   return result_m;  |  868  | 272k  | }  |  
 Unexecuted instantiation: sac_tsd.cpp:fLog2(int, int, int*) Unexecuted instantiation: sacenc_bitstream.cpp:fLog2(int, int, int*) Unexecuted instantiation: sacenc_dmx_tdom_enh.cpp:fLog2(int, int, int*) Unexecuted instantiation: sacenc_filter.cpp:fLog2(int, int, int*) Unexecuted instantiation: sacenc_framewindowing.cpp:fLog2(int, int, int*) Unexecuted instantiation: sacenc_lib.cpp:fLog2(int, int, int*) Unexecuted instantiation: sacenc_nlc_enc.cpp:fLog2(int, int, int*) Unexecuted instantiation: sacenc_onsetdetect.cpp:fLog2(int, int, int*) Unexecuted instantiation: sacenc_paramextract.cpp:fLog2(int, int, int*) Unexecuted instantiation: sacenc_staticgain.cpp:fLog2(int, int, int*) Unexecuted instantiation: sacenc_tree.cpp:fLog2(int, int, int*) Unexecuted instantiation: sacenc_vectorfunctions.cpp:fLog2(int, int, int*) Unexecuted instantiation: sbr_deb.cpp:fLog2(int, int, int*) Unexecuted instantiation: sbr_dec.cpp:fLog2(int, int, int*) Unexecuted instantiation: sbr_encoder.cpp:fLog2(int, int, int*) Unexecuted instantiation: sbr_misc.cpp:fLog2(int, int, int*) Unexecuted instantiation: sbr_ram.cpp:fLog2(int, int, int*) Unexecuted instantiation: sbr_rom.cpp:fLog2(int, int, int*) Unexecuted instantiation: sbrdec_drc.cpp:fLog2(int, int, int*) Unexecuted instantiation: sbrdec_freq_sca.cpp:fLog2(int, int, int*) Unexecuted instantiation: sbrdecoder.cpp:fLog2(int, int, int*) Unexecuted instantiation: sbrenc_freq_sca.cpp:fLog2(int, int, int*) Unexecuted instantiation: sbrenc_ram.cpp:fLog2(int, int, int*) Unexecuted instantiation: sbrenc_rom.cpp:fLog2(int, int, int*) Unexecuted instantiation: scale.cpp:fLog2(int, int, int*) Unexecuted instantiation: sf_estim.cpp:fLog2(int, int, int*) Unexecuted instantiation: spreading.cpp:fLog2(int, int, int*) Unexecuted instantiation: stereo.cpp:fLog2(int, int, int*) Unexecuted instantiation: ton_corr.cpp:fLog2(int, int, int*) Unexecuted instantiation: tonality.cpp:fLog2(int, int, int*) Unexecuted instantiation: tpdec_asc.cpp:fLog2(int, int, int*) Unexecuted instantiation: tran_det.cpp:fLog2(int, int, int*) Unexecuted instantiation: transform.cpp:fLog2(int, int, int*) Unexecuted instantiation: usacdec_ace_d4t64.cpp:fLog2(int, int, int*) Unexecuted instantiation: usacdec_ace_ltp.cpp:fLog2(int, int, int*) Unexecuted instantiation: usacdec_acelp.cpp:fLog2(int, int, int*) Unexecuted instantiation: usacdec_fac.cpp:fLog2(int, int, int*) Unexecuted instantiation: usacdec_lpc.cpp:fLog2(int, int, int*) Unexecuted instantiation: usacdec_lpd.cpp:fLog2(int, int, int*) Unexecuted instantiation: usacdec_rom.cpp:fLog2(int, int, int*)  | 
869  |  |  | 
870  |  | /**  | 
871  |  |  * \brief calculate logarithm of base 2 of x_m * 2^(x_e)  | 
872  |  |  * \param x_m mantissa of the input value.  | 
873  |  |  * \param x_e exponent of the input value.  | 
874  |  |  * \return mantissa of the result with implicit exponent of LD_DATA_SHIFT.  | 
875  |  |  */  | 
876  | 272k  | FDK_INLINE FIXP_DBL fLog2(FIXP_DBL x_m, INT x_e) { | 
877  | 272k  |   if (x_m <= FL2FXCONST_DBL(0.0f)) { | 
878  | 0  |     x_m = FL2FXCONST_DBL(-1.0f);  | 
879  | 272k  |   } else { | 
880  | 272k  |     INT result_e;  | 
881  | 272k  |     x_m = fLog2(x_m, x_e, &result_e);  | 
882  | 272k  |     x_m = scaleValue(x_m, result_e - LD_DATA_SHIFT);  | 
883  | 272k  |   }  | 
884  | 272k  |   return x_m;  | 
885  | 272k  | } Unexecuted instantiation: FDK_bitbuffer.cpp:fLog2(int, int) Unexecuted instantiation: FDK_decorrelate.cpp:fLog2(int, int) Unexecuted instantiation: FDK_delay.cpp:fLog2(int, int) Unexecuted instantiation: FDK_drcDecLib.cpp:fLog2(int, int) Unexecuted instantiation: FDK_hybrid.cpp:fLog2(int, int) Unexecuted instantiation: FDK_lpc.cpp:fLog2(int, int) Unexecuted instantiation: FDK_qmf_domain.cpp:fLog2(int, int) Unexecuted instantiation: FDK_tools_rom.cpp:fLog2(int, int) Unexecuted instantiation: FDK_trigFcts.cpp:fLog2(int, int) Unexecuted instantiation: HFgen_preFlat.cpp:fLog2(int, int) Unexecuted instantiation: aacEnc_ram.cpp:fLog2(int, int) Unexecuted instantiation: aacEnc_rom.cpp:fLog2(int, int) Unexecuted instantiation: aac_ram.cpp:fLog2(int, int) Unexecuted instantiation: aac_rom.cpp:fLog2(int, int) Unexecuted instantiation: aacdec_drc.cpp:fLog2(int, int) Unexecuted instantiation: aacdec_hcr.cpp:fLog2(int, int) Unexecuted instantiation: aacdec_hcr_bit.cpp:fLog2(int, int) Unexecuted instantiation: aacdec_hcrs.cpp:fLog2(int, int) Unexecuted instantiation: aacdec_pns.cpp:fLog2(int, int) Unexecuted instantiation: aacdec_tns.cpp:fLog2(int, int) Unexecuted instantiation: aacdecoder.cpp:fLog2(int, int) Unexecuted instantiation: aacdecoder_lib.cpp:fLog2(int, int) Unexecuted instantiation: aacenc.cpp:fLog2(int, int) Unexecuted instantiation: aacenc_lib.cpp:fLog2(int, int) Unexecuted instantiation: aacenc_pns.cpp:fLog2(int, int) Unexecuted instantiation: aacenc_tns.cpp:fLog2(int, int) Unexecuted instantiation: ac_arith_coder.cpp:fLog2(int, int) Unexecuted instantiation: adj_thr.cpp:fLog2(int, int) Unexecuted instantiation: autocorr2nd.cpp:fLog2(int, int) Unexecuted instantiation: band_nrg.cpp:fLog2(int, int) Unexecuted instantiation: bandwidth.cpp:fLog2(int, int) Unexecuted instantiation: bit_cnt.cpp:fLog2(int, int) Unexecuted instantiation: bit_sbr.cpp:fLog2(int, int) Unexecuted instantiation: bitenc.cpp:fLog2(int, int) Unexecuted instantiation: block.cpp:fLog2(int, int) Unexecuted instantiation: block_switch.cpp:fLog2(int, int) Unexecuted instantiation: channel.cpp:fLog2(int, int) Unexecuted instantiation: channel_map.cpp:fLog2(int, int) Unexecuted instantiation: channelinfo.cpp:fLog2(int, int) Unexecuted instantiation: chaosmeasure.cpp:fLog2(int, int) Unexecuted instantiation: code_env.cpp:fLog2(int, int) Unexecuted instantiation: conceal.cpp:fLog2(int, int) Unexecuted instantiation: dct.cpp:fLog2(int, int) Unexecuted instantiation: drcDec_gainDecoder.cpp:fLog2(int, int) Unexecuted instantiation: drcDec_reader.cpp:fLog2(int, int) Unexecuted instantiation: drcDec_rom.cpp:fLog2(int, int) Unexecuted instantiation: drcDec_selectionProcess.cpp:fLog2(int, int) Unexecuted instantiation: drcDec_tools.cpp:fLog2(int, int) Unexecuted instantiation: drcGainDec_init.cpp:fLog2(int, int) Unexecuted instantiation: drcGainDec_preprocess.cpp:fLog2(int, int) Unexecuted instantiation: drcGainDec_process.cpp:fLog2(int, int) Unexecuted instantiation: dyn_bits.cpp:fLog2(int, int) Unexecuted instantiation: env_bit.cpp:fLog2(int, int) Unexecuted instantiation: env_calc.cpp:fLog2(int, int) Unexecuted instantiation: env_dec.cpp:fLog2(int, int) Unexecuted instantiation: env_est.cpp:fLog2(int, int) Unexecuted instantiation: env_extr.cpp:fLog2(int, int) Unexecuted instantiation: fft.cpp:fLog2(int, int) Unexecuted instantiation: fft_rad2.cpp:fLog2(int, int) Unexecuted instantiation: fixpoint_math.cpp:fLog2(int, int) Unexecuted instantiation: fram_gen.cpp:fLog2(int, int) Unexecuted instantiation: grp_data.cpp:fLog2(int, int) Unexecuted instantiation: hbe.cpp:fLog2(int, int) Unexecuted instantiation: huff_dec.cpp:fLog2(int, int) Unexecuted instantiation: intensity.cpp:fLog2(int, int) Unexecuted instantiation: invf_est.cpp:fLog2(int, int) Unexecuted instantiation: ldfiltbank.cpp:fLog2(int, int) Unexecuted instantiation: limiter.cpp:fLog2(int, int) Unexecuted instantiation: line_pe.cpp:fLog2(int, int) Unexecuted instantiation: lpp_tran.cpp:fLog2(int, int) Unexecuted instantiation: mdct.cpp:fLog2(int, int) Unexecuted instantiation: metadata_compressor.cpp:fLog2(int, int) Unexecuted instantiation: metadata_main.cpp:fLog2(int, int) Unexecuted instantiation: mh_det.cpp:fLog2(int, int) Unexecuted instantiation: mps_main.cpp:fLog2(int, int) Unexecuted instantiation: ms_stereo.cpp:fLog2(int, int) Unexecuted instantiation: nf_est.cpp:fLog2(int, int) Unexecuted instantiation: nlc_dec.cpp:fLog2(int, int) Unexecuted instantiation: noisedet.cpp:fLog2(int, int) Unexecuted instantiation: pcm_utils.cpp:fLog2(int, int) Unexecuted instantiation: pcmdmx_lib.cpp:fLog2(int, int) Unexecuted instantiation: pnsparam.cpp:fLog2(int, int) Unexecuted instantiation: pre_echo_control.cpp:fLog2(int, int) Unexecuted instantiation: ps_bitenc.cpp:fLog2(int, int) Unexecuted instantiation: ps_encode.cpp:fLog2(int, int) Unexecuted instantiation: ps_main.cpp:fLog2(int, int) Unexecuted instantiation: psbitdec.cpp:fLog2(int, int) Unexecuted instantiation: psdec.cpp:fLog2(int, int) Unexecuted instantiation: psdec_drm.cpp:fLog2(int, int) Unexecuted instantiation: psdecrom_drm.cpp:fLog2(int, int) Unexecuted instantiation: psy_configuration.cpp:fLog2(int, int) Unexecuted instantiation: psy_main.cpp:fLog2(int, int) Unexecuted instantiation: pulsedata.cpp:fLog2(int, int) Unexecuted instantiation: pvc_dec.cpp:fLog2(int, int) Unexecuted instantiation: qc_main.cpp:fLog2(int, int) Unexecuted instantiation: qmf.cpp:fLog2(int, int) Unexecuted instantiation: quantize.cpp:fLog2(int, int) Unexecuted instantiation: resampler.cpp:fLog2(int, int) Unexecuted instantiation: rvlc.cpp:fLog2(int, int) Unexecuted instantiation: rvlcbit.cpp:fLog2(int, int) Unexecuted instantiation: rvlcconceal.cpp:fLog2(int, int) Unexecuted instantiation: sac_bitdec.cpp:fLog2(int, int) Unexecuted instantiation: sac_calcM1andM2.cpp:fLog2(int, int) Unexecuted instantiation: sac_dec.cpp:fLog2(int, int) Unexecuted instantiation: sac_dec_conceal.cpp:fLog2(int, int) Unexecuted instantiation: sac_dec_lib.cpp:fLog2(int, int) Unexecuted instantiation: sac_process.cpp:fLog2(int, int) Unexecuted instantiation: sac_qmf.cpp:fLog2(int, int) Unexecuted instantiation: sac_reshapeBBEnv.cpp:fLog2(int, int) Unexecuted instantiation: sac_rom.cpp:fLog2(int, int) Unexecuted instantiation: sac_smoothing.cpp:fLog2(int, int) sac_stp.cpp:fLog2(int, int) Line  | Count  | Source  |  876  | 272k  | FDK_INLINE FIXP_DBL fLog2(FIXP_DBL x_m, INT x_e) { |  877  | 272k  |   if (x_m <= FL2FXCONST_DBL(0.0f)) { |  878  | 0  |     x_m = FL2FXCONST_DBL(-1.0f);  |  879  | 272k  |   } else { |  880  | 272k  |     INT result_e;  |  881  | 272k  |     x_m = fLog2(x_m, x_e, &result_e);  |  882  | 272k  |     x_m = scaleValue(x_m, result_e - LD_DATA_SHIFT);  |  883  | 272k  |   }  |  884  | 272k  |   return x_m;  |  885  | 272k  | }  |  
 Unexecuted instantiation: sac_tsd.cpp:fLog2(int, int) Unexecuted instantiation: sacenc_bitstream.cpp:fLog2(int, int) Unexecuted instantiation: sacenc_dmx_tdom_enh.cpp:fLog2(int, int) Unexecuted instantiation: sacenc_filter.cpp:fLog2(int, int) Unexecuted instantiation: sacenc_framewindowing.cpp:fLog2(int, int) Unexecuted instantiation: sacenc_lib.cpp:fLog2(int, int) Unexecuted instantiation: sacenc_nlc_enc.cpp:fLog2(int, int) Unexecuted instantiation: sacenc_onsetdetect.cpp:fLog2(int, int) Unexecuted instantiation: sacenc_paramextract.cpp:fLog2(int, int) Unexecuted instantiation: sacenc_staticgain.cpp:fLog2(int, int) Unexecuted instantiation: sacenc_tree.cpp:fLog2(int, int) Unexecuted instantiation: sacenc_vectorfunctions.cpp:fLog2(int, int) Unexecuted instantiation: sbr_deb.cpp:fLog2(int, int) Unexecuted instantiation: sbr_dec.cpp:fLog2(int, int) Unexecuted instantiation: sbr_encoder.cpp:fLog2(int, int) Unexecuted instantiation: sbr_misc.cpp:fLog2(int, int) Unexecuted instantiation: sbr_ram.cpp:fLog2(int, int) Unexecuted instantiation: sbr_rom.cpp:fLog2(int, int) Unexecuted instantiation: sbrdec_drc.cpp:fLog2(int, int) Unexecuted instantiation: sbrdec_freq_sca.cpp:fLog2(int, int) Unexecuted instantiation: sbrdecoder.cpp:fLog2(int, int) Unexecuted instantiation: sbrenc_freq_sca.cpp:fLog2(int, int) Unexecuted instantiation: sbrenc_ram.cpp:fLog2(int, int) Unexecuted instantiation: sbrenc_rom.cpp:fLog2(int, int) Unexecuted instantiation: scale.cpp:fLog2(int, int) Unexecuted instantiation: sf_estim.cpp:fLog2(int, int) Unexecuted instantiation: spreading.cpp:fLog2(int, int) Unexecuted instantiation: stereo.cpp:fLog2(int, int) Unexecuted instantiation: ton_corr.cpp:fLog2(int, int) Unexecuted instantiation: tonality.cpp:fLog2(int, int) Unexecuted instantiation: tpdec_asc.cpp:fLog2(int, int) Unexecuted instantiation: tran_det.cpp:fLog2(int, int) Unexecuted instantiation: transform.cpp:fLog2(int, int) Unexecuted instantiation: usacdec_ace_d4t64.cpp:fLog2(int, int) Unexecuted instantiation: usacdec_ace_ltp.cpp:fLog2(int, int) Unexecuted instantiation: usacdec_acelp.cpp:fLog2(int, int) Unexecuted instantiation: usacdec_fac.cpp:fLog2(int, int) Unexecuted instantiation: usacdec_lpc.cpp:fLog2(int, int) Unexecuted instantiation: usacdec_lpd.cpp:fLog2(int, int) Unexecuted instantiation: usacdec_rom.cpp:fLog2(int, int)  | 
886  |  |  | 
887  |  | #endif /* FUNCTION_fLog2 */  | 
888  |  |  | 
889  |  | #ifndef FUNCTION_fAddSaturate  | 
890  |  | /**  | 
891  |  |  * \brief Add with saturation of the result.  | 
892  |  |  * \param a first summand  | 
893  |  |  * \param b second summand  | 
894  |  |  * \return saturated sum of a and b.  | 
895  |  |  */  | 
896  | 6.01M  | inline FIXP_SGL fAddSaturate(const FIXP_SGL a, const FIXP_SGL b) { | 
897  | 6.01M  |   LONG sum;  | 
898  |  |  | 
899  | 6.01M  |   sum = (LONG)(SHORT)a + (LONG)(SHORT)b;  | 
900  | 6.01M  |   sum = fMax(fMin((INT)sum, (INT)MAXVAL_SGL), (INT)MINVAL_SGL);  | 
901  | 6.01M  |   return (FIXP_SGL)(SHORT)sum;  | 
902  | 6.01M  | }  | 
903  |  |  | 
904  |  | /**  | 
905  |  |  * \brief Add with saturation of the result.  | 
906  |  |  * \param a first summand  | 
907  |  |  * \param b second summand  | 
908  |  |  * \return saturated sum of a and b.  | 
909  |  |  */  | 
910  | 1.79G  | inline FIXP_DBL fAddSaturate(const FIXP_DBL a, const FIXP_DBL b) { | 
911  | 1.79G  |   LONG sum;  | 
912  |  |  | 
913  | 1.79G  |   sum = (LONG)(a >> 1) + (LONG)(b >> 1);  | 
914  | 1.79G  |   sum = fMax(fMin((INT)sum, (INT)(MAXVAL_DBL >> 1)), (INT)(MINVAL_DBL >> 1));  | 
915  | 1.79G  |   return (FIXP_DBL)(LONG)(sum << 1);  | 
916  | 1.79G  | }  | 
917  |  | #endif /* FUNCTION_fAddSaturate */  | 
918  |  |  | 
919  |  | INT fixp_floorToInt(FIXP_DBL f_inp, INT sf);  | 
920  |  | FIXP_DBL fixp_floor(FIXP_DBL f_inp, INT sf);  | 
921  |  |  | 
922  |  | INT fixp_ceilToInt(FIXP_DBL f_inp, INT sf);  | 
923  |  | FIXP_DBL fixp_ceil(FIXP_DBL f_inp, INT sf);  | 
924  |  |  | 
925  |  | INT fixp_truncateToInt(FIXP_DBL f_inp, INT sf);  | 
926  |  | FIXP_DBL fixp_truncate(FIXP_DBL f_inp, INT sf);  | 
927  |  |  | 
928  |  | INT fixp_roundToInt(FIXP_DBL f_inp, INT sf);  | 
929  |  | FIXP_DBL fixp_round(FIXP_DBL f_inp, INT sf);  | 
930  |  |  | 
931  |  | /*****************************************************************************  | 
932  |  |  | 
933  |  |  array for 1/n, n=1..80  | 
934  |  |  | 
935  |  | ****************************************************************************/  | 
936  |  |  | 
937  |  | extern const FIXP_DBL invCount[80];  | 
938  |  |  | 
939  |  | LNK_SECTION_INITCODE  | 
940  | 0  | inline void InitInvInt(void) {} | 
941  |  |  | 
942  |  | /**  | 
943  |  |  * \brief Calculate the value of 1/i where i is a integer value. It supports  | 
944  |  |  *        input values from 1 upto (80-1).  | 
945  |  |  * \param intValue Integer input value.  | 
946  |  |  * \param FIXP_DBL representation of 1/intValue  | 
947  |  |  */  | 
948  | 2.57M  | inline FIXP_DBL GetInvInt(int intValue) { | 
949  | 2.57M  |   return invCount[fMin(fMax(intValue, 0), 80 - 1)];  | 
950  | 2.57M  | }  | 
951  |  |  | 
952  |  | #endif /* FIXPOINT_MATH_H */  |