diff options
42 files changed, 4743 insertions, 1399 deletions
| diff --git a/.travis.yml b/.travis.yml index 7ad56bd..055c07b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,11 @@ language: c++  matrix:    include:      - env: CONF="" +      os: osx +      osx_image: xcode11 +      compiler: clang + +    - env: CONF=""        os: linux        arch: amd64        dist: bionic @@ -24,7 +29,7 @@ matrix:              - libasound2-dev              - libjack-jackd2-dev              - jackd2 -            - libmagickwand-dev +            - libgstreamer1.0-dev              - g++-9      - env: CONF="--enable-alsa" @@ -51,7 +56,7 @@ matrix:        compiler: gcc        addons: *linuxaddons -    - env: CONF="--enable-alsa --enable-jack --enable-vlc" +    - env: CONF="--enable-gst"        os: linux        arch: amd64        dist: bionic @@ -59,7 +64,15 @@ matrix:        compiler: gcc        addons: *linuxaddons -    - env: CONF="--enable-alsa --enable-jack --enable-vlc" +    - env: CONF="--enable-alsa --enable-jack --enable-vlc --enable-gst" +      os: linux +      arch: amd64 +      dist: bionic +      sudo: required +      compiler: gcc +      addons: *linuxaddons + +    - env: CONF="--enable-alsa --enable-jack --enable-vlc --enable-gst"        os: linux        arch: arm64        dist: bionic @@ -67,9 +80,21 @@ matrix:        compiler: gcc        addons: *linuxaddons +before_install: +  - | +    if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then +    brew update +    brew install automake || true +    brew install zeromq || true +    fi +  script:    - |      ./bootstrap -    CC=gcc-9 CXX=g++-9 ./configure $CONF +    if [[ "$TRAVIS_OS_NAME" != "osx" ]]; then +    export CC=gcc-9 +    export CXX=g++-9 +    fi +    ./configure $CONF      make @@ -49,12 +49,12 @@ For Debian Buster, and related systems, use      $ sudo apt install build-essential automake libtool git      $ sudo apt install libzmq3-dev libzmq5 -    $ sudo apt install libvlc-dev vlc-data vlc-plugins-base +    $ sudo apt install libvlc-dev vlc-data vlc-plugin-base      $ sudo apt install libjack-jackd2-dev jackd2      $ sudo apt install libasound2-dev libasound2      $ sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev -**Attention**: on older Debian versions, you'll need `vlc-nox` instead of `vlc-plugins-base` +**Attention**: on older Debian versions, you'll need `vlc-nox` instead of `vlc-plugin-base`  Installation  ============ diff --git a/fdk-aac/Android.bp b/fdk-aac/Android.bp index dce6fdd..80a0347 100644 --- a/fdk-aac/Android.bp +++ b/fdk-aac/Android.bp @@ -30,7 +30,8 @@ cc_library_static {             "signed-integer-overflow",             "bounds",          ], -        cfi: true, +        // Enable CFI if this becomes a shared library. +        // cfi: true,      },      shared_libs: [          "liblog", diff --git a/fdk-aac/ChangeLog b/fdk-aac/ChangeLog index 2675878..7b2e1b6 100644 --- a/fdk-aac/ChangeLog +++ b/fdk-aac/ChangeLog @@ -1,3 +1,6 @@ +2.0.1 + - Minor release with a number of crash/fuzz fixes, primarily for the decoder +  2.0.0   - Major update in the upstream source base, with support for new     profiles and features, and numerous crash/fuzz fixes. The new diff --git a/fdk-aac/configure.ac b/fdk-aac/configure.ac index 9c714d7..597120a 100644 --- a/fdk-aac/configure.ac +++ b/fdk-aac/configure.ac @@ -1,7 +1,7 @@  dnl                                               -*- Autoconf -*-  dnl Process this file with autoconf to produce a configure script. -AC_INIT([fdk-aac], [2.0.0], [http://sourceforge.net/projects/opencore-amr/]) +AC_INIT([fdk-aac], [2.0.1], [http://sourceforge.net/projects/opencore-amr/])  AC_CONFIG_AUX_DIR(.)  AC_CONFIG_MACRO_DIR([m4])  AM_INIT_AUTOMAKE([tar-ustar foreign]) @@ -26,7 +26,7 @@ AC_SEARCH_LIBS([sin], [m])  dnl soname version to use  dnl goes by ‘current[:revision[:age]]’ with the soname ending up as  dnl current.age.revision -FDK_AAC_VERSION=2:0:0 +FDK_AAC_VERSION=2:1:0  AS_IF([test x$enable_shared = xyes], [LIBS_PRIVATE=$LIBS], [LIBS_PUBLIC=$LIBS])  AC_SUBST(FDK_AAC_VERSION) diff --git a/fdk-aac/documentation/aacDecoder.pdf b/fdk-aac/documentation/aacDecoder.pdfBinary files differ index 1dec334..eb2a75e 100644 --- a/fdk-aac/documentation/aacDecoder.pdf +++ b/fdk-aac/documentation/aacDecoder.pdf diff --git a/fdk-aac/libAACdec/include/aacdecoder_lib.h b/fdk-aac/libAACdec/include/aacdecoder_lib.h index 5f0dd02..2dfc65a 100644 --- a/fdk-aac/libAACdec/include/aacdecoder_lib.h +++ b/fdk-aac/libAACdec/include/aacdecoder_lib.h @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -459,8 +459,8 @@ Where N equals to CStreamInfo::frameSize .  #include "genericStds.h"  #define AACDECODER_LIB_VL0 3 -#define AACDECODER_LIB_VL1 0 -#define AACDECODER_LIB_VL2 0 +#define AACDECODER_LIB_VL1 1 +#define AACDECODER_LIB_VL2 2  /**   * \brief  AAC decoder error codes. @@ -746,66 +746,77 @@ typedef enum {                                    ::CONCEAL_INTER. only some AOTs are                                    supported). \n */    AAC_DRC_BOOST_FACTOR = -      0x0200, /*!< Dynamic Range Control: Scaling factor for boosting gain -                 values. Defines how the boosting DRC factors (conveyed in the -                 bitstream) will be applied to the decoded signal. The valid -                 values range from 0 (don't apply boost factors) to 127 (fully -                   apply boost factors). Default value is 0. */ -  AAC_DRC_ATTENUATION_FACTOR = -      0x0201, /*!< Dynamic Range Control: Scaling factor for attenuating gain -                 values. Same as -                   ::AAC_DRC_BOOST_FACTOR but for attenuating DRC factors. */ +      0x0200, /*!< MPEG-4 / MPEG-D Dynamic Range Control (DRC): Scaling factor +                 for boosting gain values. Defines how the boosting DRC factors +                 (conveyed in the bitstream) will be applied to the decoded +                 signal. The valid values range from 0 (don't apply boost +                 factors) to 127 (fully apply boost factors). Default value is 0 +                 for MPEG-4 DRC and 127 for MPEG-D DRC. */ +  AAC_DRC_ATTENUATION_FACTOR = 0x0201, /*!< MPEG-4 / MPEG-D DRC: Scaling factor +                                          for attenuating gain values. Same as +                                            ::AAC_DRC_BOOST_FACTOR but for +                                          attenuating DRC factors. */    AAC_DRC_REFERENCE_LEVEL = -      0x0202, /*!< Dynamic Range Control (DRC): Target reference level. Defines -                 the level below full-scale (quantized in steps of 0.25dB) to -                 which the output audio signal will be normalized to by the DRC -                 module. The parameter controls loudness normalization for both -                 MPEG-4 DRC and MPEG-D DRC. The valid values range from 40 (-10 -                 dBFS) to 127 (-31.75 dBFS). Any value smaller than 0 switches -                 off loudness normalization and MPEG-4 DRC. By default, loudness -                 normalization and MPEG-4 DRC is switched off. */ +      0x0202, /*!< MPEG-4 / MPEG-D DRC: Target reference level / decoder target +                 loudness.\n Defines the level below full-scale (quantized in +                 steps of 0.25dB) to which the output audio signal will be +                 normalized to by the DRC module.\n The parameter controls +                 loudness normalization for both MPEG-4 DRC and MPEG-D DRC. The +                 valid values range from 40 (-10 dBFS) to 127 (-31.75 dBFS).\n +                   Example values:\n +                   124 (-31 dBFS) for audio/video receivers (AVR) or other +                 devices allowing audio playback with high dynamic range,\n 96 +                 (-24 dBFS) for TV sets or equivalent devices (default),\n 64 +                 (-16 dBFS) for mobile devices where the dynamic range of audio +                 playback is restricted.\n Any value smaller than 0 switches off +                 loudness normalization and MPEG-4 DRC. */    AAC_DRC_HEAVY_COMPRESSION = -      0x0203, /*!< Dynamic Range Control: En-/Disable DVB specific heavy -                 compression (aka RF mode). If set to 1, the decoder will apply -                 the compression values from the DVB specific ancillary data -                 field. At the same time the MPEG-4 Dynamic Range Control tool -                 will be disabled. By default, heavy compression is disabled. */ +      0x0203, /*!< MPEG-4 DRC: En-/Disable DVB specific heavy compression (aka +                 RF mode). If set to 1, the decoder will apply the compression +                 values from the DVB specific ancillary data field. At the same +                 time the MPEG-4 Dynamic Range Control tool will be disabled. By +                   default, heavy compression is disabled. */    AAC_DRC_DEFAULT_PRESENTATION_MODE = -      0x0204, /*!< Dynamic Range Control: Default presentation mode (DRC -                 parameter handling). \n Defines the handling of the DRC -                 parameters boost factor, attenuation factor and heavy -                 compression, if no presentation mode is indicated in the -                 bitstream.\n For options, see -                 ::AAC_DRC_DEFAULT_PRESENTATION_MODE_OPTIONS.\n Default: +      0x0204, /*!< MPEG-4 DRC: Default presentation mode (DRC parameter +                 handling). \n Defines the handling of the DRC parameters boost +                 factor, attenuation factor and heavy compression, if no +                 presentation mode is indicated in the bitstream.\n For options, +                 see ::AAC_DRC_DEFAULT_PRESENTATION_MODE_OPTIONS.\n Default:                   ::AAC_DRC_PARAMETER_HANDLING_DISABLED */    AAC_DRC_ENC_TARGET_LEVEL = -      0x0205, /*!< Dynamic Range Control: Encoder target level for light (i.e. -                 not heavy) compression.\n If known, this declares the target -                 reference level that was assumed at the encoder for calculation -                   of limiting gains. The valid values range from 0 (full-scale) -                 to 127 (31.75 dB below full-scale). This parameter is used only +      0x0205, /*!< MPEG-4 DRC: Encoder target level for light (i.e. not heavy) +                 compression.\n If known, this declares the target reference +                 level that was assumed at the encoder for calculation of +                 limiting gains. The valid values range from 0 (full-scale) to +                 127 (31.75 dB below full-scale). This parameter is used only                   with ::AAC_DRC_PARAMETER_HANDLING_ENABLED and ignored                   otherwise.\n Default: 127 (worst-case assumption).\n */ +  AAC_UNIDRC_SET_EFFECT = 0x0206, /*!< MPEG-D DRC: Request a DRC effect type for +                                     selection of a DRC set.\n Supported indices +                                     are:\n -1: DRC off. Completely disables +                                     MPEG-D DRC.\n 0: None (default). Disables +                                     MPEG-D DRC, but automatically enables DRC +                                     if necessary to prevent clipping.\n 1: Late +                                     night\n 2: Noisy environment\n 3: Limited +                                     playback range\n 4: Low playback level\n 5: +                                     Dialog enhancement\n 6: General +                                     compression. Used for generally enabling +                                     MPEG-D DRC without particular request.\n */ +  AAC_UNIDRC_ALBUM_MODE = +      0x0207, /*!<  MPEG-D DRC: Enable album mode. 0: Disabled (default), 1: +                 Enabled.\n Disabled album mode leads to application of gain +                 sequences for fading in and out, if provided in the +                 bitstream.\n Enabled album mode makes use of dedicated album +                 loudness information, if provided in the bitstream.\n */    AAC_QMF_LOWPOWER = 0x0300, /*!< Quadrature Mirror Filter (QMF) Bank processing                                  mode. \n -1: Use internal default. Implies MPEG                                  Surround partially complex accordingly. \n 0:                                  Use complex QMF data mode. \n 1: Use real (low                                  power) QMF data mode. \n */    AAC_TPDEC_CLEAR_BUFFER = -      0x0603, /*!< Clear internal bit stream buffer of transport layers. The -                 decoder will start decoding at new data passed after this event -                 and any previous data is discarded. */ -  AAC_UNIDRC_SET_EFFECT = 0x0903 /*!<  MPEG-D DRC: Request a DRC effect type for -                                    selection of a DRC set.\n Supported indices -                                    are:\n -1: DRC off. Completely disables -                                    MPEG-D DRC.\n 0: None (default). Disables -                                    MPEG-D DRC, but automatically enables DRC if -                                    necessary to prevent clipping.\n 1: Late -                                    night\n 2: Noisy environment\n 3: Limited -                                    playback range\n 4: Low playback level\n 5: -                                    Dialog enhancement\n 6: General compression. -                                    Used for generally enabling MPEG-D DRC -                                    without particular request.\n */ +      0x0603 /*!< Clear internal bit stream buffer of transport layers. The +                decoder will start decoding at new data passed after this event +                and any previous data is discarded. */  } AACDEC_PARAM; diff --git a/fdk-aac/libAACdec/src/aacdec_drc.cpp b/fdk-aac/libAACdec/src/aacdec_drc.cpp index 922a09e..4129d0f 100644 --- a/fdk-aac/libAACdec/src/aacdec_drc.cpp +++ b/fdk-aac/libAACdec/src/aacdec_drc.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -174,9 +174,9 @@ void aacDecoder_drcInit(HANDLE_AAC_DRC self) {    pParams->usrCut = FL2FXCONST_DBL(0.0f);    pParams->boost = FL2FXCONST_DBL(0.0f);    pParams->usrBoost = FL2FXCONST_DBL(0.0f); -  pParams->targetRefLevel = -1; +  pParams->targetRefLevel = 96;    pParams->expiryFrame = AACDEC_DRC_DFLT_EXPIRY_FRAMES; -  pParams->applyDigitalNorm = OFF; +  pParams->applyDigitalNorm = ON;    pParams->applyHeavyCompression = OFF;    pParams->usrApplyHeavyCompression = OFF; diff --git a/fdk-aac/libAACdec/src/aacdec_hcr.cpp b/fdk-aac/libAACdec/src/aacdec_hcr.cpp index 6114756..26fdd97 100644 --- a/fdk-aac/libAACdec/src/aacdec_hcr.cpp +++ b/fdk-aac/libAACdec/src/aacdec_hcr.cpp @@ -1423,6 +1423,9 @@ static INT DecodeEscapeSequence(HANDLE_FDK_BITSTREAM bs, const INT bsAnchor,    sign = (quantSpecCoef >= 0) ? 1 : -1; +  if (escapeOnesCounter > 30) +    escapeOnesCounter = 30; +    quantSpecCoef = sign * (((INT)1 << escapeOnesCounter) + escape_word);    return quantSpecCoef; diff --git a/fdk-aac/libAACdec/src/aacdecoder.cpp b/fdk-aac/libAACdec/src/aacdecoder.cpp index 8f03328..7617937 100644 --- a/fdk-aac/libAACdec/src/aacdecoder.cpp +++ b/fdk-aac/libAACdec/src/aacdecoder.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -1815,6 +1815,9 @@ CAacDecoder_Init(HANDLE_AACDECODER self, const CSAudioSpecificConfig *asc,        self->useLdQmfTimeAlign =            asc->m_sc.m_eldSpecificConfig.m_useLdQmfTimeAlign;      } +    if (self->sbrEnabled != asc->m_sbrPresentFlag) { +      ascChanged = 1; +    }    }    self->streamInfo.extAot = asc->m_extensionAudioObjectType; diff --git a/fdk-aac/libAACdec/src/aacdecoder_lib.cpp b/fdk-aac/libAACdec/src/aacdecoder_lib.cpp index 7df17b9..8685a30 100644 --- a/fdk-aac/libAACdec/src/aacdecoder_lib.cpp +++ b/fdk-aac/libAACdec/src/aacdecoder_lib.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -119,8 +119,8 @@ amm-info@iis.fraunhofer.de  /* Decoder library info */  #define AACDECODER_LIB_VL0 3 -#define AACDECODER_LIB_VL1 0 -#define AACDECODER_LIB_VL2 0 +#define AACDECODER_LIB_VL1 1 +#define AACDECODER_LIB_VL2 2  #define AACDECODER_LIB_TITLE "AAC Decoder Lib"  #ifdef __ANDROID__  #define AACDECODER_LIB_BUILD_DATE "" @@ -823,11 +823,15 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_SetParam(      case AAC_DRC_ATTENUATION_FACTOR:        /* DRC compression factor (where 0 is no and 127 is max compression) */        errorStatus = aacDecoder_drcSetParam(hDrcInfo, DRC_CUT_SCALE, value); +      uniDrcErr = FDK_drcDec_SetParam(self->hUniDrcDecoder, DRC_DEC_COMPRESS, +                                      value * (FL2FXCONST_DBL(0.5f / 127.0f)));        break;      case AAC_DRC_BOOST_FACTOR:        /* DRC boost factor (where 0 is no and 127 is max boost) */        errorStatus = aacDecoder_drcSetParam(hDrcInfo, DRC_BOOST_SCALE, value); +      uniDrcErr = FDK_drcDec_SetParam(self->hUniDrcDecoder, DRC_DEC_BOOST, +                                      value * (FL2FXCONST_DBL(0.5f / 127.0f)));        break;      case AAC_DRC_REFERENCE_LEVEL: @@ -871,6 +875,11 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_SetParam(        uniDrcErr = FDK_drcDec_SetParam(self->hUniDrcDecoder, DRC_DEC_EFFECT_TYPE,                                        (FIXP_DBL)value);        break; +    case AAC_UNIDRC_ALBUM_MODE: +      uniDrcErr = FDK_drcDec_SetParam(self->hUniDrcDecoder, DRC_DEC_ALBUM_MODE, +                                      (FIXP_DBL)value); +      break; +      case AAC_TPDEC_CLEAR_BUFFER:        errTp = transportDec_SetParam(hTpDec, TPDEC_PARAM_RESET, 1);        self->streamInfo.numLostAccessUnits = 0; @@ -1669,6 +1678,13 @@ aacDecoder_DecodeFrame(HANDLE_AACDECODER self, INT_PCM *pTimeData_extern,              reverseOutChannelMap[ch] = ch;            } +          /* Update sampleRate and frameSize. This may be necessary in case of +           * implicit SBR signaling */ +          FDK_drcDec_SetParam(self->hUniDrcDecoder, DRC_DEC_SAMPLE_RATE, +                              self->streamInfo.sampleRate); +          FDK_drcDec_SetParam(self->hUniDrcDecoder, DRC_DEC_FRAME_SIZE, +                              self->streamInfo.frameSize); +            /* If SBR and/or MPS is active, the DRC gains are aligned to the QMF               domain signal before the QMF synthesis. Therefore the DRC gains               need to be delayed by the QMF synthesis delay. */ diff --git a/fdk-aac/libAACdec/src/usacdec_lpd.cpp b/fdk-aac/libAACdec/src/usacdec_lpd.cpp index 2110172..e0a2631 100644 --- a/fdk-aac/libAACdec/src/usacdec_lpd.cpp +++ b/fdk-aac/libAACdec/src/usacdec_lpd.cpp @@ -1222,7 +1222,7 @@ AAC_DECODER_ERROR CLpdChannelStream_Read(        (INT)(samplingRate * PIT_MIN_12k8 + (FSCALE_DENOM / 2)) / FSCALE_DENOM -        (INT)PIT_MIN_12k8; -  if ((samplingRate < FAC_FSCALE_MIN) || (samplingRate > FAC_FSCALE_MAX)) { +  if ((samplingRate < 6000) || (samplingRate > 24000)) {      error = AAC_DEC_PARSE_ERROR;      goto bail;    } diff --git a/fdk-aac/libAACenc/src/aacenc_lib.cpp b/fdk-aac/libAACenc/src/aacenc_lib.cpp index aaa6c74..4eaa662 100644 --- a/fdk-aac/libAACenc/src/aacenc_lib.cpp +++ b/fdk-aac/libAACenc/src/aacenc_lib.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -1822,6 +1822,10 @@ AACENC_ERROR aacEncEncode(const HANDLE_AACENCODER hAacEncoder,          hAacEncoder->inputBuffer +          (hAacEncoder->inputBufferOffset + hAacEncoder->nSamplesRead) /              hAacEncoder->aacConfig.nChannels; +    newSamples -= +        (newSamples % +         hAacEncoder->extParam +             .nChannels); /* process multiple samples of input channels */      /* Copy new input samples to internal buffer */      if (inBufDesc->bufElSizes[idx] == (INT)sizeof(INT_PCM)) { diff --git a/fdk-aac/libAACenc/src/adj_thr.cpp b/fdk-aac/libAACenc/src/adj_thr.cpp index 6e19680..226d003 100644 --- a/fdk-aac/libAACenc/src/adj_thr.cpp +++ b/fdk-aac/libAACenc/src/adj_thr.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -591,13 +591,11 @@ static void FDKaacEnc_initAvoidHoleFlag(            if (sfbEn > avgEn) {              FIXP_DBL tmpMinSnrLdData;              if (psyOutChannel[ch]->lastWindowSequence == LONG_WINDOW) -              tmpMinSnrLdData = -                  fixMax(SnrLdFac + (FIXP_DBL)(avgEnLdData - sfbEnLdData), -                         (FIXP_DBL)SnrLdMin1); +              tmpMinSnrLdData = SnrLdFac + fixMax(avgEnLdData - sfbEnLdData, +                                                  SnrLdMin1 - SnrLdFac);              else -              tmpMinSnrLdData = -                  fixMax(SnrLdFac + (FIXP_DBL)(avgEnLdData - sfbEnLdData), -                         (FIXP_DBL)SnrLdMin3); +              tmpMinSnrLdData = SnrLdFac + fixMax(avgEnLdData - sfbEnLdData, +                                                  SnrLdMin3 - SnrLdFac);              qcOutChan->sfbMinSnrLdData[sfbGrp + sfb] = fixMin(                  qcOutChan->sfbMinSnrLdData[sfbGrp + sfb], tmpMinSnrLdData); diff --git a/fdk-aac/libAACenc/src/intensity.cpp b/fdk-aac/libAACenc/src/intensity.cpp index 8cb1b45..0944fa3 100644 --- a/fdk-aac/libAACenc/src/intensity.cpp +++ b/fdk-aac/libAACenc/src/intensity.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -661,6 +661,7 @@ void FDKaacEnc_IntensityStereoProcessing(      for (sfboffs = 0; sfboffs < maxSfbPerGroup; sfboffs++) {        INT sL, sR;        FIXP_DBL inv_n; +      INT mdct_spec_sf = MDCT_SPEC_SF;        msMask[sfb + sfboffs] = 0;        if (isMask[sfb + sfboffs] == 0) { @@ -682,6 +683,12 @@ void FDKaacEnc_IntensityStereoProcessing(          }        } +      if (sfbOffset[sfb + sfboffs + 1] - sfbOffset[sfb + sfboffs] > +          1 << mdct_spec_sf) { +        mdct_spec_sf++; /* This is for rare cases where the number of bins in a +                           scale factor band is > 64 */ +      } +        inv_n = GetInvInt(            (sfbOffset[sfb + sfboffs + 1] - sfbOffset[sfb + sfboffs]) >>            1);  // scaled with 2 to compensate fMultDiv2() in subsequent loop @@ -707,11 +714,11 @@ void FDKaacEnc_IntensityStereoProcessing(               j++) {            d = ((mdctSpectrumLeft[j] << s0) >> 1) -                ((mdctSpectrumRight[j] << s0) >> 1); -          ed += fMultDiv2(d, d) >> (MDCT_SPEC_SF - 1); +          ed += fMultDiv2(d, d) >> (mdct_spec_sf - 1);          }          msMask[sfb + sfboffs] = 1;          tmp = fDivNorm(sfbEnergyLeft[sfb + sfboffs], ed, &s1); -        s2 = (s1) + (2 * s0) - 2 - MDCT_SPEC_SF; +        s2 = (s1) + (2 * s0) - 2 - mdct_spec_sf;          if (s2 & 1) {            tmp = tmp >> 1;            s2 = s2 + 1; @@ -747,13 +754,13 @@ void FDKaacEnc_IntensityStereoProcessing(               j++) {            s = ((mdctSpectrumLeft[j] << s0) >> 1) +                ((mdctSpectrumRight[j] << s0) >> 1); -          es = fAddSaturate(es, fMultDiv2(s, s) >> -                (MDCT_SPEC_SF - -                 1));  // scaled 2*(mdctScale - s0 + 1) + MDCT_SPEC_SF +          es += fMultDiv2(s, s) >> +                (mdct_spec_sf - +                 1);  // scaled 2*(mdctScale - s0 + 1) + mdct_spec_sf          }          msMask[sfb + sfboffs] = 0;          tmp = fDivNorm(sfbEnergyLeft[sfb + sfboffs], es, &s1); -        s2 = (s1) + (2 * s0) - 2 - MDCT_SPEC_SF; +        s2 = (s1) + (2 * s0) - 2 - mdct_spec_sf;          if (s2 & 1) {            tmp = tmp >> 1;            s2 = s2 + 1; diff --git a/fdk-aac/libDRCdec/include/FDK_drcDecLib.h b/fdk-aac/libDRCdec/include/FDK_drcDecLib.h index e187e18..2d28d23 100644 --- a/fdk-aac/libDRCdec/include/FDK_drcDecLib.h +++ b/fdk-aac/libDRCdec/include/FDK_drcDecLib.h @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -134,6 +134,7 @@ typedef enum {    DRC_DEC_EFFECT_TYPE,    DRC_DEC_EFFECT_TYPE_FALLBACK_CODE,    DRC_DEC_LOUDNESS_MEASUREMENT_METHOD, +  DRC_DEC_ALBUM_MODE,    /* set only system (not user) parameters */    DRC_DEC_DOWNMIX_ID,    DRC_DEC_TARGET_CHANNEL_COUNT_REQUESTED, /**< number of output channels @@ -141,6 +142,8 @@ typedef enum {                                               choosing an appropriate                                               downmixInstruction */    DRC_DEC_BASE_CHANNEL_COUNT, +  DRC_DEC_FRAME_SIZE, +  DRC_DEC_SAMPLE_RATE,    /* get only system parameters */    DRC_DEC_IS_MULTIBAND_DRC_1,    DRC_DEC_IS_MULTIBAND_DRC_2, diff --git a/fdk-aac/libDRCdec/src/FDK_drcDecLib.cpp b/fdk-aac/libDRCdec/src/FDK_drcDecLib.cpp index b29b79d..4f8ebc7 100644 --- a/fdk-aac/libDRCdec/src/FDK_drcDecLib.cpp +++ b/fdk-aac/libDRCdec/src/FDK_drcDecLib.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -173,13 +173,11 @@ static int isResetNeeded(HANDLE_DRC_DECODER hDrcDec,    return resetNeeded;  } -static DRC_DEC_ERROR startSelectionProcess(HANDLE_DRC_DECODER hDrcDec) { -  DRC_ERROR dErr = DE_OK; -  DRCDEC_SELECTION_PROCESS_RETURN sErr = DRCDEC_SELECTION_PROCESS_NO_ERROR; +static void startSelectionProcess(HANDLE_DRC_DECODER hDrcDec) {    int uniDrcConfigHasChanged = 0;    SEL_PROC_OUTPUT oldSelProcOutput = hDrcDec->selProcOutput; -  if (!hDrcDec->status) return DRC_DEC_NOT_READY; +  if (!hDrcDec->status) return;    if (hDrcDec->functionalRange & DRC_DEC_SELECTION) {      uniDrcConfigHasChanged = hDrcDec->uniDrcConfig.diff; @@ -189,10 +187,9 @@ static DRC_DEC_ERROR startSelectionProcess(HANDLE_DRC_DECODER hDrcDec) {         */        hDrcDec->selProcOutput.numSelectedDrcSets = 0; -      sErr = drcDec_SelectionProcess_Process( +      drcDec_SelectionProcess_Process(            hDrcDec->hSelectionProc, &(hDrcDec->uniDrcConfig),            &(hDrcDec->loudnessInfoSet), &(hDrcDec->selProcOutput)); -      if (sErr) return DRC_DEC_OK;        hDrcDec->selProcInputDiff = 0;        hDrcDec->uniDrcConfig.diff = 0; @@ -202,15 +199,12 @@ static DRC_DEC_ERROR startSelectionProcess(HANDLE_DRC_DECODER hDrcDec) {    if (hDrcDec->functionalRange & DRC_DEC_GAIN) {      if (isResetNeeded(hDrcDec, oldSelProcOutput) || uniDrcConfigHasChanged) { -      dErr = -          drcDec_GainDecoder_Config(hDrcDec->hGainDec, &(hDrcDec->uniDrcConfig), -                                    hDrcDec->selProcOutput.numSelectedDrcSets, -                                    hDrcDec->selProcOutput.selectedDrcSetIds, -                                    hDrcDec->selProcOutput.selectedDownmixIds); -      if (dErr) return DRC_DEC_OK; +      drcDec_GainDecoder_Config(hDrcDec->hGainDec, &(hDrcDec->uniDrcConfig), +                                hDrcDec->selProcOutput.numSelectedDrcSets, +                                hDrcDec->selProcOutput.selectedDrcSetIds, +                                hDrcDec->selProcOutput.selectedDownmixIds);      }    } -  return DRC_DEC_OK;  }  DRC_DEC_ERROR @@ -342,7 +336,13 @@ FDK_drcDec_Init(HANDLE_DRC_DECODER hDrcDec, const int frameSize,    }    if (hDrcDec->functionalRange & DRC_DEC_GAIN) { -    dErr = drcDec_GainDecoder_Init(hDrcDec->hGainDec, frameSize, sampleRate); +    dErr = drcDec_GainDecoder_SetParam(hDrcDec->hGainDec, GAIN_DEC_FRAME_SIZE, +                                       frameSize); +    if (dErr) return DRC_DEC_NOT_OK; +    dErr = drcDec_GainDecoder_SetParam(hDrcDec->hGainDec, GAIN_DEC_SAMPLE_RATE, +                                       sampleRate); +    if (dErr) return DRC_DEC_NOT_OK; +    dErr = drcDec_GainDecoder_Init(hDrcDec->hGainDec);      if (dErr) return DRC_DEC_NOT_OK;    } @@ -383,73 +383,99 @@ DRC_DEC_ERROR  FDK_drcDec_SetParam(HANDLE_DRC_DECODER hDrcDec,                      const DRC_DEC_USERPARAM requestType,                      const FIXP_DBL requestValue) { +  DRC_ERROR dErr = DE_OK;    DRCDEC_SELECTION_PROCESS_RETURN sErr = DRCDEC_SELECTION_PROCESS_NO_ERROR; +  int invalidParameter = 0;    if (hDrcDec == NULL) return DRC_DEC_NOT_OPENED; -  if (hDrcDec->functionalRange == DRC_DEC_GAIN) -    return DRC_DEC_NOT_OK; /* not supported for DRC_DEC_GAIN. All parameters are -                              handed over to selection process lib. */ +  if (hDrcDec->functionalRange & DRC_DEC_GAIN) { +    switch (requestType) { +      case DRC_DEC_SAMPLE_RATE: +        dErr = drcDec_GainDecoder_SetParam( +            hDrcDec->hGainDec, GAIN_DEC_SAMPLE_RATE, (int)requestValue); +        if (dErr) return DRC_DEC_PARAM_OUT_OF_RANGE; +        break; +      case DRC_DEC_FRAME_SIZE: +        dErr = drcDec_GainDecoder_SetParam( +            hDrcDec->hGainDec, GAIN_DEC_FRAME_SIZE, (int)requestValue); +        if (dErr) return DRC_DEC_PARAM_OUT_OF_RANGE; +        break; +      default: +        invalidParameter |= DRC_DEC_GAIN; +    } +  } -  switch (requestType) { -    case DRC_DEC_BOOST: -      sErr = drcDec_SelectionProcess_SetParam(hDrcDec->hSelectionProc, -                                              SEL_PROC_BOOST, requestValue, -                                              &(hDrcDec->selProcInputDiff)); -      if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE; -      break; -    case DRC_DEC_COMPRESS: -      sErr = drcDec_SelectionProcess_SetParam(hDrcDec->hSelectionProc, -                                              SEL_PROC_COMPRESS, requestValue, -                                              &(hDrcDec->selProcInputDiff)); -      if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE; -      break; -    case DRC_DEC_LOUDNESS_NORMALIZATION_ON: -      sErr = drcDec_SelectionProcess_SetParam( -          hDrcDec->hSelectionProc, SEL_PROC_LOUDNESS_NORMALIZATION_ON, -          requestValue, &(hDrcDec->selProcInputDiff)); -      if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE; -      break; -    case DRC_DEC_TARGET_LOUDNESS: -      sErr = drcDec_SelectionProcess_SetParam( -          hDrcDec->hSelectionProc, SEL_PROC_TARGET_LOUDNESS, requestValue, -          &(hDrcDec->selProcInputDiff)); -      if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE; -      break; -    case DRC_DEC_EFFECT_TYPE: -      sErr = drcDec_SelectionProcess_SetParam( -          hDrcDec->hSelectionProc, SEL_PROC_EFFECT_TYPE, requestValue, -          &(hDrcDec->selProcInputDiff)); -      if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE; -      break; -    case DRC_DEC_DOWNMIX_ID: -      sErr = drcDec_SelectionProcess_SetParam(hDrcDec->hSelectionProc, -                                              SEL_PROC_DOWNMIX_ID, requestValue, -                                              &(hDrcDec->selProcInputDiff)); -      if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE; -      break; -    case DRC_DEC_TARGET_CHANNEL_COUNT_REQUESTED: -      sErr = drcDec_SelectionProcess_SetParam( -          hDrcDec->hSelectionProc, SEL_PROC_TARGET_CHANNEL_COUNT, requestValue, -          &(hDrcDec->selProcInputDiff)); -      if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE; -      break; -    case DRC_DEC_BASE_CHANNEL_COUNT: -      sErr = drcDec_SelectionProcess_SetParam( -          hDrcDec->hSelectionProc, SEL_PROC_BASE_CHANNEL_COUNT, requestValue, -          &(hDrcDec->selProcInputDiff)); -      if (sErr) return DRC_DEC_NOT_OK; -      break; -    case DRC_DEC_LOUDNESS_MEASUREMENT_METHOD: -      sErr = drcDec_SelectionProcess_SetParam( -          hDrcDec->hSelectionProc, SEL_PROC_LOUDNESS_MEASUREMENT_METHOD, -          requestValue, &(hDrcDec->selProcInputDiff)); -      if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE; -      break; -    default: -      return DRC_DEC_INVALID_PARAM; +  if (hDrcDec->functionalRange & DRC_DEC_SELECTION) { +    switch (requestType) { +      case DRC_DEC_BOOST: +        sErr = drcDec_SelectionProcess_SetParam(hDrcDec->hSelectionProc, +                                                SEL_PROC_BOOST, requestValue, +                                                &(hDrcDec->selProcInputDiff)); +        if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE; +        break; +      case DRC_DEC_COMPRESS: +        sErr = drcDec_SelectionProcess_SetParam(hDrcDec->hSelectionProc, +                                                SEL_PROC_COMPRESS, requestValue, +                                                &(hDrcDec->selProcInputDiff)); +        if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE; +        break; +      case DRC_DEC_LOUDNESS_NORMALIZATION_ON: +        sErr = drcDec_SelectionProcess_SetParam( +            hDrcDec->hSelectionProc, SEL_PROC_LOUDNESS_NORMALIZATION_ON, +            requestValue, &(hDrcDec->selProcInputDiff)); +        if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE; +        break; +      case DRC_DEC_TARGET_LOUDNESS: +        sErr = drcDec_SelectionProcess_SetParam( +            hDrcDec->hSelectionProc, SEL_PROC_TARGET_LOUDNESS, requestValue, +            &(hDrcDec->selProcInputDiff)); +        if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE; +        break; +      case DRC_DEC_EFFECT_TYPE: +        sErr = drcDec_SelectionProcess_SetParam( +            hDrcDec->hSelectionProc, SEL_PROC_EFFECT_TYPE, requestValue, +            &(hDrcDec->selProcInputDiff)); +        if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE; +        break; +      case DRC_DEC_DOWNMIX_ID: +        sErr = drcDec_SelectionProcess_SetParam( +            hDrcDec->hSelectionProc, SEL_PROC_DOWNMIX_ID, requestValue, +            &(hDrcDec->selProcInputDiff)); +        if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE; +        break; +      case DRC_DEC_TARGET_CHANNEL_COUNT_REQUESTED: +        sErr = drcDec_SelectionProcess_SetParam( +            hDrcDec->hSelectionProc, SEL_PROC_TARGET_CHANNEL_COUNT, +            requestValue, &(hDrcDec->selProcInputDiff)); +        if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE; +        break; +      case DRC_DEC_BASE_CHANNEL_COUNT: +        sErr = drcDec_SelectionProcess_SetParam( +            hDrcDec->hSelectionProc, SEL_PROC_BASE_CHANNEL_COUNT, requestValue, +            &(hDrcDec->selProcInputDiff)); +        if (sErr) return DRC_DEC_NOT_OK; +        break; +      case DRC_DEC_LOUDNESS_MEASUREMENT_METHOD: +        sErr = drcDec_SelectionProcess_SetParam( +            hDrcDec->hSelectionProc, SEL_PROC_LOUDNESS_MEASUREMENT_METHOD, +            requestValue, &(hDrcDec->selProcInputDiff)); +        if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE; +        break; +      case DRC_DEC_ALBUM_MODE: +        sErr = drcDec_SelectionProcess_SetParam( +            hDrcDec->hSelectionProc, SEL_PROC_ALBUM_MODE, requestValue, +            &(hDrcDec->selProcInputDiff)); +        if (sErr) return DRC_DEC_PARAM_OUT_OF_RANGE; +        break; +      default: +        invalidParameter |= DRC_DEC_SELECTION; +    }    } +  if (invalidParameter == hDrcDec->functionalRange) +    return DRC_DEC_INVALID_PARAM; +    /* All parameters need a new start of the selection process */    startSelectionProcess(hDrcDec); @@ -721,9 +747,9 @@ FDK_drcDec_ReadUniDrc(HANDLE_DRC_DECODER hDrcDec,        drcDec_GainDecoder_GetFrameSize(hDrcDec->hGainDec),        drcDec_GainDecoder_GetDeltaTminDefault(hDrcDec->hGainDec),        &(hDrcDec->uniDrcGain)); -  if (dErr) return DRC_DEC_NOT_OK;    startSelectionProcess(hDrcDec); +  if (dErr) return DRC_DEC_NOT_OK;    hDrcDec->status = DRC_DEC_NEW_GAIN_PAYLOAD; diff --git a/fdk-aac/libDRCdec/src/drcDec_gainDecoder.cpp b/fdk-aac/libDRCdec/src/drcDec_gainDecoder.cpp index ca81fad..9d91267 100644 --- a/fdk-aac/libDRCdec/src/drcDec_gainDecoder.cpp +++ b/fdk-aac/libDRCdec/src/drcDec_gainDecoder.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -170,11 +170,10 @@ drcDec_GainDecoder_Open(HANDLE_DRC_GAIN_DECODER* phGainDec) {  }  DRC_ERROR -drcDec_GainDecoder_Init(HANDLE_DRC_GAIN_DECODER hGainDec, const int frameSize, -                        const int sampleRate) { +drcDec_GainDecoder_Init(HANDLE_DRC_GAIN_DECODER hGainDec) {    DRC_ERROR err = DE_OK; -  err = initGainDec(hGainDec, frameSize, sampleRate); +  err = initGainDec(hGainDec);    if (err) return err;    initDrcGainBuffers(hGainDec->frameSize, &hGainDec->drcGainBuffers); @@ -183,6 +182,25 @@ drcDec_GainDecoder_Init(HANDLE_DRC_GAIN_DECODER hGainDec, const int frameSize,  }  DRC_ERROR +drcDec_GainDecoder_SetParam(HANDLE_DRC_GAIN_DECODER hGainDec, +                            const GAIN_DEC_PARAM paramType, +                            const int paramValue) { +  switch (paramType) { +    case GAIN_DEC_FRAME_SIZE: +      if (paramValue < 0) return DE_PARAM_OUT_OF_RANGE; +      hGainDec->frameSize = paramValue; +      break; +    case GAIN_DEC_SAMPLE_RATE: +      if (paramValue < 0) return DE_PARAM_OUT_OF_RANGE; +      hGainDec->deltaTminDefault = getDeltaTmin(paramValue); +      break; +    default: +      return DE_PARAM_INVALID; +  } +  return DE_OK; +} + +DRC_ERROR  drcDec_GainDecoder_SetCodecDependentParameters(      HANDLE_DRC_GAIN_DECODER hGainDec, const DELAY_MODE delayMode,      const int timeDomainSupported, diff --git a/fdk-aac/libDRCdec/src/drcDec_gainDecoder.h b/fdk-aac/libDRCdec/src/drcDec_gainDecoder.h index 2f4df4c..394b455 100644 --- a/fdk-aac/libDRCdec/src/drcDec_gainDecoder.h +++ b/fdk-aac/libDRCdec/src/drcDec_gainDecoder.h @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -134,6 +134,8 @@ typedef enum {    GAIN_DEC_DRC2_DRC3  } GAIN_DEC_LOCATION; +typedef enum { GAIN_DEC_FRAME_SIZE, GAIN_DEC_SAMPLE_RATE } GAIN_DEC_PARAM; +  typedef struct {    FIXP_DBL gainLin; /* e = 7 */    SHORT time; @@ -195,8 +197,12 @@ DRC_ERROR  drcDec_GainDecoder_Open(HANDLE_DRC_GAIN_DECODER* phGainDec);  DRC_ERROR -drcDec_GainDecoder_Init(HANDLE_DRC_GAIN_DECODER hGainDec, const int frameSize, -                        const int sampleRate); +drcDec_GainDecoder_Init(HANDLE_DRC_GAIN_DECODER hGainDec); + +DRC_ERROR +drcDec_GainDecoder_SetParam(HANDLE_DRC_GAIN_DECODER hGainDec, +                            const GAIN_DEC_PARAM paramType, +                            const int paramValue);  DRC_ERROR  drcDec_GainDecoder_SetCodecDependentParameters( diff --git a/fdk-aac/libDRCdec/src/drcDec_reader.cpp b/fdk-aac/libDRCdec/src/drcDec_reader.cpp index 6fe7a04..9b5403a 100644 --- a/fdk-aac/libDRCdec/src/drcDec_reader.cpp +++ b/fdk-aac/libDRCdec/src/drcDec_reader.cpp @@ -185,10 +185,18 @@ drcDec_readUniDrc(HANDLE_FDK_BITSTREAM hBs, HANDLE_UNI_DRC_CONFIG hUniDrcConfig,      uniDrcConfigPresent = FDKreadBits(hBs, 1);      if (uniDrcConfigPresent) {        err = drcDec_readUniDrcConfig(hBs, hUniDrcConfig); -      if (err) return err; +      if (err) { +        /* clear config, if parsing error occured */ +        FDKmemclear(hUniDrcConfig, sizeof(UNI_DRC_CONFIG)); +        hUniDrcConfig->diff = 1; +      }      }      err = drcDec_readLoudnessInfoSet(hBs, hLoudnessInfoSet); -    if (err) return err; +    if (err) { +      /* clear config, if parsing error occured */ +      FDKmemclear(hLoudnessInfoSet, sizeof(LOUDNESS_INFO_SET)); +      hLoudnessInfoSet->diff = 1; +    }    }    if (hUniDrcGain != NULL) { @@ -903,7 +911,7 @@ static void _skipEqCoefficients(HANDLE_FDK_BITSTREAM hBs) {        firFilterOrder;    int uniqueEqSubbandGainsCount, eqSubbandGainRepresentation,        eqSubbandGainCount; -  EQ_SUBBAND_GAIN_FORMAT eqSubbandGainFormat; +  int eqSubbandGainFormat;    eqDelayMaxPresent = FDKreadBits(hBs, 1);    if (eqDelayMaxPresent) { @@ -944,7 +952,7 @@ static void _skipEqCoefficients(HANDLE_FDK_BITSTREAM hBs) {    uniqueEqSubbandGainsCount = FDKreadBits(hBs, 6);    if (uniqueEqSubbandGainsCount > 0) {      eqSubbandGainRepresentation = FDKreadBits(hBs, 1); -    eqSubbandGainFormat = (EQ_SUBBAND_GAIN_FORMAT)FDKreadBits(hBs, 4); +    eqSubbandGainFormat = FDKreadBits(hBs, 4);      switch (eqSubbandGainFormat) {        case GF_QMF32:          eqSubbandGainCount = 32; @@ -1130,7 +1138,7 @@ static DRC_ERROR _readDrcCoefficientsUniDrc(HANDLE_FDK_BITSTREAM hBs,      drcCharacteristicLeftPresent = FDKreadBits(hBs, 1);      if (drcCharacteristicLeftPresent) {        pCoef->characteristicLeftCount = FDKreadBits(hBs, 4); -      if ((pCoef->characteristicLeftCount + 1) > 8) return DE_MEMORY_ERROR; +      if ((pCoef->characteristicLeftCount + 1) > 16) return DE_MEMORY_ERROR;        for (i = 0; i < pCoef->characteristicLeftCount; i++) {          err = _readCustomDrcCharacteristic(              hBs, CS_LEFT, &(pCoef->characteristicLeftFormat[i + 1]), @@ -1141,7 +1149,7 @@ static DRC_ERROR _readDrcCoefficientsUniDrc(HANDLE_FDK_BITSTREAM hBs,      drcCharacteristicRightPresent = FDKreadBits(hBs, 1);      if (drcCharacteristicRightPresent) {        pCoef->characteristicRightCount = FDKreadBits(hBs, 4); -      if ((pCoef->characteristicRightCount + 1) > 8) return DE_MEMORY_ERROR; +      if ((pCoef->characteristicRightCount + 1) > 16) return DE_MEMORY_ERROR;        for (i = 0; i < pCoef->characteristicRightCount; i++) {          err = _readCustomDrcCharacteristic(              hBs, CS_RIGHT, &(pCoef->characteristicRightFormat[i + 1]), diff --git a/fdk-aac/libDRCdec/src/drcDec_selectionProcess.cpp b/fdk-aac/libDRCdec/src/drcDec_selectionProcess.cpp index 9228197..c33bf74 100644 --- a/fdk-aac/libDRCdec/src/drcDec_selectionProcess.cpp +++ b/fdk-aac/libDRCdec/src/drcDec_selectionProcess.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -555,6 +555,11 @@ drcDec_SelectionProcess_SetParam(HANDLE_DRC_SELECTION_PROCESS hInstance,        diff |= _compAssign(&pSelProcInput->loudnessMeasurementMethod,                            requestValueInt);        break; +    case SEL_PROC_ALBUM_MODE: +      if ((requestValueInt < 0) || (requestValueInt > 1)) +        return DRCDEC_SELECTION_PROCESS_PARAM_OUT_OF_RANGE; +      diff |= _compAssign(&pSelProcInput->albumMode, requestValueInt); +      break;      case SEL_PROC_DOWNMIX_ID:        diff |=            _compAssign(&pSelProcInput->targetConfigRequestType, TCRT_DOWNMIX_ID); @@ -598,14 +603,21 @@ drcDec_SelectionProcess_SetParam(HANDLE_DRC_SELECTION_PROCESS hInstance,        if ((requestValue < (FIXP_DBL)0) ||            (requestValue > FL2FXCONST_DBL(1.0f / (float)(1 << 1))))          return DRCDEC_SELECTION_PROCESS_PARAM_OUT_OF_RANGE; -      diff |= _compAssign(&pSelProcInput->boost, FX_DBL2FX_SGL(requestValue)); +      diff |= _compAssign( +          &pSelProcInput->boost, +          FX_DBL2FX_SGL( +              requestValue + +              (FIXP_DBL)(1 << 15))); /* convert to FIXP_SGL with rounding */        break;      case SEL_PROC_COMPRESS:        if ((requestValue < (FIXP_DBL)0) ||            (requestValue > FL2FXCONST_DBL(1.0f / (float)(1 << 1))))          return DRCDEC_SELECTION_PROCESS_PARAM_OUT_OF_RANGE; -      diff |= -          _compAssign(&pSelProcInput->compress, FX_DBL2FX_SGL(requestValue)); +      diff |= _compAssign( +          &pSelProcInput->compress, +          FX_DBL2FX_SGL( +              requestValue + +              (FIXP_DBL)(1 << 15))); /* convert to FIXP_SGL with rounding */        break;      default:        return DRCDEC_SELECTION_PROCESS_INVALID_PARAM; @@ -2173,6 +2185,9 @@ static DRCDEC_SELECTION_PROCESS_RETURN _selectDownmixMatrix(    if (hSelProcOutput->activeDownmixId != 0) {      for (i = 0; i < hUniDrcConfig->downmixInstructionsCount; i++) {        DOWNMIX_INSTRUCTIONS* pDown = &(hUniDrcConfig->downmixInstructions[i]); +      if (pDown->targetChannelCount > 8) { +        continue; +      }        if (hSelProcOutput->activeDownmixId == pDown->downmixId) {          hSelProcOutput->targetChannelCount = pDown->targetChannelCount; @@ -2825,6 +2840,8 @@ static int _downmixCoefficientsArePresent(HANDLE_UNI_DRC_CONFIG hUniDrcConfig,    for (i = 0; i < hUniDrcConfig->downmixInstructionsCount; i++) {      if (hUniDrcConfig->downmixInstructions[i].downmixId == downmixId) {        if (hUniDrcConfig->downmixInstructions[i].downmixCoefficientsPresent) { +        if (hUniDrcConfig->downmixInstructions[i].targetChannelCount > 8) +          return 0;          *pIndex = i;          return 1;        } diff --git a/fdk-aac/libDRCdec/src/drcDec_selectionProcess.h b/fdk-aac/libDRCdec/src/drcDec_selectionProcess.h index 9e0e3fb..420bae6 100644 --- a/fdk-aac/libDRCdec/src/drcDec_selectionProcess.h +++ b/fdk-aac/libDRCdec/src/drcDec_selectionProcess.h @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -146,6 +146,7 @@ typedef enum {    SEL_PROC_EFFECT_TYPE,    SEL_PROC_EFFECT_TYPE_FALLBACK_CODE,    SEL_PROC_LOUDNESS_MEASUREMENT_METHOD, +  SEL_PROC_ALBUM_MODE,    SEL_PROC_DOWNMIX_ID,    SEL_PROC_TARGET_LAYOUT,    SEL_PROC_TARGET_CHANNEL_COUNT, diff --git a/fdk-aac/libDRCdec/src/drcDec_types.h b/fdk-aac/libDRCdec/src/drcDec_types.h index 28c17f3..6b99018 100644 --- a/fdk-aac/libDRCdec/src/drcDec_types.h +++ b/fdk-aac/libDRCdec/src/drcDec_types.h @@ -249,11 +249,11 @@ typedef struct {    UCHAR drcFrameSizePresent;    USHORT drcFrameSize;    UCHAR characteristicLeftCount; -  UCHAR characteristicLeftFormat[8]; -  CUSTOM_DRC_CHAR customCharacteristicLeft[8]; +  UCHAR characteristicLeftFormat[16]; +  CUSTOM_DRC_CHAR customCharacteristicLeft[16];    UCHAR characteristicRightCount; -  UCHAR characteristicRightFormat[8]; -  CUSTOM_DRC_CHAR customCharacteristicRight[8]; +  UCHAR characteristicRightFormat[16]; +  CUSTOM_DRC_CHAR customCharacteristicRight[16];    UCHAR    gainSequenceCount;  /* unsaturated value, i.e. as provided in bitstream */    UCHAR gainSetCount; /* saturated to 12 */ diff --git a/fdk-aac/libDRCdec/src/drcGainDec_init.cpp b/fdk-aac/libDRCdec/src/drcGainDec_init.cpp index 38f3243..89d0f55 100644 --- a/fdk-aac/libDRCdec/src/drcGainDec_init.cpp +++ b/fdk-aac/libDRCdec/src/drcGainDec_init.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -184,24 +184,11 @@ static DRC_ERROR _generateDrcInstructionsDerivedData(  }  DRC_ERROR -initGainDec(HANDLE_DRC_GAIN_DECODER hGainDec, const int frameSize, -            const int sampleRate) { +initGainDec(HANDLE_DRC_GAIN_DECODER hGainDec) {    int i, j, k; -  if (frameSize < 1) { -    return DE_NOT_OK; -  } - -  hGainDec->frameSize = frameSize; - -  if (hGainDec->frameSize * 1000 < sampleRate) { -    return DE_NOT_OK; -  } - -  hGainDec->deltaTminDefault = getDeltaTmin(sampleRate); -  if (hGainDec->deltaTminDefault > hGainDec->frameSize) { -    return DE_NOT_OK; -  } +  /* sanity check */ +  if (hGainDec->deltaTminDefault > hGainDec->frameSize) return DE_NOT_OK;    for (i = 0; i < MAX_ACTIVE_DRCS; i++) {      for (j = 0; j < 8; j++) { @@ -336,9 +323,11 @@ initActiveDrcOffset(HANDLE_DRC_GAIN_DECODER hGainDec) {    for (a = 0; a < hGainDec->nActiveDrcs; a++) {      hGainDec->activeDrc[a].activeDrcOffset = accGainElementCount;      accGainElementCount += hGainDec->activeDrc[a].gainElementCount; +    if (accGainElementCount > 12) { +      hGainDec->nActiveDrcs = a; +      return DE_NOT_OK; +    }    } -  if (accGainElementCount > 12) return DE_NOT_OK; -    return DE_OK;  } diff --git a/fdk-aac/libDRCdec/src/drcGainDec_init.h b/fdk-aac/libDRCdec/src/drcGainDec_init.h index 9215bc3..c0b9853 100644 --- a/fdk-aac/libDRCdec/src/drcGainDec_init.h +++ b/fdk-aac/libDRCdec/src/drcGainDec_init.h @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -104,8 +104,7 @@ amm-info@iis.fraunhofer.de  #define DRCGAINDEC_INIT_H  DRC_ERROR -initGainDec(HANDLE_DRC_GAIN_DECODER hGainDec, const int frameSize, -            const int sampleRate); +initGainDec(HANDLE_DRC_GAIN_DECODER hGainDec);  void initDrcGainBuffers(const int frameSize, DRC_GAIN_BUFFERS* drcGainBuffers); diff --git a/fdk-aac/libFDK/include/scale.h b/fdk-aac/libFDK/include/scale.h index 30fa089..fcfc116 100644 --- a/fdk-aac/libFDK/include/scale.h +++ b/fdk-aac/libFDK/include/scale.h @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -123,7 +123,7 @@ void scaleValues(FIXP_DBL *dst, const FIXP_DBL *src, INT len, INT scalefactor);  #if (SAMPLE_BITS == 16)  void scaleValues(FIXP_PCM *dst, const FIXP_DBL *src, INT len, INT scalefactor);  #endif -void scaleValues(FIXP_PCM *dst, const FIXP_SGL *src, INT len, INT scalefactor); +void scaleValues(FIXP_SGL *dst, const FIXP_SGL *src, INT len, INT scalefactor);  void scaleCplxValues(FIXP_DBL *r_dst, FIXP_DBL *i_dst, const FIXP_DBL *r_src,                       const FIXP_DBL *i_src, INT len, INT scalefactor);  void scaleValuesWithFactor(FIXP_DBL *vector, FIXP_DBL factor, INT len, @@ -241,20 +241,31 @@ inline void scaleValueInPlace(FIXP_DBL *value, /*!< Value */  #ifndef SATURATE_RIGHT_SHIFT  #define SATURATE_RIGHT_SHIFT(src, scale, dBits)                            \ +  (((scale) >= 8*sizeof(LONG)) ? (LONG)0 :                                 \    ((((LONG)(src) >> (scale)) > (LONG)(((1U) << ((dBits)-1)) - 1))          \         ? (LONG)(((1U) << ((dBits)-1)) - 1)                                 \         : (((LONG)(src) >> (scale)) < ~((LONG)(((1U) << ((dBits)-1)) - 1))) \               ? ~((LONG)(((1U) << ((dBits)-1)) - 1))                        \ -             : ((LONG)(src) >> (scale))) +             : ((LONG)(src) >> (scale)))) +#endif + +#ifndef SATURATE_LEFT_MAX +#define SATURATE_LEFT_MAX(src, dBits)                 \ +  (((LONG)(src) > 0)                                  \ +       ? (LONG)(((1U) << ((dBits)-1)) - 1)            \ +       : ((LONG)(src) < 0)                            \ +             ? ~((LONG)(((1U) << ((dBits)-1)) - 1))   \ +             : (LONG)0)  #endif  #ifndef SATURATE_LEFT_SHIFT  #define SATURATE_LEFT_SHIFT(src, scale, dBits)                           \ +  (((scale) >= 8*sizeof(LONG)) ? SATURATE_LEFT_MAX(src, dBits) :         \    (((LONG)(src) > ((LONG)(((1U) << ((dBits)-1)) - 1) >> (scale)))        \         ? (LONG)(((1U) << ((dBits)-1)) - 1)                               \         : ((LONG)(src) < ~((LONG)(((1U) << ((dBits)-1)) - 1) >> (scale))) \               ? ~((LONG)(((1U) << ((dBits)-1)) - 1))                      \ -             : ((LONG)(src) << (scale))) +             : ((LONG)(src) << (scale))))  #endif  #ifndef SATURATE_SHIFT diff --git a/fdk-aac/libMpegTPDec/src/tpdec_asc.cpp b/fdk-aac/libMpegTPDec/src/tpdec_asc.cpp index 28bc22d..8868b22 100644 --- a/fdk-aac/libMpegTPDec/src/tpdec_asc.cpp +++ b/fdk-aac/libMpegTPDec/src/tpdec_asc.cpp @@ -1325,7 +1325,7 @@ static TRANSPORTDEC_ERROR EldSpecificConfig_Parse(CSAudioSpecificConfig *asc,                                                    CSTpCallBacks *cb) {    TRANSPORTDEC_ERROR ErrorStatus = TRANSPORTDEC_OK;    CSEldSpecificConfig *esc = &asc->m_sc.m_eldSpecificConfig; -  ASC_ELD_EXT_TYPE eldExtType; +  int eldExtType;    int eldExtLen, len, cnt, ldSbrLen = 0, eldExtLenSum, numSbrHeader = 0,                             sbrIndex; @@ -1395,7 +1395,7 @@ static TRANSPORTDEC_ERROR EldSpecificConfig_Parse(CSAudioSpecificConfig *asc,    esc->m_downscaledSamplingFrequency = asc->m_samplingFrequency;    /* parse ExtTypeConfigData */    while ( -      ((eldExtType = (ASC_ELD_EXT_TYPE)FDKreadBits(hBs, 4)) != ELDEXT_TERM) && +      ((eldExtType = FDKreadBits(hBs, 4)) != ELDEXT_TERM) &&        ((INT)FDKgetValidBits(hBs) >= 0)) {      eldExtLen = len = FDKreadBits(hBs, 4);      if (len == 0xf) { @@ -1546,8 +1546,7 @@ static TRANSPORTDEC_ERROR extElementConfig(CSUsacExtElementConfig *extElement,                                             const AUDIO_OBJECT_TYPE aot) {    TRANSPORTDEC_ERROR ErrorStatus = TRANSPORTDEC_OK; -  USAC_EXT_ELEMENT_TYPE usacExtElementType = -      (USAC_EXT_ELEMENT_TYPE)escapedValue(hBs, 4, 8, 16); +  int usacExtElementType = escapedValue(hBs, 4, 8, 16);    /* recurve extension elements which are invalid for USAC */    if (aot == AOT_USAC) { @@ -1564,7 +1563,7 @@ static TRANSPORTDEC_ERROR extElementConfig(CSUsacExtElementConfig *extElement,      }    } -  extElement->usacExtElementType = usacExtElementType; +  extElement->usacExtElementType = (USAC_EXT_ELEMENT_TYPE) usacExtElementType;    int usacExtElementConfigLength = escapedValue(hBs, 4, 8, 16);    extElement->usacExtElementConfigLength = (USHORT)usacExtElementConfigLength;    INT bsAnchor; @@ -1628,14 +1627,14 @@ static TRANSPORTDEC_ERROR configExtension(CSUsacConfig *usc,    TRANSPORTDEC_ERROR ErrorStatus = TRANSPORTDEC_OK;    int numConfigExtensions; -  CONFIG_EXT_ID usacConfigExtType; +  int usacConfigExtType;    int usacConfigExtLength;    numConfigExtensions = (int)escapedValue(hBs, 2, 4, 8) + 1;    for (int confExtIdx = 0; confExtIdx < numConfigExtensions; confExtIdx++) {      INT nbits;      int loudnessInfoSetConfigExtensionPosition = FDKgetValidBits(hBs); -    usacConfigExtType = (CONFIG_EXT_ID)escapedValue(hBs, 4, 8, 16); +    usacConfigExtType = escapedValue(hBs, 4, 8, 16);      usacConfigExtLength = (int)escapedValue(hBs, 4, 8, 16);      /* Start bit position of config extension */ diff --git a/fdk-aac/libMpegTPDec/src/tpdec_lib.cpp b/fdk-aac/libMpegTPDec/src/tpdec_lib.cpp index 1976cb9..506aed3 100644 --- a/fdk-aac/libMpegTPDec/src/tpdec_lib.cpp +++ b/fdk-aac/libMpegTPDec/src/tpdec_lib.cpp @@ -274,7 +274,7 @@ TRANSPORTDEC_ERROR transportDec_OutOfBandConfig(HANDLE_TRANSPORTDEC hTp,    UCHAR configChanged = 0;    UCHAR configMode = AC_CM_DET_CFG_CHANGE; -  UCHAR tmpConf[1024]; +  UCHAR tmpConf[1024] = {0};    if (length > 1024) {      return TRANSPORTDEC_UNSUPPORTED_FORMAT;    } diff --git a/fdk-aac/libPCMutils/src/pcmdmx_lib.cpp b/fdk-aac/libPCMutils/src/pcmdmx_lib.cpp index 2070dbc..e3c3fa9 100644 --- a/fdk-aac/libPCMutils/src/pcmdmx_lib.cpp +++ b/fdk-aac/libPCMutils/src/pcmdmx_lib.cpp @@ -583,6 +583,9 @@ static PCMDMX_ERROR getChannelMode(          (channelType[ch] & 0x0F) - 1,          0); /* Assign all undefined channels (ACT_NONE) to front channels. */ +    if (channelIndices[ch] >= numCh[channelType[ch] >> 4][chGrp]) +      return PCMDMX_INVALID_CH_CONFIG; +      spkrPos[ch] = getSpeakerPos(channelType[ch], channelIndices[ch],                                  numCh[channelType[ch] >> 4][chGrp]); diff --git a/fdk-aac/libSACdec/src/sac_bitdec.cpp b/fdk-aac/libSACdec/src/sac_bitdec.cpp index 883e1e8..062eb1c 100644 --- a/fdk-aac/libSACdec/src/sac_bitdec.cpp +++ b/fdk-aac/libSACdec/src/sac_bitdec.cpp @@ -448,6 +448,7 @@ SACDEC_ERROR SpatialDecParseSpecificConfig(    int bsFreqRes, b3DaudioMode = 0;    int numHeaderBits;    int cfgStartPos, bitsAvailable; +  int treeConfig;    FDKmemclear(pSpatialSpecificConfig, sizeof(SPATIAL_SPECIFIC_CONFIG)); @@ -488,13 +489,13 @@ SACDEC_ERROR SpatialDecParseSpecificConfig(    pSpatialSpecificConfig->freqRes =        (SPATIALDEC_FREQ_RES)freqResTable_LD[bsFreqRes]; -  pSpatialSpecificConfig->treeConfig = -      (SPATIALDEC_TREE_CONFIG)FDKreadBits(bitstream, 4); +  treeConfig = FDKreadBits(bitstream, 4); -  if (pSpatialSpecificConfig->treeConfig != SPATIALDEC_MODE_RSVD7) { +  if (treeConfig != SPATIALDEC_MODE_RSVD7) {      err = MPS_UNSUPPORTED_CONFIG;      goto bail;    } +  pSpatialSpecificConfig->treeConfig = (SPATIALDEC_TREE_CONFIG) treeConfig;    {      pSpatialSpecificConfig->nOttBoxes = @@ -1457,7 +1458,7 @@ static SACDEC_ERROR mapIndexData(      FIXP_DBL (*pOttVsTotDb1)[MAX_PARAMETER_SETS][MAX_PARAMETER_BANDS],      FIXP_DBL (*pOttVsTotDb2)[MAX_PARAMETER_SETS][MAX_PARAMETER_BANDS]) {    int aParamSlots[MAX_PARAMETER_SETS]; -  int aInterpolate[MAX_PARAMETER_SETS]; +  int aInterpolate[MAX_PARAMETER_SETS] = {0};    int dataSets;    int aMap[MAX_PARAMETER_BANDS + 1]; @@ -1562,6 +1563,7 @@ static SACDEC_ERROR mapIndexData(      i2 = i;      while (aInterpolate[i2] == 1) {        i2++; +      if (i2 >= MAX_PARAMETER_SETS) return MPS_WRONG_PARAMETERSETS;      }      x1 = paramSlot[i1];      xi = paramSlot[i]; diff --git a/fdk-aac/libSACdec/src/sac_calcM1andM2.cpp b/fdk-aac/libSACdec/src/sac_calcM1andM2.cpp index 6e5a145..5826275 100644 --- a/fdk-aac/libSACdec/src/sac_calcM1andM2.cpp +++ b/fdk-aac/libSACdec/src/sac_calcM1andM2.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -474,80 +474,6 @@ static const FIXP_DBL CLD_m[N_CLD] = {      FL2FXCONST_DBL(0.888178419700125),  }; -static FIXP_DBL dequantIPD_CLD_ICC_splitAngle__FDK_Function(INT ipdIdx, -                                                            INT cldIdx, -                                                            INT iccIdx) { -  FIXP_DBL cld; -  SpatialDequantGetCLD2Values(cldIdx, &cld); - -  /*const FIXP_DBL one_m = (FIXP_DBL)MAXVAL_DBL; -  const int one_e = 0;*/ -  const FIXP_DBL one_m = FL2FXCONST_DBL(0.5f); -  const int one_e = 1; -  /* iidLin = sqrt(cld); */ -  FIXP_DBL iidLin_m = sqrt_CLD_m[cldIdx]; -  int iidLin_e = sqrt_CLD_e[cldIdx]; -  /* iidLin2 = cld; */ -  FIXP_DBL iidLin2_m = CLD_m[cldIdx]; -  int iidLin2_e = sqrt_CLD_e[cldIdx] << 1; -  /* iidLin21 = iidLin2 + 1.0f; */ -  int iidLin21_e; -  FIXP_DBL iidLin21_m = -      fAddNorm(iidLin2_m, iidLin2_e, one_m, one_e, &iidLin21_e); -  /* iidIcc2 = iidLin * icc * 2.0f; */ -  FIXP_CFG icc = dequantICC__FDK[iccIdx]; -  FIXP_DBL temp1_m, temp1c_m; -  int temp1_e, temp1c_e; -  temp1_m = fMult(iidLin_m, icc); -  temp1_e = iidLin_e + 1; - -  FIXP_DBL cosIpd, sinIpd; -  cosIpd = COS_IPD(ipdIdx); -  sinIpd = SIN_IPD(ipdIdx); - -  temp1c_m = fMult(temp1_m, cosIpd); -  temp1c_e = temp1_e;  //+cosIpd_e; - -  int temp2_e, temp3_e, inv_temp3_e, ratio_e; -  FIXP_DBL temp2_m = -      fAddNorm(iidLin21_m, iidLin21_e, temp1c_m, temp1c_e, &temp2_e); -  FIXP_DBL temp3_m = -      fAddNorm(iidLin21_m, iidLin21_e, temp1_m, temp1_e, &temp3_e); -  /* calculate 1/temp3 needed later */ -  inv_temp3_e = temp3_e; -  FIXP_DBL inv_temp3_m = invFixp(temp3_m, &inv_temp3_e); -  FIXP_DBL ratio_m = -      fAddNorm(fMult(inv_temp3_m, temp2_m), (inv_temp3_e + temp2_e), -               FL2FXCONST_DBL(1e-9f), 0, &ratio_e); - -  int weight2_e, tempb_atan2_e; -  FIXP_DBL weight2_m = -      fPow(ratio_m, ratio_e, FL2FXCONST_DBL(0.5f), -1, &weight2_e); -  /* atan2(w2*sinIpd, w1*iidLin + w2*cosIpd) = atan2(w2*sinIpd, (2 - w2)*iidLin -   * + w2*cosIpd) = atan2(w2*sinIpd, 2*iidLin + w2*(cosIpd - iidLin)); */ -  /* tmpa_atan2 = w2*sinIpd; tmpb_atan2 = 2*iidLin + w2*(cosIpd - iidLin); */ -  FIXP_DBL tempb_atan2_m = iidLin_m; -  tempb_atan2_e = iidLin_e + 1; -  int add_tmp1_e = 0; -  FIXP_DBL add_tmp1_m = fAddNorm(cosIpd, 0, -iidLin_m, iidLin_e, &add_tmp1_e); -  FIXP_DBL add_tmp2_m = fMult(add_tmp1_m, weight2_m); -  int add_tmp2_e = add_tmp1_e + weight2_e; -  tempb_atan2_m = fAddNorm(tempb_atan2_m, tempb_atan2_e, add_tmp2_m, add_tmp2_e, -                           &tempb_atan2_e); - -  FIXP_DBL tempa_atan2_m = fMult(weight2_m, sinIpd); -  int tempa_atan2_e = weight2_e;  // + sinIpd_e; - -  if (tempa_atan2_e > tempb_atan2_e) { -    tempb_atan2_m = (tempb_atan2_m >> (tempa_atan2_e - tempb_atan2_e)); -    tempb_atan2_e = tempa_atan2_e; -  } else if (tempb_atan2_e > tempa_atan2_e) { -    tempa_atan2_m = (tempa_atan2_m >> (tempb_atan2_e - tempa_atan2_e)); -  } - -  return fixp_atan2(tempa_atan2_m, tempb_atan2_m); -} -  static void calculateOpd(spatialDec* self, INT ottBoxIndx, INT parameterSetIndx,                           FIXP_DBL opd[MAX_PARAMETER_BANDS]) {    INT band; @@ -563,12 +489,12 @@ static void calculateOpd(spatialDec* self, INT ottBoxIndx, INT parameterSetIndx,      SpatialDequantGetCLD2Values(idxCld, &cld);      /* ipd(idxIpd==8) == PI */ -    if ((cld == FL2FXCONST_DBL(0.0f)) && (idxIpd == 8)) { +    if (((cld == FL2FXCONST_DBL(0.0f)) && (idxIpd == 8)) || (idxIpd == 0)) {        opd[2 * band] = FL2FXCONST_DBL(0.0f);      } else { -      opd[2 * band] = (dequantIPD_CLD_ICC_splitAngle__FDK_Function( -                           idxIpd, idxCld, idxIcc) >> -                       (IPD_SCALE - AT2O_SF)); +      FDK_ASSERT(idxIpd > 0); +      opd[2 * band] = +          dequantIPD_CLD_ICC_splitAngle__FDK[idxIpd - 1][idxCld][idxIcc];      }      opd[2 * band + 1] = opd[2 * band] - ipd;    } diff --git a/fdk-aac/libSACdec/src/sac_dec.cpp b/fdk-aac/libSACdec/src/sac_dec.cpp index 4537d6e..3f55a7d 100644 --- a/fdk-aac/libSACdec/src/sac_dec.cpp +++ b/fdk-aac/libSACdec/src/sac_dec.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -200,6 +200,7 @@ static void SpatialDecClearFrameData(    /* parameter smoothing tool set to off */    bsFrame->bsSmoothMode[0] = 0; +  initParameterSmoothing(self);    /* reset residual data */    { diff --git a/fdk-aac/libSACdec/src/sac_rom.cpp b/fdk-aac/libSACdec/src/sac_rom.cpp index 4285b65..600203f 100644 --- a/fdk-aac/libSACdec/src/sac_rom.cpp +++ b/fdk-aac/libSACdec/src/sac_rom.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -163,7 +163,7 @@ const FIXP_CFG dequantIPD__FDK[16] = {      SCALE_IPD(4.71238898038469f), SCALE_IPD(5.105088062f),      SCALE_IPD(5.49778714378214f), SCALE_IPD(5.890486225f)}; -#define SCALE_SPLIT_ANGLE(a) (FL2FXCONST_CFG(a / (float)(1 << IPD_SCALE))) +#define SCALE_SPLIT_ANGLE(a) (FL2FXCONST_DBL(a / (float)(1 << IPD_SCALE)))  /*    Generate table dequantIPD_CLD_ICC_splitAngle__FDK[16][31][8]: @@ -200,6 +200,3758 @@ const FIXP_CFG dequantIPD__FDK[16] = {    atan2(w2 * sinIpd, w1 * iidLin + w2 * cosIpd);        }  */ +const FIXP_DBL dequantIPD_CLD_ICC_splitAngle__FDK[15][31][8] = { +    { +        {SCALE_SPLIT_ANGLE(0.39269909262657), +         SCALE_SPLIT_ANGLE(0.39269909262657), +         SCALE_SPLIT_ANGLE(0.39269909262657), +         SCALE_SPLIT_ANGLE(0.39269909262657), +         SCALE_SPLIT_ANGLE(0.39269909262657), +         SCALE_SPLIT_ANGLE(0.39269909262657), +         SCALE_SPLIT_ANGLE(0.39269909262657), +         SCALE_SPLIT_ANGLE(0.39269909262657)}, +        {SCALE_SPLIT_ANGLE(0.39055734872818), +         SCALE_SPLIT_ANGLE(0.39055740833282), +         SCALE_SPLIT_ANGLE(0.39055749773979), +         SCALE_SPLIT_ANGLE(0.39055770635605), +         SCALE_SPLIT_ANGLE(0.39055791497231), +         SCALE_SPLIT_ANGLE(0.39055824279785), +         SCALE_SPLIT_ANGLE(0.39055877923965), +         SCALE_SPLIT_ANGLE(0.39055916666985)}, +        {SCALE_SPLIT_ANGLE(0.38890451192856), +         SCALE_SPLIT_ANGLE(0.38890469074249), +         SCALE_SPLIT_ANGLE(0.38890495896339), +         SCALE_SPLIT_ANGLE(0.38890564441681), +         SCALE_SPLIT_ANGLE(0.38890630006790), +         SCALE_SPLIT_ANGLE(0.38890734314919), +         SCALE_SPLIT_ANGLE(0.38890904188156), +         SCALE_SPLIT_ANGLE(0.38891020417213)}, +        {SCALE_SPLIT_ANGLE(0.38599541783333), +         SCALE_SPLIT_ANGLE(0.38599592447281), +         SCALE_SPLIT_ANGLE(0.38599672913551), +         SCALE_SPLIT_ANGLE(0.38599878549576), +         SCALE_SPLIT_ANGLE(0.38600078225136), +         SCALE_SPLIT_ANGLE(0.38600403070450), +         SCALE_SPLIT_ANGLE(0.38600939512253), +         SCALE_SPLIT_ANGLE(0.38601315021515)}, +        {SCALE_SPLIT_ANGLE(0.38091576099396), +         SCALE_SPLIT_ANGLE(0.38091731071472), +         SCALE_SPLIT_ANGLE(0.38091966509819), +         SCALE_SPLIT_ANGLE(0.38092571496964), +         SCALE_SPLIT_ANGLE(0.38093179464340), +         SCALE_SPLIT_ANGLE(0.38094165921211), +         SCALE_SPLIT_ANGLE(0.38095843791962), +         SCALE_SPLIT_ANGLE(0.38097056746483)}, +        {SCALE_SPLIT_ANGLE(0.37216997146606), +         SCALE_SPLIT_ANGLE(0.37217426300049), +         SCALE_SPLIT_ANGLE(0.37218090891838), +         SCALE_SPLIT_ANGLE(0.37219807505608), +         SCALE_SPLIT_ANGLE(0.37221556901932), +         SCALE_SPLIT_ANGLE(0.37224492430687), +         SCALE_SPLIT_ANGLE(0.37229704856873), +         SCALE_SPLIT_ANGLE(0.37233674526215)}, +        {SCALE_SPLIT_ANGLE(0.36424967646599), +         SCALE_SPLIT_ANGLE(0.36425727605820), +         SCALE_SPLIT_ANGLE(0.36426907777786), +         SCALE_SPLIT_ANGLE(0.36430004239082), +         SCALE_SPLIT_ANGLE(0.36433213949203), +         SCALE_SPLIT_ANGLE(0.36438730359077), +         SCALE_SPLIT_ANGLE(0.36448970437050), +         SCALE_SPLIT_ANGLE(0.36457163095474)}, +        {SCALE_SPLIT_ANGLE(0.35356888175011), +         SCALE_SPLIT_ANGLE(0.35358175635338), +         SCALE_SPLIT_ANGLE(0.35360190272331), +         SCALE_SPLIT_ANGLE(0.35365560650826), +         SCALE_SPLIT_ANGLE(0.35371258854866), +         SCALE_SPLIT_ANGLE(0.35381385684013), +         SCALE_SPLIT_ANGLE(0.35401365160942), +         SCALE_SPLIT_ANGLE(0.35418578982353)}, +        {SCALE_SPLIT_ANGLE(0.33942583203316), +         SCALE_SPLIT_ANGLE(0.33944645524025), +         SCALE_SPLIT_ANGLE(0.33947896957397), +         SCALE_SPLIT_ANGLE(0.33956742286682), +         SCALE_SPLIT_ANGLE(0.33966416120529), +         SCALE_SPLIT_ANGLE(0.33984372019768), +         SCALE_SPLIT_ANGLE(0.34023007750511), +         SCALE_SPLIT_ANGLE(0.34060221910477)}, +        {SCALE_SPLIT_ANGLE(0.32115450501442), +         SCALE_SPLIT_ANGLE(0.32118520140648), +         SCALE_SPLIT_ANGLE(0.32123416662216), +         SCALE_SPLIT_ANGLE(0.32137048244476), +         SCALE_SPLIT_ANGLE(0.32152509689331), +         SCALE_SPLIT_ANGLE(0.32182863354683), +         SCALE_SPLIT_ANGLE(0.32256561517715), +         SCALE_SPLIT_ANGLE(0.32340893149376)}, +        {SCALE_SPLIT_ANGLE(0.29830521345139), +         SCALE_SPLIT_ANGLE(0.29834723472595), +         SCALE_SPLIT_ANGLE(0.29841500520706), +         SCALE_SPLIT_ANGLE(0.29860860109329), +         SCALE_SPLIT_ANGLE(0.29883742332458), +         SCALE_SPLIT_ANGLE(0.29931786656380), +         SCALE_SPLIT_ANGLE(0.30069106817245), +         SCALE_SPLIT_ANGLE(0.30275771021843)}, +        {SCALE_SPLIT_ANGLE(0.28050789237022), +         SCALE_SPLIT_ANGLE(0.28055712580681), +         SCALE_SPLIT_ANGLE(0.28063708543777), +         SCALE_SPLIT_ANGLE(0.28086942434311), +         SCALE_SPLIT_ANGLE(0.28115189075470), +         SCALE_SPLIT_ANGLE(0.28177404403687), +         SCALE_SPLIT_ANGLE(0.28380545973778), +         SCALE_SPLIT_ANGLE(0.28782638907433)}, +        {SCALE_SPLIT_ANGLE(0.26083287596703), +         SCALE_SPLIT_ANGLE(0.26088824868202), +         SCALE_SPLIT_ANGLE(0.26097872853279), +         SCALE_SPLIT_ANGLE(0.26124578714371), +         SCALE_SPLIT_ANGLE(0.26157897710800), +         SCALE_SPLIT_ANGLE(0.26234793663025), +         SCALE_SPLIT_ANGLE(0.26525345444679), +         SCALE_SPLIT_ANGLE(0.27373576164246)}, +        {SCALE_SPLIT_ANGLE(0.23960022628307), +         SCALE_SPLIT_ANGLE(0.23966011404991), +         SCALE_SPLIT_ANGLE(0.23975846171379), +         SCALE_SPLIT_ANGLE(0.24005253612995), +         SCALE_SPLIT_ANGLE(0.24042735993862), +         SCALE_SPLIT_ANGLE(0.24132782220840), +         SCALE_SPLIT_ANGLE(0.24525125324726), +         SCALE_SPLIT_ANGLE(0.26534587144852)}, +        {SCALE_SPLIT_ANGLE(0.21727463603020), +         SCALE_SPLIT_ANGLE(0.21733720600605), +         SCALE_SPLIT_ANGLE(0.21744030714035), +         SCALE_SPLIT_ANGLE(0.21775111556053), +         SCALE_SPLIT_ANGLE(0.21815299987793), +         SCALE_SPLIT_ANGLE(0.21914559602737), +         SCALE_SPLIT_ANGLE(0.22397418320179), +         SCALE_SPLIT_ANGLE(0.27997341752052)}, +        {SCALE_SPLIT_ANGLE(0.19442924857140), +         SCALE_SPLIT_ANGLE(0.19449260830879), +         SCALE_SPLIT_ANGLE(0.19459712505341), +         SCALE_SPLIT_ANGLE(0.19491320848465), +         SCALE_SPLIT_ANGLE(0.19532410800457), +         SCALE_SPLIT_ANGLE(0.19634956121445), +         SCALE_SPLIT_ANGLE(0.20156545937061), +         SCALE_SPLIT_ANGLE(0.33650875091553)}, +        {SCALE_SPLIT_ANGLE(0.17168679833412), +         SCALE_SPLIT_ANGLE(0.17174908518791), +         SCALE_SPLIT_ANGLE(0.17185173928738), +         SCALE_SPLIT_ANGLE(0.17216140031815), +         SCALE_SPLIT_ANGLE(0.17256212234497), +         SCALE_SPLIT_ANGLE(0.17355351150036), +         SCALE_SPLIT_ANGLE(0.17841057479382), +         SCALE_SPLIT_ANGLE(0.23922468721867)}, +        {SCALE_SPLIT_ANGLE(0.14965108036995), +         SCALE_SPLIT_ANGLE(0.14971046149731), +         SCALE_SPLIT_ANGLE(0.14980803430080), +         SCALE_SPLIT_ANGLE(0.15010002255440), +         SCALE_SPLIT_ANGLE(0.15047283470631), +         SCALE_SPLIT_ANGLE(0.15137128531933), +         SCALE_SPLIT_ANGLE(0.15533345937729), +         SCALE_SPLIT_ANGLE(0.17691856622696)}, +        {SCALE_SPLIT_ANGLE(0.12884500622749), +         SCALE_SPLIT_ANGLE(0.12889973819256), +         SCALE_SPLIT_ANGLE(0.12898921966553), +         SCALE_SPLIT_ANGLE(0.12925371527672), +         SCALE_SPLIT_ANGLE(0.12958450615406), +         SCALE_SPLIT_ANGLE(0.13035117089748), +         SCALE_SPLIT_ANGLE(0.13329000771046), +         SCALE_SPLIT_ANGLE(0.14226883649826)}, +        {SCALE_SPLIT_ANGLE(0.10966771841049), +         SCALE_SPLIT_ANGLE(0.10971628874540), +         SCALE_SPLIT_ANGLE(0.10979522019625), +         SCALE_SPLIT_ANGLE(0.11002497375011), +         SCALE_SPLIT_ANGLE(0.11030506342649), +         SCALE_SPLIT_ANGLE(0.11092507839203), +         SCALE_SPLIT_ANGLE(0.11297956109047), +         SCALE_SPLIT_ANGLE(0.11718676239252)}, +        {SCALE_SPLIT_ANGLE(0.09237616509199), +         SCALE_SPLIT_ANGLE(0.09241759032011), +         SCALE_SPLIT_ANGLE(0.09248441457748), +         SCALE_SPLIT_ANGLE(0.09267570823431), +         SCALE_SPLIT_ANGLE(0.09290253371000), +         SCALE_SPLIT_ANGLE(0.09338124841452), +         SCALE_SPLIT_ANGLE(0.09476862102747), +         SCALE_SPLIT_ANGLE(0.09691140055656)}, +        {SCALE_SPLIT_ANGLE(0.07020132243633), +         SCALE_SPLIT_ANGLE(0.07023159414530), +         SCALE_SPLIT_ANGLE(0.07027988880873), +         SCALE_SPLIT_ANGLE(0.07041462510824), +         SCALE_SPLIT_ANGLE(0.07056795060635), +         SCALE_SPLIT_ANGLE(0.07087047398090), +         SCALE_SPLIT_ANGLE(0.07161350548267), +         SCALE_SPLIT_ANGLE(0.07247893512249)}, +        {SCALE_SPLIT_ANGLE(0.05244029685855), +         SCALE_SPLIT_ANGLE(0.05246063694358), +         SCALE_SPLIT_ANGLE(0.05249277502298), +         SCALE_SPLIT_ANGLE(0.05258031934500), +         SCALE_SPLIT_ANGLE(0.05267634987831), +         SCALE_SPLIT_ANGLE(0.05285539478064), +         SCALE_SPLIT_ANGLE(0.05324416980147), +         SCALE_SPLIT_ANGLE(0.05362326279283)}, +        {SCALE_SPLIT_ANGLE(0.03864165768027), +         SCALE_SPLIT_ANGLE(0.03865439072251), +         SCALE_SPLIT_ANGLE(0.03867433592677), +         SCALE_SPLIT_ANGLE(0.03872758522630), +         SCALE_SPLIT_ANGLE(0.03878424316645), +         SCALE_SPLIT_ANGLE(0.03888526186347), +         SCALE_SPLIT_ANGLE(0.03908598423004), +         SCALE_SPLIT_ANGLE(0.03926040604711)}, +        {SCALE_SPLIT_ANGLE(0.02817477472126), +         SCALE_SPLIT_ANGLE(0.02818230912089), +         SCALE_SPLIT_ANGLE(0.02819401398301), +         SCALE_SPLIT_ANGLE(0.02822477556765), +         SCALE_SPLIT_ANGLE(0.02825673110783), +         SCALE_SPLIT_ANGLE(0.02831180393696), +         SCALE_SPLIT_ANGLE(0.02841453813016), +         SCALE_SPLIT_ANGLE(0.02849725075066)}, +        {SCALE_SPLIT_ANGLE(0.02037953026593), +         SCALE_SPLIT_ANGLE(0.02038379199803), +         SCALE_SPLIT_ANGLE(0.02039037831128), +         SCALE_SPLIT_ANGLE(0.02040746994317), +         SCALE_SPLIT_ANGLE(0.02042490243912), +         SCALE_SPLIT_ANGLE(0.02045420184731), +         SCALE_SPLIT_ANGLE(0.02050646767020), +         SCALE_SPLIT_ANGLE(0.02054644003510)}, +        {SCALE_SPLIT_ANGLE(0.01173160225153), +         SCALE_SPLIT_ANGLE(0.01173313986510), +         SCALE_SPLIT_ANGLE(0.01173550263047), +         SCALE_SPLIT_ANGLE(0.01174154505134), +         SCALE_SPLIT_ANGLE(0.01174758374691), +         SCALE_SPLIT_ANGLE(0.01175745483488), +         SCALE_SPLIT_ANGLE(0.01177425310016), +         SCALE_SPLIT_ANGLE(0.01178644131869)}, +        {SCALE_SPLIT_ANGLE(0.00668647512794), +         SCALE_SPLIT_ANGLE(0.00668699946254), +         SCALE_SPLIT_ANGLE(0.00668780272827), +         SCALE_SPLIT_ANGLE(0.00668983906507), +         SCALE_SPLIT_ANGLE(0.00669185025617), +         SCALE_SPLIT_ANGLE(0.00669508520514), +         SCALE_SPLIT_ANGLE(0.00670044543222), +         SCALE_SPLIT_ANGLE(0.00670422753319)}, +        {SCALE_SPLIT_ANGLE(0.00378898042254), +         SCALE_SPLIT_ANGLE(0.00378915388137), +         SCALE_SPLIT_ANGLE(0.00378941884264), +         SCALE_SPLIT_ANGLE(0.00379008660093), +         SCALE_SPLIT_ANGLE(0.00379074062221), +         SCALE_SPLIT_ANGLE(0.00379178463481), +         SCALE_SPLIT_ANGLE(0.00379348872229), +         SCALE_SPLIT_ANGLE(0.00379467196763)}, +        {SCALE_SPLIT_ANGLE(0.00213995971717), +         SCALE_SPLIT_ANGLE(0.00214001606219), +         SCALE_SPLIT_ANGLE(0.00214010174386), +         SCALE_SPLIT_ANGLE(0.00214031711221), +         SCALE_SPLIT_ANGLE(0.00214052735828), +         SCALE_SPLIT_ANGLE(0.00214086147025), +         SCALE_SPLIT_ANGLE(0.00214140163735), +         SCALE_SPLIT_ANGLE(0.00214177416638)}, +        {SCALE_SPLIT_ANGLE(0.00000001210151), +         SCALE_SPLIT_ANGLE(0.00000001210151), +         SCALE_SPLIT_ANGLE(0.00000001210151), +         SCALE_SPLIT_ANGLE(0.00000001210151), +         SCALE_SPLIT_ANGLE(0.00000001210151), +         SCALE_SPLIT_ANGLE(0.00000001210151), +         SCALE_SPLIT_ANGLE(0.00000001210151), +         SCALE_SPLIT_ANGLE(0.00000001210151)}, +    }, +    { +        {SCALE_SPLIT_ANGLE(0.78539812564850), +         SCALE_SPLIT_ANGLE(0.78539812564850), +         SCALE_SPLIT_ANGLE(0.78539812564850), +         SCALE_SPLIT_ANGLE(0.78539812564850), +         SCALE_SPLIT_ANGLE(0.78539812564850), +         SCALE_SPLIT_ANGLE(0.78539812564850), +         SCALE_SPLIT_ANGLE(0.78539812564850), +         SCALE_SPLIT_ANGLE(0.78539812564850)}, +        {SCALE_SPLIT_ANGLE(0.78143113851547), +         SCALE_SPLIT_ANGLE(0.78143155574799), +         SCALE_SPLIT_ANGLE(0.78143215179443), +         SCALE_SPLIT_ANGLE(0.78143370151520), +         SCALE_SPLIT_ANGLE(0.78143519163132), +         SCALE_SPLIT_ANGLE(0.78143757581711), +         SCALE_SPLIT_ANGLE(0.78144145011902), +         SCALE_SPLIT_ANGLE(0.78144407272339)}, +        {SCALE_SPLIT_ANGLE(0.77835679054260), +         SCALE_SPLIT_ANGLE(0.77835804224014), +         SCALE_SPLIT_ANGLE(0.77835988998413), +         SCALE_SPLIT_ANGLE(0.77836471796036), +         SCALE_SPLIT_ANGLE(0.77836942672729), +         SCALE_SPLIT_ANGLE(0.77837687730789), +         SCALE_SPLIT_ANGLE(0.77838897705078), +         SCALE_SPLIT_ANGLE(0.77839738130569)}, +        {SCALE_SPLIT_ANGLE(0.77291858196259), +         SCALE_SPLIT_ANGLE(0.77292239665985), +         SCALE_SPLIT_ANGLE(0.77292817831039), +         SCALE_SPLIT_ANGLE(0.77294290065765), +         SCALE_SPLIT_ANGLE(0.77295738458633), +         SCALE_SPLIT_ANGLE(0.77298063039780), +         SCALE_SPLIT_ANGLE(0.77301889657974), +         SCALE_SPLIT_ANGLE(0.77304571866989)}, +        {SCALE_SPLIT_ANGLE(0.76334190368652), +         SCALE_SPLIT_ANGLE(0.76335322856903), +         SCALE_SPLIT_ANGLE(0.76337057352066), +         SCALE_SPLIT_ANGLE(0.76341474056244), +         SCALE_SPLIT_ANGLE(0.76345866918564), +         SCALE_SPLIT_ANGLE(0.76353001594543), +         SCALE_SPLIT_ANGLE(0.76365023851395), +         SCALE_SPLIT_ANGLE(0.76373648643494)}, +        {SCALE_SPLIT_ANGLE(0.74662178754807), +         SCALE_SPLIT_ANGLE(0.74665385484695), +         SCALE_SPLIT_ANGLE(0.74670320749283), +         SCALE_SPLIT_ANGLE(0.74683058261871), +         SCALE_SPLIT_ANGLE(0.74695950746536), +         SCALE_SPLIT_ANGLE(0.74717390537262), +         SCALE_SPLIT_ANGLE(0.74754953384399), +         SCALE_SPLIT_ANGLE(0.74783092737198)}, +        {SCALE_SPLIT_ANGLE(0.73124057054520), +         SCALE_SPLIT_ANGLE(0.73129826784134), +         SCALE_SPLIT_ANGLE(0.73138761520386), +         SCALE_SPLIT_ANGLE(0.73162078857422), +         SCALE_SPLIT_ANGLE(0.73186045885086), +         SCALE_SPLIT_ANGLE(0.73226773738861), +         SCALE_SPLIT_ANGLE(0.73300832509995), +         SCALE_SPLIT_ANGLE(0.73358738422394)}, +        {SCALE_SPLIT_ANGLE(0.71016556024551), +         SCALE_SPLIT_ANGLE(0.71026545763016), +         SCALE_SPLIT_ANGLE(0.71042120456696), +         SCALE_SPLIT_ANGLE(0.71083343029022), +         SCALE_SPLIT_ANGLE(0.71126621961594), +         SCALE_SPLIT_ANGLE(0.71202337741852), +         SCALE_SPLIT_ANGLE(0.71347540616989), +         SCALE_SPLIT_ANGLE(0.71468448638916)}, +        {SCALE_SPLIT_ANGLE(0.68173062801361), +         SCALE_SPLIT_ANGLE(0.68189471960068), +         SCALE_SPLIT_ANGLE(0.68215268850327), +         SCALE_SPLIT_ANGLE(0.68284785747528), +         SCALE_SPLIT_ANGLE(0.68359774351120), +         SCALE_SPLIT_ANGLE(0.68496215343475), +         SCALE_SPLIT_ANGLE(0.68778359889984), +         SCALE_SPLIT_ANGLE(0.69036644697189)}, +        {SCALE_SPLIT_ANGLE(0.64424294233322), +         SCALE_SPLIT_ANGLE(0.64449471235275), +         SCALE_SPLIT_ANGLE(0.64489430189133), +         SCALE_SPLIT_ANGLE(0.64599478244781), +         SCALE_SPLIT_ANGLE(0.64722269773483), +         SCALE_SPLIT_ANGLE(0.64957273006439), +         SCALE_SPLIT_ANGLE(0.65497380495071), +         SCALE_SPLIT_ANGLE(0.66069257259369)}, +        {SCALE_SPLIT_ANGLE(0.59645885229111), +         SCALE_SPLIT_ANGLE(0.59681373834610), +         SCALE_SPLIT_ANGLE(0.59738290309906), +         SCALE_SPLIT_ANGLE(0.59898978471756), +         SCALE_SPLIT_ANGLE(0.60085380077362), +         SCALE_SPLIT_ANGLE(0.60464859008789), +         SCALE_SPLIT_ANGLE(0.61471658945084), +         SCALE_SPLIT_ANGLE(0.62811440229416)}, +        {SCALE_SPLIT_ANGLE(0.55878311395645), +         SCALE_SPLIT_ANGLE(0.55920600891113), +         SCALE_SPLIT_ANGLE(0.55988913774490), +         SCALE_SPLIT_ANGLE(0.56185030937195), +         SCALE_SPLIT_ANGLE(0.56418746709824), +         SCALE_SPLIT_ANGLE(0.56916546821594), +         SCALE_SPLIT_ANGLE(0.58402228355408), +         SCALE_SPLIT_ANGLE(0.60877442359924)}, +        {SCALE_SPLIT_ANGLE(0.51690864562988), +         SCALE_SPLIT_ANGLE(0.51739054918289), +         SCALE_SPLIT_ANGLE(0.51817405223846), +         SCALE_SPLIT_ANGLE(0.52045875787735), +         SCALE_SPLIT_ANGLE(0.52325224876404), +         SCALE_SPLIT_ANGLE(0.52947413921356), +         SCALE_SPLIT_ANGLE(0.55062562227249), +         SCALE_SPLIT_ANGLE(0.59875661134720)}, +        {SCALE_SPLIT_ANGLE(0.47171193361282), +         SCALE_SPLIT_ANGLE(0.47223743796349), +         SCALE_SPLIT_ANGLE(0.47309640049934), +         SCALE_SPLIT_ANGLE(0.47563400864601), +         SCALE_SPLIT_ANGLE(0.47880488634109), +         SCALE_SPLIT_ANGLE(0.48615166544914), +         SCALE_SPLIT_ANGLE(0.51456981897354), +         SCALE_SPLIT_ANGLE(0.61478358507156)}, +        {SCALE_SPLIT_ANGLE(0.42445337772369), +         SCALE_SPLIT_ANGLE(0.42500329017639), +         SCALE_SPLIT_ANGLE(0.42590543627739), +         SCALE_SPLIT_ANGLE(0.42859473824501), +         SCALE_SPLIT_ANGLE(0.43200695514679), +         SCALE_SPLIT_ANGLE(0.44014197587967), +         SCALE_SPLIT_ANGLE(0.47505444288254), +         SCALE_SPLIT_ANGLE(0.70435541868210)}, +        {SCALE_SPLIT_ANGLE(0.37662339210510), +         SCALE_SPLIT_ANGLE(0.37717753648758), +         SCALE_SPLIT_ANGLE(0.37808802723885), +         SCALE_SPLIT_ANGLE(0.38081303238869), +         SCALE_SPLIT_ANGLE(0.38429373502731), +         SCALE_SPLIT_ANGLE(0.39269909262657), +         SCALE_SPLIT_ANGLE(0.43061128258705), +         SCALE_SPLIT_ANGLE(0.89949643611908)}, +        {SCALE_SPLIT_ANGLE(0.32972764968872), +         SCALE_SPLIT_ANGLE(0.33026659488678), +         SCALE_SPLIT_ANGLE(0.33115157485008), +         SCALE_SPLIT_ANGLE(0.33379590511322), +         SCALE_SPLIT_ANGLE(0.33716440200806), +         SCALE_SPLIT_ANGLE(0.34525617957115), +         SCALE_SPLIT_ANGLE(0.38098797202110), +         SCALE_SPLIT_ANGLE(0.66312330961227)}, +        {SCALE_SPLIT_ANGLE(0.28508263826370), +         SCALE_SPLIT_ANGLE(0.28558859229088), +         SCALE_SPLIT_ANGLE(0.28641715645790), +         SCALE_SPLIT_ANGLE(0.28887593746185), +         SCALE_SPLIT_ANGLE(0.29197177290916), +         SCALE_SPLIT_ANGLE(0.29924646019936), +         SCALE_SPLIT_ANGLE(0.32879719138145), +         SCALE_SPLIT_ANGLE(0.45467028021812)}, +        {SCALE_SPLIT_ANGLE(0.24368345737457), +         SCALE_SPLIT_ANGLE(0.24414120614529), +         SCALE_SPLIT_ANGLE(0.24488738179207), +         SCALE_SPLIT_ANGLE(0.24707712233067), +         SCALE_SPLIT_ANGLE(0.24978286027908), +         SCALE_SPLIT_ANGLE(0.25592401623726), +         SCALE_SPLIT_ANGLE(0.27806487679482), +         SCALE_SPLIT_ANGLE(0.33706206083298)}, +        {SCALE_SPLIT_ANGLE(0.20616286993027), +         SCALE_SPLIT_ANGLE(0.20656119287014), +         SCALE_SPLIT_ANGLE(0.20720668137074), +         SCALE_SPLIT_ANGLE(0.20907410979271), +         SCALE_SPLIT_ANGLE(0.21132774651051), +         SCALE_SPLIT_ANGLE(0.21623271703720), +         SCALE_SPLIT_ANGLE(0.23177997767925), +         SCALE_SPLIT_ANGLE(0.26115790009499)}, +        {SCALE_SPLIT_ANGLE(0.17282110452652), +         SCALE_SPLIT_ANGLE(0.17315416038036), +         SCALE_SPLIT_ANGLE(0.17369024455547), +         SCALE_SPLIT_ANGLE(0.17521673440933), +         SCALE_SPLIT_ANGLE(0.17701178789139), +         SCALE_SPLIT_ANGLE(0.18074953556061), +         SCALE_SPLIT_ANGLE(0.19124270975590), +         SCALE_SPLIT_ANGLE(0.20666223764420)}, +        {SCALE_SPLIT_ANGLE(0.13066084682941), +         SCALE_SPLIT_ANGLE(0.13089758157730), +         SCALE_SPLIT_ANGLE(0.13127475976944), +         SCALE_SPLIT_ANGLE(0.13232271373272), +         SCALE_SPLIT_ANGLE(0.13350808620453), +         SCALE_SPLIT_ANGLE(0.13582544028759), +         SCALE_SPLIT_ANGLE(0.14140741527081), +         SCALE_SPLIT_ANGLE(0.14774028956890)}, +        {SCALE_SPLIT_ANGLE(0.09729286283255), +         SCALE_SPLIT_ANGLE(0.09744835644960), +         SCALE_SPLIT_ANGLE(0.09769364446402), +         SCALE_SPLIT_ANGLE(0.09835994243622), +         SCALE_SPLIT_ANGLE(0.09908767789602), +         SCALE_SPLIT_ANGLE(0.10043603181839), +         SCALE_SPLIT_ANGLE(0.10332850366831), +         SCALE_SPLIT_ANGLE(0.10610697418451)}, +        {SCALE_SPLIT_ANGLE(0.07155895978212), +         SCALE_SPLIT_ANGLE(0.07165451347828), +         SCALE_SPLIT_ANGLE(0.07180397957563), +         SCALE_SPLIT_ANGLE(0.07220225036144), +         SCALE_SPLIT_ANGLE(0.07262472063303), +         SCALE_SPLIT_ANGLE(0.07337479293346), +         SCALE_SPLIT_ANGLE(0.07485356926918), +         SCALE_SPLIT_ANGLE(0.07612708956003)}, +        {SCALE_SPLIT_ANGLE(0.05212157219648), +         SCALE_SPLIT_ANGLE(0.05217727646232), +         SCALE_SPLIT_ANGLE(0.05226379260421), +         SCALE_SPLIT_ANGLE(0.05249078199267), +         SCALE_SPLIT_ANGLE(0.05272606015205), +         SCALE_SPLIT_ANGLE(0.05313042178750), +         SCALE_SPLIT_ANGLE(0.05388085916638), +         SCALE_SPLIT_ANGLE(0.05448162183166)}, +        {SCALE_SPLIT_ANGLE(0.03767965734005), +         SCALE_SPLIT_ANGLE(0.03771083429456), +         SCALE_SPLIT_ANGLE(0.03775899112225), +         SCALE_SPLIT_ANGLE(0.03788382932544), +         SCALE_SPLIT_ANGLE(0.03801096230745), +         SCALE_SPLIT_ANGLE(0.03822423517704), +         SCALE_SPLIT_ANGLE(0.03860339149833), +         SCALE_SPLIT_ANGLE(0.03889226913452)}, +        {SCALE_SPLIT_ANGLE(0.02168158628047), +         SCALE_SPLIT_ANGLE(0.02169270813465), +         SCALE_SPLIT_ANGLE(0.02170977368951), +         SCALE_SPLIT_ANGLE(0.02175341546535), +         SCALE_SPLIT_ANGLE(0.02179697528481), +         SCALE_SPLIT_ANGLE(0.02186812832952), +         SCALE_SPLIT_ANGLE(0.02198898419738), +         SCALE_SPLIT_ANGLE(0.02207652665675)}, +        {SCALE_SPLIT_ANGLE(0.01235581003129), +         SCALE_SPLIT_ANGLE(0.01235957816243), +         SCALE_SPLIT_ANGLE(0.01236534118652), +         SCALE_SPLIT_ANGLE(0.01237995270640), +         SCALE_SPLIT_ANGLE(0.01239436585456), +         SCALE_SPLIT_ANGLE(0.01241754554212), +         SCALE_SPLIT_ANGLE(0.01245592255145), +         SCALE_SPLIT_ANGLE(0.01248296815902)}, +        {SCALE_SPLIT_ANGLE(0.00700127054006), +         SCALE_SPLIT_ANGLE(0.00700251059607), +         SCALE_SPLIT_ANGLE(0.00700440211222), +         SCALE_SPLIT_ANGLE(0.00700917327777), +         SCALE_SPLIT_ANGLE(0.00701385037974), +         SCALE_SPLIT_ANGLE(0.00702130328864), +         SCALE_SPLIT_ANGLE(0.00703346775845), +         SCALE_SPLIT_ANGLE(0.00704190973192)}, +        {SCALE_SPLIT_ANGLE(0.00395415630192), +         SCALE_SPLIT_ANGLE(0.00395455770195), +         SCALE_SPLIT_ANGLE(0.00395516818389), +         SCALE_SPLIT_ANGLE(0.00395670533180), +         SCALE_SPLIT_ANGLE(0.00395820522681), +         SCALE_SPLIT_ANGLE(0.00396058429033), +         SCALE_SPLIT_ANGLE(0.00396443530917), +         SCALE_SPLIT_ANGLE(0.00396708538756)}, +        {SCALE_SPLIT_ANGLE(0.00000002236068), +         SCALE_SPLIT_ANGLE(0.00000002236068), +         SCALE_SPLIT_ANGLE(0.00000002236068), +         SCALE_SPLIT_ANGLE(0.00000002236068), +         SCALE_SPLIT_ANGLE(0.00000002236068), +         SCALE_SPLIT_ANGLE(0.00000002236068), +         SCALE_SPLIT_ANGLE(0.00000002236068), +         SCALE_SPLIT_ANGLE(0.00000002236068)}, +    }, +    { +        {SCALE_SPLIT_ANGLE(1.17809724807739), +         SCALE_SPLIT_ANGLE(1.17809724807739), +         SCALE_SPLIT_ANGLE(1.17809724807739), +         SCALE_SPLIT_ANGLE(1.17809724807739), +         SCALE_SPLIT_ANGLE(1.17809724807739), +         SCALE_SPLIT_ANGLE(1.17809724807739), +         SCALE_SPLIT_ANGLE(1.17809724807739), +         SCALE_SPLIT_ANGLE(1.17809724807739)}, +        {SCALE_SPLIT_ANGLE(1.17289519309998), +         SCALE_SPLIT_ANGLE(1.17289638519287), +         SCALE_SPLIT_ANGLE(1.17289805412292), +         SCALE_SPLIT_ANGLE(1.17290234565735), +         SCALE_SPLIT_ANGLE(1.17290651798248), +         SCALE_SPLIT_ANGLE(1.17291307449341), +         SCALE_SPLIT_ANGLE(1.17292368412018), +         SCALE_SPLIT_ANGLE(1.17293095588684)}, +        {SCALE_SPLIT_ANGLE(1.16883802413940), +         SCALE_SPLIT_ANGLE(1.16884148120880), +         SCALE_SPLIT_ANGLE(1.16884684562683), +         SCALE_SPLIT_ANGLE(1.16886019706726), +         SCALE_SPLIT_ANGLE(1.16887319087982), +         SCALE_SPLIT_ANGLE(1.16889393329620), +         SCALE_SPLIT_ANGLE(1.16892755031586), +         SCALE_SPLIT_ANGLE(1.16895067691803)}, +        {SCALE_SPLIT_ANGLE(1.16160655021667), +         SCALE_SPLIT_ANGLE(1.16161727905273), +         SCALE_SPLIT_ANGLE(1.16163372993469), +         SCALE_SPLIT_ANGLE(1.16167509555817), +         SCALE_SPLIT_ANGLE(1.16171574592590), +         SCALE_SPLIT_ANGLE(1.16178059577942), +         SCALE_SPLIT_ANGLE(1.16188669204712), +         SCALE_SPLIT_ANGLE(1.16196048259735)}, +        {SCALE_SPLIT_ANGLE(1.14870405197144), +         SCALE_SPLIT_ANGLE(1.14873659610748), +         SCALE_SPLIT_ANGLE(1.14878630638123), +         SCALE_SPLIT_ANGLE(1.14891266822815), +         SCALE_SPLIT_ANGLE(1.14903748035431), +         SCALE_SPLIT_ANGLE(1.14923894405365), +         SCALE_SPLIT_ANGLE(1.14957404136658), +         SCALE_SPLIT_ANGLE(1.14981138706207)}, +        {SCALE_SPLIT_ANGLE(1.12567496299744), +         SCALE_SPLIT_ANGLE(1.12576997280121), +         SCALE_SPLIT_ANGLE(1.12591612339020), +         SCALE_SPLIT_ANGLE(1.12629067897797), +         SCALE_SPLIT_ANGLE(1.12666594982147), +         SCALE_SPLIT_ANGLE(1.12728190422058), +         SCALE_SPLIT_ANGLE(1.12833762168884), +         SCALE_SPLIT_ANGLE(1.12910997867584)}, +        {SCALE_SPLIT_ANGLE(1.10394382476807), +         SCALE_SPLIT_ANGLE(1.10412001609802), +         SCALE_SPLIT_ANGLE(1.10439181327820), +         SCALE_SPLIT_ANGLE(1.10509443283081), +         SCALE_SPLIT_ANGLE(1.10580694675446), +         SCALE_SPLIT_ANGLE(1.10699594020844), +         SCALE_SPLIT_ANGLE(1.10909199714661), +         SCALE_SPLIT_ANGLE(1.11067581176758)}, +        {SCALE_SPLIT_ANGLE(1.07335853576660), +         SCALE_SPLIT_ANGLE(1.07367515563965), +         SCALE_SPLIT_ANGLE(1.07416594028473), +         SCALE_SPLIT_ANGLE(1.07544887065887), +         SCALE_SPLIT_ANGLE(1.07677161693573), +         SCALE_SPLIT_ANGLE(1.07902932167053), +         SCALE_SPLIT_ANGLE(1.08317446708679), +         SCALE_SPLIT_ANGLE(1.08645892143250)}, +        {SCALE_SPLIT_ANGLE(1.03070926666260), +         SCALE_SPLIT_ANGLE(1.03125381469727), +         SCALE_SPLIT_ANGLE(1.03210365772247), +         SCALE_SPLIT_ANGLE(1.03435742855072), +         SCALE_SPLIT_ANGLE(1.03673219680786), +         SCALE_SPLIT_ANGLE(1.04091238975525), +         SCALE_SPLIT_ANGLE(1.04904520511627), +         SCALE_SPLIT_ANGLE(1.05597066879272)}, +        {SCALE_SPLIT_ANGLE(0.97233027219772), +         SCALE_SPLIT_ANGLE(0.97321176528931), +         SCALE_SPLIT_ANGLE(0.97459858655930), +         SCALE_SPLIT_ANGLE(0.97834444046021), +         SCALE_SPLIT_ANGLE(0.98240250349045), +         SCALE_SPLIT_ANGLE(0.98984360694885), +         SCALE_SPLIT_ANGLE(1.00556409358978), +         SCALE_SPLIT_ANGLE(1.02053046226501)}, +        {SCALE_SPLIT_ANGLE(0.89506644010544), +         SCALE_SPLIT_ANGLE(0.89638090133667), +         SCALE_SPLIT_ANGLE(0.89846849441528), +         SCALE_SPLIT_ANGLE(0.90423041582108), +         SCALE_SPLIT_ANGLE(0.91068577766418), +         SCALE_SPLIT_ANGLE(0.92315071821213), +         SCALE_SPLIT_ANGLE(0.95268243551254), +         SCALE_SPLIT_ANGLE(0.98626506328583)}, +        {SCALE_SPLIT_ANGLE(0.83257329463959), +         SCALE_SPLIT_ANGLE(0.83419400453568), +         SCALE_SPLIT_ANGLE(0.83678525686264), +         SCALE_SPLIT_ANGLE(0.84404885768890), +         SCALE_SPLIT_ANGLE(0.85238879919052), +         SCALE_SPLIT_ANGLE(0.86914122104645), +         SCALE_SPLIT_ANGLE(0.91285765171051), +         SCALE_SPLIT_ANGLE(0.97222852706909)}, +        {SCALE_SPLIT_ANGLE(0.76227337121964), +         SCALE_SPLIT_ANGLE(0.76417022943497), +         SCALE_SPLIT_ANGLE(0.76722234487534), +         SCALE_SPLIT_ANGLE(0.77590966224670), +         SCALE_SPLIT_ANGLE(0.78613227605820), +         SCALE_SPLIT_ANGLE(0.80752640962601), +         SCALE_SPLIT_ANGLE(0.86987829208374), +         SCALE_SPLIT_ANGLE(0.97863066196442)}, +        {SCALE_SPLIT_ANGLE(0.68631619215012), +         SCALE_SPLIT_ANGLE(0.68841683864594), +         SCALE_SPLIT_ANGLE(0.69181632995605), +         SCALE_SPLIT_ANGLE(0.70162522792816), +         SCALE_SPLIT_ANGLE(0.71342813968658), +         SCALE_SPLIT_ANGLE(0.73910331726074), +         SCALE_SPLIT_ANGLE(0.82307606935501), +         SCALE_SPLIT_ANGLE(1.03223013877869)}, +        {SCALE_SPLIT_ANGLE(0.60781323909760), +         SCALE_SPLIT_ANGLE(0.61001545190811), +         SCALE_SPLIT_ANGLE(0.61359488964081), +         SCALE_SPLIT_ANGLE(0.62403196096420), +         SCALE_SPLIT_ANGLE(0.63681113719940), +         SCALE_SPLIT_ANGLE(0.66548818349838), +         SCALE_SPLIT_ANGLE(0.76931142807007), +         SCALE_SPLIT_ANGLE(1.19638144969940)}, +        {SCALE_SPLIT_ANGLE(0.53021633625031), +         SCALE_SPLIT_ANGLE(0.53240889310837), +         SCALE_SPLIT_ANGLE(0.53598147630692), +         SCALE_SPLIT_ANGLE(0.54646170139313), +         SCALE_SPLIT_ANGLE(0.55942362546921), +         SCALE_SPLIT_ANGLE(0.58904862403870), +         SCALE_SPLIT_ANGLE(0.70326197147369), +         SCALE_SPLIT_ANGLE(1.46822571754456)}, +        {SCALE_SPLIT_ANGLE(0.45655798912048), +         SCALE_SPLIT_ANGLE(0.45864027738571), +         SCALE_SPLIT_ANGLE(0.46203431487083), +         SCALE_SPLIT_ANGLE(0.47199890017509), +         SCALE_SPLIT_ANGLE(0.48433950543404), +         SCALE_SPLIT_ANGLE(0.51260900497437), +         SCALE_SPLIT_ANGLE(0.62212866544724), +         SCALE_SPLIT_ANGLE(1.20720028877258)}, +        {SCALE_SPLIT_ANGLE(0.38893291354179), +         SCALE_SPLIT_ANGLE(0.39082619547844), +         SCALE_SPLIT_ANGLE(0.39390671253204), +         SCALE_SPLIT_ANGLE(0.40291145443916), +         SCALE_SPLIT_ANGLE(0.41398161649704), +         SCALE_SPLIT_ANGLE(0.43899387121201), +         SCALE_SPLIT_ANGLE(0.53091615438461), +         SCALE_SPLIT_ANGLE(0.85221332311630)}, +        {SCALE_SPLIT_ANGLE(0.32840186357498), +         SCALE_SPLIT_ANGLE(0.33005380630493), +         SCALE_SPLIT_ANGLE(0.33273181319237), +         SCALE_SPLIT_ANGLE(0.34049156308174), +         SCALE_SPLIT_ANGLE(0.34989202022552), +         SCALE_SPLIT_ANGLE(0.37057083845139), +         SCALE_SPLIT_ANGLE(0.43990376591682), +         SCALE_SPLIT_ANGLE(0.60593068599701)}, +        {SCALE_SPLIT_ANGLE(0.27521029114723), +         SCALE_SPLIT_ANGLE(0.27659532427788), +         SCALE_SPLIT_ANGLE(0.27882957458496), +         SCALE_SPLIT_ANGLE(0.28522574901581), +         SCALE_SPLIT_ANGLE(0.29282194375992), +         SCALE_SPLIT_ANGLE(0.30895602703094), +         SCALE_SPLIT_ANGLE(0.35752716660500), +         SCALE_SPLIT_ANGLE(0.44366976618767)}, +        {SCALE_SPLIT_ANGLE(0.22909799218178), +         SCALE_SPLIT_ANGLE(0.23021572828293), +         SCALE_SPLIT_ANGLE(0.23200811445713), +         SCALE_SPLIT_ANGLE(0.23706816136837), +         SCALE_SPLIT_ANGLE(0.24294251203537), +         SCALE_SPLIT_ANGLE(0.25494652986526), +         SCALE_SPLIT_ANGLE(0.28743273019791), +         SCALE_SPLIT_ANGLE(0.33326253294945)}, +        {SCALE_SPLIT_ANGLE(0.17204397916794), +         SCALE_SPLIT_ANGLE(0.17280195653439), +         SCALE_SPLIT_ANGLE(0.17400608956814), +         SCALE_SPLIT_ANGLE(0.17733128368855), +         SCALE_SPLIT_ANGLE(0.18105845153332), +         SCALE_SPLIT_ANGLE(0.18825364112854), +         SCALE_SPLIT_ANGLE(0.20519739389420), +         SCALE_SPLIT_ANGLE(0.22397252917290)}, +        {SCALE_SPLIT_ANGLE(0.12763081490994), +         SCALE_SPLIT_ANGLE(0.12810991704464), +         SCALE_SPLIT_ANGLE(0.12886413931847), +         SCALE_SPLIT_ANGLE(0.13090407848358), +         SCALE_SPLIT_ANGLE(0.13311788439751), +         SCALE_SPLIT_ANGLE(0.13718488812447), +         SCALE_SPLIT_ANGLE(0.14578336477280), +         SCALE_SPLIT_ANGLE(0.15392093360424)}, +        {SCALE_SPLIT_ANGLE(0.09368771314621), +         SCALE_SPLIT_ANGLE(0.09397350251675), +         SCALE_SPLIT_ANGLE(0.09441984444857), +         SCALE_SPLIT_ANGLE(0.09560553729534), +         SCALE_SPLIT_ANGLE(0.09685769677162), +         SCALE_SPLIT_ANGLE(0.09906788915396), +         SCALE_SPLIT_ANGLE(0.10338338464499), +         SCALE_SPLIT_ANGLE(0.10706327855587)}, +        {SCALE_SPLIT_ANGLE(0.06817039847374), +         SCALE_SPLIT_ANGLE(0.06833326816559), +         SCALE_SPLIT_ANGLE(0.06858598440886), +         SCALE_SPLIT_ANGLE(0.06924756616354), +         SCALE_SPLIT_ANGLE(0.06993119418621), +         SCALE_SPLIT_ANGLE(0.07110133767128), +         SCALE_SPLIT_ANGLE(0.07325870543718), +         SCALE_SPLIT_ANGLE(0.07497421652079)}, +        {SCALE_SPLIT_ANGLE(0.04925633221865), +         SCALE_SPLIT_ANGLE(0.04934597760439), +         SCALE_SPLIT_ANGLE(0.04948436096311), +         SCALE_SPLIT_ANGLE(0.04984252527356), +         SCALE_SPLIT_ANGLE(0.05020647495985), +         SCALE_SPLIT_ANGLE(0.05081529542804), +         SCALE_SPLIT_ANGLE(0.05189275369048), +         SCALE_SPLIT_ANGLE(0.05270983651280)}, +        {SCALE_SPLIT_ANGLE(0.02833298407495), +         SCALE_SPLIT_ANGLE(0.02836437709630), +         SCALE_SPLIT_ANGLE(0.02841254509985), +         SCALE_SPLIT_ANGLE(0.02853557839990), +         SCALE_SPLIT_ANGLE(0.02865825034678), +         SCALE_SPLIT_ANGLE(0.02885829657316), +         SCALE_SPLIT_ANGLE(0.02919724024832), +         SCALE_SPLIT_ANGLE(0.02944211289287)}, +        {SCALE_SPLIT_ANGLE(0.01614447496831), +         SCALE_SPLIT_ANGLE(0.01615499891341), +         SCALE_SPLIT_ANGLE(0.01617109030485), +         SCALE_SPLIT_ANGLE(0.01621186546981), +         SCALE_SPLIT_ANGLE(0.01625206694007), +         SCALE_SPLIT_ANGLE(0.01631666347384), +         SCALE_SPLIT_ANGLE(0.01642346009612), +         SCALE_SPLIT_ANGLE(0.01649860665202)}, +        {SCALE_SPLIT_ANGLE(0.00914775021374), +         SCALE_SPLIT_ANGLE(0.00915119145066), +         SCALE_SPLIT_ANGLE(0.00915644038469), +         SCALE_SPLIT_ANGLE(0.00916968286037), +         SCALE_SPLIT_ANGLE(0.00918265152723), +         SCALE_SPLIT_ANGLE(0.00920331478119), +         SCALE_SPLIT_ANGLE(0.00923701003194), +         SCALE_SPLIT_ANGLE(0.00926037877798)}, +        {SCALE_SPLIT_ANGLE(0.00516638066620), +         SCALE_SPLIT_ANGLE(0.00516748987138), +         SCALE_SPLIT_ANGLE(0.00516917929053), +         SCALE_SPLIT_ANGLE(0.00517342984676), +         SCALE_SPLIT_ANGLE(0.00517757656053), +         SCALE_SPLIT_ANGLE(0.00518415356055), +         SCALE_SPLIT_ANGLE(0.00519479578361), +         SCALE_SPLIT_ANGLE(0.00520211551338)}, +        {SCALE_SPLIT_ANGLE(0.00000002921564), +         SCALE_SPLIT_ANGLE(0.00000002921564), +         SCALE_SPLIT_ANGLE(0.00000002921564), +         SCALE_SPLIT_ANGLE(0.00000002921564), +         SCALE_SPLIT_ANGLE(0.00000002921564), +         SCALE_SPLIT_ANGLE(0.00000002921564), +         SCALE_SPLIT_ANGLE(0.00000002921564), +         SCALE_SPLIT_ANGLE(0.00000002921564)}, +    }, +    { +        {SCALE_SPLIT_ANGLE(1.57079637050629), +         SCALE_SPLIT_ANGLE(1.57079637050629), +         SCALE_SPLIT_ANGLE(1.57079637050629), +         SCALE_SPLIT_ANGLE(1.57079637050629), +         SCALE_SPLIT_ANGLE(1.57079637050629), +         SCALE_SPLIT_ANGLE(1.57079637050629), +         SCALE_SPLIT_ANGLE(1.57079637050629), +         SCALE_SPLIT_ANGLE(1.57079637050629)}, +        {SCALE_SPLIT_ANGLE(1.56514155864716), +         SCALE_SPLIT_ANGLE(1.56514346599579), +         SCALE_SPLIT_ANGLE(1.56514656543732), +         SCALE_SPLIT_ANGLE(1.56515407562256), +         SCALE_SPLIT_ANGLE(1.56516146659851), +         SCALE_SPLIT_ANGLE(1.56517302989960), +         SCALE_SPLIT_ANGLE(1.56519174575806), +         SCALE_SPLIT_ANGLE(1.56520450115204)}, +        {SCALE_SPLIT_ANGLE(1.56069743633270), +         SCALE_SPLIT_ANGLE(1.56070363521576), +         SCALE_SPLIT_ANGLE(1.56071317195892), +         SCALE_SPLIT_ANGLE(1.56073689460754), +         SCALE_SPLIT_ANGLE(1.56076002120972), +         SCALE_SPLIT_ANGLE(1.56079673767090), +         SCALE_SPLIT_ANGLE(1.56085586547852), +         SCALE_SPLIT_ANGLE(1.56089639663696)}, +        {SCALE_SPLIT_ANGLE(1.55270349979401), +         SCALE_SPLIT_ANGLE(1.55272293090820), +         SCALE_SPLIT_ANGLE(1.55275249481201), +         SCALE_SPLIT_ANGLE(1.55282700061798), +         SCALE_SPLIT_ANGLE(1.55289983749390), +         SCALE_SPLIT_ANGLE(1.55301547050476), +         SCALE_SPLIT_ANGLE(1.55320310592651), +         SCALE_SPLIT_ANGLE(1.55333256721497)}, +        {SCALE_SPLIT_ANGLE(1.53820896148682), +         SCALE_SPLIT_ANGLE(1.53826904296875), +         SCALE_SPLIT_ANGLE(1.53836083412170), +         SCALE_SPLIT_ANGLE(1.53859281539917), +         SCALE_SPLIT_ANGLE(1.53882038593292), +         SCALE_SPLIT_ANGLE(1.53918409347534), +         SCALE_SPLIT_ANGLE(1.53978037834167), +         SCALE_SPLIT_ANGLE(1.54019629955292)}, +        {SCALE_SPLIT_ANGLE(1.51160359382629), +         SCALE_SPLIT_ANGLE(1.51178681850433), +         SCALE_SPLIT_ANGLE(1.51206707954407), +         SCALE_SPLIT_ANGLE(1.51277923583984), +         SCALE_SPLIT_ANGLE(1.51348364353180), +         SCALE_SPLIT_ANGLE(1.51462137699127), +         SCALE_SPLIT_ANGLE(1.51652014255524), +         SCALE_SPLIT_ANGLE(1.51787149906158)}, +        {SCALE_SPLIT_ANGLE(1.48564028739929), +         SCALE_SPLIT_ANGLE(1.48599278926849), +         SCALE_SPLIT_ANGLE(1.48653328418732), +         SCALE_SPLIT_ANGLE(1.48791313171387), +         SCALE_SPLIT_ANGLE(1.48928797245026), +         SCALE_SPLIT_ANGLE(1.49152994155884), +         SCALE_SPLIT_ANGLE(1.49533641338348), +         SCALE_SPLIT_ANGLE(1.49810016155243)}, +        {SCALE_SPLIT_ANGLE(1.44770443439484), +         SCALE_SPLIT_ANGLE(1.44837117195129), +         SCALE_SPLIT_ANGLE(1.44939684867859), +         SCALE_SPLIT_ANGLE(1.45203149318695), +         SCALE_SPLIT_ANGLE(1.45468175411224), +         SCALE_SPLIT_ANGLE(1.45906186103821), +         SCALE_SPLIT_ANGLE(1.46668362617493), +         SCALE_SPLIT_ANGLE(1.47238755226135)}, +        {SCALE_SPLIT_ANGLE(1.39214622974396), +         SCALE_SPLIT_ANGLE(1.39337480068207), +         SCALE_SPLIT_ANGLE(1.39527153968811), +         SCALE_SPLIT_ANGLE(1.40018463134766), +         SCALE_SPLIT_ANGLE(1.40518975257874), +         SCALE_SPLIT_ANGLE(1.41361439228058), +         SCALE_SPLIT_ANGLE(1.42880713939667), +         SCALE_SPLIT_ANGLE(1.44072246551514)}, +        {SCALE_SPLIT_ANGLE(1.31133699417114), +         SCALE_SPLIT_ANGLE(1.31350564956665), +         SCALE_SPLIT_ANGLE(1.31686961650848), +         SCALE_SPLIT_ANGLE(1.32567906379700), +         SCALE_SPLIT_ANGLE(1.33480501174927), +         SCALE_SPLIT_ANGLE(1.35055577754974), +         SCALE_SPLIT_ANGLE(1.38048458099365), +         SCALE_SPLIT_ANGLE(1.40579915046692)}, +        {SCALE_SPLIT_ANGLE(1.19695901870728), +         SCALE_SPLIT_ANGLE(1.20052528381348), +         SCALE_SPLIT_ANGLE(1.20609176158905), +         SCALE_SPLIT_ANGLE(1.22087836265564), +         SCALE_SPLIT_ANGLE(1.23654139041901), +         SCALE_SPLIT_ANGLE(1.26451897621155), +         SCALE_SPLIT_ANGLE(1.32194638252258), +         SCALE_SPLIT_ANGLE(1.37709856033325)}, +        {SCALE_SPLIT_ANGLE(1.09969496726990), +         SCALE_SPLIT_ANGLE(1.10437381267548), +         SCALE_SPLIT_ANGLE(1.11171460151672), +         SCALE_SPLIT_ANGLE(1.13144767284393), +         SCALE_SPLIT_ANGLE(1.15274536609650), +         SCALE_SPLIT_ANGLE(1.19192278385162), +         SCALE_SPLIT_ANGLE(1.27820122241974), +         SCALE_SPLIT_ANGLE(1.37287366390228)}, +        {SCALE_SPLIT_ANGLE(0.98739641904831), +         SCALE_SPLIT_ANGLE(0.99314504861832), +         SCALE_SPLIT_ANGLE(1.00221848487854), +         SCALE_SPLIT_ANGLE(1.02694928646088), +         SCALE_SPLIT_ANGLE(1.05423069000244), +         SCALE_SPLIT_ANGLE(1.10619938373566), +         SCALE_SPLIT_ANGLE(1.23116791248322), +         SCALE_SPLIT_ANGLE(1.39771795272827)}, +        {SCALE_SPLIT_ANGLE(0.86566168069839), +         SCALE_SPLIT_ANGLE(0.87219274044037), +         SCALE_SPLIT_ANGLE(0.88256764411926), +         SCALE_SPLIT_ANGLE(0.91127204895020), +         SCALE_SPLIT_ANGLE(0.94370108842850), +         SCALE_SPLIT_ANGLE(1.00792455673218), +         SCALE_SPLIT_ANGLE(1.17914211750031), +         SCALE_SPLIT_ANGLE(1.48121190071106)}, +        {SCALE_SPLIT_ANGLE(0.74293035268784), +         SCALE_SPLIT_ANGLE(0.74975663423538), +         SCALE_SPLIT_ANGLE(0.76066619157791), +         SCALE_SPLIT_ANGLE(0.79128372669220), +         SCALE_SPLIT_ANGLE(0.82667875289917), +         SCALE_SPLIT_ANGLE(0.89952337741852), +         SCALE_SPLIT_ANGLE(1.11571300029755), +         SCALE_SPLIT_ANGLE(1.67431199550629)}, +        {SCALE_SPLIT_ANGLE(0.62761706113815), +         SCALE_SPLIT_ANGLE(0.63421267271042), +         SCALE_SPLIT_ANGLE(0.64480352401733), +         SCALE_SPLIT_ANGLE(0.67486244440079), +         SCALE_SPLIT_ANGLE(0.71025311946869), +         SCALE_SPLIT_ANGLE(0.78539818525314), +         SCALE_SPLIT_ANGLE(1.02937340736389), +         SCALE_SPLIT_ANGLE(1.92301487922668)}, +        {SCALE_SPLIT_ANGLE(0.52522456645966), +         SCALE_SPLIT_ANGLE(0.53118568658829), +         SCALE_SPLIT_ANGLE(0.54078328609467), +         SCALE_SPLIT_ANGLE(0.56819748878479), +         SCALE_SPLIT_ANGLE(0.60080903768539), +         SCALE_SPLIT_ANGLE(0.67127299308777), +         SCALE_SPLIT_ANGLE(0.91114157438278), +         SCALE_SPLIT_ANGLE(1.73398244380951)}, +        {SCALE_SPLIT_ANGLE(0.43751955032349), +         SCALE_SPLIT_ANGLE(0.44262495636940), +         SCALE_SPLIT_ANGLE(0.45084837079048), +         SCALE_SPLIT_ANGLE(0.47435709834099), +         SCALE_SPLIT_ANGLE(0.50235128402710), +         SCALE_SPLIT_ANGLE(0.56287181377411), +         SCALE_SPLIT_ANGLE(0.76705121994019), +         SCALE_SPLIT_ANGLE(1.34888231754303)}, +        {SCALE_SPLIT_ANGLE(0.36364197731018), +         SCALE_SPLIT_ANGLE(0.36782836914063), +         SCALE_SPLIT_ANGLE(0.37456014752388), +         SCALE_SPLIT_ANGLE(0.39372295141220), +         SCALE_SPLIT_ANGLE(0.41636970639229), +         SCALE_SPLIT_ANGLE(0.46459695696831), +         SCALE_SPLIT_ANGLE(0.61803084611893), +         SCALE_SPLIT_ANGLE(0.96275907754898)}, +        {SCALE_SPLIT_ANGLE(0.30166232585907), +         SCALE_SPLIT_ANGLE(0.30497136712074), +         SCALE_SPLIT_ANGLE(0.31027451157570), +         SCALE_SPLIT_ANGLE(0.32524627447128), +         SCALE_SPLIT_ANGLE(0.34269109368324), +         SCALE_SPLIT_ANGLE(0.37887358665466), +         SCALE_SPLIT_ANGLE(0.48432540893555), +         SCALE_SPLIT_ANGLE(0.66878592967987)}, +        {SCALE_SPLIT_ANGLE(0.24960109591484), +         SCALE_SPLIT_ANGLE(0.25213342905045), +         SCALE_SPLIT_ANGLE(0.25617361068726), +         SCALE_SPLIT_ANGLE(0.26745575666428), +         SCALE_SPLIT_ANGLE(0.28036275506020), +         SCALE_SPLIT_ANGLE(0.30627736449242), +         SCALE_SPLIT_ANGLE(0.37490701675415), +         SCALE_SPLIT_ANGLE(0.47145301103592)}, +        {SCALE_SPLIT_ANGLE(0.18661488592625), +         SCALE_SPLIT_ANGLE(0.18822197616100), +         SCALE_SPLIT_ANGLE(0.19076596200466), +         SCALE_SPLIT_ANGLE(0.19773863255978), +         SCALE_SPLIT_ANGLE(0.20547652244568), +         SCALE_SPLIT_ANGLE(0.22024063766003), +         SCALE_SPLIT_ANGLE(0.25452125072479), +         SCALE_SPLIT_ANGLE(0.29236793518066)}, +        {SCALE_SPLIT_ANGLE(0.13821771740913), +         SCALE_SPLIT_ANGLE(0.13918289542198), +         SCALE_SPLIT_ANGLE(0.14069861173630), +         SCALE_SPLIT_ANGLE(0.14477686583996), +         SCALE_SPLIT_ANGLE(0.14917233586311), +         SCALE_SPLIT_ANGLE(0.15718193352222), +         SCALE_SPLIT_ANGLE(0.17394064366817), +         SCALE_SPLIT_ANGLE(0.18971265852451)}, +        {SCALE_SPLIT_ANGLE(0.10140904784203), +         SCALE_SPLIT_ANGLE(0.10196315497160), +         SCALE_SPLIT_ANGLE(0.10282710194588), +         SCALE_SPLIT_ANGLE(0.10511382669210), +         SCALE_SPLIT_ANGLE(0.10751703381538), +         SCALE_SPLIT_ANGLE(0.11173453181982), +         SCALE_SPLIT_ANGLE(0.11990433931351), +         SCALE_SPLIT_ANGLE(0.12683042883873)}, +        {SCALE_SPLIT_ANGLE(0.07378087192774), +         SCALE_SPLIT_ANGLE(0.07408788800240), +         SCALE_SPLIT_ANGLE(0.07456368207932), +         SCALE_SPLIT_ANGLE(0.07580613344908), +         SCALE_SPLIT_ANGLE(0.07708553224802), +         SCALE_SPLIT_ANGLE(0.07926639169455), +         SCALE_SPLIT_ANGLE(0.08326309919357), +         SCALE_SPLIT_ANGLE(0.08642497658730)}, +        {SCALE_SPLIT_ANGLE(0.05331044271588), +         SCALE_SPLIT_ANGLE(0.05347600579262), +         SCALE_SPLIT_ANGLE(0.05373133346438), +         SCALE_SPLIT_ANGLE(0.05439101532102), +         SCALE_SPLIT_ANGLE(0.05505970120430), +         SCALE_SPLIT_ANGLE(0.05617496743798), +         SCALE_SPLIT_ANGLE(0.05813983827829), +         SCALE_SPLIT_ANGLE(0.05962376296520)}, +        {SCALE_SPLIT_ANGLE(0.03066622652113), +         SCALE_SPLIT_ANGLE(0.03072291985154), +         SCALE_SPLIT_ANGLE(0.03080986253917), +         SCALE_SPLIT_ANGLE(0.03103173524141), +         SCALE_SPLIT_ANGLE(0.03125262632966), +         SCALE_SPLIT_ANGLE(0.03161224350333), +         SCALE_SPLIT_ANGLE(0.03221991285682), +         SCALE_SPLIT_ANGLE(0.03265778720379)}, +        {SCALE_SPLIT_ANGLE(0.01747439615428), +         SCALE_SPLIT_ANGLE(0.01749316416681), +         SCALE_SPLIT_ANGLE(0.01752184517682), +         SCALE_SPLIT_ANGLE(0.01759449020028), +         SCALE_SPLIT_ANGLE(0.01766604930162), +         SCALE_SPLIT_ANGLE(0.01778092049062), +         SCALE_SPLIT_ANGLE(0.01797054335475), +         SCALE_SPLIT_ANGLE(0.01810375973582)}, +        {SCALE_SPLIT_ANGLE(0.00990140344948), +         SCALE_SPLIT_ANGLE(0.00990749336779), +         SCALE_SPLIT_ANGLE(0.00991678331047), +         SCALE_SPLIT_ANGLE(0.00994021166116), +         SCALE_SPLIT_ANGLE(0.00996314454824), +         SCALE_SPLIT_ANGLE(0.00999966636300), +         SCALE_SPLIT_ANGLE(0.01005917042494), +         SCALE_SPLIT_ANGLE(0.01010039448738)}, +        {SCALE_SPLIT_ANGLE(0.00559204118326), +         SCALE_SPLIT_ANGLE(0.00559399509802), +         SCALE_SPLIT_ANGLE(0.00559697346762), +         SCALE_SPLIT_ANGLE(0.00560446362942), +         SCALE_SPLIT_ANGLE(0.00561177125201), +         SCALE_SPLIT_ANGLE(0.00562335411087), +         SCALE_SPLIT_ANGLE(0.00564208766446), +         SCALE_SPLIT_ANGLE(0.00565496599302)}, +        {SCALE_SPLIT_ANGLE(0.00000003162278), +         SCALE_SPLIT_ANGLE(0.00000003162278), +         SCALE_SPLIT_ANGLE(0.00000003162278), +         SCALE_SPLIT_ANGLE(0.00000003162278), +         SCALE_SPLIT_ANGLE(0.00000003162278), +         SCALE_SPLIT_ANGLE(0.00000003162278), +         SCALE_SPLIT_ANGLE(0.00000003162278), +         SCALE_SPLIT_ANGLE(0.00000003162278)}, +    }, +    { +        {SCALE_SPLIT_ANGLE(1.96349537372589), +         SCALE_SPLIT_ANGLE(1.96349537372589), +         SCALE_SPLIT_ANGLE(1.96349537372589), +         SCALE_SPLIT_ANGLE(1.96349537372589), +         SCALE_SPLIT_ANGLE(1.96349537372589), +         SCALE_SPLIT_ANGLE(1.96349537372589), +         SCALE_SPLIT_ANGLE(1.96349537372589), +         SCALE_SPLIT_ANGLE(1.96349537372589)}, +        {SCALE_SPLIT_ANGLE(1.95824837684631), +         SCALE_SPLIT_ANGLE(1.95825088024139), +         SCALE_SPLIT_ANGLE(1.95825481414795), +         SCALE_SPLIT_ANGLE(1.95826447010040), +         SCALE_SPLIT_ANGLE(1.95827388763428), +         SCALE_SPLIT_ANGLE(1.95828890800476), +         SCALE_SPLIT_ANGLE(1.95831274986267), +         SCALE_SPLIT_ANGLE(1.95832908153534)}, +        {SCALE_SPLIT_ANGLE(1.95409297943115), +         SCALE_SPLIT_ANGLE(1.95410108566284), +         SCALE_SPLIT_ANGLE(1.95411336421967), +         SCALE_SPLIT_ANGLE(1.95414412021637), +         SCALE_SPLIT_ANGLE(1.95417404174805), +         SCALE_SPLIT_ANGLE(1.95422136783600), +         SCALE_SPLIT_ANGLE(1.95429730415344), +         SCALE_SPLIT_ANGLE(1.95434916019440)}, +        {SCALE_SPLIT_ANGLE(1.94654774665833), +         SCALE_SPLIT_ANGLE(1.94657325744629), +         SCALE_SPLIT_ANGLE(1.94661211967468), +         SCALE_SPLIT_ANGLE(1.94670987129211), +         SCALE_SPLIT_ANGLE(1.94680488109589), +         SCALE_SPLIT_ANGLE(1.94695508480072), +         SCALE_SPLIT_ANGLE(1.94719684123993), +         SCALE_SPLIT_ANGLE(1.94736230373383)}, +        {SCALE_SPLIT_ANGLE(1.93263375759125), +         SCALE_SPLIT_ANGLE(1.93271493911743), +         SCALE_SPLIT_ANGLE(1.93283843994141), +         SCALE_SPLIT_ANGLE(1.93314898014069), +         SCALE_SPLIT_ANGLE(1.93345153331757), +         SCALE_SPLIT_ANGLE(1.93393051624298), +         SCALE_SPLIT_ANGLE(1.93470382690430), +         SCALE_SPLIT_ANGLE(1.93523514270782)}, +        {SCALE_SPLIT_ANGLE(1.90630435943604), +         SCALE_SPLIT_ANGLE(1.90656292438507), +         SCALE_SPLIT_ANGLE(1.90695691108704), +         SCALE_SPLIT_ANGLE(1.90794765949249), +         SCALE_SPLIT_ANGLE(1.90891444683075), +         SCALE_SPLIT_ANGLE(1.91044902801514), +         SCALE_SPLIT_ANGLE(1.91294109821320), +         SCALE_SPLIT_ANGLE(1.91466653347015)}, +        {SCALE_SPLIT_ANGLE(1.87960743904114), +         SCALE_SPLIT_ANGLE(1.88012742996216), +         SCALE_SPLIT_ANGLE(1.88091933727264), +         SCALE_SPLIT_ANGLE(1.88291192054749), +         SCALE_SPLIT_ANGLE(1.88485777378082), +         SCALE_SPLIT_ANGLE(1.88795232772827), +         SCALE_SPLIT_ANGLE(1.89300394058228), +         SCALE_SPLIT_ANGLE(1.89652991294861)}, +        {SCALE_SPLIT_ANGLE(1.83877396583557), +         SCALE_SPLIT_ANGLE(1.83982229232788), +         SCALE_SPLIT_ANGLE(1.84141862392426), +         SCALE_SPLIT_ANGLE(1.84543347358704), +         SCALE_SPLIT_ANGLE(1.84935534000397), +         SCALE_SPLIT_ANGLE(1.85560429096222), +         SCALE_SPLIT_ANGLE(1.86587727069855), +         SCALE_SPLIT_ANGLE(1.87314081192017)}, +        {SCALE_SPLIT_ANGLE(1.77493417263031), +         SCALE_SPLIT_ANGLE(1.77705264091492), +         SCALE_SPLIT_ANGLE(1.78027474880219), +         SCALE_SPLIT_ANGLE(1.78836548328400), +         SCALE_SPLIT_ANGLE(1.79626095294952), +         SCALE_SPLIT_ANGLE(1.80886054039001), +         SCALE_SPLIT_ANGLE(1.82978034019470), +         SCALE_SPLIT_ANGLE(1.84489548206329)}, +        {SCALE_SPLIT_ANGLE(1.67321813106537), +         SCALE_SPLIT_ANGLE(1.67747652530670), +         SCALE_SPLIT_ANGLE(1.68394017219543), +         SCALE_SPLIT_ANGLE(1.70011746883392), +         SCALE_SPLIT_ANGLE(1.71586501598358), +         SCALE_SPLIT_ANGLE(1.74102878570557), +         SCALE_SPLIT_ANGLE(1.78345441818237), +         SCALE_SPLIT_ANGLE(1.81531298160553)}, +        {SCALE_SPLIT_ANGLE(1.51132118701935), +         SCALE_SPLIT_ANGLE(1.51959395408630), +         SCALE_SPLIT_ANGLE(1.53212559223175), +         SCALE_SPLIT_ANGLE(1.56339788436890), +         SCALE_SPLIT_ANGLE(1.59380054473877), +         SCALE_SPLIT_ANGLE(1.64260375499725), +         SCALE_SPLIT_ANGLE(1.72719120979309), +         SCALE_SPLIT_ANGLE(1.79549276828766)}, +        {SCALE_SPLIT_ANGLE(1.35904061794281), +         SCALE_SPLIT_ANGLE(1.37121617794037), +         SCALE_SPLIT_ANGLE(1.38967239856720), +         SCALE_SPLIT_ANGLE(1.43583393096924), +         SCALE_SPLIT_ANGLE(1.48093688488007), +         SCALE_SPLIT_ANGLE(1.55410325527191), +         SCALE_SPLIT_ANGLE(1.68521773815155), +         SCALE_SPLIT_ANGLE(1.80024886131287)}, +        {SCALE_SPLIT_ANGLE(1.17258906364441), +         SCALE_SPLIT_ANGLE(1.18893885612488), +         SCALE_SPLIT_ANGLE(1.21383893489838), +         SCALE_SPLIT_ANGLE(1.27678310871124), +         SCALE_SPLIT_ANGLE(1.33930420875549), +         SCALE_SPLIT_ANGLE(1.44322526454926), +         SCALE_SPLIT_ANGLE(1.64006817340851), +         SCALE_SPLIT_ANGLE(1.83627605438232)}, +        {SCALE_SPLIT_ANGLE(0.96933782100677), +         SCALE_SPLIT_ANGLE(0.98854482173920), +         SCALE_SPLIT_ANGLE(1.01807177066803), +         SCALE_SPLIT_ANGLE(1.09429967403412), +         SCALE_SPLIT_ANGLE(1.17245352268219), +         SCALE_SPLIT_ANGLE(1.30826878547668), +         SCALE_SPLIT_ANGLE(1.58911180496216), +         SCALE_SPLIT_ANGLE(1.92719435691834)}, +        {SCALE_SPLIT_ANGLE(0.77729862928391), +         SCALE_SPLIT_ANGLE(0.79675698280334), +         SCALE_SPLIT_ANGLE(0.82701611518860), +         SCALE_SPLIT_ANGLE(0.90724968910217), +         SCALE_SPLIT_ANGLE(0.99302649497986), +         SCALE_SPLIT_ANGLE(1.15163993835449), +         SCALE_SPLIT_ANGLE(1.52265202999115), +         SCALE_SPLIT_ANGLE(2.09869623184204)}, +        {SCALE_SPLIT_ANGLE(0.61765128374100), +         SCALE_SPLIT_ANGLE(0.63503885269165), +         SCALE_SPLIT_ANGLE(0.66235077381134), +         SCALE_SPLIT_ANGLE(0.73653638362885), +         SCALE_SPLIT_ANGLE(0.81904613971710), +         SCALE_SPLIT_ANGLE(0.98174768686295), +         SCALE_SPLIT_ANGLE(1.42110538482666), +         SCALE_SPLIT_ANGLE(2.28386068344116)}, +        {SCALE_SPLIT_ANGLE(0.49486333131790), +         SCALE_SPLIT_ANGLE(0.50909578800201), +         SCALE_SPLIT_ANGLE(0.53160983324051), +         SCALE_SPLIT_ANGLE(0.59379214048386), +         SCALE_SPLIT_ANGLE(0.66487491130829), +         SCALE_SPLIT_ANGLE(0.81185549497604), +         SCALE_SPLIT_ANGLE(1.26233386993408), +         SCALE_SPLIT_ANGLE(2.16925764083862)}, +        {SCALE_SPLIT_ANGLE(0.40230560302734), +         SCALE_SPLIT_ANGLE(0.41332274675369), +         SCALE_SPLIT_ANGLE(0.43082228302956), +         SCALE_SPLIT_ANGLE(0.47957953810692), +         SCALE_SPLIT_ANGLE(0.53603589534760), +         SCALE_SPLIT_ANGLE(0.65522658824921), +         SCALE_SPLIT_ANGLE(1.04503858089447), +         SCALE_SPLIT_ANGLE(1.87041807174683)}, +        {SCALE_SPLIT_ANGLE(0.33104607462883), +         SCALE_SPLIT_ANGLE(0.33927726745605), +         SCALE_SPLIT_ANGLE(0.35237133502960), +         SCALE_SPLIT_ANGLE(0.38892474770546), +         SCALE_SPLIT_ANGLE(0.43126159906387), +         SCALE_SPLIT_ANGLE(0.52027010917664), +         SCALE_SPLIT_ANGLE(0.80654186010361), +         SCALE_SPLIT_ANGLE(1.41960310935974)}, +        {SCALE_SPLIT_ANGLE(0.27415537834167), +         SCALE_SPLIT_ANGLE(0.28015670180321), +         SCALE_SPLIT_ANGLE(0.28969678282738), +         SCALE_SPLIT_ANGLE(0.31623730063438), +         SCALE_SPLIT_ANGLE(0.34670370817184), +         SCALE_SPLIT_ANGLE(0.40939208865166), +         SCALE_SPLIT_ANGLE(0.59604310989380), +         SCALE_SPLIT_ANGLE(0.94309806823730)}, +        {SCALE_SPLIT_ANGLE(0.22730343043804), +         SCALE_SPLIT_ANGLE(0.23159568011761), +         SCALE_SPLIT_ANGLE(0.23840220272541), +         SCALE_SPLIT_ANGLE(0.25720024108887), +         SCALE_SPLIT_ANGLE(0.27846288681030), +         SCALE_SPLIT_ANGLE(0.32089167833328), +         SCALE_SPLIT_ANGLE(0.43515858054161), +         SCALE_SPLIT_ANGLE(0.60621982812881)}, +        {SCALE_SPLIT_ANGLE(0.17074465751648), +         SCALE_SPLIT_ANGLE(0.17326098680496), +         SCALE_SPLIT_ANGLE(0.17722852528095), +         SCALE_SPLIT_ANGLE(0.18802370131016), +         SCALE_SPLIT_ANGLE(0.19990929961205), +         SCALE_SPLIT_ANGLE(0.22246663272381), +         SCALE_SPLIT_ANGLE(0.27514943480492), +         SCALE_SPLIT_ANGLE(0.33505329489708)}, +        {SCALE_SPLIT_ANGLE(0.12695817649364), +         SCALE_SPLIT_ANGLE(0.12838459014893), +         SCALE_SPLIT_ANGLE(0.13061878085136), +         SCALE_SPLIT_ANGLE(0.13660037517548), +         SCALE_SPLIT_ANGLE(0.14301040768623), +         SCALE_SPLIT_ANGLE(0.15463486313820), +         SCALE_SPLIT_ANGLE(0.17893929779530), +         SCALE_SPLIT_ANGLE(0.20203559100628)}, +        {SCALE_SPLIT_ANGLE(0.09338590502739), +         SCALE_SPLIT_ANGLE(0.09417138993740), +         SCALE_SPLIT_ANGLE(0.09539390355349), +         SCALE_SPLIT_ANGLE(0.09861853718758), +         SCALE_SPLIT_ANGLE(0.10199318081141), +         SCALE_SPLIT_ANGLE(0.10789106786251), +         SCALE_SPLIT_ANGLE(0.11927830427885), +         SCALE_SPLIT_ANGLE(0.12894381582737)}, +        {SCALE_SPLIT_ANGLE(0.06804535537958), +         SCALE_SPLIT_ANGLE(0.06846775114536), +         SCALE_SPLIT_ANGLE(0.06912153959274), +         SCALE_SPLIT_ANGLE(0.07082461565733), +         SCALE_SPLIT_ANGLE(0.07257289439440), +         SCALE_SPLIT_ANGLE(0.07554303854704), +         SCALE_SPLIT_ANGLE(0.08096561580896), +         SCALE_SPLIT_ANGLE(0.08524779230356)}, +        {SCALE_SPLIT_ANGLE(0.04920704290271), +         SCALE_SPLIT_ANGLE(0.04942999407649), +         SCALE_SPLIT_ANGLE(0.04977354034781), +         SCALE_SPLIT_ANGLE(0.05065960064530), +         SCALE_SPLIT_ANGLE(0.05155571550131), +         SCALE_SPLIT_ANGLE(0.05304637551308), +         SCALE_SPLIT_ANGLE(0.05566369369626), +         SCALE_SPLIT_ANGLE(0.05763531476259)}, +        {SCALE_SPLIT_ANGLE(0.02832321822643), +         SCALE_SPLIT_ANGLE(0.02839783765376), +         SCALE_SPLIT_ANGLE(0.02851220779121), +         SCALE_SPLIT_ANGLE(0.02880378998816), +         SCALE_SPLIT_ANGLE(0.02909369394183), +         SCALE_SPLIT_ANGLE(0.02956490404904), +         SCALE_SPLIT_ANGLE(0.03035926818848), +         SCALE_SPLIT_ANGLE(0.03093044832349)}, +        {SCALE_SPLIT_ANGLE(0.01614263281226), +         SCALE_SPLIT_ANGLE(0.01616701297462), +         SCALE_SPLIT_ANGLE(0.01620426215231), +         SCALE_SPLIT_ANGLE(0.01629856042564), +         SCALE_SPLIT_ANGLE(0.01639137230814), +         SCALE_SPLIT_ANGLE(0.01654022186995), +         SCALE_SPLIT_ANGLE(0.01678557507694), +         SCALE_SPLIT_ANGLE(0.01695770025253)}, +        {SCALE_SPLIT_ANGLE(0.00914741214365), +         SCALE_SPLIT_ANGLE(0.00915526598692), +         SCALE_SPLIT_ANGLE(0.00916724558920), +         SCALE_SPLIT_ANGLE(0.00919744372368), +         SCALE_SPLIT_ANGLE(0.00922699086368), +         SCALE_SPLIT_ANGLE(0.00927402079105), +         SCALE_SPLIT_ANGLE(0.00935057550669), +         SCALE_SPLIT_ANGLE(0.00940357148647)}, +        {SCALE_SPLIT_ANGLE(0.00516631966457), +         SCALE_SPLIT_ANGLE(0.00516883004457), +         SCALE_SPLIT_ANGLE(0.00517265405506), +         SCALE_SPLIT_ANGLE(0.00518227089196), +         SCALE_SPLIT_ANGLE(0.00519165024161), +         SCALE_SPLIT_ANGLE(0.00520651414990), +         SCALE_SPLIT_ANGLE(0.00523054087535), +         SCALE_SPLIT_ANGLE(0.00524705136195)}, +        {SCALE_SPLIT_ANGLE(0.00000002921564), +         SCALE_SPLIT_ANGLE(0.00000002921564), +         SCALE_SPLIT_ANGLE(0.00000002921564), +         SCALE_SPLIT_ANGLE(0.00000002921564), +         SCALE_SPLIT_ANGLE(0.00000002921564), +         SCALE_SPLIT_ANGLE(0.00000002921564), +         SCALE_SPLIT_ANGLE(0.00000002921564), +         SCALE_SPLIT_ANGLE(0.00000002921564)}, +    }, +    { +        {SCALE_SPLIT_ANGLE(2.35619449615479), +         SCALE_SPLIT_ANGLE(2.35619449615479), +         SCALE_SPLIT_ANGLE(2.35619449615479), +         SCALE_SPLIT_ANGLE(2.35619449615479), +         SCALE_SPLIT_ANGLE(2.35619449615479), +         SCALE_SPLIT_ANGLE(2.35619449615479), +         SCALE_SPLIT_ANGLE(2.35619449615479), +         SCALE_SPLIT_ANGLE(2.35619449615479)}, +        {SCALE_SPLIT_ANGLE(2.35216379165649), +         SCALE_SPLIT_ANGLE(2.35216617584229), +         SCALE_SPLIT_ANGLE(2.35216999053955), +         SCALE_SPLIT_ANGLE(2.35217905044556), +         SCALE_SPLIT_ANGLE(2.35218811035156), +         SCALE_SPLIT_ANGLE(2.35220217704773), +         SCALE_SPLIT_ANGLE(2.35222482681274), +         SCALE_SPLIT_ANGLE(2.35224032402039)}, +        {SCALE_SPLIT_ANGLE(2.34895062446594), +         SCALE_SPLIT_ANGLE(2.34895825386047), +         SCALE_SPLIT_ANGLE(2.34897017478943), +         SCALE_SPLIT_ANGLE(2.34899950027466), +         SCALE_SPLIT_ANGLE(2.34902811050415), +         SCALE_SPLIT_ANGLE(2.34907317161560), +         SCALE_SPLIT_ANGLE(2.34914517402649), +         SCALE_SPLIT_ANGLE(2.34919428825378)}, +        {SCALE_SPLIT_ANGLE(2.34306812286377), +         SCALE_SPLIT_ANGLE(2.34309291839600), +         SCALE_SPLIT_ANGLE(2.34313082695007), +         SCALE_SPLIT_ANGLE(2.34322524070740), +         SCALE_SPLIT_ANGLE(2.34331679344177), +         SCALE_SPLIT_ANGLE(2.34346079826355), +         SCALE_SPLIT_ANGLE(2.34369087219238), +         SCALE_SPLIT_ANGLE(2.34384727478027)}, +        {SCALE_SPLIT_ANGLE(2.33205723762512), +         SCALE_SPLIT_ANGLE(2.33213782310486), +         SCALE_SPLIT_ANGLE(2.33226013183594), +         SCALE_SPLIT_ANGLE(2.33256578445435), +         SCALE_SPLIT_ANGLE(2.33286166191101), +         SCALE_SPLIT_ANGLE(2.33332633972168), +         SCALE_SPLIT_ANGLE(2.33406686782837), +         SCALE_SPLIT_ANGLE(2.33456921577454)}, +        {SCALE_SPLIT_ANGLE(2.31062912940979), +         SCALE_SPLIT_ANGLE(2.31089663505554), +         SCALE_SPLIT_ANGLE(2.31130218505859), +         SCALE_SPLIT_ANGLE(2.31231284141541), +         SCALE_SPLIT_ANGLE(2.31328654289246), +         SCALE_SPLIT_ANGLE(2.31480789184570), +         SCALE_SPLIT_ANGLE(2.31722092628479), +         SCALE_SPLIT_ANGLE(2.31885290145874)}, +        {SCALE_SPLIT_ANGLE(2.28808355331421), +         SCALE_SPLIT_ANGLE(2.28864479064941), +         SCALE_SPLIT_ANGLE(2.28949403762817), +         SCALE_SPLIT_ANGLE(2.29160070419312), +         SCALE_SPLIT_ANGLE(2.29361891746521), +         SCALE_SPLIT_ANGLE(2.29675459861755), +         SCALE_SPLIT_ANGLE(2.30169844627380), +         SCALE_SPLIT_ANGLE(2.30503511428833)}, +        {SCALE_SPLIT_ANGLE(2.25191521644592), +         SCALE_SPLIT_ANGLE(2.25312566757202), +         SCALE_SPLIT_ANGLE(2.25494909286499), +         SCALE_SPLIT_ANGLE(2.25943517684937), +         SCALE_SPLIT_ANGLE(2.26368880271912), +         SCALE_SPLIT_ANGLE(2.27023100852966), +         SCALE_SPLIT_ANGLE(2.28044486045837), +         SCALE_SPLIT_ANGLE(2.28732299804688)}, +        {SCALE_SPLIT_ANGLE(2.19093585014343), +         SCALE_SPLIT_ANGLE(2.19366121292114), +         SCALE_SPLIT_ANGLE(2.19773292541504), +         SCALE_SPLIT_ANGLE(2.20759749412537), +         SCALE_SPLIT_ANGLE(2.21677780151367), +         SCALE_SPLIT_ANGLE(2.23064494132996), +         SCALE_SPLIT_ANGLE(2.25193929672241), +         SCALE_SPLIT_ANGLE(2.26625943183899)}, +        {SCALE_SPLIT_ANGLE(2.08102917671204), +         SCALE_SPLIT_ANGLE(2.08757281303406), +         SCALE_SPLIT_ANGLE(2.09720706939697), +         SCALE_SPLIT_ANGLE(2.11991167068481), +         SCALE_SPLIT_ANGLE(2.14035654067993), +         SCALE_SPLIT_ANGLE(2.17029213905334), +         SCALE_SPLIT_ANGLE(2.21503138542175), +         SCALE_SPLIT_ANGLE(2.24518108367920)}, +        {SCALE_SPLIT_ANGLE(1.86738610267639), +         SCALE_SPLIT_ANGLE(1.88426077365875), +         SCALE_SPLIT_ANGLE(1.90853273868561), +         SCALE_SPLIT_ANGLE(1.96333324909210), +         SCALE_SPLIT_ANGLE(2.01024460792542), +         SCALE_SPLIT_ANGLE(2.07577633857727), +         SCALE_SPLIT_ANGLE(2.16986608505249), +         SCALE_SPLIT_ANGLE(2.23406052589417)}, +        {SCALE_SPLIT_ANGLE(1.61812174320221), +         SCALE_SPLIT_ANGLE(1.64943754673004), +         SCALE_SPLIT_ANGLE(1.69389235973358), +         SCALE_SPLIT_ANGLE(1.79176020622253), +         SCALE_SPLIT_ANGLE(1.87292492389679), +         SCALE_SPLIT_ANGLE(1.98277986049652), +         SCALE_SPLIT_ANGLE(2.13605809211731), +         SCALE_SPLIT_ANGLE(2.24282979965210)}, +        {SCALE_SPLIT_ANGLE(1.26556181907654), +         SCALE_SPLIT_ANGLE(1.31512010097504), +         SCALE_SPLIT_ANGLE(1.38608694076538), +         SCALE_SPLIT_ANGLE(1.54419934749603), +         SCALE_SPLIT_ANGLE(1.67621040344238), +         SCALE_SPLIT_ANGLE(1.85417342185974), +         SCALE_SPLIT_ANGLE(2.09956336021423), +         SCALE_SPLIT_ANGLE(2.27729439735413)}, +        {SCALE_SPLIT_ANGLE(0.88984864950180), +         SCALE_SPLIT_ANGLE(0.94673132896423), +         SCALE_SPLIT_ANGLE(1.03102219104767), +         SCALE_SPLIT_ANGLE(1.23219704627991), +         SCALE_SPLIT_ANGLE(1.41468584537506), +         SCALE_SPLIT_ANGLE(1.67807435989380), +         SCALE_SPLIT_ANGLE(2.05749273300171), +         SCALE_SPLIT_ANGLE(2.35138511657715)}, +        {SCALE_SPLIT_ANGLE(0.60630625486374), +         SCALE_SPLIT_ANGLE(0.65551131963730), +         SCALE_SPLIT_ANGLE(0.73032128810883), +         SCALE_SPLIT_ANGLE(0.92225730419159), +         SCALE_SPLIT_ANGLE(1.11866605281830), +         SCALE_SPLIT_ANGLE(1.44806647300720), +         SCALE_SPLIT_ANGLE(1.99872636795044), +         SCALE_SPLIT_ANGLE(2.47302055358887)}, +        {SCALE_SPLIT_ANGLE(0.43393731117249), +         SCALE_SPLIT_ANGLE(0.47099208831787), +         SCALE_SPLIT_ANGLE(0.52780759334564), +         SCALE_SPLIT_ANGLE(0.67895972728729), +         SCALE_SPLIT_ANGLE(0.84712409973145), +         SCALE_SPLIT_ANGLE(1.17809724807739), +         SCALE_SPLIT_ANGLE(1.89703977108002), +         SCALE_SPLIT_ANGLE(2.59155654907227)}, +        {SCALE_SPLIT_ANGLE(0.33522719144821), +         SCALE_SPLIT_ANGLE(0.36133098602295), +         SCALE_SPLIT_ANGLE(0.40159517526627), +         SCALE_SPLIT_ANGLE(0.51039946079254), +         SCALE_SPLIT_ANGLE(0.63590413331985), +         SCALE_SPLIT_ANGLE(0.90812796354294), +         SCALE_SPLIT_ANGLE(1.70793557167053), +         SCALE_SPLIT_ANGLE(2.52852439880371)}, +        {SCALE_SPLIT_ANGLE(0.27478924393654), +         SCALE_SPLIT_ANGLE(0.29251149296761), +         SCALE_SPLIT_ANGLE(0.32007756829262), +         SCALE_SPLIT_ANGLE(0.39531299471855), +         SCALE_SPLIT_ANGLE(0.48291319608688), +         SCALE_SPLIT_ANGLE(0.67812001705170), +         SCALE_SPLIT_ANGLE(1.39007341861725), +         SCALE_SPLIT_ANGLE(2.34402561187744)}, +        {SCALE_SPLIT_ANGLE(0.23185738921165), +         SCALE_SPLIT_ANGLE(0.24370795488358), +         SCALE_SPLIT_ANGLE(0.26227980852127), +         SCALE_SPLIT_ANGLE(0.31327381730080), +         SCALE_SPLIT_ANGLE(0.37241828441620), +         SCALE_SPLIT_ANGLE(0.50202107429504), +         SCALE_SPLIT_ANGLE(0.99085599184036), +         SCALE_SPLIT_ANGLE(1.96553468704224)}, +        {SCALE_SPLIT_ANGLE(0.19698308408260), +         SCALE_SPLIT_ANGLE(0.20488271117210), +         SCALE_SPLIT_ANGLE(0.21731524169445), +         SCALE_SPLIT_ANGLE(0.25148212909698), +         SCALE_SPLIT_ANGLE(0.29065516591072), +         SCALE_SPLIT_ANGLE(0.37341466546059), +         SCALE_SPLIT_ANGLE(0.65295964479446), +         SCALE_SPLIT_ANGLE(1.28865826129913)}, +        {SCALE_SPLIT_ANGLE(0.16667704284191), +         SCALE_SPLIT_ANGLE(0.17194211483002), +         SCALE_SPLIT_ANGLE(0.18023577332497), +         SCALE_SPLIT_ANGLE(0.20293866097927), +         SCALE_SPLIT_ANGLE(0.22855134308338), +         SCALE_SPLIT_ANGLE(0.28041818737984), +         SCALE_SPLIT_ANGLE(0.43142420053482), +         SCALE_SPLIT_ANGLE(0.70030152797699)}, +        {SCALE_SPLIT_ANGLE(0.12773877382278), +         SCALE_SPLIT_ANGLE(0.13059370219707), +         SCALE_SPLIT_ANGLE(0.13507819175720), +         SCALE_SPLIT_ANGLE(0.14721076190472), +         SCALE_SPLIT_ANGLE(0.16052412986755), +         SCALE_SPLIT_ANGLE(0.18590225279331), +         SCALE_SPLIT_ANGLE(0.24703904986382), +         SCALE_SPLIT_ANGLE(0.32153329253197)}, +        {SCALE_SPLIT_ANGLE(0.09603263437748), +         SCALE_SPLIT_ANGLE(0.09756572544575), +         SCALE_SPLIT_ANGLE(0.09996145218611), +         SCALE_SPLIT_ANGLE(0.10635073482990), +         SCALE_SPLIT_ANGLE(0.11317526549101), +         SCALE_SPLIT_ANGLE(0.12554961442947), +         SCALE_SPLIT_ANGLE(0.15168419480324), +         SCALE_SPLIT_ANGLE(0.17713627219200)}, +        {SCALE_SPLIT_ANGLE(0.07104731351137), +         SCALE_SPLIT_ANGLE(0.07186015695333), +         SCALE_SPLIT_ANGLE(0.07312334328890), +         SCALE_SPLIT_ANGLE(0.07644616067410), +         SCALE_SPLIT_ANGLE(0.07991369813681), +         SCALE_SPLIT_ANGLE(0.08596338331699), +         SCALE_SPLIT_ANGLE(0.09766443818808), +         SCALE_SPLIT_ANGLE(0.10767273604870)}, +        {SCALE_SPLIT_ANGLE(0.05192205682397), +         SCALE_SPLIT_ANGLE(0.05234766751528), +         SCALE_SPLIT_ANGLE(0.05300576984882), +         SCALE_SPLIT_ANGLE(0.05471667647362), +         SCALE_SPLIT_ANGLE(0.05646898597479), +         SCALE_SPLIT_ANGLE(0.05943991243839), +         SCALE_SPLIT_ANGLE(0.06485754251480), +         SCALE_SPLIT_ANGLE(0.06914159655571)}, +        {SCALE_SPLIT_ANGLE(0.03760399296880), +         SCALE_SPLIT_ANGLE(0.03782445564866), +         SCALE_SPLIT_ANGLE(0.03816393017769), +         SCALE_SPLIT_ANGLE(0.03903824463487), +         SCALE_SPLIT_ANGLE(0.03992090374231), +         SCALE_SPLIT_ANGLE(0.04138650372624), +         SCALE_SPLIT_ANGLE(0.04395476728678), +         SCALE_SPLIT_ANGLE(0.04588782787323)}, +        {SCALE_SPLIT_ANGLE(0.02166714705527), +         SCALE_SPLIT_ANGLE(0.02173948101699), +         SCALE_SPLIT_ANGLE(0.02185030654073), +         SCALE_SPLIT_ANGLE(0.02213260531425), +         SCALE_SPLIT_ANGLE(0.02241298183799), +         SCALE_SPLIT_ANGLE(0.02286812849343), +         SCALE_SPLIT_ANGLE(0.02363408915699), +         SCALE_SPLIT_ANGLE(0.02418405190110)}, +        {SCALE_SPLIT_ANGLE(0.01235313806683), +         SCALE_SPLIT_ANGLE(0.01237650960684), +         SCALE_SPLIT_ANGLE(0.01241220813245), +         SCALE_SPLIT_ANGLE(0.01250253710896), +         SCALE_SPLIT_ANGLE(0.01259138900787), +         SCALE_SPLIT_ANGLE(0.01273377332836), +         SCALE_SPLIT_ANGLE(0.01296819839627), +         SCALE_SPLIT_ANGLE(0.01313247997314)}, +        {SCALE_SPLIT_ANGLE(0.00700078532100), +         SCALE_SPLIT_ANGLE(0.00700826756656), +         SCALE_SPLIT_ANGLE(0.00701967673376), +         SCALE_SPLIT_ANGLE(0.00704843224958), +         SCALE_SPLIT_ANGLE(0.00707655772567), +         SCALE_SPLIT_ANGLE(0.00712130358443), +         SCALE_SPLIT_ANGLE(0.00719408970326), +         SCALE_SPLIT_ANGLE(0.00724443979561)}, +        {SCALE_SPLIT_ANGLE(0.00395406875759), +         SCALE_SPLIT_ANGLE(0.00395645201206), +         SCALE_SPLIT_ANGLE(0.00396008137614), +         SCALE_SPLIT_ANGLE(0.00396920880303), +         SCALE_SPLIT_ANGLE(0.00397810759023), +         SCALE_SPLIT_ANGLE(0.00399220688269), +         SCALE_SPLIT_ANGLE(0.00401498842984), +         SCALE_SPLIT_ANGLE(0.00403063697740)}, +        {SCALE_SPLIT_ANGLE(0.00000002236068), +         SCALE_SPLIT_ANGLE(0.00000002236068), +         SCALE_SPLIT_ANGLE(0.00000002236068), +         SCALE_SPLIT_ANGLE(0.00000002236068), +         SCALE_SPLIT_ANGLE(0.00000002236068), +         SCALE_SPLIT_ANGLE(0.00000002236068), +         SCALE_SPLIT_ANGLE(0.00000002236068), +         SCALE_SPLIT_ANGLE(0.00000002236068)}, +    }, +    { +        {SCALE_SPLIT_ANGLE(2.74889349937439), +         SCALE_SPLIT_ANGLE(2.74889349937439), +         SCALE_SPLIT_ANGLE(2.74889349937439), +         SCALE_SPLIT_ANGLE(2.74889349937439), +         SCALE_SPLIT_ANGLE(2.74889349937439), +         SCALE_SPLIT_ANGLE(2.74889349937439), +         SCALE_SPLIT_ANGLE(2.74889349937439), +         SCALE_SPLIT_ANGLE(2.74889349937439)}, +        {SCALE_SPLIT_ANGLE(2.74670672416687), +         SCALE_SPLIT_ANGLE(2.74670815467834), +         SCALE_SPLIT_ANGLE(2.74671053886414), +         SCALE_SPLIT_ANGLE(2.74671602249146), +         SCALE_SPLIT_ANGLE(2.74672174453735), +         SCALE_SPLIT_ANGLE(2.74673032760620), +         SCALE_SPLIT_ANGLE(2.74674415588379), +         SCALE_SPLIT_ANGLE(2.74675345420837)}, +        {SCALE_SPLIT_ANGLE(2.74495577812195), +         SCALE_SPLIT_ANGLE(2.74496054649353), +         SCALE_SPLIT_ANGLE(2.74496769905090), +         SCALE_SPLIT_ANGLE(2.74498581886292), +         SCALE_SPLIT_ANGLE(2.74500346183777), +         SCALE_SPLIT_ANGLE(2.74503111839294), +         SCALE_SPLIT_ANGLE(2.74507498741150), +         SCALE_SPLIT_ANGLE(2.74510502815247)}, +        {SCALE_SPLIT_ANGLE(2.74173212051392), +         SCALE_SPLIT_ANGLE(2.74174761772156), +         SCALE_SPLIT_ANGLE(2.74177098274231), +         SCALE_SPLIT_ANGLE(2.74182939529419), +         SCALE_SPLIT_ANGLE(2.74188613891602), +         SCALE_SPLIT_ANGLE(2.74197483062744), +         SCALE_SPLIT_ANGLE(2.74211573600769), +         SCALE_SPLIT_ANGLE(2.74221110343933)}, +        {SCALE_SPLIT_ANGLE(2.73563575744629), +         SCALE_SPLIT_ANGLE(2.73568630218506), +         SCALE_SPLIT_ANGLE(2.73576331138611), +         SCALE_SPLIT_ANGLE(2.73595523834229), +         SCALE_SPLIT_ANGLE(2.73614001274109), +         SCALE_SPLIT_ANGLE(2.73642849922180), +         SCALE_SPLIT_ANGLE(2.73688435554504), +         SCALE_SPLIT_ANGLE(2.73719072341919)}, +        {SCALE_SPLIT_ANGLE(2.72353148460388), +         SCALE_SPLIT_ANGLE(2.72370529174805), +         SCALE_SPLIT_ANGLE(2.72396802902222), +         SCALE_SPLIT_ANGLE(2.72461819648743), +         SCALE_SPLIT_ANGLE(2.72523880004883), +         SCALE_SPLIT_ANGLE(2.72619819641113), +         SCALE_SPLIT_ANGLE(2.72769498825073), +         SCALE_SPLIT_ANGLE(2.72869181632996)}, +        {SCALE_SPLIT_ANGLE(2.71044087409973), +         SCALE_SPLIT_ANGLE(2.71081781387329), +         SCALE_SPLIT_ANGLE(2.71138477325439), +         SCALE_SPLIT_ANGLE(2.71277689933777), +         SCALE_SPLIT_ANGLE(2.71409153938293), +         SCALE_SPLIT_ANGLE(2.71610021591187), +         SCALE_SPLIT_ANGLE(2.71919155120850), +         SCALE_SPLIT_ANGLE(2.72123122215271)}, +        {SCALE_SPLIT_ANGLE(2.68862843513489), +         SCALE_SPLIT_ANGLE(2.68948626518250), +         SCALE_SPLIT_ANGLE(2.69076681137085), +         SCALE_SPLIT_ANGLE(2.69386243820190), +         SCALE_SPLIT_ANGLE(2.69673037528992), +         SCALE_SPLIT_ANGLE(2.70102667808533), +         SCALE_SPLIT_ANGLE(2.70749115943909), +         SCALE_SPLIT_ANGLE(2.71170210838318)}, +        {SCALE_SPLIT_ANGLE(2.64932370185852), +         SCALE_SPLIT_ANGLE(2.65145039558411), +         SCALE_SPLIT_ANGLE(2.65457701683044), +         SCALE_SPLIT_ANGLE(2.66191530227661), +         SCALE_SPLIT_ANGLE(2.66847491264343), +         SCALE_SPLIT_ANGLE(2.67795729637146), +         SCALE_SPLIT_ANGLE(2.69169545173645), +         SCALE_SPLIT_ANGLE(2.70048093795776)}, +        {SCALE_SPLIT_ANGLE(2.56864428520203), +         SCALE_SPLIT_ANGLE(2.57483482360840), +         SCALE_SPLIT_ANGLE(2.58364057540894), +         SCALE_SPLIT_ANGLE(2.60311055183411), +         SCALE_SPLIT_ANGLE(2.61933612823486), +         SCALE_SPLIT_ANGLE(2.64129805564880), +         SCALE_SPLIT_ANGLE(2.67107844352722), +         SCALE_SPLIT_ANGLE(2.68960857391357)}, +        {SCALE_SPLIT_ANGLE(2.35773015022278), +         SCALE_SPLIT_ANGLE(2.38251185417175), +         SCALE_SPLIT_ANGLE(2.41520094871521), +         SCALE_SPLIT_ANGLE(2.47876882553101), +         SCALE_SPLIT_ANGLE(2.52468156814575), +         SCALE_SPLIT_ANGLE(2.57956743240356), +         SCALE_SPLIT_ANGLE(2.64563941955566), +         SCALE_SPLIT_ANGLE(2.68501615524292)}, +        {SCALE_SPLIT_ANGLE(1.95455360412598), +         SCALE_SPLIT_ANGLE(2.03550028800964), +         SCALE_SPLIT_ANGLE(2.13431143760681), +         SCALE_SPLIT_ANGLE(2.30167627334595), +         SCALE_SPLIT_ANGLE(2.40472936630249), +         SCALE_SPLIT_ANGLE(2.51241874694824), +         SCALE_SPLIT_ANGLE(2.62649774551392), +         SCALE_SPLIT_ANGLE(2.69151234626770)}, +        {SCALE_SPLIT_ANGLE(1.08639848232269), +         SCALE_SPLIT_ANGLE(1.25607907772064), +         SCALE_SPLIT_ANGLE(1.49360668659210), +         SCALE_SPLIT_ANGLE(1.93062829971313), +         SCALE_SPLIT_ANGLE(2.18087863922119), +         SCALE_SPLIT_ANGLE(2.40583086013794), +         SCALE_SPLIT_ANGLE(2.60574340820313), +         SCALE_SPLIT_ANGLE(2.71224212646484)}, +        {SCALE_SPLIT_ANGLE(0.46298864483833), +         SCALE_SPLIT_ANGLE(0.57069420814514), +         SCALE_SPLIT_ANGLE(0.74941867589951), +         SCALE_SPLIT_ANGLE(1.27059137821198), +         SCALE_SPLIT_ANGLE(1.74987781047821), +         SCALE_SPLIT_ANGLE(2.22410750389099), +         SCALE_SPLIT_ANGLE(2.58140015602112), +         SCALE_SPLIT_ANGLE(2.75301027297974)}, +        {SCALE_SPLIT_ANGLE(0.23063218593597), +         SCALE_SPLIT_ANGLE(0.29689303040504), +         SCALE_SPLIT_ANGLE(0.39820966124535), +         SCALE_SPLIT_ANGLE(0.70773023366928), +         SCALE_SPLIT_ANGLE(1.13546586036682), +         SCALE_SPLIT_ANGLE(1.89722001552582), +         SCALE_SPLIT_ANGLE(2.54544758796692), +         SCALE_SPLIT_ANGLE(2.81490159034729)}, +        {SCALE_SPLIT_ANGLE(0.14590546488762), +         SCALE_SPLIT_ANGLE(0.19153353571892), +         SCALE_SPLIT_ANGLE(0.25519019365311), +         SCALE_SPLIT_ANGLE(0.43163710832596), +         SCALE_SPLIT_ANGLE(0.67776858806610), +         SCALE_SPLIT_ANGLE(1.37444674968719), +         SCALE_SPLIT_ANGLE(2.47591257095337), +         SCALE_SPLIT_ANGLE(2.87223863601685)}, +        {SCALE_SPLIT_ANGLE(0.12191537022591), +         SCALE_SPLIT_ANGLE(0.15053890645504), +         SCALE_SPLIT_ANGLE(0.19072309136391), +         SCALE_SPLIT_ANGLE(0.29725375771523), +         SCALE_SPLIT_ANGLE(0.43550044298172), +         SCALE_SPLIT_ANGLE(0.85167354345322), +         SCALE_SPLIT_ANGLE(2.31663155555725), +         SCALE_SPLIT_ANGLE(2.84442567825317)}, +        {SCALE_SPLIT_ANGLE(0.11467454582453), +         SCALE_SPLIT_ANGLE(0.13146138191223), +         SCALE_SPLIT_ANGLE(0.15621000528336), +         SCALE_SPLIT_ANGLE(0.22212918102741), +         SCALE_SPLIT_ANGLE(0.30330246686935), +         SCALE_SPLIT_ANGLE(0.52478593587875), +         SCALE_SPLIT_ANGLE(1.91173267364502), +         SCALE_SPLIT_ANGLE(2.75908088684082)}, +        {SCALE_SPLIT_ANGLE(0.10720870643854), +         SCALE_SPLIT_ANGLE(0.11720535159111), +         SCALE_SPLIT_ANGLE(0.13246683776379), +         SCALE_SPLIT_ANGLE(0.17369449138641), +         SCALE_SPLIT_ANGLE(0.22279064357281), +         SCALE_SPLIT_ANGLE(0.34306266903877), +         SCALE_SPLIT_ANGLE(1.11311781406403), +         SCALE_SPLIT_ANGLE(2.55312228202820)}, +        {SCALE_SPLIT_ANGLE(0.09705757349730), +         SCALE_SPLIT_ANGLE(0.10320189595222), +         SCALE_SPLIT_ANGLE(0.11274837702513), +         SCALE_SPLIT_ANGLE(0.13873106241226), +         SCALE_SPLIT_ANGLE(0.16888953745365), +         SCALE_SPLIT_ANGLE(0.23647473752499), +         SCALE_SPLIT_ANGLE(0.53898406028748), +         SCALE_SPLIT_ANGLE(1.80699026584625)}, +        {SCALE_SPLIT_ANGLE(0.08528346568346), +         SCALE_SPLIT_ANGLE(0.08915080130100), +         SCALE_SPLIT_ANGLE(0.09520188719034), +         SCALE_SPLIT_ANGLE(0.11166745424271), +         SCALE_SPLIT_ANGLE(0.13034184277058), +         SCALE_SPLIT_ANGLE(0.16932605206966), +         SCALE_SPLIT_ANGLE(0.29887470602989), +         SCALE_SPLIT_ANGLE(0.63077676296234)}, +        {SCALE_SPLIT_ANGLE(0.06733843684196), +         SCALE_SPLIT_ANGLE(0.06931617110968), +         SCALE_SPLIT_ANGLE(0.07241340726614), +         SCALE_SPLIT_ANGLE(0.08076417446136), +         SCALE_SPLIT_ANGLE(0.08993341028690), +         SCALE_SPLIT_ANGLE(0.10759533941746), +         SCALE_SPLIT_ANGLE(0.15204638242722), +         SCALE_SPLIT_ANGLE(0.21143139898777)}, +        {SCALE_SPLIT_ANGLE(0.05132640898228), +         SCALE_SPLIT_ANGLE(0.05234802886844), +         SCALE_SPLIT_ANGLE(0.05394187942147), +         SCALE_SPLIT_ANGLE(0.05818277224898), +         SCALE_SPLIT_ANGLE(0.06270807981491), +         SCALE_SPLIT_ANGLE(0.07093632966280), +         SCALE_SPLIT_ANGLE(0.08856786042452), +         SCALE_SPLIT_ANGLE(0.10623694956303)}, +        {SCALE_SPLIT_ANGLE(0.03821930661798), +         SCALE_SPLIT_ANGLE(0.03874678537250), +         SCALE_SPLIT_ANGLE(0.03956566005945), +         SCALE_SPLIT_ANGLE(0.04171610623598), +         SCALE_SPLIT_ANGLE(0.04395710676908), +         SCALE_SPLIT_ANGLE(0.04786692932248), +         SCALE_SPLIT_ANGLE(0.05546034500003), +         SCALE_SPLIT_ANGLE(0.06201593577862)}, +        {SCALE_SPLIT_ANGLE(0.02801758050919), +         SCALE_SPLIT_ANGLE(0.02828873321414), +         SCALE_SPLIT_ANGLE(0.02870770171285), +         SCALE_SPLIT_ANGLE(0.02979558333755), +         SCALE_SPLIT_ANGLE(0.03090834617615), +         SCALE_SPLIT_ANGLE(0.03279331326485), +         SCALE_SPLIT_ANGLE(0.03623208031058), +         SCALE_SPLIT_ANGLE(0.03895835205913)}, +        {SCALE_SPLIT_ANGLE(0.02032180689275), +         SCALE_SPLIT_ANGLE(0.02046046219766), +         SCALE_SPLIT_ANGLE(0.02067386545241), +         SCALE_SPLIT_ANGLE(0.02122297696769), +         SCALE_SPLIT_ANGLE(0.02177673391998), +         SCALE_SPLIT_ANGLE(0.02269527874887), +         SCALE_SPLIT_ANGLE(0.02430364489555), +         SCALE_SPLIT_ANGLE(0.02551441825926)}, +        {SCALE_SPLIT_ANGLE(0.01172095164657), +         SCALE_SPLIT_ANGLE(0.01176583208144), +         SCALE_SPLIT_ANGLE(0.01183457672596), +         SCALE_SPLIT_ANGLE(0.01200959738344), +         SCALE_SPLIT_ANGLE(0.01218330394477), +         SCALE_SPLIT_ANGLE(0.01246506255120), +         SCALE_SPLIT_ANGLE(0.01293875463307), +         SCALE_SPLIT_ANGLE(0.01327861472964)}, +        {SCALE_SPLIT_ANGLE(0.00668454170227), +         SCALE_SPLIT_ANGLE(0.00669893343002), +         SCALE_SPLIT_ANGLE(0.00672091403976), +         SCALE_SPLIT_ANGLE(0.00677651492879), +         SCALE_SPLIT_ANGLE(0.00683118170127), +         SCALE_SPLIT_ANGLE(0.00691874232143), +         SCALE_SPLIT_ANGLE(0.00706279883161), +         SCALE_SPLIT_ANGLE(0.00716368528083)}, +        {SCALE_SPLIT_ANGLE(0.00378863257356), +         SCALE_SPLIT_ANGLE(0.00379322143272), +         SCALE_SPLIT_ANGLE(0.00380021659657), +         SCALE_SPLIT_ANGLE(0.00381784536876), +         SCALE_SPLIT_ANGLE(0.00383508414961), +         SCALE_SPLIT_ANGLE(0.00386250065640), +         SCALE_SPLIT_ANGLE(0.00390707794577), +         SCALE_SPLIT_ANGLE(0.00393790053204)}, +        {SCALE_SPLIT_ANGLE(0.00213989755139), +         SCALE_SPLIT_ANGLE(0.00214135553688), +         SCALE_SPLIT_ANGLE(0.00214357557707), +         SCALE_SPLIT_ANGLE(0.00214915862307), +         SCALE_SPLIT_ANGLE(0.00215460127220), +         SCALE_SPLIT_ANGLE(0.00216322275810), +         SCALE_SPLIT_ANGLE(0.00217714952305), +         SCALE_SPLIT_ANGLE(0.00218671280891)}, +        {SCALE_SPLIT_ANGLE(0.00000001210151), +         SCALE_SPLIT_ANGLE(0.00000001210151), +         SCALE_SPLIT_ANGLE(0.00000001210151), +         SCALE_SPLIT_ANGLE(0.00000001210152), +         SCALE_SPLIT_ANGLE(0.00000001210152), +         SCALE_SPLIT_ANGLE(0.00000001210152), +         SCALE_SPLIT_ANGLE(0.00000001210152), +         SCALE_SPLIT_ANGLE(0.00000001210152)}, +    }, +    { +        {SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-3.14159226417542), +         SCALE_SPLIT_ANGLE(-3.14159226417542), +         SCALE_SPLIT_ANGLE(-3.14159226417542), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-0.00000036774148), +         SCALE_SPLIT_ANGLE(-0.00000066993488), +         SCALE_SPLIT_ANGLE(-0.00001151842844), +         SCALE_SPLIT_ANGLE(-3.14159226417542), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-0.00000008554968), +         SCALE_SPLIT_ANGLE(-0.00000012210570), +         SCALE_SPLIT_ANGLE(-0.00000019699247), +         SCALE_SPLIT_ANGLE(-0.00000110842382), +         SCALE_SPLIT_ANGLE(-3.14159202575684), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-0.00000003016602), +         SCALE_SPLIT_ANGLE(-0.00000005321843), +         SCALE_SPLIT_ANGLE(-0.00000008440014), +         SCALE_SPLIT_ANGLE(-0.00000020468090), +         SCALE_SPLIT_ANGLE(-0.00000071846705), +         SCALE_SPLIT_ANGLE(-3.14159226417542), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-0.00000000024720), +         SCALE_SPLIT_ANGLE(-0.00000003226497), +         SCALE_SPLIT_ANGLE(-0.00000005171609), +         SCALE_SPLIT_ANGLE(-0.00000010526998), +         SCALE_SPLIT_ANGLE(-0.00000020551137), +         SCALE_SPLIT_ANGLE(-1.57079637050629), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-0.00000001688349), +         SCALE_SPLIT_ANGLE(-0.00000002741881), +         SCALE_SPLIT_ANGLE(-0.00000003926384), +         SCALE_SPLIT_ANGLE(-0.00000006928260), +         SCALE_SPLIT_ANGLE(-0.00000011240582), +         SCALE_SPLIT_ANGLE(-0.00000033763689), +         SCALE_SPLIT_ANGLE(-3.14159250259399), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-0.00000002143362), +         SCALE_SPLIT_ANGLE(-0.00000002640935), +         SCALE_SPLIT_ANGLE(-0.00000003328325), +         SCALE_SPLIT_ANGLE(-0.00000005112437), +         SCALE_SPLIT_ANGLE(-0.00000007399619), +         SCALE_SPLIT_ANGLE(-0.00000014946792), +         SCALE_SPLIT_ANGLE(-3.14159226417542), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-0.00000002225921), +         SCALE_SPLIT_ANGLE(-0.00000002497380), +         SCALE_SPLIT_ANGLE(-0.00000002903169), +         SCALE_SPLIT_ANGLE(-0.00000003987020), +         SCALE_SPLIT_ANGLE(-0.00000005300816), +         SCALE_SPLIT_ANGLE(-0.00000008783893), +         SCALE_SPLIT_ANGLE(-0.00000093762065), +         SCALE_SPLIT_ANGLE(-3.14159250259399)}, +        {SCALE_SPLIT_ANGLE(-0.00000002109218), +         SCALE_SPLIT_ANGLE(-0.00000002269230), +         SCALE_SPLIT_ANGLE(-0.00000002515904), +         SCALE_SPLIT_ANGLE(-0.00000003183984), +         SCALE_SPLIT_ANGLE(-0.00000003965878), +         SCALE_SPLIT_ANGLE(-0.00000005782364), +         SCALE_SPLIT_ANGLE(-0.00000016152633), +         SCALE_SPLIT_ANGLE(-3.14159226417542)}, +        {SCALE_SPLIT_ANGLE(-0.00000001895314), +         SCALE_SPLIT_ANGLE(-0.00000001993623), +         SCALE_SPLIT_ANGLE(-0.00000002146927), +         SCALE_SPLIT_ANGLE(-0.00000002563087), +         SCALE_SPLIT_ANGLE(-0.00000003036888), +         SCALE_SPLIT_ANGLE(-0.00000004043087), +         SCALE_SPLIT_ANGLE(-0.00000007667983), +         SCALE_SPLIT_ANGLE(-0.00000021028936)}, +        {SCALE_SPLIT_ANGLE(-0.00000001519980), +         SCALE_SPLIT_ANGLE(-0.00000001569144), +         SCALE_SPLIT_ANGLE(-0.00000001646043), +         SCALE_SPLIT_ANGLE(-0.00000001853141), +         SCALE_SPLIT_ANGLE(-0.00000002080756), +         SCALE_SPLIT_ANGLE(-0.00000002521688), +         SCALE_SPLIT_ANGLE(-0.00000003656274), +         SCALE_SPLIT_ANGLE(-0.00000005247700)}, +        {SCALE_SPLIT_ANGLE(-0.00000001166148), +         SCALE_SPLIT_ANGLE(-0.00000001191188), +         SCALE_SPLIT_ANGLE(-0.00000001230229), +         SCALE_SPLIT_ANGLE(-0.00000001334031), +         SCALE_SPLIT_ANGLE(-0.00000001444787), +         SCALE_SPLIT_ANGLE(-0.00000001646512), +         SCALE_SPLIT_ANGLE(-0.00000002081803), +         SCALE_SPLIT_ANGLE(-0.00000002523831)}, +        {SCALE_SPLIT_ANGLE(-0.00000000870876), +         SCALE_SPLIT_ANGLE(-0.00000000883681), +         SCALE_SPLIT_ANGLE(-0.00000000903554), +         SCALE_SPLIT_ANGLE(-0.00000000955712), +         SCALE_SPLIT_ANGLE(-0.00000001010047), +         SCALE_SPLIT_ANGLE(-0.00000001104868), +         SCALE_SPLIT_ANGLE(-0.00000001289412), +         SCALE_SPLIT_ANGLE(-0.00000001449405)}, +        {SCALE_SPLIT_ANGLE(-0.00000000639270), +         SCALE_SPLIT_ANGLE(-0.00000000645810), +         SCALE_SPLIT_ANGLE(-0.00000000655912), +         SCALE_SPLIT_ANGLE(-0.00000000682132), +         SCALE_SPLIT_ANGLE(-0.00000000708940), +         SCALE_SPLIT_ANGLE(-0.00000000754343), +         SCALE_SPLIT_ANGLE(-0.00000000837207), +         SCALE_SPLIT_ANGLE(-0.00000000902983)}, +        {SCALE_SPLIT_ANGLE(-0.00000000463970), +         SCALE_SPLIT_ANGLE(-0.00000000467299), +         SCALE_SPLIT_ANGLE(-0.00000000472421), +         SCALE_SPLIT_ANGLE(-0.00000000485598), +         SCALE_SPLIT_ANGLE(-0.00000000498881), +         SCALE_SPLIT_ANGLE(-0.00000000520907), +         SCALE_SPLIT_ANGLE(-0.00000000559469), +         SCALE_SPLIT_ANGLE(-0.00000000588504)}, +        {SCALE_SPLIT_ANGLE(-0.00000000267713), +         SCALE_SPLIT_ANGLE(-0.00000000268785), +         SCALE_SPLIT_ANGLE(-0.00000000270428), +         SCALE_SPLIT_ANGLE(-0.00000000274608), +         SCALE_SPLIT_ANGLE(-0.00000000278756), +         SCALE_SPLIT_ANGLE(-0.00000000285483), +         SCALE_SPLIT_ANGLE(-0.00000000296788), +         SCALE_SPLIT_ANGLE(-0.00000000304897)}, +        {SCALE_SPLIT_ANGLE(-0.00000000152698), +         SCALE_SPLIT_ANGLE(-0.00000000153041), +         SCALE_SPLIT_ANGLE(-0.00000000153564), +         SCALE_SPLIT_ANGLE(-0.00000000154889), +         SCALE_SPLIT_ANGLE(-0.00000000156191), +         SCALE_SPLIT_ANGLE(-0.00000000158277), +         SCALE_SPLIT_ANGLE(-0.00000000161707), +         SCALE_SPLIT_ANGLE(-0.00000000164109)}, +        {SCALE_SPLIT_ANGLE(-0.00000000086549), +         SCALE_SPLIT_ANGLE(-0.00000000086658), +         SCALE_SPLIT_ANGLE(-0.00000000086824), +         SCALE_SPLIT_ANGLE(-0.00000000087244), +         SCALE_SPLIT_ANGLE(-0.00000000087654), +         SCALE_SPLIT_ANGLE(-0.00000000088306), +         SCALE_SPLIT_ANGLE(-0.00000000089366), +         SCALE_SPLIT_ANGLE(-0.00000000090099)}, +        {SCALE_SPLIT_ANGLE(-0.00000000048885), +         SCALE_SPLIT_ANGLE(-0.00000000048920), +         SCALE_SPLIT_ANGLE(-0.00000000048972), +         SCALE_SPLIT_ANGLE(-0.00000000049105), +         SCALE_SPLIT_ANGLE(-0.00000000049235), +         SCALE_SPLIT_ANGLE(-0.00000000049439), +         SCALE_SPLIT_ANGLE(-0.00000000049770), +         SCALE_SPLIT_ANGLE(-0.00000000049998)}, +        {SCALE_SPLIT_ANGLE(-0.00000000000000), +         SCALE_SPLIT_ANGLE(-0.00000000000000), +         SCALE_SPLIT_ANGLE(-0.00000000000000), +         SCALE_SPLIT_ANGLE(-0.00000000000000), +         SCALE_SPLIT_ANGLE(-0.00000000000000), +         SCALE_SPLIT_ANGLE(-0.00000000000000), +         SCALE_SPLIT_ANGLE(-0.00000000000000), +         SCALE_SPLIT_ANGLE(-0.00000000000000)}, +    }, +    { +        {SCALE_SPLIT_ANGLE(-2.74889349937439), +         SCALE_SPLIT_ANGLE(-2.74889349937439), +         SCALE_SPLIT_ANGLE(-2.74889349937439), +         SCALE_SPLIT_ANGLE(-2.74889349937439), +         SCALE_SPLIT_ANGLE(-2.74889349937439), +         SCALE_SPLIT_ANGLE(-2.74889349937439), +         SCALE_SPLIT_ANGLE(-2.74889349937439), +         SCALE_SPLIT_ANGLE(-2.74889349937439)}, +        {SCALE_SPLIT_ANGLE(-2.74670672416687), +         SCALE_SPLIT_ANGLE(-2.74670815467834), +         SCALE_SPLIT_ANGLE(-2.74671053886414), +         SCALE_SPLIT_ANGLE(-2.74671626091003), +         SCALE_SPLIT_ANGLE(-2.74672174453735), +         SCALE_SPLIT_ANGLE(-2.74673032760620), +         SCALE_SPLIT_ANGLE(-2.74674415588379), +         SCALE_SPLIT_ANGLE(-2.74675369262695)}, +        {SCALE_SPLIT_ANGLE(-2.74495577812195), +         SCALE_SPLIT_ANGLE(-2.74496054649353), +         SCALE_SPLIT_ANGLE(-2.74496769905090), +         SCALE_SPLIT_ANGLE(-2.74498581886292), +         SCALE_SPLIT_ANGLE(-2.74500346183777), +         SCALE_SPLIT_ANGLE(-2.74503111839294), +         SCALE_SPLIT_ANGLE(-2.74507522583008), +         SCALE_SPLIT_ANGLE(-2.74510502815247)}, +        {SCALE_SPLIT_ANGLE(-2.74173235893250), +         SCALE_SPLIT_ANGLE(-2.74174761772156), +         SCALE_SPLIT_ANGLE(-2.74177098274231), +         SCALE_SPLIT_ANGLE(-2.74182963371277), +         SCALE_SPLIT_ANGLE(-2.74188613891602), +         SCALE_SPLIT_ANGLE(-2.74197483062744), +         SCALE_SPLIT_ANGLE(-2.74211597442627), +         SCALE_SPLIT_ANGLE(-2.74221134185791)}, +        {SCALE_SPLIT_ANGLE(-2.73563575744629), +         SCALE_SPLIT_ANGLE(-2.73568654060364), +         SCALE_SPLIT_ANGLE(-2.73576331138611), +         SCALE_SPLIT_ANGLE(-2.73595523834229), +         SCALE_SPLIT_ANGLE(-2.73614001274109), +         SCALE_SPLIT_ANGLE(-2.73642849922180), +         SCALE_SPLIT_ANGLE(-2.73688435554504), +         SCALE_SPLIT_ANGLE(-2.73719096183777)}, +        {SCALE_SPLIT_ANGLE(-2.72353172302246), +         SCALE_SPLIT_ANGLE(-2.72370529174805), +         SCALE_SPLIT_ANGLE(-2.72396802902222), +         SCALE_SPLIT_ANGLE(-2.72461819648743), +         SCALE_SPLIT_ANGLE(-2.72523903846741), +         SCALE_SPLIT_ANGLE(-2.72619819641113), +         SCALE_SPLIT_ANGLE(-2.72769522666931), +         SCALE_SPLIT_ANGLE(-2.72869181632996)}, +        {SCALE_SPLIT_ANGLE(-2.71044111251831), +         SCALE_SPLIT_ANGLE(-2.71081781387329), +         SCALE_SPLIT_ANGLE(-2.71138477325439), +         SCALE_SPLIT_ANGLE(-2.71277689933777), +         SCALE_SPLIT_ANGLE(-2.71409153938293), +         SCALE_SPLIT_ANGLE(-2.71610021591187), +         SCALE_SPLIT_ANGLE(-2.71919155120850), +         SCALE_SPLIT_ANGLE(-2.72123122215271)}, +        {SCALE_SPLIT_ANGLE(-2.68862843513489), +         SCALE_SPLIT_ANGLE(-2.68948626518250), +         SCALE_SPLIT_ANGLE(-2.69076681137085), +         SCALE_SPLIT_ANGLE(-2.69386243820190), +         SCALE_SPLIT_ANGLE(-2.69673061370850), +         SCALE_SPLIT_ANGLE(-2.70102667808533), +         SCALE_SPLIT_ANGLE(-2.70749115943909), +         SCALE_SPLIT_ANGLE(-2.71170234680176)}, +        {SCALE_SPLIT_ANGLE(-2.64932370185852), +         SCALE_SPLIT_ANGLE(-2.65145063400269), +         SCALE_SPLIT_ANGLE(-2.65457701683044), +         SCALE_SPLIT_ANGLE(-2.66191530227661), +         SCALE_SPLIT_ANGLE(-2.66847491264343), +         SCALE_SPLIT_ANGLE(-2.67795729637146), +         SCALE_SPLIT_ANGLE(-2.69169569015503), +         SCALE_SPLIT_ANGLE(-2.70048117637634)}, +        {SCALE_SPLIT_ANGLE(-2.56864428520203), +         SCALE_SPLIT_ANGLE(-2.57483482360840), +         SCALE_SPLIT_ANGLE(-2.58364057540894), +         SCALE_SPLIT_ANGLE(-2.60311055183411), +         SCALE_SPLIT_ANGLE(-2.61933612823486), +         SCALE_SPLIT_ANGLE(-2.64129829406738), +         SCALE_SPLIT_ANGLE(-2.67107868194580), +         SCALE_SPLIT_ANGLE(-2.68960881233215)}, +        {SCALE_SPLIT_ANGLE(-2.35773015022278), +         SCALE_SPLIT_ANGLE(-2.38251185417175), +         SCALE_SPLIT_ANGLE(-2.41520094871521), +         SCALE_SPLIT_ANGLE(-2.47876906394959), +         SCALE_SPLIT_ANGLE(-2.52468156814575), +         SCALE_SPLIT_ANGLE(-2.57956743240356), +         SCALE_SPLIT_ANGLE(-2.64563965797424), +         SCALE_SPLIT_ANGLE(-2.68501615524292)}, +        {SCALE_SPLIT_ANGLE(-1.95455360412598), +         SCALE_SPLIT_ANGLE(-2.03550028800964), +         SCALE_SPLIT_ANGLE(-2.13431143760681), +         SCALE_SPLIT_ANGLE(-2.30167627334595), +         SCALE_SPLIT_ANGLE(-2.40472936630249), +         SCALE_SPLIT_ANGLE(-2.51241874694824), +         SCALE_SPLIT_ANGLE(-2.62649774551392), +         SCALE_SPLIT_ANGLE(-2.69151234626770)}, +        {SCALE_SPLIT_ANGLE(-1.08639836311340), +         SCALE_SPLIT_ANGLE(-1.25607907772064), +         SCALE_SPLIT_ANGLE(-1.49360668659210), +         SCALE_SPLIT_ANGLE(-1.93062829971313), +         SCALE_SPLIT_ANGLE(-2.18087887763977), +         SCALE_SPLIT_ANGLE(-2.40583086013794), +         SCALE_SPLIT_ANGLE(-2.60574340820313), +         SCALE_SPLIT_ANGLE(-2.71224212646484)}, +        {SCALE_SPLIT_ANGLE(-0.46298858523369), +         SCALE_SPLIT_ANGLE(-0.57069414854050), +         SCALE_SPLIT_ANGLE(-0.74941855669022), +         SCALE_SPLIT_ANGLE(-1.27059125900269), +         SCALE_SPLIT_ANGLE(-1.74987781047821), +         SCALE_SPLIT_ANGLE(-2.22410750389099), +         SCALE_SPLIT_ANGLE(-2.58140015602112), +         SCALE_SPLIT_ANGLE(-2.75301027297974)}, +        {SCALE_SPLIT_ANGLE(-0.23063215613365), +         SCALE_SPLIT_ANGLE(-0.29689297080040), +         SCALE_SPLIT_ANGLE(-0.39820960164070), +         SCALE_SPLIT_ANGLE(-0.70773017406464), +         SCALE_SPLIT_ANGLE(-1.13546574115753), +         SCALE_SPLIT_ANGLE(-1.89722001552582), +         SCALE_SPLIT_ANGLE(-2.54544782638550), +         SCALE_SPLIT_ANGLE(-2.81490182876587)}, +        {SCALE_SPLIT_ANGLE(-0.14590544998646), +         SCALE_SPLIT_ANGLE(-0.19153350591660), +         SCALE_SPLIT_ANGLE(-0.25519016385078), +         SCALE_SPLIT_ANGLE(-0.43163704872131), +         SCALE_SPLIT_ANGLE(-0.67776852846146), +         SCALE_SPLIT_ANGLE(-1.37444674968719), +         SCALE_SPLIT_ANGLE(-2.47591280937195), +         SCALE_SPLIT_ANGLE(-2.87223863601685)}, +        {SCALE_SPLIT_ANGLE(-0.12191534787416), +         SCALE_SPLIT_ANGLE(-0.15053887665272), +         SCALE_SPLIT_ANGLE(-0.19072306156158), +         SCALE_SPLIT_ANGLE(-0.29725372791290), +         SCALE_SPLIT_ANGLE(-0.43550038337708), +         SCALE_SPLIT_ANGLE(-0.85167348384857), +         SCALE_SPLIT_ANGLE(-2.31663155555725), +         SCALE_SPLIT_ANGLE(-2.84442567825317)}, +        {SCALE_SPLIT_ANGLE(-0.11467452347279), +         SCALE_SPLIT_ANGLE(-0.13146135210991), +         SCALE_SPLIT_ANGLE(-0.15620997548103), +         SCALE_SPLIT_ANGLE(-0.22212913632393), +         SCALE_SPLIT_ANGLE(-0.30330240726471), +         SCALE_SPLIT_ANGLE(-0.52478587627411), +         SCALE_SPLIT_ANGLE(-1.91173267364502), +         SCALE_SPLIT_ANGLE(-2.75908088684082)}, +        {SCALE_SPLIT_ANGLE(-0.10720869153738), +         SCALE_SPLIT_ANGLE(-0.11720532923937), +         SCALE_SPLIT_ANGLE(-0.13246680796146), +         SCALE_SPLIT_ANGLE(-0.17369446158409), +         SCALE_SPLIT_ANGLE(-0.22279061377048), +         SCALE_SPLIT_ANGLE(-0.34306260943413), +         SCALE_SPLIT_ANGLE(-1.11311769485474), +         SCALE_SPLIT_ANGLE(-2.55312228202820)}, +        {SCALE_SPLIT_ANGLE(-0.09705755859613), +         SCALE_SPLIT_ANGLE(-0.10320188105106), +         SCALE_SPLIT_ANGLE(-0.11274836212397), +         SCALE_SPLIT_ANGLE(-0.13873104751110), +         SCALE_SPLIT_ANGLE(-0.16888950765133), +         SCALE_SPLIT_ANGLE(-0.23647469282150), +         SCALE_SPLIT_ANGLE(-0.53898400068283), +         SCALE_SPLIT_ANGLE(-1.80699026584625)}, +        {SCALE_SPLIT_ANGLE(-0.08528345078230), +         SCALE_SPLIT_ANGLE(-0.08915078639984), +         SCALE_SPLIT_ANGLE(-0.09520187228918), +         SCALE_SPLIT_ANGLE(-0.11166743934155), +         SCALE_SPLIT_ANGLE(-0.13034182786942), +         SCALE_SPLIT_ANGLE(-0.16932602226734), +         SCALE_SPLIT_ANGLE(-0.29887464642525), +         SCALE_SPLIT_ANGLE(-0.63077670335770)}, +        {SCALE_SPLIT_ANGLE(-0.06733842939138), +         SCALE_SPLIT_ANGLE(-0.06931615620852), +         SCALE_SPLIT_ANGLE(-0.07241339236498), +         SCALE_SPLIT_ANGLE(-0.08076415956020), +         SCALE_SPLIT_ANGLE(-0.08993339538574), +         SCALE_SPLIT_ANGLE(-0.10759532451630), +         SCALE_SPLIT_ANGLE(-0.15204635262489), +         SCALE_SPLIT_ANGLE(-0.21143136918545)}, +        {SCALE_SPLIT_ANGLE(-0.05132640153170), +         SCALE_SPLIT_ANGLE(-0.05234802141786), +         SCALE_SPLIT_ANGLE(-0.05394186824560), +         SCALE_SPLIT_ANGLE(-0.05818276479840), +         SCALE_SPLIT_ANGLE(-0.06270807236433), +         SCALE_SPLIT_ANGLE(-0.07093632221222), +         SCALE_SPLIT_ANGLE(-0.08856784552336), +         SCALE_SPLIT_ANGLE(-0.10623692721128)}, +        {SCALE_SPLIT_ANGLE(-0.03821930289268), +         SCALE_SPLIT_ANGLE(-0.03874678164721), +         SCALE_SPLIT_ANGLE(-0.03956565260887), +         SCALE_SPLIT_ANGLE(-0.04171609878540), +         SCALE_SPLIT_ANGLE(-0.04395709931850), +         SCALE_SPLIT_ANGLE(-0.04786692187190), +         SCALE_SPLIT_ANGLE(-0.05546033382416), +         SCALE_SPLIT_ANGLE(-0.06201592460275)}, +        {SCALE_SPLIT_ANGLE(-0.02801757678390), +         SCALE_SPLIT_ANGLE(-0.02828872948885), +         SCALE_SPLIT_ANGLE(-0.02870769798756), +         SCALE_SPLIT_ANGLE(-0.02979557774961), +         SCALE_SPLIT_ANGLE(-0.03090834245086), +         SCALE_SPLIT_ANGLE(-0.03279330953956), +         SCALE_SPLIT_ANGLE(-0.03623207286000), +         SCALE_SPLIT_ANGLE(-0.03895834833384)}, +        {SCALE_SPLIT_ANGLE(-0.02032180316746), +         SCALE_SPLIT_ANGLE(-0.02046045847237), +         SCALE_SPLIT_ANGLE(-0.02067386172712), +         SCALE_SPLIT_ANGLE(-0.02122297324240), +         SCALE_SPLIT_ANGLE(-0.02177673205733), +         SCALE_SPLIT_ANGLE(-0.02269527502358), +         SCALE_SPLIT_ANGLE(-0.02430364117026), +         SCALE_SPLIT_ANGLE(-0.02551441267133)}, +        {SCALE_SPLIT_ANGLE(-0.01172094978392), +         SCALE_SPLIT_ANGLE(-0.01176583021879), +         SCALE_SPLIT_ANGLE(-0.01183457486331), +         SCALE_SPLIT_ANGLE(-0.01200959552079), +         SCALE_SPLIT_ANGLE(-0.01218330208212), +         SCALE_SPLIT_ANGLE(-0.01246506068856), +         SCALE_SPLIT_ANGLE(-0.01293875277042), +         SCALE_SPLIT_ANGLE(-0.01327861286700)}, +        {SCALE_SPLIT_ANGLE(-0.00668454030529), +         SCALE_SPLIT_ANGLE(-0.00669893249869), +         SCALE_SPLIT_ANGLE(-0.00672091310844), +         SCALE_SPLIT_ANGLE(-0.00677651399747), +         SCALE_SPLIT_ANGLE(-0.00683118030429), +         SCALE_SPLIT_ANGLE(-0.00691874139011), +         SCALE_SPLIT_ANGLE(-0.00706279790029), +         SCALE_SPLIT_ANGLE(-0.00716368434951)}, +        {SCALE_SPLIT_ANGLE(-0.00378863210790), +         SCALE_SPLIT_ANGLE(-0.00379322096705), +         SCALE_SPLIT_ANGLE(-0.00380021613091), +         SCALE_SPLIT_ANGLE(-0.00381784490310), +         SCALE_SPLIT_ANGLE(-0.00383508345112), +         SCALE_SPLIT_ANGLE(-0.00386250019073), +         SCALE_SPLIT_ANGLE(-0.00390707701445), +         SCALE_SPLIT_ANGLE(-0.00393790006638)}, +        {SCALE_SPLIT_ANGLE(-0.00213989731856), +         SCALE_SPLIT_ANGLE(-0.00214135507122), +         SCALE_SPLIT_ANGLE(-0.00214357534423), +         SCALE_SPLIT_ANGLE(-0.00214915839024), +         SCALE_SPLIT_ANGLE(-0.00215460080653), +         SCALE_SPLIT_ANGLE(-0.00216322229244), +         SCALE_SPLIT_ANGLE(-0.00217714929022), +         SCALE_SPLIT_ANGLE(-0.00218671257608)}, +        {SCALE_SPLIT_ANGLE(-0.00000001210151), +         SCALE_SPLIT_ANGLE(-0.00000001210151), +         SCALE_SPLIT_ANGLE(-0.00000001210151), +         SCALE_SPLIT_ANGLE(-0.00000001210151), +         SCALE_SPLIT_ANGLE(-0.00000001210151), +         SCALE_SPLIT_ANGLE(-0.00000001210151), +         SCALE_SPLIT_ANGLE(-0.00000001210151), +         SCALE_SPLIT_ANGLE(-0.00000001210151)}, +    }, +    { +        {SCALE_SPLIT_ANGLE(-2.35619449615479), +         SCALE_SPLIT_ANGLE(-2.35619449615479), +         SCALE_SPLIT_ANGLE(-2.35619449615479), +         SCALE_SPLIT_ANGLE(-2.35619449615479), +         SCALE_SPLIT_ANGLE(-2.35619449615479), +         SCALE_SPLIT_ANGLE(-2.35619449615479), +         SCALE_SPLIT_ANGLE(-2.35619449615479), +         SCALE_SPLIT_ANGLE(-2.35619449615479)}, +        {SCALE_SPLIT_ANGLE(-2.35216379165649), +         SCALE_SPLIT_ANGLE(-2.35216617584229), +         SCALE_SPLIT_ANGLE(-2.35216999053955), +         SCALE_SPLIT_ANGLE(-2.35217928886414), +         SCALE_SPLIT_ANGLE(-2.35218811035156), +         SCALE_SPLIT_ANGLE(-2.35220241546631), +         SCALE_SPLIT_ANGLE(-2.35222506523132), +         SCALE_SPLIT_ANGLE(-2.35224032402039)}, +        {SCALE_SPLIT_ANGLE(-2.34895062446594), +         SCALE_SPLIT_ANGLE(-2.34895849227905), +         SCALE_SPLIT_ANGLE(-2.34897017478943), +         SCALE_SPLIT_ANGLE(-2.34899973869324), +         SCALE_SPLIT_ANGLE(-2.34902834892273), +         SCALE_SPLIT_ANGLE(-2.34907317161560), +         SCALE_SPLIT_ANGLE(-2.34914541244507), +         SCALE_SPLIT_ANGLE(-2.34919428825378)}, +        {SCALE_SPLIT_ANGLE(-2.34306836128235), +         SCALE_SPLIT_ANGLE(-2.34309315681458), +         SCALE_SPLIT_ANGLE(-2.34313082695007), +         SCALE_SPLIT_ANGLE(-2.34322524070740), +         SCALE_SPLIT_ANGLE(-2.34331679344177), +         SCALE_SPLIT_ANGLE(-2.34346079826355), +         SCALE_SPLIT_ANGLE(-2.34369087219238), +         SCALE_SPLIT_ANGLE(-2.34384727478027)}, +        {SCALE_SPLIT_ANGLE(-2.33205747604370), +         SCALE_SPLIT_ANGLE(-2.33213782310486), +         SCALE_SPLIT_ANGLE(-2.33226013183594), +         SCALE_SPLIT_ANGLE(-2.33256602287292), +         SCALE_SPLIT_ANGLE(-2.33286190032959), +         SCALE_SPLIT_ANGLE(-2.33332633972168), +         SCALE_SPLIT_ANGLE(-2.33406710624695), +         SCALE_SPLIT_ANGLE(-2.33456921577454)}, +        {SCALE_SPLIT_ANGLE(-2.31062936782837), +         SCALE_SPLIT_ANGLE(-2.31089687347412), +         SCALE_SPLIT_ANGLE(-2.31130218505859), +         SCALE_SPLIT_ANGLE(-2.31231284141541), +         SCALE_SPLIT_ANGLE(-2.31328654289246), +         SCALE_SPLIT_ANGLE(-2.31480813026428), +         SCALE_SPLIT_ANGLE(-2.31722092628479), +         SCALE_SPLIT_ANGLE(-2.31885290145874)}, +        {SCALE_SPLIT_ANGLE(-2.28808355331421), +         SCALE_SPLIT_ANGLE(-2.28864479064941), +         SCALE_SPLIT_ANGLE(-2.28949403762817), +         SCALE_SPLIT_ANGLE(-2.29160070419312), +         SCALE_SPLIT_ANGLE(-2.29361891746521), +         SCALE_SPLIT_ANGLE(-2.29675459861755), +         SCALE_SPLIT_ANGLE(-2.30169844627380), +         SCALE_SPLIT_ANGLE(-2.30503511428833)}, +        {SCALE_SPLIT_ANGLE(-2.25191521644592), +         SCALE_SPLIT_ANGLE(-2.25312590599060), +         SCALE_SPLIT_ANGLE(-2.25494933128357), +         SCALE_SPLIT_ANGLE(-2.25943517684937), +         SCALE_SPLIT_ANGLE(-2.26368904113770), +         SCALE_SPLIT_ANGLE(-2.27023124694824), +         SCALE_SPLIT_ANGLE(-2.28044486045837), +         SCALE_SPLIT_ANGLE(-2.28732323646545)}, +        {SCALE_SPLIT_ANGLE(-2.19093608856201), +         SCALE_SPLIT_ANGLE(-2.19366121292114), +         SCALE_SPLIT_ANGLE(-2.19773292541504), +         SCALE_SPLIT_ANGLE(-2.20759749412537), +         SCALE_SPLIT_ANGLE(-2.21677803993225), +         SCALE_SPLIT_ANGLE(-2.23064494132996), +         SCALE_SPLIT_ANGLE(-2.25193929672241), +         SCALE_SPLIT_ANGLE(-2.26625943183899)}, +        {SCALE_SPLIT_ANGLE(-2.08102917671204), +         SCALE_SPLIT_ANGLE(-2.08757305145264), +         SCALE_SPLIT_ANGLE(-2.09720730781555), +         SCALE_SPLIT_ANGLE(-2.11991167068481), +         SCALE_SPLIT_ANGLE(-2.14035677909851), +         SCALE_SPLIT_ANGLE(-2.17029237747192), +         SCALE_SPLIT_ANGLE(-2.21503162384033), +         SCALE_SPLIT_ANGLE(-2.24518132209778)}, +        {SCALE_SPLIT_ANGLE(-1.86738622188568), +         SCALE_SPLIT_ANGLE(-1.88426077365875), +         SCALE_SPLIT_ANGLE(-1.90853285789490), +         SCALE_SPLIT_ANGLE(-1.96333336830139), +         SCALE_SPLIT_ANGLE(-2.01024460792542), +         SCALE_SPLIT_ANGLE(-2.07577633857727), +         SCALE_SPLIT_ANGLE(-2.16986608505249), +         SCALE_SPLIT_ANGLE(-2.23406052589417)}, +        {SCALE_SPLIT_ANGLE(-1.61812186241150), +         SCALE_SPLIT_ANGLE(-1.64943766593933), +         SCALE_SPLIT_ANGLE(-1.69389247894287), +         SCALE_SPLIT_ANGLE(-1.79176032543182), +         SCALE_SPLIT_ANGLE(-1.87292504310608), +         SCALE_SPLIT_ANGLE(-1.98277997970581), +         SCALE_SPLIT_ANGLE(-2.13605833053589), +         SCALE_SPLIT_ANGLE(-2.24282979965210)}, +        {SCALE_SPLIT_ANGLE(-1.26556181907654), +         SCALE_SPLIT_ANGLE(-1.31512010097504), +         SCALE_SPLIT_ANGLE(-1.38608694076538), +         SCALE_SPLIT_ANGLE(-1.54419946670532), +         SCALE_SPLIT_ANGLE(-1.67621028423309), +         SCALE_SPLIT_ANGLE(-1.85417354106903), +         SCALE_SPLIT_ANGLE(-2.09956336021423), +         SCALE_SPLIT_ANGLE(-2.27729439735413)}, +        {SCALE_SPLIT_ANGLE(-0.88984858989716), +         SCALE_SPLIT_ANGLE(-0.94673115015030), +         SCALE_SPLIT_ANGLE(-1.03102219104767), +         SCALE_SPLIT_ANGLE(-1.23219704627991), +         SCALE_SPLIT_ANGLE(-1.41468596458435), +         SCALE_SPLIT_ANGLE(-1.67807447910309), +         SCALE_SPLIT_ANGLE(-2.05749273300171), +         SCALE_SPLIT_ANGLE(-2.35138511657715)}, +        {SCALE_SPLIT_ANGLE(-0.60630625486374), +         SCALE_SPLIT_ANGLE(-0.65551131963730), +         SCALE_SPLIT_ANGLE(-0.73032110929489), +         SCALE_SPLIT_ANGLE(-0.92225730419159), +         SCALE_SPLIT_ANGLE(-1.11866605281830), +         SCALE_SPLIT_ANGLE(-1.44806659221649), +         SCALE_SPLIT_ANGLE(-1.99872648715973), +         SCALE_SPLIT_ANGLE(-2.47302079200745)}, +        {SCALE_SPLIT_ANGLE(-0.43393719196320), +         SCALE_SPLIT_ANGLE(-0.47099208831787), +         SCALE_SPLIT_ANGLE(-0.52780753374100), +         SCALE_SPLIT_ANGLE(-0.67895972728729), +         SCALE_SPLIT_ANGLE(-0.84712409973145), +         SCALE_SPLIT_ANGLE(-1.17809724807739), +         SCALE_SPLIT_ANGLE(-1.89703977108002), +         SCALE_SPLIT_ANGLE(-2.59155678749084)}, +        {SCALE_SPLIT_ANGLE(-0.33522716164589), +         SCALE_SPLIT_ANGLE(-0.36133098602295), +         SCALE_SPLIT_ANGLE(-0.40159514546394), +         SCALE_SPLIT_ANGLE(-0.51039946079254), +         SCALE_SPLIT_ANGLE(-0.63590413331985), +         SCALE_SPLIT_ANGLE(-0.90812796354294), +         SCALE_SPLIT_ANGLE(-1.70793569087982), +         SCALE_SPLIT_ANGLE(-2.52852439880371)}, +        {SCALE_SPLIT_ANGLE(-0.27478921413422), +         SCALE_SPLIT_ANGLE(-0.29251146316528), +         SCALE_SPLIT_ANGLE(-0.32007753849030), +         SCALE_SPLIT_ANGLE(-0.39531296491623), +         SCALE_SPLIT_ANGLE(-0.48291319608688), +         SCALE_SPLIT_ANGLE(-0.67812001705170), +         SCALE_SPLIT_ANGLE(-1.39007341861725), +         SCALE_SPLIT_ANGLE(-2.34402585029602)}, +        {SCALE_SPLIT_ANGLE(-0.23185737431049), +         SCALE_SPLIT_ANGLE(-0.24370788037777), +         SCALE_SPLIT_ANGLE(-0.26227977871895), +         SCALE_SPLIT_ANGLE(-0.31327378749847), +         SCALE_SPLIT_ANGLE(-0.37241828441620), +         SCALE_SPLIT_ANGLE(-0.50202107429504), +         SCALE_SPLIT_ANGLE(-0.99085599184036), +         SCALE_SPLIT_ANGLE(-1.96553480625153)}, +        {SCALE_SPLIT_ANGLE(-0.19698302447796), +         SCALE_SPLIT_ANGLE(-0.20488265156746), +         SCALE_SPLIT_ANGLE(-0.21731522679329), +         SCALE_SPLIT_ANGLE(-0.25148209929466), +         SCALE_SPLIT_ANGLE(-0.29065513610840), +         SCALE_SPLIT_ANGLE(-0.37341463565826), +         SCALE_SPLIT_ANGLE(-0.65295964479446), +         SCALE_SPLIT_ANGLE(-1.28865838050842)}, +        {SCALE_SPLIT_ANGLE(-0.16667704284191), +         SCALE_SPLIT_ANGLE(-0.17194209992886), +         SCALE_SPLIT_ANGLE(-0.18023575842381), +         SCALE_SPLIT_ANGLE(-0.20293866097927), +         SCALE_SPLIT_ANGLE(-0.22855132818222), +         SCALE_SPLIT_ANGLE(-0.28041815757751), +         SCALE_SPLIT_ANGLE(-0.43142417073250), +         SCALE_SPLIT_ANGLE(-0.70030152797699)}, +        {SCALE_SPLIT_ANGLE(-0.12773875892162), +         SCALE_SPLIT_ANGLE(-0.13059368729591), +         SCALE_SPLIT_ANGLE(-0.13507817685604), +         SCALE_SPLIT_ANGLE(-0.14721076190472), +         SCALE_SPLIT_ANGLE(-0.16052411496639), +         SCALE_SPLIT_ANGLE(-0.18590225279331), +         SCALE_SPLIT_ANGLE(-0.24703903496265), +         SCALE_SPLIT_ANGLE(-0.32153329253197)}, +        {SCALE_SPLIT_ANGLE(-0.09603262692690), +         SCALE_SPLIT_ANGLE(-0.09756571799517), +         SCALE_SPLIT_ANGLE(-0.09996144473553), +         SCALE_SPLIT_ANGLE(-0.10635072737932), +         SCALE_SPLIT_ANGLE(-0.11317525804043), +         SCALE_SPLIT_ANGLE(-0.12554959952831), +         SCALE_SPLIT_ANGLE(-0.15168417990208), +         SCALE_SPLIT_ANGLE(-0.17713625729084)}, +        {SCALE_SPLIT_ANGLE(-0.07104730606079), +         SCALE_SPLIT_ANGLE(-0.07186015695333), +         SCALE_SPLIT_ANGLE(-0.07312334328890), +         SCALE_SPLIT_ANGLE(-0.07644615322351), +         SCALE_SPLIT_ANGLE(-0.07991369068623), +         SCALE_SPLIT_ANGLE(-0.08596337586641), +         SCALE_SPLIT_ANGLE(-0.09766443073750), +         SCALE_SPLIT_ANGLE(-0.10767272859812)}, +        {SCALE_SPLIT_ANGLE(-0.05192205309868), +         SCALE_SPLIT_ANGLE(-0.05234766378999), +         SCALE_SPLIT_ANGLE(-0.05300575867295), +         SCALE_SPLIT_ANGLE(-0.05471667274833), +         SCALE_SPLIT_ANGLE(-0.05646898224950), +         SCALE_SPLIT_ANGLE(-0.05943990871310), +         SCALE_SPLIT_ANGLE(-0.06485753506422), +         SCALE_SPLIT_ANGLE(-0.06914159655571)}, +        {SCALE_SPLIT_ANGLE(-0.03760398924351), +         SCALE_SPLIT_ANGLE(-0.03782445192337), +         SCALE_SPLIT_ANGLE(-0.03816392645240), +         SCALE_SPLIT_ANGLE(-0.03903824090958), +         SCALE_SPLIT_ANGLE(-0.03992090001702), +         SCALE_SPLIT_ANGLE(-0.04138650000095), +         SCALE_SPLIT_ANGLE(-0.04395476356149), +         SCALE_SPLIT_ANGLE(-0.04588782414794)}, +        {SCALE_SPLIT_ANGLE(-0.02166714519262), +         SCALE_SPLIT_ANGLE(-0.02173947915435), +         SCALE_SPLIT_ANGLE(-0.02185030654073), +         SCALE_SPLIT_ANGLE(-0.02213260345161), +         SCALE_SPLIT_ANGLE(-0.02241297997534), +         SCALE_SPLIT_ANGLE(-0.02286812663078), +         SCALE_SPLIT_ANGLE(-0.02363408729434), +         SCALE_SPLIT_ANGLE(-0.02418405003846)}, +        {SCALE_SPLIT_ANGLE(-0.01235313713551), +         SCALE_SPLIT_ANGLE(-0.01237650867552), +         SCALE_SPLIT_ANGLE(-0.01241220720112), +         SCALE_SPLIT_ANGLE(-0.01250253617764), +         SCALE_SPLIT_ANGLE(-0.01259138714522), +         SCALE_SPLIT_ANGLE(-0.01273377239704), +         SCALE_SPLIT_ANGLE(-0.01296819653362), +         SCALE_SPLIT_ANGLE(-0.01313247904181)}, +        {SCALE_SPLIT_ANGLE(-0.00700078438967), +         SCALE_SPLIT_ANGLE(-0.00700826710090), +         SCALE_SPLIT_ANGLE(-0.00701967626810), +         SCALE_SPLIT_ANGLE(-0.00704843178391), +         SCALE_SPLIT_ANGLE(-0.00707655726001), +         SCALE_SPLIT_ANGLE(-0.00712130265310), +         SCALE_SPLIT_ANGLE(-0.00719408923760), +         SCALE_SPLIT_ANGLE(-0.00724443932995)}, +        {SCALE_SPLIT_ANGLE(-0.00395406875759), +         SCALE_SPLIT_ANGLE(-0.00395645154640), +         SCALE_SPLIT_ANGLE(-0.00396008091047), +         SCALE_SPLIT_ANGLE(-0.00396920833737), +         SCALE_SPLIT_ANGLE(-0.00397810759023), +         SCALE_SPLIT_ANGLE(-0.00399220641702), +         SCALE_SPLIT_ANGLE(-0.00401498842984), +         SCALE_SPLIT_ANGLE(-0.00403063651174)}, +        {SCALE_SPLIT_ANGLE(-0.00000002236068), +         SCALE_SPLIT_ANGLE(-0.00000002236068), +         SCALE_SPLIT_ANGLE(-0.00000002236068), +         SCALE_SPLIT_ANGLE(-0.00000002236068), +         SCALE_SPLIT_ANGLE(-0.00000002236068), +         SCALE_SPLIT_ANGLE(-0.00000002236068), +         SCALE_SPLIT_ANGLE(-0.00000002236068), +         SCALE_SPLIT_ANGLE(-0.00000002236068)}, +    }, +    { +        {SCALE_SPLIT_ANGLE(-1.96349549293518), +         SCALE_SPLIT_ANGLE(-1.96349549293518), +         SCALE_SPLIT_ANGLE(-1.96349549293518), +         SCALE_SPLIT_ANGLE(-1.96349549293518), +         SCALE_SPLIT_ANGLE(-1.96349549293518), +         SCALE_SPLIT_ANGLE(-1.96349549293518), +         SCALE_SPLIT_ANGLE(-1.96349549293518), +         SCALE_SPLIT_ANGLE(-1.96349549293518)}, +        {SCALE_SPLIT_ANGLE(-1.95824849605560), +         SCALE_SPLIT_ANGLE(-1.95825111865997), +         SCALE_SPLIT_ANGLE(-1.95825493335724), +         SCALE_SPLIT_ANGLE(-1.95826470851898), +         SCALE_SPLIT_ANGLE(-1.95827412605286), +         SCALE_SPLIT_ANGLE(-1.95828902721405), +         SCALE_SPLIT_ANGLE(-1.95831298828125), +         SCALE_SPLIT_ANGLE(-1.95832931995392)}, +        {SCALE_SPLIT_ANGLE(-1.95409321784973), +         SCALE_SPLIT_ANGLE(-1.95410120487213), +         SCALE_SPLIT_ANGLE(-1.95411348342896), +         SCALE_SPLIT_ANGLE(-1.95414435863495), +         SCALE_SPLIT_ANGLE(-1.95417428016663), +         SCALE_SPLIT_ANGLE(-1.95422148704529), +         SCALE_SPLIT_ANGLE(-1.95429742336273), +         SCALE_SPLIT_ANGLE(-1.95434927940369)}, +        {SCALE_SPLIT_ANGLE(-1.94654786586761), +         SCALE_SPLIT_ANGLE(-1.94657349586487), +         SCALE_SPLIT_ANGLE(-1.94661235809326), +         SCALE_SPLIT_ANGLE(-1.94671010971069), +         SCALE_SPLIT_ANGLE(-1.94680511951447), +         SCALE_SPLIT_ANGLE(-1.94695532321930), +         SCALE_SPLIT_ANGLE(-1.94719707965851), +         SCALE_SPLIT_ANGLE(-1.94736242294312)}, +        {SCALE_SPLIT_ANGLE(-1.93263387680054), +         SCALE_SPLIT_ANGLE(-1.93271505832672), +         SCALE_SPLIT_ANGLE(-1.93283867835999), +         SCALE_SPLIT_ANGLE(-1.93314921855927), +         SCALE_SPLIT_ANGLE(-1.93345177173615), +         SCALE_SPLIT_ANGLE(-1.93393063545227), +         SCALE_SPLIT_ANGLE(-1.93470406532288), +         SCALE_SPLIT_ANGLE(-1.93523526191711)}, +        {SCALE_SPLIT_ANGLE(-1.90630447864532), +         SCALE_SPLIT_ANGLE(-1.90656316280365), +         SCALE_SPLIT_ANGLE(-1.90695703029633), +         SCALE_SPLIT_ANGLE(-1.90794789791107), +         SCALE_SPLIT_ANGLE(-1.90891468524933), +         SCALE_SPLIT_ANGLE(-1.91044914722443), +         SCALE_SPLIT_ANGLE(-1.91294133663177), +         SCALE_SPLIT_ANGLE(-1.91466677188873)}, +        {SCALE_SPLIT_ANGLE(-1.87960767745972), +         SCALE_SPLIT_ANGLE(-1.88012754917145), +         SCALE_SPLIT_ANGLE(-1.88091945648193), +         SCALE_SPLIT_ANGLE(-1.88291203975677), +         SCALE_SPLIT_ANGLE(-1.88485789299011), +         SCALE_SPLIT_ANGLE(-1.88795256614685), +         SCALE_SPLIT_ANGLE(-1.89300417900085), +         SCALE_SPLIT_ANGLE(-1.89653015136719)}, +        {SCALE_SPLIT_ANGLE(-1.83877408504486), +         SCALE_SPLIT_ANGLE(-1.83982253074646), +         SCALE_SPLIT_ANGLE(-1.84141874313354), +         SCALE_SPLIT_ANGLE(-1.84543371200562), +         SCALE_SPLIT_ANGLE(-1.84935557842255), +         SCALE_SPLIT_ANGLE(-1.85560452938080), +         SCALE_SPLIT_ANGLE(-1.86587750911713), +         SCALE_SPLIT_ANGLE(-1.87314093112946)}, +        {SCALE_SPLIT_ANGLE(-1.77493441104889), +         SCALE_SPLIT_ANGLE(-1.77705287933350), +         SCALE_SPLIT_ANGLE(-1.78027486801147), +         SCALE_SPLIT_ANGLE(-1.78836560249329), +         SCALE_SPLIT_ANGLE(-1.79626119136810), +         SCALE_SPLIT_ANGLE(-1.80886065959930), +         SCALE_SPLIT_ANGLE(-1.82978057861328), +         SCALE_SPLIT_ANGLE(-1.84489572048187)}, +        {SCALE_SPLIT_ANGLE(-1.67321836948395), +         SCALE_SPLIT_ANGLE(-1.67747676372528), +         SCALE_SPLIT_ANGLE(-1.68394041061401), +         SCALE_SPLIT_ANGLE(-1.70011758804321), +         SCALE_SPLIT_ANGLE(-1.71586525440216), +         SCALE_SPLIT_ANGLE(-1.74102890491486), +         SCALE_SPLIT_ANGLE(-1.78345453739166), +         SCALE_SPLIT_ANGLE(-1.81531310081482)}, +        {SCALE_SPLIT_ANGLE(-1.51132130622864), +         SCALE_SPLIT_ANGLE(-1.51959407329559), +         SCALE_SPLIT_ANGLE(-1.53212583065033), +         SCALE_SPLIT_ANGLE(-1.56339812278748), +         SCALE_SPLIT_ANGLE(-1.59380078315735), +         SCALE_SPLIT_ANGLE(-1.64260387420654), +         SCALE_SPLIT_ANGLE(-1.72719144821167), +         SCALE_SPLIT_ANGLE(-1.79549288749695)}, +        {SCALE_SPLIT_ANGLE(-1.35904073715210), +         SCALE_SPLIT_ANGLE(-1.37121629714966), +         SCALE_SPLIT_ANGLE(-1.38967263698578), +         SCALE_SPLIT_ANGLE(-1.43583405017853), +         SCALE_SPLIT_ANGLE(-1.48093712329865), +         SCALE_SPLIT_ANGLE(-1.55410349369049), +         SCALE_SPLIT_ANGLE(-1.68521809577942), +         SCALE_SPLIT_ANGLE(-1.80024909973145)}, +        {SCALE_SPLIT_ANGLE(-1.17258918285370), +         SCALE_SPLIT_ANGLE(-1.18893885612488), +         SCALE_SPLIT_ANGLE(-1.21383893489838), +         SCALE_SPLIT_ANGLE(-1.27678334712982), +         SCALE_SPLIT_ANGLE(-1.33930444717407), +         SCALE_SPLIT_ANGLE(-1.44322550296783), +         SCALE_SPLIT_ANGLE(-1.64006841182709), +         SCALE_SPLIT_ANGLE(-1.83627629280090)}, +        {SCALE_SPLIT_ANGLE(-0.96933782100677), +         SCALE_SPLIT_ANGLE(-0.98854482173920), +         SCALE_SPLIT_ANGLE(-1.01807177066803), +         SCALE_SPLIT_ANGLE(-1.09429979324341), +         SCALE_SPLIT_ANGLE(-1.17245376110077), +         SCALE_SPLIT_ANGLE(-1.30826890468597), +         SCALE_SPLIT_ANGLE(-1.58911192417145), +         SCALE_SPLIT_ANGLE(-1.92719459533691)}, +        {SCALE_SPLIT_ANGLE(-0.77729856967926), +         SCALE_SPLIT_ANGLE(-0.79675692319870), +         SCALE_SPLIT_ANGLE(-0.82701623439789), +         SCALE_SPLIT_ANGLE(-0.90724974870682), +         SCALE_SPLIT_ANGLE(-0.99302661418915), +         SCALE_SPLIT_ANGLE(-1.15164005756378), +         SCALE_SPLIT_ANGLE(-1.52265238761902), +         SCALE_SPLIT_ANGLE(-2.09869647026062)}, +        {SCALE_SPLIT_ANGLE(-0.61765122413635), +         SCALE_SPLIT_ANGLE(-0.63503879308701), +         SCALE_SPLIT_ANGLE(-0.66235071420670), +         SCALE_SPLIT_ANGLE(-0.73653644323349), +         SCALE_SPLIT_ANGLE(-0.81904625892639), +         SCALE_SPLIT_ANGLE(-0.98174780607224), +         SCALE_SPLIT_ANGLE(-1.42110574245453), +         SCALE_SPLIT_ANGLE(-2.28386068344116)}, +        {SCALE_SPLIT_ANGLE(-0.49486327171326), +         SCALE_SPLIT_ANGLE(-0.50909572839737), +         SCALE_SPLIT_ANGLE(-0.53160977363586), +         SCALE_SPLIT_ANGLE(-0.59379214048386), +         SCALE_SPLIT_ANGLE(-0.66487479209900), +         SCALE_SPLIT_ANGLE(-0.81185555458069), +         SCALE_SPLIT_ANGLE(-1.26233398914337), +         SCALE_SPLIT_ANGLE(-2.16925764083862)}, +        {SCALE_SPLIT_ANGLE(-0.40230554342270), +         SCALE_SPLIT_ANGLE(-0.41332268714905), +         SCALE_SPLIT_ANGLE(-0.43082219362259), +         SCALE_SPLIT_ANGLE(-0.47957947850227), +         SCALE_SPLIT_ANGLE(-0.53603595495224), +         SCALE_SPLIT_ANGLE(-0.65522664785385), +         SCALE_SPLIT_ANGLE(-1.04503870010376), +         SCALE_SPLIT_ANGLE(-1.87041819095612)}, +        {SCALE_SPLIT_ANGLE(-0.33104604482651), +         SCALE_SPLIT_ANGLE(-0.33927723765373), +         SCALE_SPLIT_ANGLE(-0.35237133502960), +         SCALE_SPLIT_ANGLE(-0.38892474770546), +         SCALE_SPLIT_ANGLE(-0.43126162886620), +         SCALE_SPLIT_ANGLE(-0.52027010917664), +         SCALE_SPLIT_ANGLE(-0.80654197931290), +         SCALE_SPLIT_ANGLE(-1.41960346698761)}, +        {SCALE_SPLIT_ANGLE(-0.27415531873703), +         SCALE_SPLIT_ANGLE(-0.28015667200089), +         SCALE_SPLIT_ANGLE(-0.28969678282738), +         SCALE_SPLIT_ANGLE(-0.31623727083206), +         SCALE_SPLIT_ANGLE(-0.34670370817184), +         SCALE_SPLIT_ANGLE(-0.40939208865166), +         SCALE_SPLIT_ANGLE(-0.59604328870773), +         SCALE_SPLIT_ANGLE(-0.94309812784195)}, +        {SCALE_SPLIT_ANGLE(-0.22730343043804), +         SCALE_SPLIT_ANGLE(-0.23159568011761), +         SCALE_SPLIT_ANGLE(-0.23840220272541), +         SCALE_SPLIT_ANGLE(-0.25720024108887), +         SCALE_SPLIT_ANGLE(-0.27846288681030), +         SCALE_SPLIT_ANGLE(-0.32089167833328), +         SCALE_SPLIT_ANGLE(-0.43515858054161), +         SCALE_SPLIT_ANGLE(-0.60622000694275)}, +        {SCALE_SPLIT_ANGLE(-0.17074464261532), +         SCALE_SPLIT_ANGLE(-0.17326098680496), +         SCALE_SPLIT_ANGLE(-0.17722851037979), +         SCALE_SPLIT_ANGLE(-0.18802368640900), +         SCALE_SPLIT_ANGLE(-0.19990929961205), +         SCALE_SPLIT_ANGLE(-0.22246663272381), +         SCALE_SPLIT_ANGLE(-0.27514943480492), +         SCALE_SPLIT_ANGLE(-0.33505329489708)}, +        {SCALE_SPLIT_ANGLE(-0.12695816159248), +         SCALE_SPLIT_ANGLE(-0.12838459014893), +         SCALE_SPLIT_ANGLE(-0.13061878085136), +         SCALE_SPLIT_ANGLE(-0.13660037517548), +         SCALE_SPLIT_ANGLE(-0.14301039278507), +         SCALE_SPLIT_ANGLE(-0.15463486313820), +         SCALE_SPLIT_ANGLE(-0.17893928289413), +         SCALE_SPLIT_ANGLE(-0.20203559100628)}, +        {SCALE_SPLIT_ANGLE(-0.09338590502739), +         SCALE_SPLIT_ANGLE(-0.09417138248682), +         SCALE_SPLIT_ANGLE(-0.09539389610291), +         SCALE_SPLIT_ANGLE(-0.09861853718758), +         SCALE_SPLIT_ANGLE(-0.10199318081141), +         SCALE_SPLIT_ANGLE(-0.10789106041193), +         SCALE_SPLIT_ANGLE(-0.11927829682827), +         SCALE_SPLIT_ANGLE(-0.12894384562969)}, +        {SCALE_SPLIT_ANGLE(-0.06804534792900), +         SCALE_SPLIT_ANGLE(-0.06846774369478), +         SCALE_SPLIT_ANGLE(-0.06912153959274), +         SCALE_SPLIT_ANGLE(-0.07082460820675), +         SCALE_SPLIT_ANGLE(-0.07257289439440), +         SCALE_SPLIT_ANGLE(-0.07554303109646), +         SCALE_SPLIT_ANGLE(-0.08096560835838), +         SCALE_SPLIT_ANGLE(-0.08524779230356)}, +        {SCALE_SPLIT_ANGLE(-0.04920703917742), +         SCALE_SPLIT_ANGLE(-0.04942998290062), +         SCALE_SPLIT_ANGLE(-0.04977353662252), +         SCALE_SPLIT_ANGLE(-0.05065960064530), +         SCALE_SPLIT_ANGLE(-0.05155571177602), +         SCALE_SPLIT_ANGLE(-0.05304637178779), +         SCALE_SPLIT_ANGLE(-0.05566369369626), +         SCALE_SPLIT_ANGLE(-0.05763531103730)}, +        {SCALE_SPLIT_ANGLE(-0.02832321636379), +         SCALE_SPLIT_ANGLE(-0.02839783579111), +         SCALE_SPLIT_ANGLE(-0.02851220592856), +         SCALE_SPLIT_ANGLE(-0.02880378812551), +         SCALE_SPLIT_ANGLE(-0.02909369207919), +         SCALE_SPLIT_ANGLE(-0.02956490218639), +         SCALE_SPLIT_ANGLE(-0.03035926632583), +         SCALE_SPLIT_ANGLE(-0.03093044646084)}, +        {SCALE_SPLIT_ANGLE(-0.01614263094962), +         SCALE_SPLIT_ANGLE(-0.01616701111197), +         SCALE_SPLIT_ANGLE(-0.01620426028967), +         SCALE_SPLIT_ANGLE(-0.01629855856299), +         SCALE_SPLIT_ANGLE(-0.01639137044549), +         SCALE_SPLIT_ANGLE(-0.01654022000730), +         SCALE_SPLIT_ANGLE(-0.01678557321429), +         SCALE_SPLIT_ANGLE(-0.01695770025253)}, +        {SCALE_SPLIT_ANGLE(-0.00914741121233), +         SCALE_SPLIT_ANGLE(-0.00915526598692), +         SCALE_SPLIT_ANGLE(-0.00916724465787), +         SCALE_SPLIT_ANGLE(-0.00919744279236), +         SCALE_SPLIT_ANGLE(-0.00922699086368), +         SCALE_SPLIT_ANGLE(-0.00927401985973), +         SCALE_SPLIT_ANGLE(-0.00935057457536), +         SCALE_SPLIT_ANGLE(-0.00940357148647)}, +        {SCALE_SPLIT_ANGLE(-0.00516631966457), +         SCALE_SPLIT_ANGLE(-0.00516883004457), +         SCALE_SPLIT_ANGLE(-0.00517265358940), +         SCALE_SPLIT_ANGLE(-0.00518227042630), +         SCALE_SPLIT_ANGLE(-0.00519164977595), +         SCALE_SPLIT_ANGLE(-0.00520651368424), +         SCALE_SPLIT_ANGLE(-0.00523054040968), +         SCALE_SPLIT_ANGLE(-0.00524705089629)}, +        {SCALE_SPLIT_ANGLE(-0.00000002921564), +         SCALE_SPLIT_ANGLE(-0.00000002921564), +         SCALE_SPLIT_ANGLE(-0.00000002921564), +         SCALE_SPLIT_ANGLE(-0.00000002921564), +         SCALE_SPLIT_ANGLE(-0.00000002921564), +         SCALE_SPLIT_ANGLE(-0.00000002921564), +         SCALE_SPLIT_ANGLE(-0.00000002921564), +         SCALE_SPLIT_ANGLE(-0.00000002921564)}, +    }, +    { +        {SCALE_SPLIT_ANGLE(-1.57079625129700), +         SCALE_SPLIT_ANGLE(-1.57079625129700), +         SCALE_SPLIT_ANGLE(-1.57079625129700), +         SCALE_SPLIT_ANGLE(-1.57079625129700), +         SCALE_SPLIT_ANGLE(-1.57079625129700), +         SCALE_SPLIT_ANGLE(-1.57079625129700), +         SCALE_SPLIT_ANGLE(-1.57079625129700), +         SCALE_SPLIT_ANGLE(-1.57079625129700)}, +        {SCALE_SPLIT_ANGLE(-1.56514143943787), +         SCALE_SPLIT_ANGLE(-1.56514346599579), +         SCALE_SPLIT_ANGLE(-1.56514644622803), +         SCALE_SPLIT_ANGLE(-1.56515395641327), +         SCALE_SPLIT_ANGLE(-1.56516134738922), +         SCALE_SPLIT_ANGLE(-1.56517291069031), +         SCALE_SPLIT_ANGLE(-1.56519162654877), +         SCALE_SPLIT_ANGLE(-1.56520438194275)}, +        {SCALE_SPLIT_ANGLE(-1.56069743633270), +         SCALE_SPLIT_ANGLE(-1.56070363521576), +         SCALE_SPLIT_ANGLE(-1.56071305274963), +         SCALE_SPLIT_ANGLE(-1.56073689460754), +         SCALE_SPLIT_ANGLE(-1.56076002120972), +         SCALE_SPLIT_ANGLE(-1.56079661846161), +         SCALE_SPLIT_ANGLE(-1.56085574626923), +         SCALE_SPLIT_ANGLE(-1.56089639663696)}, +        {SCALE_SPLIT_ANGLE(-1.55270349979401), +         SCALE_SPLIT_ANGLE(-1.55272293090820), +         SCALE_SPLIT_ANGLE(-1.55275249481201), +         SCALE_SPLIT_ANGLE(-1.55282700061798), +         SCALE_SPLIT_ANGLE(-1.55289971828461), +         SCALE_SPLIT_ANGLE(-1.55301535129547), +         SCALE_SPLIT_ANGLE(-1.55320298671722), +         SCALE_SPLIT_ANGLE(-1.55333244800568)}, +        {SCALE_SPLIT_ANGLE(-1.53820896148682), +         SCALE_SPLIT_ANGLE(-1.53826904296875), +         SCALE_SPLIT_ANGLE(-1.53836083412170), +         SCALE_SPLIT_ANGLE(-1.53859269618988), +         SCALE_SPLIT_ANGLE(-1.53882038593292), +         SCALE_SPLIT_ANGLE(-1.53918409347534), +         SCALE_SPLIT_ANGLE(-1.53978025913239), +         SCALE_SPLIT_ANGLE(-1.54019618034363)}, +        {SCALE_SPLIT_ANGLE(-1.51160359382629), +         SCALE_SPLIT_ANGLE(-1.51178681850433), +         SCALE_SPLIT_ANGLE(-1.51206707954407), +         SCALE_SPLIT_ANGLE(-1.51277911663055), +         SCALE_SPLIT_ANGLE(-1.51348364353180), +         SCALE_SPLIT_ANGLE(-1.51462137699127), +         SCALE_SPLIT_ANGLE(-1.51652014255524), +         SCALE_SPLIT_ANGLE(-1.51787149906158)}, +        {SCALE_SPLIT_ANGLE(-1.48564028739929), +         SCALE_SPLIT_ANGLE(-1.48599267005920), +         SCALE_SPLIT_ANGLE(-1.48653328418732), +         SCALE_SPLIT_ANGLE(-1.48791313171387), +         SCALE_SPLIT_ANGLE(-1.48928785324097), +         SCALE_SPLIT_ANGLE(-1.49152994155884), +         SCALE_SPLIT_ANGLE(-1.49533629417419), +         SCALE_SPLIT_ANGLE(-1.49810016155243)}, +        {SCALE_SPLIT_ANGLE(-1.44770431518555), +         SCALE_SPLIT_ANGLE(-1.44837117195129), +         SCALE_SPLIT_ANGLE(-1.44939672946930), +         SCALE_SPLIT_ANGLE(-1.45203149318695), +         SCALE_SPLIT_ANGLE(-1.45468175411224), +         SCALE_SPLIT_ANGLE(-1.45906174182892), +         SCALE_SPLIT_ANGLE(-1.46668362617493), +         SCALE_SPLIT_ANGLE(-1.47238755226135)}, +        {SCALE_SPLIT_ANGLE(-1.39214622974396), +         SCALE_SPLIT_ANGLE(-1.39337480068207), +         SCALE_SPLIT_ANGLE(-1.39527142047882), +         SCALE_SPLIT_ANGLE(-1.40018463134766), +         SCALE_SPLIT_ANGLE(-1.40518975257874), +         SCALE_SPLIT_ANGLE(-1.41361439228058), +         SCALE_SPLIT_ANGLE(-1.42880713939667), +         SCALE_SPLIT_ANGLE(-1.44072234630585)}, +        {SCALE_SPLIT_ANGLE(-1.31133687496185), +         SCALE_SPLIT_ANGLE(-1.31350564956665), +         SCALE_SPLIT_ANGLE(-1.31686961650848), +         SCALE_SPLIT_ANGLE(-1.32567894458771), +         SCALE_SPLIT_ANGLE(-1.33480489253998), +         SCALE_SPLIT_ANGLE(-1.35055565834045), +         SCALE_SPLIT_ANGLE(-1.38048458099365), +         SCALE_SPLIT_ANGLE(-1.40579903125763)}, +        {SCALE_SPLIT_ANGLE(-1.19695889949799), +         SCALE_SPLIT_ANGLE(-1.20052516460419), +         SCALE_SPLIT_ANGLE(-1.20609176158905), +         SCALE_SPLIT_ANGLE(-1.22087824344635), +         SCALE_SPLIT_ANGLE(-1.23654139041901), +         SCALE_SPLIT_ANGLE(-1.26451897621155), +         SCALE_SPLIT_ANGLE(-1.32194638252258), +         SCALE_SPLIT_ANGLE(-1.37709844112396)}, +        {SCALE_SPLIT_ANGLE(-1.09969496726990), +         SCALE_SPLIT_ANGLE(-1.10437369346619), +         SCALE_SPLIT_ANGLE(-1.11171460151672), +         SCALE_SPLIT_ANGLE(-1.13144767284393), +         SCALE_SPLIT_ANGLE(-1.15274536609650), +         SCALE_SPLIT_ANGLE(-1.19192278385162), +         SCALE_SPLIT_ANGLE(-1.27820122241974), +         SCALE_SPLIT_ANGLE(-1.37287354469299)}, +        {SCALE_SPLIT_ANGLE(-0.98739635944366), +         SCALE_SPLIT_ANGLE(-0.99314498901367), +         SCALE_SPLIT_ANGLE(-1.00221848487854), +         SCALE_SPLIT_ANGLE(-1.02694928646088), +         SCALE_SPLIT_ANGLE(-1.05423069000244), +         SCALE_SPLIT_ANGLE(-1.10619938373566), +         SCALE_SPLIT_ANGLE(-1.23116791248322), +         SCALE_SPLIT_ANGLE(-1.39771783351898)}, +        {SCALE_SPLIT_ANGLE(-0.86566168069839), +         SCALE_SPLIT_ANGLE(-0.87219274044037), +         SCALE_SPLIT_ANGLE(-0.88256770372391), +         SCALE_SPLIT_ANGLE(-0.91127198934555), +         SCALE_SPLIT_ANGLE(-0.94370102882385), +         SCALE_SPLIT_ANGLE(-1.00792455673218), +         SCALE_SPLIT_ANGLE(-1.17914199829102), +         SCALE_SPLIT_ANGLE(-1.48121190071106)}, +        {SCALE_SPLIT_ANGLE(-0.74293029308319), +         SCALE_SPLIT_ANGLE(-0.74975663423538), +         SCALE_SPLIT_ANGLE(-0.76066619157791), +         SCALE_SPLIT_ANGLE(-0.79128366708755), +         SCALE_SPLIT_ANGLE(-0.82667875289917), +         SCALE_SPLIT_ANGLE(-0.89952337741852), +         SCALE_SPLIT_ANGLE(-1.11571288108826), +         SCALE_SPLIT_ANGLE(-1.67431199550629)}, +        {SCALE_SPLIT_ANGLE(-0.62761706113815), +         SCALE_SPLIT_ANGLE(-0.63421267271042), +         SCALE_SPLIT_ANGLE(-0.64480352401733), +         SCALE_SPLIT_ANGLE(-0.67486244440079), +         SCALE_SPLIT_ANGLE(-0.71025305986404), +         SCALE_SPLIT_ANGLE(-0.78539818525314), +         SCALE_SPLIT_ANGLE(-1.02937340736389), +         SCALE_SPLIT_ANGLE(-1.92301476001740)}, +        {SCALE_SPLIT_ANGLE(-0.52522456645966), +         SCALE_SPLIT_ANGLE(-0.53118568658829), +         SCALE_SPLIT_ANGLE(-0.54078328609467), +         SCALE_SPLIT_ANGLE(-0.56819742918015), +         SCALE_SPLIT_ANGLE(-0.60080897808075), +         SCALE_SPLIT_ANGLE(-0.67127293348312), +         SCALE_SPLIT_ANGLE(-0.91114157438278), +         SCALE_SPLIT_ANGLE(-1.73398244380951)}, +        {SCALE_SPLIT_ANGLE(-0.43751952052116), +         SCALE_SPLIT_ANGLE(-0.44262495636940), +         SCALE_SPLIT_ANGLE(-0.45084837079048), +         SCALE_SPLIT_ANGLE(-0.47435706853867), +         SCALE_SPLIT_ANGLE(-0.50235128402710), +         SCALE_SPLIT_ANGLE(-0.56287175416946), +         SCALE_SPLIT_ANGLE(-0.76705116033554), +         SCALE_SPLIT_ANGLE(-1.34888231754303)}, +        {SCALE_SPLIT_ANGLE(-0.36364197731018), +         SCALE_SPLIT_ANGLE(-0.36782836914063), +         SCALE_SPLIT_ANGLE(-0.37456014752388), +         SCALE_SPLIT_ANGLE(-0.39372298121452), +         SCALE_SPLIT_ANGLE(-0.41636970639229), +         SCALE_SPLIT_ANGLE(-0.46459695696831), +         SCALE_SPLIT_ANGLE(-0.61803078651428), +         SCALE_SPLIT_ANGLE(-0.96275907754898)}, +        {SCALE_SPLIT_ANGLE(-0.30166232585907), +         SCALE_SPLIT_ANGLE(-0.30497136712074), +         SCALE_SPLIT_ANGLE(-0.31027451157570), +         SCALE_SPLIT_ANGLE(-0.32524627447128), +         SCALE_SPLIT_ANGLE(-0.34269106388092), +         SCALE_SPLIT_ANGLE(-0.37887355685234), +         SCALE_SPLIT_ANGLE(-0.48432540893555), +         SCALE_SPLIT_ANGLE(-0.66878592967987)}, +        {SCALE_SPLIT_ANGLE(-0.24960109591484), +         SCALE_SPLIT_ANGLE(-0.25213342905045), +         SCALE_SPLIT_ANGLE(-0.25617361068726), +         SCALE_SPLIT_ANGLE(-0.26745575666428), +         SCALE_SPLIT_ANGLE(-0.28036275506020), +         SCALE_SPLIT_ANGLE(-0.30627736449242), +         SCALE_SPLIT_ANGLE(-0.37490698695183), +         SCALE_SPLIT_ANGLE(-0.47145301103592)}, +        {SCALE_SPLIT_ANGLE(-0.18661488592625), +         SCALE_SPLIT_ANGLE(-0.18822199106216), +         SCALE_SPLIT_ANGLE(-0.19076594710350), +         SCALE_SPLIT_ANGLE(-0.19773861765862), +         SCALE_SPLIT_ANGLE(-0.20547652244568), +         SCALE_SPLIT_ANGLE(-0.22024063766003), +         SCALE_SPLIT_ANGLE(-0.25452125072479), +         SCALE_SPLIT_ANGLE(-0.29236793518066)}, +        {SCALE_SPLIT_ANGLE(-0.13821771740913), +         SCALE_SPLIT_ANGLE(-0.13918289542198), +         SCALE_SPLIT_ANGLE(-0.14069861173630), +         SCALE_SPLIT_ANGLE(-0.14477686583996), +         SCALE_SPLIT_ANGLE(-0.14917232096195), +         SCALE_SPLIT_ANGLE(-0.15718193352222), +         SCALE_SPLIT_ANGLE(-0.17394064366817), +         SCALE_SPLIT_ANGLE(-0.18971265852451)}, +        {SCALE_SPLIT_ANGLE(-0.10140904784203), +         SCALE_SPLIT_ANGLE(-0.10196315497160), +         SCALE_SPLIT_ANGLE(-0.10282710194588), +         SCALE_SPLIT_ANGLE(-0.10511382669210), +         SCALE_SPLIT_ANGLE(-0.10751703381538), +         SCALE_SPLIT_ANGLE(-0.11173453181982), +         SCALE_SPLIT_ANGLE(-0.11990433931351), +         SCALE_SPLIT_ANGLE(-0.12683042883873)}, +        {SCALE_SPLIT_ANGLE(-0.07378087192774), +         SCALE_SPLIT_ANGLE(-0.07408788800240), +         SCALE_SPLIT_ANGLE(-0.07456368207932), +         SCALE_SPLIT_ANGLE(-0.07580613344908), +         SCALE_SPLIT_ANGLE(-0.07708552479744), +         SCALE_SPLIT_ANGLE(-0.07926639169455), +         SCALE_SPLIT_ANGLE(-0.08326309919357), +         SCALE_SPLIT_ANGLE(-0.08642497658730)}, +        {SCALE_SPLIT_ANGLE(-0.05331044271588), +         SCALE_SPLIT_ANGLE(-0.05347600579262), +         SCALE_SPLIT_ANGLE(-0.05373133346438), +         SCALE_SPLIT_ANGLE(-0.05439101532102), +         SCALE_SPLIT_ANGLE(-0.05505971238017), +         SCALE_SPLIT_ANGLE(-0.05617496743798), +         SCALE_SPLIT_ANGLE(-0.05813983827829), +         SCALE_SPLIT_ANGLE(-0.05962376296520)}, +        {SCALE_SPLIT_ANGLE(-0.03066622652113), +         SCALE_SPLIT_ANGLE(-0.03072291985154), +         SCALE_SPLIT_ANGLE(-0.03080986253917), +         SCALE_SPLIT_ANGLE(-0.03103173524141), +         SCALE_SPLIT_ANGLE(-0.03125262632966), +         SCALE_SPLIT_ANGLE(-0.03161224350333), +         SCALE_SPLIT_ANGLE(-0.03221990913153), +         SCALE_SPLIT_ANGLE(-0.03265778720379)}, +        {SCALE_SPLIT_ANGLE(-0.01747439615428), +         SCALE_SPLIT_ANGLE(-0.01749316416681), +         SCALE_SPLIT_ANGLE(-0.01752184517682), +         SCALE_SPLIT_ANGLE(-0.01759449020028), +         SCALE_SPLIT_ANGLE(-0.01766604930162), +         SCALE_SPLIT_ANGLE(-0.01778092049062), +         SCALE_SPLIT_ANGLE(-0.01797054335475), +         SCALE_SPLIT_ANGLE(-0.01810375973582)}, +        {SCALE_SPLIT_ANGLE(-0.00990140344948), +         SCALE_SPLIT_ANGLE(-0.00990749336779), +         SCALE_SPLIT_ANGLE(-0.00991678331047), +         SCALE_SPLIT_ANGLE(-0.00994021166116), +         SCALE_SPLIT_ANGLE(-0.00996314454824), +         SCALE_SPLIT_ANGLE(-0.00999966636300), +         SCALE_SPLIT_ANGLE(-0.01005917042494), +         SCALE_SPLIT_ANGLE(-0.01010039448738)}, +        {SCALE_SPLIT_ANGLE(-0.00559204118326), +         SCALE_SPLIT_ANGLE(-0.00559399509802), +         SCALE_SPLIT_ANGLE(-0.00559697346762), +         SCALE_SPLIT_ANGLE(-0.00560446362942), +         SCALE_SPLIT_ANGLE(-0.00561177125201), +         SCALE_SPLIT_ANGLE(-0.00562335411087), +         SCALE_SPLIT_ANGLE(-0.00564208766446), +         SCALE_SPLIT_ANGLE(-0.00565496599302)}, +        {SCALE_SPLIT_ANGLE(-0.00000003162278), +         SCALE_SPLIT_ANGLE(-0.00000003162278), +         SCALE_SPLIT_ANGLE(-0.00000003162278), +         SCALE_SPLIT_ANGLE(-0.00000003162278), +         SCALE_SPLIT_ANGLE(-0.00000003162278), +         SCALE_SPLIT_ANGLE(-0.00000003162278), +         SCALE_SPLIT_ANGLE(-0.00000003162278), +         SCALE_SPLIT_ANGLE(-0.00000003162278)}, +    }, +    { +        {SCALE_SPLIT_ANGLE(-1.17809700965881), +         SCALE_SPLIT_ANGLE(-1.17809700965881), +         SCALE_SPLIT_ANGLE(-1.17809700965881), +         SCALE_SPLIT_ANGLE(-1.17809700965881), +         SCALE_SPLIT_ANGLE(-1.17809700965881), +         SCALE_SPLIT_ANGLE(-1.17809700965881), +         SCALE_SPLIT_ANGLE(-1.17809700965881), +         SCALE_SPLIT_ANGLE(-1.17809700965881)}, +        {SCALE_SPLIT_ANGLE(-1.17289507389069), +         SCALE_SPLIT_ANGLE(-1.17289614677429), +         SCALE_SPLIT_ANGLE(-1.17289793491364), +         SCALE_SPLIT_ANGLE(-1.17290210723877), +         SCALE_SPLIT_ANGLE(-1.17290627956390), +         SCALE_SPLIT_ANGLE(-1.17291295528412), +         SCALE_SPLIT_ANGLE(-1.17292356491089), +         SCALE_SPLIT_ANGLE(-1.17293083667755)}, +        {SCALE_SPLIT_ANGLE(-1.16883778572083), +         SCALE_SPLIT_ANGLE(-1.16884136199951), +         SCALE_SPLIT_ANGLE(-1.16884660720825), +         SCALE_SPLIT_ANGLE(-1.16885995864868), +         SCALE_SPLIT_ANGLE(-1.16887307167053), +         SCALE_SPLIT_ANGLE(-1.16889369487762), +         SCALE_SPLIT_ANGLE(-1.16892731189728), +         SCALE_SPLIT_ANGLE(-1.16895043849945)}, +        {SCALE_SPLIT_ANGLE(-1.16160643100739), +         SCALE_SPLIT_ANGLE(-1.16161715984344), +         SCALE_SPLIT_ANGLE(-1.16163349151611), +         SCALE_SPLIT_ANGLE(-1.16167497634888), +         SCALE_SPLIT_ANGLE(-1.16171550750732), +         SCALE_SPLIT_ANGLE(-1.16178035736084), +         SCALE_SPLIT_ANGLE(-1.16188645362854), +         SCALE_SPLIT_ANGLE(-1.16196036338806)}, +        {SCALE_SPLIT_ANGLE(-1.14870381355286), +         SCALE_SPLIT_ANGLE(-1.14873635768890), +         SCALE_SPLIT_ANGLE(-1.14878606796265), +         SCALE_SPLIT_ANGLE(-1.14891242980957), +         SCALE_SPLIT_ANGLE(-1.14903736114502), +         SCALE_SPLIT_ANGLE(-1.14923870563507), +         SCALE_SPLIT_ANGLE(-1.14957380294800), +         SCALE_SPLIT_ANGLE(-1.14981114864349)}, +        {SCALE_SPLIT_ANGLE(-1.12567472457886), +         SCALE_SPLIT_ANGLE(-1.12576985359192), +         SCALE_SPLIT_ANGLE(-1.12591588497162), +         SCALE_SPLIT_ANGLE(-1.12629044055939), +         SCALE_SPLIT_ANGLE(-1.12666571140289), +         SCALE_SPLIT_ANGLE(-1.12728178501129), +         SCALE_SPLIT_ANGLE(-1.12833738327026), +         SCALE_SPLIT_ANGLE(-1.12910985946655)}, +        {SCALE_SPLIT_ANGLE(-1.10394370555878), +         SCALE_SPLIT_ANGLE(-1.10411989688873), +         SCALE_SPLIT_ANGLE(-1.10439169406891), +         SCALE_SPLIT_ANGLE(-1.10509419441223), +         SCALE_SPLIT_ANGLE(-1.10580670833588), +         SCALE_SPLIT_ANGLE(-1.10699570178986), +         SCALE_SPLIT_ANGLE(-1.10909187793732), +         SCALE_SPLIT_ANGLE(-1.11067557334900)}, +        {SCALE_SPLIT_ANGLE(-1.07335841655731), +         SCALE_SPLIT_ANGLE(-1.07367491722107), +         SCALE_SPLIT_ANGLE(-1.07416582107544), +         SCALE_SPLIT_ANGLE(-1.07544875144959), +         SCALE_SPLIT_ANGLE(-1.07677149772644), +         SCALE_SPLIT_ANGLE(-1.07902920246124), +         SCALE_SPLIT_ANGLE(-1.08317422866821), +         SCALE_SPLIT_ANGLE(-1.08645880222321)}, +        {SCALE_SPLIT_ANGLE(-1.03070914745331), +         SCALE_SPLIT_ANGLE(-1.03125369548798), +         SCALE_SPLIT_ANGLE(-1.03210353851318), +         SCALE_SPLIT_ANGLE(-1.03435730934143), +         SCALE_SPLIT_ANGLE(-1.03673195838928), +         SCALE_SPLIT_ANGLE(-1.04091215133667), +         SCALE_SPLIT_ANGLE(-1.04904508590698), +         SCALE_SPLIT_ANGLE(-1.05597043037415)}, +        {SCALE_SPLIT_ANGLE(-0.97233015298843), +         SCALE_SPLIT_ANGLE(-0.97321158647537), +         SCALE_SPLIT_ANGLE(-0.97459846735001), +         SCALE_SPLIT_ANGLE(-0.97834426164627), +         SCALE_SPLIT_ANGLE(-0.98240232467651), +         SCALE_SPLIT_ANGLE(-0.98984342813492), +         SCALE_SPLIT_ANGLE(-1.00556397438049), +         SCALE_SPLIT_ANGLE(-1.02053022384644)}, +        {SCALE_SPLIT_ANGLE(-0.89506632089615), +         SCALE_SPLIT_ANGLE(-0.89638078212738), +         SCALE_SPLIT_ANGLE(-0.89846837520599), +         SCALE_SPLIT_ANGLE(-0.90423023700714), +         SCALE_SPLIT_ANGLE(-0.91068559885025), +         SCALE_SPLIT_ANGLE(-0.92315053939819), +         SCALE_SPLIT_ANGLE(-0.95268231630325), +         SCALE_SPLIT_ANGLE(-0.98626488447189)}, +        {SCALE_SPLIT_ANGLE(-0.83257317543030), +         SCALE_SPLIT_ANGLE(-0.83419388532639), +         SCALE_SPLIT_ANGLE(-0.83678513765335), +         SCALE_SPLIT_ANGLE(-0.84404873847961), +         SCALE_SPLIT_ANGLE(-0.85238862037659), +         SCALE_SPLIT_ANGLE(-0.86914104223251), +         SCALE_SPLIT_ANGLE(-0.91285753250122), +         SCALE_SPLIT_ANGLE(-0.97222834825516)}, +        {SCALE_SPLIT_ANGLE(-0.76227325201035), +         SCALE_SPLIT_ANGLE(-0.76417011022568), +         SCALE_SPLIT_ANGLE(-0.76722222566605), +         SCALE_SPLIT_ANGLE(-0.77590954303741), +         SCALE_SPLIT_ANGLE(-0.78613209724426), +         SCALE_SPLIT_ANGLE(-0.80752629041672), +         SCALE_SPLIT_ANGLE(-0.86987817287445), +         SCALE_SPLIT_ANGLE(-0.97863042354584)}, +        {SCALE_SPLIT_ANGLE(-0.68631613254547), +         SCALE_SPLIT_ANGLE(-0.68841677904129), +         SCALE_SPLIT_ANGLE(-0.69181627035141), +         SCALE_SPLIT_ANGLE(-0.70162516832352), +         SCALE_SPLIT_ANGLE(-0.71342802047729), +         SCALE_SPLIT_ANGLE(-0.73910319805145), +         SCALE_SPLIT_ANGLE(-0.82307589054108), +         SCALE_SPLIT_ANGLE(-1.03222990036011)}, +        {SCALE_SPLIT_ANGLE(-0.60781323909760), +         SCALE_SPLIT_ANGLE(-0.61001539230347), +         SCALE_SPLIT_ANGLE(-0.61359477043152), +         SCALE_SPLIT_ANGLE(-0.62403184175491), +         SCALE_SPLIT_ANGLE(-0.63681107759476), +         SCALE_SPLIT_ANGLE(-0.66548812389374), +         SCALE_SPLIT_ANGLE(-0.76931124925613), +         SCALE_SPLIT_ANGLE(-1.19638121128082)}, +        {SCALE_SPLIT_ANGLE(-0.53021627664566), +         SCALE_SPLIT_ANGLE(-0.53240883350372), +         SCALE_SPLIT_ANGLE(-0.53598141670227), +         SCALE_SPLIT_ANGLE(-0.54646164178848), +         SCALE_SPLIT_ANGLE(-0.55942356586456), +         SCALE_SPLIT_ANGLE(-0.58904850482941), +         SCALE_SPLIT_ANGLE(-0.70326185226440), +         SCALE_SPLIT_ANGLE(-1.46822547912598)}, +        {SCALE_SPLIT_ANGLE(-0.45655792951584), +         SCALE_SPLIT_ANGLE(-0.45864021778107), +         SCALE_SPLIT_ANGLE(-0.46203425526619), +         SCALE_SPLIT_ANGLE(-0.47199884057045), +         SCALE_SPLIT_ANGLE(-0.48433950543404), +         SCALE_SPLIT_ANGLE(-0.51260894536972), +         SCALE_SPLIT_ANGLE(-0.62212854623795), +         SCALE_SPLIT_ANGLE(-1.20720005035400)}, +        {SCALE_SPLIT_ANGLE(-0.38893285393715), +         SCALE_SPLIT_ANGLE(-0.39082619547844), +         SCALE_SPLIT_ANGLE(-0.39390665292740), +         SCALE_SPLIT_ANGLE(-0.40291139483452), +         SCALE_SPLIT_ANGLE(-0.41398155689240), +         SCALE_SPLIT_ANGLE(-0.43899381160736), +         SCALE_SPLIT_ANGLE(-0.53091597557068), +         SCALE_SPLIT_ANGLE(-0.85221308469772)}, +        {SCALE_SPLIT_ANGLE(-0.32840180397034), +         SCALE_SPLIT_ANGLE(-0.33005377650261), +         SCALE_SPLIT_ANGLE(-0.33273178339005), +         SCALE_SPLIT_ANGLE(-0.34049153327942), +         SCALE_SPLIT_ANGLE(-0.34989196062088), +         SCALE_SPLIT_ANGLE(-0.37057077884674), +         SCALE_SPLIT_ANGLE(-0.43990370631218), +         SCALE_SPLIT_ANGLE(-0.60593050718307)}, +        {SCALE_SPLIT_ANGLE(-0.27521026134491), +         SCALE_SPLIT_ANGLE(-0.27659529447556), +         SCALE_SPLIT_ANGLE(-0.27882954478264), +         SCALE_SPLIT_ANGLE(-0.28522571921349), +         SCALE_SPLIT_ANGLE(-0.29282191395760), +         SCALE_SPLIT_ANGLE(-0.30895599722862), +         SCALE_SPLIT_ANGLE(-0.35752710700035), +         SCALE_SPLIT_ANGLE(-0.44366964697838)}, +        {SCALE_SPLIT_ANGLE(-0.22909800708294), +         SCALE_SPLIT_ANGLE(-0.23021571338177), +         SCALE_SPLIT_ANGLE(-0.23200808465481), +         SCALE_SPLIT_ANGLE(-0.23706813156605), +         SCALE_SPLIT_ANGLE(-0.24294249713421), +         SCALE_SPLIT_ANGLE(-0.25494650006294), +         SCALE_SPLIT_ANGLE(-0.28743270039558), +         SCALE_SPLIT_ANGLE(-0.33326250314713)}, +        {SCALE_SPLIT_ANGLE(-0.17204396426678), +         SCALE_SPLIT_ANGLE(-0.17280194163322), +         SCALE_SPLIT_ANGLE(-0.17400610446930), +         SCALE_SPLIT_ANGLE(-0.17733126878738), +         SCALE_SPLIT_ANGLE(-0.18105843663216), +         SCALE_SPLIT_ANGLE(-0.18825362622738), +         SCALE_SPLIT_ANGLE(-0.20519737899303), +         SCALE_SPLIT_ANGLE(-0.22397245466709)}, +        {SCALE_SPLIT_ANGLE(-0.12763081490994), +         SCALE_SPLIT_ANGLE(-0.12810991704464), +         SCALE_SPLIT_ANGLE(-0.12886415421963), +         SCALE_SPLIT_ANGLE(-0.13090406358242), +         SCALE_SPLIT_ANGLE(-0.13311786949635), +         SCALE_SPLIT_ANGLE(-0.13718487322330), +         SCALE_SPLIT_ANGLE(-0.14578334987164), +         SCALE_SPLIT_ANGLE(-0.15392091870308)}, +        {SCALE_SPLIT_ANGLE(-0.09368772059679), +         SCALE_SPLIT_ANGLE(-0.09397349506617), +         SCALE_SPLIT_ANGLE(-0.09441984444857), +         SCALE_SPLIT_ANGLE(-0.09560552984476), +         SCALE_SPLIT_ANGLE(-0.09685768932104), +         SCALE_SPLIT_ANGLE(-0.09906788170338), +         SCALE_SPLIT_ANGLE(-0.10338337719440), +         SCALE_SPLIT_ANGLE(-0.10706327110529)}, +        {SCALE_SPLIT_ANGLE(-0.06817039847374), +         SCALE_SPLIT_ANGLE(-0.06833326816559), +         SCALE_SPLIT_ANGLE(-0.06858597695827), +         SCALE_SPLIT_ANGLE(-0.06924756616354), +         SCALE_SPLIT_ANGLE(-0.06993118673563), +         SCALE_SPLIT_ANGLE(-0.07110133022070), +         SCALE_SPLIT_ANGLE(-0.07325870543718), +         SCALE_SPLIT_ANGLE(-0.07497420907021)}, +        {SCALE_SPLIT_ANGLE(-0.04925632849336), +         SCALE_SPLIT_ANGLE(-0.04934597387910), +         SCALE_SPLIT_ANGLE(-0.04948435723782), +         SCALE_SPLIT_ANGLE(-0.04984252154827), +         SCALE_SPLIT_ANGLE(-0.05020647123456), +         SCALE_SPLIT_ANGLE(-0.05081529170275), +         SCALE_SPLIT_ANGLE(-0.05189274996519), +         SCALE_SPLIT_ANGLE(-0.05270983278751)}, +        {SCALE_SPLIT_ANGLE(-0.02833298221231), +         SCALE_SPLIT_ANGLE(-0.02836437523365), +         SCALE_SPLIT_ANGLE(-0.02841254323721), +         SCALE_SPLIT_ANGLE(-0.02853557653725), +         SCALE_SPLIT_ANGLE(-0.02865824848413), +         SCALE_SPLIT_ANGLE(-0.02885829471052), +         SCALE_SPLIT_ANGLE(-0.02919723838568), +         SCALE_SPLIT_ANGLE(-0.02944211103022)}, +        {SCALE_SPLIT_ANGLE(-0.01614447496831), +         SCALE_SPLIT_ANGLE(-0.01615499891341), +         SCALE_SPLIT_ANGLE(-0.01617108844221), +         SCALE_SPLIT_ANGLE(-0.01621186546981), +         SCALE_SPLIT_ANGLE(-0.01625206507742), +         SCALE_SPLIT_ANGLE(-0.01631666161120), +         SCALE_SPLIT_ANGLE(-0.01642346009612), +         SCALE_SPLIT_ANGLE(-0.01649860478938)}, +        {SCALE_SPLIT_ANGLE(-0.00914774928242), +         SCALE_SPLIT_ANGLE(-0.00915119051933), +         SCALE_SPLIT_ANGLE(-0.00915643945336), +         SCALE_SPLIT_ANGLE(-0.00916968192905), +         SCALE_SPLIT_ANGLE(-0.00918265059590), +         SCALE_SPLIT_ANGLE(-0.00920331384987), +         SCALE_SPLIT_ANGLE(-0.00923701003194), +         SCALE_SPLIT_ANGLE(-0.00926037784666)}, +        {SCALE_SPLIT_ANGLE(-0.00516638066620), +         SCALE_SPLIT_ANGLE(-0.00516748940572), +         SCALE_SPLIT_ANGLE(-0.00516917882487), +         SCALE_SPLIT_ANGLE(-0.00517342938110), +         SCALE_SPLIT_ANGLE(-0.00517757609487), +         SCALE_SPLIT_ANGLE(-0.00518415309489), +         SCALE_SPLIT_ANGLE(-0.00519479531795), +         SCALE_SPLIT_ANGLE(-0.00520211551338)}, +        {SCALE_SPLIT_ANGLE(-0.00000002921563), +         SCALE_SPLIT_ANGLE(-0.00000002921563), +         SCALE_SPLIT_ANGLE(-0.00000002921563), +         SCALE_SPLIT_ANGLE(-0.00000002921563), +         SCALE_SPLIT_ANGLE(-0.00000002921563), +         SCALE_SPLIT_ANGLE(-0.00000002921563), +         SCALE_SPLIT_ANGLE(-0.00000002921563), +         SCALE_SPLIT_ANGLE(-0.00000002921563)}, +    }, +    { +        {SCALE_SPLIT_ANGLE(-0.78539830446243), +         SCALE_SPLIT_ANGLE(-0.78539830446243), +         SCALE_SPLIT_ANGLE(-0.78539830446243), +         SCALE_SPLIT_ANGLE(-0.78539830446243), +         SCALE_SPLIT_ANGLE(-0.78539830446243), +         SCALE_SPLIT_ANGLE(-0.78539830446243), +         SCALE_SPLIT_ANGLE(-0.78539830446243), +         SCALE_SPLIT_ANGLE(-0.78539830446243)}, +        {SCALE_SPLIT_ANGLE(-0.78143131732941), +         SCALE_SPLIT_ANGLE(-0.78143173456192), +         SCALE_SPLIT_ANGLE(-0.78143233060837), +         SCALE_SPLIT_ANGLE(-0.78143388032913), +         SCALE_SPLIT_ANGLE(-0.78143537044525), +         SCALE_SPLIT_ANGLE(-0.78143775463104), +         SCALE_SPLIT_ANGLE(-0.78144156932831), +         SCALE_SPLIT_ANGLE(-0.78144425153732)}, +        {SCALE_SPLIT_ANGLE(-0.77835690975189), +         SCALE_SPLIT_ANGLE(-0.77835816144943), +         SCALE_SPLIT_ANGLE(-0.77836006879807), +         SCALE_SPLIT_ANGLE(-0.77836489677429), +         SCALE_SPLIT_ANGLE(-0.77836954593658), +         SCALE_SPLIT_ANGLE(-0.77837705612183), +         SCALE_SPLIT_ANGLE(-0.77838915586472), +         SCALE_SPLIT_ANGLE(-0.77839756011963)}, +        {SCALE_SPLIT_ANGLE(-0.77291876077652), +         SCALE_SPLIT_ANGLE(-0.77292257547379), +         SCALE_SPLIT_ANGLE(-0.77292835712433), +         SCALE_SPLIT_ANGLE(-0.77294307947159), +         SCALE_SPLIT_ANGLE(-0.77295756340027), +         SCALE_SPLIT_ANGLE(-0.77298080921173), +         SCALE_SPLIT_ANGLE(-0.77301901578903), +         SCALE_SPLIT_ANGLE(-0.77304589748383)}, +        {SCALE_SPLIT_ANGLE(-0.76334208250046), +         SCALE_SPLIT_ANGLE(-0.76335340738297), +         SCALE_SPLIT_ANGLE(-0.76337069272995), +         SCALE_SPLIT_ANGLE(-0.76341491937637), +         SCALE_SPLIT_ANGLE(-0.76345884799957), +         SCALE_SPLIT_ANGLE(-0.76353019475937), +         SCALE_SPLIT_ANGLE(-0.76365041732788), +         SCALE_SPLIT_ANGLE(-0.76373666524887)}, +        {SCALE_SPLIT_ANGLE(-0.74662196636200), +         SCALE_SPLIT_ANGLE(-0.74665397405624), +         SCALE_SPLIT_ANGLE(-0.74670332670212), +         SCALE_SPLIT_ANGLE(-0.74683076143265), +         SCALE_SPLIT_ANGLE(-0.74695968627930), +         SCALE_SPLIT_ANGLE(-0.74717408418655), +         SCALE_SPLIT_ANGLE(-0.74754965305328), +         SCALE_SPLIT_ANGLE(-0.74783110618591)}, +        {SCALE_SPLIT_ANGLE(-0.73124068975449), +         SCALE_SPLIT_ANGLE(-0.73129838705063), +         SCALE_SPLIT_ANGLE(-0.73138779401779), +         SCALE_SPLIT_ANGLE(-0.73162090778351), +         SCALE_SPLIT_ANGLE(-0.73186063766479), +         SCALE_SPLIT_ANGLE(-0.73226791620255), +         SCALE_SPLIT_ANGLE(-0.73300850391388), +         SCALE_SPLIT_ANGLE(-0.73358756303787)}, +        {SCALE_SPLIT_ANGLE(-0.71016567945480), +         SCALE_SPLIT_ANGLE(-0.71026563644409), +         SCALE_SPLIT_ANGLE(-0.71042138338089), +         SCALE_SPLIT_ANGLE(-0.71083360910416), +         SCALE_SPLIT_ANGLE(-0.71126639842987), +         SCALE_SPLIT_ANGLE(-0.71202349662781), +         SCALE_SPLIT_ANGLE(-0.71347558498383), +         SCALE_SPLIT_ANGLE(-0.71468466520309)}, +        {SCALE_SPLIT_ANGLE(-0.68173074722290), +         SCALE_SPLIT_ANGLE(-0.68189489841461), +         SCALE_SPLIT_ANGLE(-0.68215286731720), +         SCALE_SPLIT_ANGLE(-0.68284797668457), +         SCALE_SPLIT_ANGLE(-0.68359792232513), +         SCALE_SPLIT_ANGLE(-0.68496227264404), +         SCALE_SPLIT_ANGLE(-0.68778377771378), +         SCALE_SPLIT_ANGLE(-0.69036662578583)}, +        {SCALE_SPLIT_ANGLE(-0.64424312114716), +         SCALE_SPLIT_ANGLE(-0.64449483156204), +         SCALE_SPLIT_ANGLE(-0.64489442110062), +         SCALE_SPLIT_ANGLE(-0.64599496126175), +         SCALE_SPLIT_ANGLE(-0.64722281694412), +         SCALE_SPLIT_ANGLE(-0.64957284927368), +         SCALE_SPLIT_ANGLE(-0.65497392416000), +         SCALE_SPLIT_ANGLE(-0.66069275140762)}, +        {SCALE_SPLIT_ANGLE(-0.59645897150040), +         SCALE_SPLIT_ANGLE(-0.59681385755539), +         SCALE_SPLIT_ANGLE(-0.59738302230835), +         SCALE_SPLIT_ANGLE(-0.59898990392685), +         SCALE_SPLIT_ANGLE(-0.60085391998291), +         SCALE_SPLIT_ANGLE(-0.60464876890182), +         SCALE_SPLIT_ANGLE(-0.61471670866013), +         SCALE_SPLIT_ANGLE(-0.62811452150345)}, +        {SCALE_SPLIT_ANGLE(-0.55878317356110), +         SCALE_SPLIT_ANGLE(-0.55920612812042), +         SCALE_SPLIT_ANGLE(-0.55988919734955), +         SCALE_SPLIT_ANGLE(-0.56185036897659), +         SCALE_SPLIT_ANGLE(-0.56418758630753), +         SCALE_SPLIT_ANGLE(-0.56916558742523), +         SCALE_SPLIT_ANGLE(-0.58402240276337), +         SCALE_SPLIT_ANGLE(-0.60877454280853)}, +        {SCALE_SPLIT_ANGLE(-0.51690876483917), +         SCALE_SPLIT_ANGLE(-0.51739066839218), +         SCALE_SPLIT_ANGLE(-0.51817417144775), +         SCALE_SPLIT_ANGLE(-0.52045887708664), +         SCALE_SPLIT_ANGLE(-0.52325236797333), +         SCALE_SPLIT_ANGLE(-0.52947425842285), +         SCALE_SPLIT_ANGLE(-0.55062580108643), +         SCALE_SPLIT_ANGLE(-0.59875679016113)}, +        {SCALE_SPLIT_ANGLE(-0.47171202301979), +         SCALE_SPLIT_ANGLE(-0.47223755717278), +         SCALE_SPLIT_ANGLE(-0.47309651970863), +         SCALE_SPLIT_ANGLE(-0.47563409805298), +         SCALE_SPLIT_ANGLE(-0.47880497574806), +         SCALE_SPLIT_ANGLE(-0.48615178465843), +         SCALE_SPLIT_ANGLE(-0.51456993818283), +         SCALE_SPLIT_ANGLE(-0.61478376388550)}, +        {SCALE_SPLIT_ANGLE(-0.42445346713066), +         SCALE_SPLIT_ANGLE(-0.42500337958336), +         SCALE_SPLIT_ANGLE(-0.42590552568436), +         SCALE_SPLIT_ANGLE(-0.42859482765198), +         SCALE_SPLIT_ANGLE(-0.43200704455376), +         SCALE_SPLIT_ANGLE(-0.44014206528664), +         SCALE_SPLIT_ANGLE(-0.47505456209183), +         SCALE_SPLIT_ANGLE(-0.70435559749603)}, +        {SCALE_SPLIT_ANGLE(-0.37662348151207), +         SCALE_SPLIT_ANGLE(-0.37717759609222), +         SCALE_SPLIT_ANGLE(-0.37808811664581), +         SCALE_SPLIT_ANGLE(-0.38081312179565), +         SCALE_SPLIT_ANGLE(-0.38429382443428), +         SCALE_SPLIT_ANGLE(-0.39269915223122), +         SCALE_SPLIT_ANGLE(-0.43061137199402), +         SCALE_SPLIT_ANGLE(-0.89949661493301)}, +        {SCALE_SPLIT_ANGLE(-0.32972770929337), +         SCALE_SPLIT_ANGLE(-0.33026665449142), +         SCALE_SPLIT_ANGLE(-0.33115166425705), +         SCALE_SPLIT_ANGLE(-0.33379596471786), +         SCALE_SPLIT_ANGLE(-0.33716449141502), +         SCALE_SPLIT_ANGLE(-0.34525626897812), +         SCALE_SPLIT_ANGLE(-0.38098806142807), +         SCALE_SPLIT_ANGLE(-0.66312354803085)}, +        {SCALE_SPLIT_ANGLE(-0.28508266806602), +         SCALE_SPLIT_ANGLE(-0.28558865189552), +         SCALE_SPLIT_ANGLE(-0.28641721606255), +         SCALE_SPLIT_ANGLE(-0.28887599706650), +         SCALE_SPLIT_ANGLE(-0.29197183251381), +         SCALE_SPLIT_ANGLE(-0.29924651980400), +         SCALE_SPLIT_ANGLE(-0.32879725098610), +         SCALE_SPLIT_ANGLE(-0.45467042922974)}, +        {SCALE_SPLIT_ANGLE(-0.24368351697922), +         SCALE_SPLIT_ANGLE(-0.24414126574993), +         SCALE_SPLIT_ANGLE(-0.24488742649555), +         SCALE_SPLIT_ANGLE(-0.24707718193531), +         SCALE_SPLIT_ANGLE(-0.24978290498257), +         SCALE_SPLIT_ANGLE(-0.25592407584190), +         SCALE_SPLIT_ANGLE(-0.27806493639946), +         SCALE_SPLIT_ANGLE(-0.33706212043762)}, +        {SCALE_SPLIT_ANGLE(-0.20616291463375), +         SCALE_SPLIT_ANGLE(-0.20656123757362), +         SCALE_SPLIT_ANGLE(-0.20720669627190), +         SCALE_SPLIT_ANGLE(-0.20907410979271), +         SCALE_SPLIT_ANGLE(-0.21132779121399), +         SCALE_SPLIT_ANGLE(-0.21623276174068), +         SCALE_SPLIT_ANGLE(-0.23178002238274), +         SCALE_SPLIT_ANGLE(-0.26115795969963)}, +        {SCALE_SPLIT_ANGLE(-0.17282113432884), +         SCALE_SPLIT_ANGLE(-0.17315419018269), +         SCALE_SPLIT_ANGLE(-0.17369027435780), +         SCALE_SPLIT_ANGLE(-0.17521676421165), +         SCALE_SPLIT_ANGLE(-0.17701183259487), +         SCALE_SPLIT_ANGLE(-0.18074958026409), +         SCALE_SPLIT_ANGLE(-0.19124273955822), +         SCALE_SPLIT_ANGLE(-0.20666226744652)}, +        {SCALE_SPLIT_ANGLE(-0.13066087663174), +         SCALE_SPLIT_ANGLE(-0.13089761137962), +         SCALE_SPLIT_ANGLE(-0.13127478957176), +         SCALE_SPLIT_ANGLE(-0.13232274353504), +         SCALE_SPLIT_ANGLE(-0.13350811600685), +         SCALE_SPLIT_ANGLE(-0.13582547008991), +         SCALE_SPLIT_ANGLE(-0.14140743017197), +         SCALE_SPLIT_ANGLE(-0.14774034917355)}, +        {SCALE_SPLIT_ANGLE(-0.09729288518429), +         SCALE_SPLIT_ANGLE(-0.09744837880135), +         SCALE_SPLIT_ANGLE(-0.09769365936518), +         SCALE_SPLIT_ANGLE(-0.09835996478796), +         SCALE_SPLIT_ANGLE(-0.09908770024776), +         SCALE_SPLIT_ANGLE(-0.10043605417013), +         SCALE_SPLIT_ANGLE(-0.10332851856947), +         SCALE_SPLIT_ANGLE(-0.10610698908567)}, +        {SCALE_SPLIT_ANGLE(-0.07155896723270), +         SCALE_SPLIT_ANGLE(-0.07165452837944), +         SCALE_SPLIT_ANGLE(-0.07180399447680), +         SCALE_SPLIT_ANGLE(-0.07220225781202), +         SCALE_SPLIT_ANGLE(-0.07262473553419), +         SCALE_SPLIT_ANGLE(-0.07337480783463), +         SCALE_SPLIT_ANGLE(-0.07485358417034), +         SCALE_SPLIT_ANGLE(-0.07612710446119)}, +        {SCALE_SPLIT_ANGLE(-0.05212157964706), +         SCALE_SPLIT_ANGLE(-0.05217728391290), +         SCALE_SPLIT_ANGLE(-0.05226380378008), +         SCALE_SPLIT_ANGLE(-0.05249079316854), +         SCALE_SPLIT_ANGLE(-0.05272606760263), +         SCALE_SPLIT_ANGLE(-0.05313043296337), +         SCALE_SPLIT_ANGLE(-0.05388086661696), +         SCALE_SPLIT_ANGLE(-0.05448163300753)}, +        {SCALE_SPLIT_ANGLE(-0.03767966106534), +         SCALE_SPLIT_ANGLE(-0.03771083801985), +         SCALE_SPLIT_ANGLE(-0.03775899857283), +         SCALE_SPLIT_ANGLE(-0.03788383677602), +         SCALE_SPLIT_ANGLE(-0.03801096975803), +         SCALE_SPLIT_ANGLE(-0.03822424262762), +         SCALE_SPLIT_ANGLE(-0.03860339894891), +         SCALE_SPLIT_ANGLE(-0.03889227285981)}, +        {SCALE_SPLIT_ANGLE(-0.02168159000576), +         SCALE_SPLIT_ANGLE(-0.02169271185994), +         SCALE_SPLIT_ANGLE(-0.02170977741480), +         SCALE_SPLIT_ANGLE(-0.02175341919065), +         SCALE_SPLIT_ANGLE(-0.02179697901011), +         SCALE_SPLIT_ANGLE(-0.02186813205481), +         SCALE_SPLIT_ANGLE(-0.02198898792267), +         SCALE_SPLIT_ANGLE(-0.02207653038204)}, +        {SCALE_SPLIT_ANGLE(-0.01235581189394), +         SCALE_SPLIT_ANGLE(-0.01235958002508), +         SCALE_SPLIT_ANGLE(-0.01236534304917), +         SCALE_SPLIT_ANGLE(-0.01237995456904), +         SCALE_SPLIT_ANGLE(-0.01239436771721), +         SCALE_SPLIT_ANGLE(-0.01241754833609), +         SCALE_SPLIT_ANGLE(-0.01245592441410), +         SCALE_SPLIT_ANGLE(-0.01248297002167)}, +        {SCALE_SPLIT_ANGLE(-0.00700127193704), +         SCALE_SPLIT_ANGLE(-0.00700251199305), +         SCALE_SPLIT_ANGLE(-0.00700440304354), +         SCALE_SPLIT_ANGLE(-0.00700917467475), +         SCALE_SPLIT_ANGLE(-0.00701385131106), +         SCALE_SPLIT_ANGLE(-0.00702130468562), +         SCALE_SPLIT_ANGLE(-0.00703346915543), +         SCALE_SPLIT_ANGLE(-0.00704191112891)}, +        {SCALE_SPLIT_ANGLE(-0.00395415676758), +         SCALE_SPLIT_ANGLE(-0.00395455863327), +         SCALE_SPLIT_ANGLE(-0.00395516911522), +         SCALE_SPLIT_ANGLE(-0.00395670579746), +         SCALE_SPLIT_ANGLE(-0.00395820569247), +         SCALE_SPLIT_ANGLE(-0.00396058475599), +         SCALE_SPLIT_ANGLE(-0.00396443624049), +         SCALE_SPLIT_ANGLE(-0.00396708631888)}, +        {SCALE_SPLIT_ANGLE(-0.00000002236068), +         SCALE_SPLIT_ANGLE(-0.00000002236068), +         SCALE_SPLIT_ANGLE(-0.00000002236068), +         SCALE_SPLIT_ANGLE(-0.00000002236068), +         SCALE_SPLIT_ANGLE(-0.00000002236068), +         SCALE_SPLIT_ANGLE(-0.00000002236068), +         SCALE_SPLIT_ANGLE(-0.00000002236068), +         SCALE_SPLIT_ANGLE(-0.00000002236068)}, +    }, +    { +        {SCALE_SPLIT_ANGLE(-0.39269906282425), +         SCALE_SPLIT_ANGLE(-0.39269906282425), +         SCALE_SPLIT_ANGLE(-0.39269906282425), +         SCALE_SPLIT_ANGLE(-0.39269906282425), +         SCALE_SPLIT_ANGLE(-0.39269906282425), +         SCALE_SPLIT_ANGLE(-0.39269906282425), +         SCALE_SPLIT_ANGLE(-0.39269906282425), +         SCALE_SPLIT_ANGLE(-0.39269906282425)}, +        {SCALE_SPLIT_ANGLE(-0.39055728912354), +         SCALE_SPLIT_ANGLE(-0.39055734872818), +         SCALE_SPLIT_ANGLE(-0.39055743813515), +         SCALE_SPLIT_ANGLE(-0.39055764675140), +         SCALE_SPLIT_ANGLE(-0.39055785536766), +         SCALE_SPLIT_ANGLE(-0.39055821299553), +         SCALE_SPLIT_ANGLE(-0.39055874943733), +         SCALE_SPLIT_ANGLE(-0.39055910706520)}, +        {SCALE_SPLIT_ANGLE(-0.38890448212624), +         SCALE_SPLIT_ANGLE(-0.38890466094017), +         SCALE_SPLIT_ANGLE(-0.38890489935875), +         SCALE_SPLIT_ANGLE(-0.38890558481216), +         SCALE_SPLIT_ANGLE(-0.38890624046326), +         SCALE_SPLIT_ANGLE(-0.38890728354454), +         SCALE_SPLIT_ANGLE(-0.38890898227692), +         SCALE_SPLIT_ANGLE(-0.38891017436981)}, +        {SCALE_SPLIT_ANGLE(-0.38599535822868), +         SCALE_SPLIT_ANGLE(-0.38599589467049), +         SCALE_SPLIT_ANGLE(-0.38599669933319), +         SCALE_SPLIT_ANGLE(-0.38599872589111), +         SCALE_SPLIT_ANGLE(-0.38600075244904), +         SCALE_SPLIT_ANGLE(-0.38600397109985), +         SCALE_SPLIT_ANGLE(-0.38600933551788), +         SCALE_SPLIT_ANGLE(-0.38601312041283)}, +        {SCALE_SPLIT_ANGLE(-0.38091570138931), +         SCALE_SPLIT_ANGLE(-0.38091725111008), +         SCALE_SPLIT_ANGLE(-0.38091960549355), +         SCALE_SPLIT_ANGLE(-0.38092568516731), +         SCALE_SPLIT_ANGLE(-0.38093173503876), +         SCALE_SPLIT_ANGLE(-0.38094159960747), +         SCALE_SPLIT_ANGLE(-0.38095837831497), +         SCALE_SPLIT_ANGLE(-0.38097053766251)}, +        {SCALE_SPLIT_ANGLE(-0.37216994166374), +         SCALE_SPLIT_ANGLE(-0.37217423319817), +         SCALE_SPLIT_ANGLE(-0.37218084931374), +         SCALE_SPLIT_ANGLE(-0.37219804525375), +         SCALE_SPLIT_ANGLE(-0.37221553921700), +         SCALE_SPLIT_ANGLE(-0.37224486470222), +         SCALE_SPLIT_ANGLE(-0.37229701876640), +         SCALE_SPLIT_ANGLE(-0.37233671545982)}, +        {SCALE_SPLIT_ANGLE(-0.36424961686134), +         SCALE_SPLIT_ANGLE(-0.36425721645355), +         SCALE_SPLIT_ANGLE(-0.36426901817322), +         SCALE_SPLIT_ANGLE(-0.36429998278618), +         SCALE_SPLIT_ANGLE(-0.36433207988739), +         SCALE_SPLIT_ANGLE(-0.36438727378845), +         SCALE_SPLIT_ANGLE(-0.36448964476585), +         SCALE_SPLIT_ANGLE(-0.36457160115242)}, +        {SCALE_SPLIT_ANGLE(-0.35356882214546), +         SCALE_SPLIT_ANGLE(-0.35358169674873), +         SCALE_SPLIT_ANGLE(-0.35360184311867), +         SCALE_SPLIT_ANGLE(-0.35365554690361), +         SCALE_SPLIT_ANGLE(-0.35371255874634), +         SCALE_SPLIT_ANGLE(-0.35381379723549), +         SCALE_SPLIT_ANGLE(-0.35401359200478), +         SCALE_SPLIT_ANGLE(-0.35418573021889)}, +        {SCALE_SPLIT_ANGLE(-0.33942580223083), +         SCALE_SPLIT_ANGLE(-0.33944639563560), +         SCALE_SPLIT_ANGLE(-0.33947893977165), +         SCALE_SPLIT_ANGLE(-0.33956736326218), +         SCALE_SPLIT_ANGLE(-0.33966410160065), +         SCALE_SPLIT_ANGLE(-0.33984366059303), +         SCALE_SPLIT_ANGLE(-0.34023004770279), +         SCALE_SPLIT_ANGLE(-0.34060218930244)}, +        {SCALE_SPLIT_ANGLE(-0.32115444540977), +         SCALE_SPLIT_ANGLE(-0.32118517160416), +         SCALE_SPLIT_ANGLE(-0.32123413681984), +         SCALE_SPLIT_ANGLE(-0.32137045264244), +         SCALE_SPLIT_ANGLE(-0.32152506709099), +         SCALE_SPLIT_ANGLE(-0.32182860374451), +         SCALE_SPLIT_ANGLE(-0.32256555557251), +         SCALE_SPLIT_ANGLE(-0.32340887188911)}, +        {SCALE_SPLIT_ANGLE(-0.29830518364906), +         SCALE_SPLIT_ANGLE(-0.29834720492363), +         SCALE_SPLIT_ANGLE(-0.29841497540474), +         SCALE_SPLIT_ANGLE(-0.29860857129097), +         SCALE_SPLIT_ANGLE(-0.29883739352226), +         SCALE_SPLIT_ANGLE(-0.29931783676147), +         SCALE_SPLIT_ANGLE(-0.30069103837013), +         SCALE_SPLIT_ANGLE(-0.30275768041611)}, +        {SCALE_SPLIT_ANGLE(-0.28050783276558), +         SCALE_SPLIT_ANGLE(-0.28055709600449), +         SCALE_SPLIT_ANGLE(-0.28063705563545), +         SCALE_SPLIT_ANGLE(-0.28086939454079), +         SCALE_SPLIT_ANGLE(-0.28115186095238), +         SCALE_SPLIT_ANGLE(-0.28177401423454), +         SCALE_SPLIT_ANGLE(-0.28380542993546), +         SCALE_SPLIT_ANGLE(-0.28782635927200)}, +        {SCALE_SPLIT_ANGLE(-0.26083284616470), +         SCALE_SPLIT_ANGLE(-0.26088821887970), +         SCALE_SPLIT_ANGLE(-0.26097869873047), +         SCALE_SPLIT_ANGLE(-0.26124575734138), +         SCALE_SPLIT_ANGLE(-0.26157894730568), +         SCALE_SPLIT_ANGLE(-0.26234790682793), +         SCALE_SPLIT_ANGLE(-0.26525342464447), +         SCALE_SPLIT_ANGLE(-0.27373573184013)}, +        {SCALE_SPLIT_ANGLE(-0.23960019648075), +         SCALE_SPLIT_ANGLE(-0.23966008424759), +         SCALE_SPLIT_ANGLE(-0.23975844681263), +         SCALE_SPLIT_ANGLE(-0.24005250632763), +         SCALE_SPLIT_ANGLE(-0.24042734503746), +         SCALE_SPLIT_ANGLE(-0.24132779240608), +         SCALE_SPLIT_ANGLE(-0.24525122344494), +         SCALE_SPLIT_ANGLE(-0.26534584164619)}, +        {SCALE_SPLIT_ANGLE(-0.21727462112904), +         SCALE_SPLIT_ANGLE(-0.21733717620373), +         SCALE_SPLIT_ANGLE(-0.21744027733803), +         SCALE_SPLIT_ANGLE(-0.21775110065937), +         SCALE_SPLIT_ANGLE(-0.21815298497677), +         SCALE_SPLIT_ANGLE(-0.21914556622505), +         SCALE_SPLIT_ANGLE(-0.22397416830063), +         SCALE_SPLIT_ANGLE(-0.27997338771820)}, +        {SCALE_SPLIT_ANGLE(-0.19442924857140), +         SCALE_SPLIT_ANGLE(-0.19449259340763), +         SCALE_SPLIT_ANGLE(-0.19459711015224), +         SCALE_SPLIT_ANGLE(-0.19491319358349), +         SCALE_SPLIT_ANGLE(-0.19532407820225), +         SCALE_SPLIT_ANGLE(-0.19634953141212), +         SCALE_SPLIT_ANGLE(-0.20156541466713), +         SCALE_SPLIT_ANGLE(-0.33650863170624)}, +        {SCALE_SPLIT_ANGLE(-0.17168678343296), +         SCALE_SPLIT_ANGLE(-0.17174907028675), +         SCALE_SPLIT_ANGLE(-0.17185172438622), +         SCALE_SPLIT_ANGLE(-0.17216137051582), +         SCALE_SPLIT_ANGLE(-0.17256210744381), +         SCALE_SPLIT_ANGLE(-0.17355349659920), +         SCALE_SPLIT_ANGLE(-0.17841055989265), +         SCALE_SPLIT_ANGLE(-0.23922458291054)}, +        {SCALE_SPLIT_ANGLE(-0.14965106546879), +         SCALE_SPLIT_ANGLE(-0.14971044659615), +         SCALE_SPLIT_ANGLE(-0.14980801939964), +         SCALE_SPLIT_ANGLE(-0.15010000765324), +         SCALE_SPLIT_ANGLE(-0.15047281980515), +         SCALE_SPLIT_ANGLE(-0.15137127041817), +         SCALE_SPLIT_ANGLE(-0.15533344447613), +         SCALE_SPLIT_ANGLE(-0.17691853642464)}, +        {SCALE_SPLIT_ANGLE(-0.12884500622749), +         SCALE_SPLIT_ANGLE(-0.12889972329140), +         SCALE_SPLIT_ANGLE(-0.12898920476437), +         SCALE_SPLIT_ANGLE(-0.12925371527672), +         SCALE_SPLIT_ANGLE(-0.12958449125290), +         SCALE_SPLIT_ANGLE(-0.13035115599632), +         SCALE_SPLIT_ANGLE(-0.13329000771046), +         SCALE_SPLIT_ANGLE(-0.14226882159710)}, +        {SCALE_SPLIT_ANGLE(-0.10966771095991), +         SCALE_SPLIT_ANGLE(-0.10971628129482), +         SCALE_SPLIT_ANGLE(-0.10979521274567), +         SCALE_SPLIT_ANGLE(-0.11002496629953), +         SCALE_SPLIT_ANGLE(-0.11030505597591), +         SCALE_SPLIT_ANGLE(-0.11092507094145), +         SCALE_SPLIT_ANGLE(-0.11297955363989), +         SCALE_SPLIT_ANGLE(-0.11718675494194)}, +        {SCALE_SPLIT_ANGLE(-0.09237615764141), +         SCALE_SPLIT_ANGLE(-0.09241757541895), +         SCALE_SPLIT_ANGLE(-0.09248440712690), +         SCALE_SPLIT_ANGLE(-0.09267570078373), +         SCALE_SPLIT_ANGLE(-0.09290252625942), +         SCALE_SPLIT_ANGLE(-0.09338124096394), +         SCALE_SPLIT_ANGLE(-0.09476861357689), +         SCALE_SPLIT_ANGLE(-0.09691139310598)}, +        {SCALE_SPLIT_ANGLE(-0.07020132243633), +         SCALE_SPLIT_ANGLE(-0.07023159414530), +         SCALE_SPLIT_ANGLE(-0.07027988135815), +         SCALE_SPLIT_ANGLE(-0.07041461765766), +         SCALE_SPLIT_ANGLE(-0.07056794315577), +         SCALE_SPLIT_ANGLE(-0.07087046653032), +         SCALE_SPLIT_ANGLE(-0.07161350548267), +         SCALE_SPLIT_ANGLE(-0.07247892767191)}, +        {SCALE_SPLIT_ANGLE(-0.05244029313326), +         SCALE_SPLIT_ANGLE(-0.05246063694358), +         SCALE_SPLIT_ANGLE(-0.05249277129769), +         SCALE_SPLIT_ANGLE(-0.05258031189442), +         SCALE_SPLIT_ANGLE(-0.05267634615302), +         SCALE_SPLIT_ANGLE(-0.05285539105535), +         SCALE_SPLIT_ANGLE(-0.05324416607618), +         SCALE_SPLIT_ANGLE(-0.05362325906754)}, +        {SCALE_SPLIT_ANGLE(-0.03864165395498), +         SCALE_SPLIT_ANGLE(-0.03865438699722), +         SCALE_SPLIT_ANGLE(-0.03867433220148), +         SCALE_SPLIT_ANGLE(-0.03872758150101), +         SCALE_SPLIT_ANGLE(-0.03878423944116), +         SCALE_SPLIT_ANGLE(-0.03888526186347), +         SCALE_SPLIT_ANGLE(-0.03908598423004), +         SCALE_SPLIT_ANGLE(-0.03926040232182)}, +        {SCALE_SPLIT_ANGLE(-0.02817477099597), +         SCALE_SPLIT_ANGLE(-0.02818230539560), +         SCALE_SPLIT_ANGLE(-0.02819401212037), +         SCALE_SPLIT_ANGLE(-0.02822477370501), +         SCALE_SPLIT_ANGLE(-0.02825672924519), +         SCALE_SPLIT_ANGLE(-0.02831180207431), +         SCALE_SPLIT_ANGLE(-0.02841453626752), +         SCALE_SPLIT_ANGLE(-0.02849724888802)}, +        {SCALE_SPLIT_ANGLE(-0.02037952840328), +         SCALE_SPLIT_ANGLE(-0.02038379199803), +         SCALE_SPLIT_ANGLE(-0.02039037644863), +         SCALE_SPLIT_ANGLE(-0.02040746808052), +         SCALE_SPLIT_ANGLE(-0.02042490057647), +         SCALE_SPLIT_ANGLE(-0.02045419998467), +         SCALE_SPLIT_ANGLE(-0.02050646580756), +         SCALE_SPLIT_ANGLE(-0.02054643817246)}, +        {SCALE_SPLIT_ANGLE(-0.01173160132021), +         SCALE_SPLIT_ANGLE(-0.01173313893378), +         SCALE_SPLIT_ANGLE(-0.01173550169915), +         SCALE_SPLIT_ANGLE(-0.01174154412001), +         SCALE_SPLIT_ANGLE(-0.01174758281559), +         SCALE_SPLIT_ANGLE(-0.01175745390356), +         SCALE_SPLIT_ANGLE(-0.01177425216883), +         SCALE_SPLIT_ANGLE(-0.01178644038737)}, +        {SCALE_SPLIT_ANGLE(-0.00668647419661), +         SCALE_SPLIT_ANGLE(-0.00668699899688), +         SCALE_SPLIT_ANGLE(-0.00668780226260), +         SCALE_SPLIT_ANGLE(-0.00668983859941), +         SCALE_SPLIT_ANGLE(-0.00669184979051), +         SCALE_SPLIT_ANGLE(-0.00669508427382), +         SCALE_SPLIT_ANGLE(-0.00670044496655), +         SCALE_SPLIT_ANGLE(-0.00670422706753)}, +        {SCALE_SPLIT_ANGLE(-0.00378898018971), +         SCALE_SPLIT_ANGLE(-0.00378915364854), +         SCALE_SPLIT_ANGLE(-0.00378941860981), +         SCALE_SPLIT_ANGLE(-0.00379008613527), +         SCALE_SPLIT_ANGLE(-0.00379074038938), +         SCALE_SPLIT_ANGLE(-0.00379178440198), +         SCALE_SPLIT_ANGLE(-0.00379348848946), +         SCALE_SPLIT_ANGLE(-0.00379467150196)}, +        {SCALE_SPLIT_ANGLE(-0.00213995948434), +         SCALE_SPLIT_ANGLE(-0.00214001582935), +         SCALE_SPLIT_ANGLE(-0.00214010151103), +         SCALE_SPLIT_ANGLE(-0.00214031687938), +         SCALE_SPLIT_ANGLE(-0.00214052735828), +         SCALE_SPLIT_ANGLE(-0.00214086123742), +         SCALE_SPLIT_ANGLE(-0.00214140163735), +         SCALE_SPLIT_ANGLE(-0.00214177393354)}, +        {SCALE_SPLIT_ANGLE(-0.00000001210151), +         SCALE_SPLIT_ANGLE(-0.00000001210151), +         SCALE_SPLIT_ANGLE(-0.00000001210151), +         SCALE_SPLIT_ANGLE(-0.00000001210151), +         SCALE_SPLIT_ANGLE(-0.00000001210151), +         SCALE_SPLIT_ANGLE(-0.00000001210151), +         SCALE_SPLIT_ANGLE(-0.00000001210151), +         SCALE_SPLIT_ANGLE(-0.00000001210151)}, +    }, +};  #define SCALE_CLD(a) (FL2FXCONST_CFG(a)) diff --git a/fdk-aac/libSACdec/src/sac_rom.h b/fdk-aac/libSACdec/src/sac_rom.h index d366fb6..38f17f2 100644 --- a/fdk-aac/libSACdec/src/sac_rom.h +++ b/fdk-aac/libSACdec/src/sac_rom.h @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -147,7 +147,7 @@ amm-info@iis.fraunhofer.de  #define CLIP_PROTECT_GAIN_1(x) FL2FXCONST_CFG(((x) / (float)(1 << 1)))  #define CLIP_PROTECT_GAIN_2(x) FL2FXCONST_CFG(((x) / (float)(1 << 2))) -#define SF_CLD_C1C2 (8) +#define SF_CLD_C1C2 (9)  extern const FIXP_CFG dequantCPC__FDK[];  extern const FIXP_CFG dequantICC__FDK[8]; @@ -160,6 +160,7 @@ extern const FIXP_CFG dequantCLD__FDK[31];    (FL2FXCONST_DBL(3.1415926535897932f / (float)(1 << (IPD_SCALE - 1))))  extern const FIXP_CFG dequantIPD__FDK[16]; +extern const FIXP_DBL dequantIPD_CLD_ICC_splitAngle__FDK[15][31][8];  extern const FIXP_CFG H11_nc[31][8];  extern const FIXP_CFG H12_nc[31][8]; diff --git a/fdk-aac/libSBRdec/src/env_calc.cpp b/fdk-aac/libSBRdec/src/env_calc.cpp index cb1474f..1242833 100644 --- a/fdk-aac/libSBRdec/src/env_calc.cpp +++ b/fdk-aac/libSBRdec/src/env_calc.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -493,7 +493,7 @@ static void mapSineFlags(    }  } -#define INTER_TES_SF_CHANGE 3 +#define INTER_TES_SF_CHANGE 4  typedef struct {    FIXP_DBL subsample_power_low[(((1024) / (32) * (4) / 2) + (3 * (4)))]; @@ -2325,7 +2325,15 @@ static void calcSubbandGain(      }      /*  gain = nrgRef / B */ -    FDK_divide_MantExp(nrgRef, nrgRef_e, b, b_e, ptrNrgGain, ptrNrgGain_e); +    INT result_exp = 0; +    *ptrNrgGain = fDivNorm(nrgRef, b, &result_exp); +    *ptrNrgGain_e = (SCHAR)result_exp + (nrgRef_e - b_e); + +    /* There could be a one bit diffs. This is important to compensate, +       because later in the code values are compared by exponent only. */ +    int headroom = CountLeadingBits(*ptrNrgGain); +    *ptrNrgGain <<= headroom; +    *ptrNrgGain_e -= headroom;    }  } @@ -2431,8 +2439,7 @@ static void adjustTimeSlot_EldGrid(      sbNoise = *pNoiseLevel++;      if (((INT)sineLevel_curr | noNoiseFlag) == 0) {        signalReal += -          (fMultDiv2(FDK_sbrDecoder_sbr_randomPhase[phaseIndex][0], sbNoise) -           << 4); +          fMult(FDK_sbrDecoder_sbr_randomPhase[phaseIndex][0], sbNoise);      }      signalReal += sineLevel_curr * p_harmonicPhase[0];      signalReal = @@ -2466,8 +2473,7 @@ static void adjustTimeSlot_EldGrid(      sbNoise = *pNoiseLevel++;      if (((INT)sineLevel_curr | noNoiseFlag) == 0) {        signalReal += -          (fMultDiv2(FDK_sbrDecoder_sbr_randomPhase[phaseIndex][0], sbNoise) -           << 4); +          fMult(FDK_sbrDecoder_sbr_randomPhase[phaseIndex][0], sbNoise);      }      signalReal += sineLevel_curr * p_harmonicPhase[0];      *ptrReal++ = signalReal; @@ -2527,8 +2533,7 @@ static void adjustTimeSlotLC(    else if (!noNoiseFlag)      /* Add noisefloor to the amplified signal */      signalReal += -        (fMultDiv2(FDK_sbrDecoder_sbr_randomPhase[index][0], pNoiseLevel[0]) -         << 4); +        fMult(FDK_sbrDecoder_sbr_randomPhase[index][0], pNoiseLevel[0]);    {      if (!(harmIndex & 0x1)) { @@ -2575,9 +2580,8 @@ static void adjustTimeSlotLC(              !noNoiseFlag) {            /* Add noisefloor to the amplified signal */            index &= (SBR_NF_NO_RANDOM_VAL - 1); -          signalReal += (fMultDiv2(FDK_sbrDecoder_sbr_randomPhase[index][0], -                                   pNoiseLevel[0]) -                         << 4); +          signalReal += +              fMult(FDK_sbrDecoder_sbr_randomPhase[index][0], pNoiseLevel[0]);          }          /* The next multiplication constitutes the actual envelope adjustment of @@ -2602,9 +2606,8 @@ static void adjustTimeSlotLC(          else if (!noNoiseFlag) {            /* Add noisefloor to the amplified signal */            index &= (SBR_NF_NO_RANDOM_VAL - 1); -          signalReal += (fMultDiv2(FDK_sbrDecoder_sbr_randomPhase[index][0], -                                   pNoiseLevel[0]) -                         << 4); +          signalReal += +              fMult(FDK_sbrDecoder_sbr_randomPhase[index][0], pNoiseLevel[0]);          }          pNoiseLevel++; @@ -2633,10 +2636,8 @@ static void adjustTimeSlotLC(      else if (!noNoiseFlag) {        /* Add noisefloor to the amplified signal */        index &= (SBR_NF_NO_RANDOM_VAL - 1); -      signalReal = -          signalReal + -          (fMultDiv2(FDK_sbrDecoder_sbr_randomPhase[index][0], pNoiseLevel[0]) -           << 4); +      signalReal = signalReal + fMult(FDK_sbrDecoder_sbr_randomPhase[index][0], +                                      pNoiseLevel[0]);      }      if (!(harmIndex & 0x1)) { @@ -2741,11 +2742,9 @@ static void adjustTimeSlotHQ_GainAndNoise(          /* Add noisefloor to the amplified signal */          index &= (SBR_NF_NO_RANDOM_VAL - 1);          noiseReal = -            fMultDiv2(FDK_sbrDecoder_sbr_randomPhase[index][0], smoothedNoise) -            << 4; +            fMult(FDK_sbrDecoder_sbr_randomPhase[index][0], smoothedNoise);          noiseImag = -            fMultDiv2(FDK_sbrDecoder_sbr_randomPhase[index][1], smoothedNoise) -            << 4; +            fMult(FDK_sbrDecoder_sbr_randomPhase[index][1], smoothedNoise);          *ptrReal++ = (signalReal + noiseReal);          *ptrImag++ = (signalImag + noiseImag);        } @@ -2763,13 +2762,12 @@ static void adjustTimeSlotHQ_GainAndNoise(          smoothedNoise = noiseLevel[k];          index &= (SBR_NF_NO_RANDOM_VAL - 1);          noiseReal = -            fMultDiv2(FDK_sbrDecoder_sbr_randomPhase[index][0], smoothedNoise); +            fMult(FDK_sbrDecoder_sbr_randomPhase[index][0], smoothedNoise);          noiseImag = -            fMultDiv2(FDK_sbrDecoder_sbr_randomPhase[index][1], smoothedNoise); +            fMult(FDK_sbrDecoder_sbr_randomPhase[index][1], smoothedNoise); -        /* FDK_sbrDecoder_sbr_randomPhase is downscaled by 2^3 */ -        signalReal += noiseReal << 4; -        signalImag += noiseImag << 4; +        signalReal += noiseReal; +        signalImag += noiseImag;        }        *ptrReal++ = signalReal;        *ptrImag++ = signalImag; @@ -2944,13 +2942,10 @@ static void adjustTimeSlotHQ(          } else {            /* Add noisefloor to the amplified signal */            index &= (SBR_NF_NO_RANDOM_VAL - 1); -          /* FDK_sbrDecoder_sbr_randomPhase is downscaled by 2^3 */            noiseReal = -              fMultDiv2(FDK_sbrDecoder_sbr_randomPhase[index][0], smoothedNoise) -              << 4; +              fMult(FDK_sbrDecoder_sbr_randomPhase[index][0], smoothedNoise);            noiseImag = -              fMultDiv2(FDK_sbrDecoder_sbr_randomPhase[index][1], smoothedNoise) -              << 4; +              fMult(FDK_sbrDecoder_sbr_randomPhase[index][1], smoothedNoise);            *ptrReal++ = (signalReal + noiseReal);            *ptrImag++ = (signalImag + noiseImag);          } @@ -2992,14 +2987,13 @@ static void adjustTimeSlotHQ(            /* Add noisefloor to the amplified signal */            smoothedNoise = noiseLevel[k];            index &= (SBR_NF_NO_RANDOM_VAL - 1); -          noiseReal = fMultDiv2(FDK_sbrDecoder_sbr_randomPhase[index][0], -                                smoothedNoise); -          noiseImag = fMultDiv2(FDK_sbrDecoder_sbr_randomPhase[index][1], -                                smoothedNoise); - -          /* FDK_sbrDecoder_sbr_randomPhase is downscaled by 2^3 */ -          signalReal += noiseReal << 4; -          signalImag += noiseImag << 4; +          noiseReal = +              fMult(FDK_sbrDecoder_sbr_randomPhase[index][0], smoothedNoise); +          noiseImag = +              fMult(FDK_sbrDecoder_sbr_randomPhase[index][1], smoothedNoise); + +          signalReal += noiseReal; +          signalImag += noiseImag;          }        }        *ptrReal++ = signalReal; diff --git a/fdk-aac/libSBRdec/src/env_extr.cpp b/fdk-aac/libSBRdec/src/env_extr.cpp index c72a7b6..5b7a0b1 100644 --- a/fdk-aac/libSBRdec/src/env_extr.cpp +++ b/fdk-aac/libSBRdec/src/env_extr.cpp @@ -1152,6 +1152,10 @@ static int generateFixFixOnly(FRAME_INFO *hSbrFrameInfo, int tranPosInternal,    int nEnv, i, tranIdx;    const int *pTable; +  if (tranPosInternal >= numberTimeSlots) { +    return 0; +  } +    switch (numberTimeSlots) {      case 8:        pTable = FDK_sbrDecoder_envelopeTable_8[tranPosInternal]; diff --git a/fdk-aac/libSBRdec/src/lpp_tran.cpp b/fdk-aac/libSBRdec/src/lpp_tran.cpp index 2ef07eb..6acb626 100644 --- a/fdk-aac/libSBRdec/src/lpp_tran.cpp +++ b/fdk-aac/libSBRdec/src/lpp_tran.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -446,8 +446,26 @@ void lppTransposer(                                  pSettings->nCols) +                       lowBandShift);      } -    dynamicScale = fixMax( -        0, dynamicScale - 1); /* one additional bit headroom to prevent -1.0 */ + +    if (dynamicScale == 0) { +      /* In this special case the available headroom bits as well as +         ovLowBandShift and lowBandShift are zero. The spectrum is limited to +         prevent -1.0, so negative values for dynamicScale can be avoided. */ +      for (i = 0; i < (LPC_ORDER + pSettings->overlap + pSettings->nCols); +           i++) { +        lowBandReal[i] = fixMax(lowBandReal[i], (FIXP_DBL)0x80000001); +      } +      if (!useLP) { +        for (i = 0; i < (LPC_ORDER + pSettings->overlap + pSettings->nCols); +             i++) { +          lowBandImag[i] = fixMax(lowBandImag[i], (FIXP_DBL)0x80000001); +        } +      } +    } else { +      dynamicScale = +          fixMax(0, dynamicScale - +                        1); /* one additional bit headroom to prevent -1.0 */ +    }      /*        Scale temporal QMF buffer. diff --git a/fdk-aac/libSBRdec/src/psdec.cpp b/fdk-aac/libSBRdec/src/psdec.cpp index b31b310..13a21bf 100644 --- a/fdk-aac/libSBRdec/src/psdec.cpp +++ b/fdk-aac/libSBRdec/src/psdec.cpp @@ -325,11 +325,11 @@ void initSlotBasedRotation(      int env, int usb) {    INT group = 0;    INT bin = 0; -  INT noIidSteps, noFactors; +  INT noIidSteps;    FIXP_SGL invL;    FIXP_DBL ScaleL, ScaleR; -  FIXP_DBL Alpha, Beta, AlphasValue; +  FIXP_DBL Alpha, Beta;    FIXP_DBL h11r, h12r, h21r, h22r;    const FIXP_DBL *PScaleFactors; @@ -337,11 +337,9 @@ void initSlotBasedRotation(    if (h_ps_d->bsData[h_ps_d->processSlot].mpeg.bFineIidQ) {      PScaleFactors = ScaleFactorsFine; /* values are shiftet right by one */      noIidSteps = NO_IID_STEPS_FINE; -    noFactors = NO_IID_LEVELS_FINE;    } else {      PScaleFactors = ScaleFactors; /* values are shiftet right by one */      noIidSteps = NO_IID_STEPS; -    noFactors = NO_IID_LEVELS;    }    /* dequantize and decode */ @@ -360,23 +358,17 @@ void initSlotBasedRotation(      /* ScaleR and ScaleL are scaled by 1 shift right */ -    ScaleL = ScaleR = 0; -    if (noIidSteps + h_ps_d->specificTo.mpeg.pCoef->aaIidIndexMapped[env][bin] >= 0 && noIidSteps + h_ps_d->specificTo.mpeg.pCoef->aaIidIndexMapped[env][bin] < noFactors) -      ScaleR = PScaleFactors[noIidSteps + h_ps_d->specificTo.mpeg.pCoef -                                              ->aaIidIndexMapped[env][bin]]; -    if (noIidSteps - h_ps_d->specificTo.mpeg.pCoef->aaIidIndexMapped[env][bin] >= 0 && noIidSteps - h_ps_d->specificTo.mpeg.pCoef->aaIidIndexMapped[env][bin] < noFactors) -      ScaleL = PScaleFactors[noIidSteps - h_ps_d->specificTo.mpeg.pCoef -                                              ->aaIidIndexMapped[env][bin]]; - -    AlphasValue = 0; -    if (h_ps_d->specificTo.mpeg.pCoef->aaIccIndexMapped[env][bin] >= 0) -      AlphasValue = Alphas[h_ps_d->specificTo.mpeg.pCoef->aaIccIndexMapped[env][bin]]; +    ScaleR = PScaleFactors[noIidSteps + h_ps_d->specificTo.mpeg.pCoef +                                            ->aaIidIndexMapped[env][bin]]; +    ScaleL = PScaleFactors[noIidSteps - h_ps_d->specificTo.mpeg.pCoef +                                            ->aaIidIndexMapped[env][bin]]; +      Beta = fMult( -        fMult(AlphasValue, +        fMult(Alphas[h_ps_d->specificTo.mpeg.pCoef->aaIccIndexMapped[env][bin]],                (ScaleR - ScaleL)),          FIXP_SQRT05);      Alpha = -        AlphasValue >> 1; +        Alphas[h_ps_d->specificTo.mpeg.pCoef->aaIccIndexMapped[env][bin]] >> 1;      /* Alpha and Beta are now both scaled by 2 shifts right */ diff --git a/fdk-aac/libSBRdec/src/sbr_rom.cpp b/fdk-aac/libSBRdec/src/sbr_rom.cpp index 8a6688a..4c7e74a 100644 --- a/fdk-aac/libSBRdec/src/sbr_rom.cpp +++ b/fdk-aac/libSBRdec/src/sbr_rom.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -241,1030 +241,518 @@ const FIXP_SGL FDK_sbrDecoder_sbr_smoothFilter[4] = {    random numbers.  */  const FIXP_SGL FDK_sbrDecoder_sbr_randomPhase[SBR_NF_NO_RANDOM_VAL][2] = { -    {FL2FXCONST_SGL(-0.99948153278296f / 8.0), -     FL2FXCONST_SGL(-0.59483417516607f / 8.0)}, -    {FL2FXCONST_SGL(0.97113454393991f / 8.0), -     FL2FXCONST_SGL(-0.67528515225647f / 8.0)}, -    {FL2FXCONST_SGL(0.14130051758487f / 8.0), -     FL2FXCONST_SGL(-0.95090983575689f / 8.0)}, -    {FL2FXCONST_SGL(-0.47005496701697f / 8.0), -     FL2FXCONST_SGL(-0.37340549728647f / 8.0)}, -    {FL2FXCONST_SGL(0.80705063769351f / 8.0), -     FL2FXCONST_SGL(0.29653668284408f / 8.0)}, -    {FL2FXCONST_SGL(-0.38981478896926f / 8.0), -     FL2FXCONST_SGL(0.89572605717087f / 8.0)}, -    {FL2FXCONST_SGL(-0.01053049862020f / 8.0), -     FL2FXCONST_SGL(-0.66959058036166f / 8.0)}, -    {FL2FXCONST_SGL(-0.91266367957293f / 8.0), -     FL2FXCONST_SGL(-0.11522938140034f / 8.0)}, -    {FL2FXCONST_SGL(0.54840422910309f / 8.0), -     FL2FXCONST_SGL(0.75221367176302f / 8.0)}, -    {FL2FXCONST_SGL(0.40009252867955f / 8.0), -     FL2FXCONST_SGL(-0.98929400334421f / 8.0)}, -    {FL2FXCONST_SGL(-0.99867974711855f / 8.0), -     FL2FXCONST_SGL(-0.88147068645358f / 8.0)}, -    {FL2FXCONST_SGL(-0.95531076805040f / 8.0), -     FL2FXCONST_SGL(0.90908757154593f / 8.0)}, -    {FL2FXCONST_SGL(-0.45725933317144f / 8.0), -     FL2FXCONST_SGL(-0.56716323646760f / 8.0)}, -    {FL2FXCONST_SGL(-0.72929675029275f / 8.0), -     FL2FXCONST_SGL(-0.98008272727324f / 8.0)}, -    {FL2FXCONST_SGL(0.75622801399036f / 8.0), -     FL2FXCONST_SGL(0.20950329995549f / 8.0)}, -    {FL2FXCONST_SGL(0.07069442601050f / 8.0), -     FL2FXCONST_SGL(-0.78247898470706f / 8.0)}, -    {FL2FXCONST_SGL(0.74496252926055f / 8.0), -     FL2FXCONST_SGL(-0.91169004445807f / 8.0)}, -    {FL2FXCONST_SGL(-0.96440182703856f / 8.0), -     FL2FXCONST_SGL(-0.94739918296622f / 8.0)}, -    {FL2FXCONST_SGL(0.30424629369539f / 8.0), -     FL2FXCONST_SGL(-0.49438267012479f / 8.0)}, -    {FL2FXCONST_SGL(0.66565033746925f / 8.0), -     FL2FXCONST_SGL(0.64652935542491f / 8.0)}, -    {FL2FXCONST_SGL(0.91697008020594f / 8.0), -     FL2FXCONST_SGL(0.17514097332009f / 8.0)}, -    {FL2FXCONST_SGL(-0.70774918760427f / 8.0), -     FL2FXCONST_SGL(0.52548653416543f / 8.0)}, -    {FL2FXCONST_SGL(-0.70051415345560f / 8.0), -     FL2FXCONST_SGL(-0.45340028808763f / 8.0)}, -    {FL2FXCONST_SGL(-0.99496513054797f / 8.0), -     FL2FXCONST_SGL(-0.90071908066973f / 8.0)}, -    {FL2FXCONST_SGL(0.98164490790123f / 8.0), -     FL2FXCONST_SGL(-0.77463155528697f / 8.0)}, -    {FL2FXCONST_SGL(-0.54671580548181f / 8.0), -     FL2FXCONST_SGL(-0.02570928536004f / 8.0)}, -    {FL2FXCONST_SGL(-0.01689629065389f / 8.0), -     FL2FXCONST_SGL(0.00287506445732f / 8.0)}, -    {FL2FXCONST_SGL(-0.86110349531986f / 8.0), -     FL2FXCONST_SGL(0.42548583726477f / 8.0)}, -    {FL2FXCONST_SGL(-0.98892980586032f / 8.0), -     FL2FXCONST_SGL(-0.87881132267556f / 8.0)}, -    {FL2FXCONST_SGL(0.51756627678691f / 8.0), -     FL2FXCONST_SGL(0.66926784710139f / 8.0)}, -    {FL2FXCONST_SGL(-0.99635026409640f / 8.0), -     FL2FXCONST_SGL(-0.58107730574765f / 8.0)}, -    {FL2FXCONST_SGL(-0.99969370862163f / 8.0), -     FL2FXCONST_SGL(0.98369989360250f / 8.0)}, -    {FL2FXCONST_SGL(0.55266258627194f / 8.0), -     FL2FXCONST_SGL(0.59449057465591f / 8.0)}, -    {FL2FXCONST_SGL(0.34581177741673f / 8.0), -     FL2FXCONST_SGL(0.94879421061866f / 8.0)}, -    {FL2FXCONST_SGL(0.62664209577999f / 8.0), -     FL2FXCONST_SGL(-0.74402970906471f / 8.0)}, -    {FL2FXCONST_SGL(-0.77149701404973f / 8.0), -     FL2FXCONST_SGL(-0.33883658042801f / 8.0)}, -    {FL2FXCONST_SGL(-0.91592244254432f / 8.0), -     FL2FXCONST_SGL(0.03687901376713f / 8.0)}, -    {FL2FXCONST_SGL(-0.76285492357887f / 8.0), -     FL2FXCONST_SGL(-0.91371867919124f / 8.0)}, -    {FL2FXCONST_SGL(0.79788337195331f / 8.0), -     FL2FXCONST_SGL(-0.93180971199849f / 8.0)}, -    {FL2FXCONST_SGL(0.54473080610200f / 8.0), -     FL2FXCONST_SGL(-0.11919206037186f / 8.0)}, -    {FL2FXCONST_SGL(-0.85639281671058f / 8.0), -     FL2FXCONST_SGL(0.42429854760451f / 8.0)}, -    {FL2FXCONST_SGL(-0.92882402971423f / 8.0), -     FL2FXCONST_SGL(0.27871809078609f / 8.0)}, -    {FL2FXCONST_SGL(-0.11708371046774f / 8.0), -     FL2FXCONST_SGL(-0.99800843444966f / 8.0)}, -    {FL2FXCONST_SGL(0.21356749817493f / 8.0), -     FL2FXCONST_SGL(-0.90716295627033f / 8.0)}, -    {FL2FXCONST_SGL(-0.76191692573909f / 8.0), -     FL2FXCONST_SGL(0.99768118356265f / 8.0)}, -    {FL2FXCONST_SGL(0.98111043100884f / 8.0), -     FL2FXCONST_SGL(-0.95854459734407f / 8.0)}, -    {FL2FXCONST_SGL(-0.85913269895572f / 8.0), -     FL2FXCONST_SGL(0.95766566168880f / 8.0)}, -    {FL2FXCONST_SGL(-0.93307242253692f / 8.0), -     FL2FXCONST_SGL(0.49431757696466f / 8.0)}, -    {FL2FXCONST_SGL(0.30485754879632f / 8.0), -     FL2FXCONST_SGL(-0.70540034357529f / 8.0)}, -    {FL2FXCONST_SGL(0.85289650925190f / 8.0), -     FL2FXCONST_SGL(0.46766131791044f / 8.0)}, -    {FL2FXCONST_SGL(0.91328082618125f / 8.0), -     FL2FXCONST_SGL(-0.99839597361769f / 8.0)}, -    {FL2FXCONST_SGL(-0.05890199924154f / 8.0), -     FL2FXCONST_SGL(0.70741827819497f / 8.0)}, -    {FL2FXCONST_SGL(0.28398686150148f / 8.0), -     FL2FXCONST_SGL(0.34633555702188f / 8.0)}, -    {FL2FXCONST_SGL(0.95258164539612f / 8.0), -     FL2FXCONST_SGL(-0.54893416026939f / 8.0)}, -    {FL2FXCONST_SGL(-0.78566324168507f / 8.0), -     FL2FXCONST_SGL(-0.75568541079691f / 8.0)}, -    {FL2FXCONST_SGL(-0.95789495447877f / 8.0), -     FL2FXCONST_SGL(-0.20423194696966f / 8.0)}, -    {FL2FXCONST_SGL(0.82411158711197f / 8.0), -     FL2FXCONST_SGL(0.96654618432562f / 8.0)}, -    {FL2FXCONST_SGL(-0.65185446735885f / 8.0), -     FL2FXCONST_SGL(-0.88734990773289f / 8.0)}, -    {FL2FXCONST_SGL(-0.93643603134666f / 8.0), -     FL2FXCONST_SGL(0.99870790442385f / 8.0)}, -    {FL2FXCONST_SGL(0.91427159529618f / 8.0), -     FL2FXCONST_SGL(-0.98290505544444f / 8.0)}, -    {FL2FXCONST_SGL(-0.70395684036886f / 8.0), -     FL2FXCONST_SGL(0.58796798221039f / 8.0)}, -    {FL2FXCONST_SGL(0.00563771969365f / 8.0), -     FL2FXCONST_SGL(0.61768196727244f / 8.0)}, -    {FL2FXCONST_SGL(0.89065051931895f / 8.0), -     FL2FXCONST_SGL(0.52783352697585f / 8.0)}, -    {FL2FXCONST_SGL(-0.68683707712762f / 8.0), -     FL2FXCONST_SGL(0.80806944710339f / 8.0)}, -    {FL2FXCONST_SGL(0.72165342518718f / 8.0), -     FL2FXCONST_SGL(-0.69259857349564f / 8.0)}, -    {FL2FXCONST_SGL(-0.62928247730667f / 8.0), -     FL2FXCONST_SGL(0.13627037407335f / 8.0)}, -    {FL2FXCONST_SGL(0.29938434065514f / 8.0), -     FL2FXCONST_SGL(-0.46051329682246f / 8.0)}, -    {FL2FXCONST_SGL(-0.91781958879280f / 8.0), -     FL2FXCONST_SGL(-0.74012716684186f / 8.0)}, -    {FL2FXCONST_SGL(0.99298717043688f / 8.0), -     FL2FXCONST_SGL(0.40816610075661f / 8.0)}, -    {FL2FXCONST_SGL(0.82368298622748f / 8.0), -     FL2FXCONST_SGL(-0.74036047190173f / 8.0)}, -    {FL2FXCONST_SGL(-0.98512833386833f / 8.0), -     FL2FXCONST_SGL(-0.99972330709594f / 8.0)}, -    {FL2FXCONST_SGL(-0.95915368242257f / 8.0), -     FL2FXCONST_SGL(-0.99237800466040f / 8.0)}, -    {FL2FXCONST_SGL(-0.21411126572790f / 8.0), -     FL2FXCONST_SGL(-0.93424819052545f / 8.0)}, -    {FL2FXCONST_SGL(-0.68821476106884f / 8.0), -     FL2FXCONST_SGL(-0.26892306315457f / 8.0)}, -    {FL2FXCONST_SGL(0.91851997982317f / 8.0), -     FL2FXCONST_SGL(0.09358228901785f / 8.0)}, -    {FL2FXCONST_SGL(-0.96062769559127f / 8.0), -     FL2FXCONST_SGL(0.36099095133739f / 8.0)}, -    {FL2FXCONST_SGL(0.51646184922287f / 8.0), -     FL2FXCONST_SGL(-0.71373332873917f / 8.0)}, -    {FL2FXCONST_SGL(0.61130721139669f / 8.0), -     FL2FXCONST_SGL(0.46950141175917f / 8.0)}, -    {FL2FXCONST_SGL(0.47336129371299f / 8.0), -     FL2FXCONST_SGL(-0.27333178296162f / 8.0)}, -    {FL2FXCONST_SGL(0.90998308703519f / 8.0), -     FL2FXCONST_SGL(0.96715662938132f / 8.0)}, -    {FL2FXCONST_SGL(0.44844799194357f / 8.0), -     FL2FXCONST_SGL(0.99211574628306f / 8.0)}, -    {FL2FXCONST_SGL(0.66614891079092f / 8.0), -     FL2FXCONST_SGL(0.96590176169121f / 8.0)}, -    {FL2FXCONST_SGL(0.74922239129237f / 8.0), -     FL2FXCONST_SGL(-0.89879858826087f / 8.0)}, -    {FL2FXCONST_SGL(-0.99571588506485f / 8.0), -     FL2FXCONST_SGL(0.52785521494349f / 8.0)}, -    {FL2FXCONST_SGL(0.97401082477563f / 8.0), -     FL2FXCONST_SGL(-0.16855870075190f / 8.0)}, -    {FL2FXCONST_SGL(0.72683747733879f / 8.0), -     FL2FXCONST_SGL(-0.48060774432251f / 8.0)}, -    {FL2FXCONST_SGL(0.95432193457128f / 8.0), -     FL2FXCONST_SGL(0.68849603408441f / 8.0)}, -    {FL2FXCONST_SGL(-0.72962208425191f / 8.0), -     FL2FXCONST_SGL(-0.76608443420917f / 8.0)}, -    {FL2FXCONST_SGL(-0.85359479233537f / 8.0), -     FL2FXCONST_SGL(0.88738125901579f / 8.0)}, -    {FL2FXCONST_SGL(-0.81412430338535f / 8.0), -     FL2FXCONST_SGL(-0.97480768049637f / 8.0)}, -    {FL2FXCONST_SGL(-0.87930772356786f / 8.0), -     FL2FXCONST_SGL(0.74748307690436f / 8.0)}, -    {FL2FXCONST_SGL(-0.71573331064977f / 8.0), -     FL2FXCONST_SGL(-0.98570608178923f / 8.0)}, -    {FL2FXCONST_SGL(0.83524300028228f / 8.0), -     FL2FXCONST_SGL(0.83702537075163f / 8.0)}, -    {FL2FXCONST_SGL(-0.48086065601423f / 8.0), -     FL2FXCONST_SGL(-0.98848504923531f / 8.0)}, -    {FL2FXCONST_SGL(0.97139128574778f / 8.0), -     FL2FXCONST_SGL(0.80093621198236f / 8.0)}, -    {FL2FXCONST_SGL(0.51992825347895f / 8.0), -     FL2FXCONST_SGL(0.80247631400510f / 8.0)}, -    {FL2FXCONST_SGL(-0.00848591195325f / 8.0), -     FL2FXCONST_SGL(-0.76670128000486f / 8.0)}, -    {FL2FXCONST_SGL(-0.70294374303036f / 8.0), -     FL2FXCONST_SGL(0.55359910445577f / 8.0)}, -    {FL2FXCONST_SGL(-0.95894428168140f / 8.0), -     FL2FXCONST_SGL(-0.43265504344783f / 8.0)}, -    {FL2FXCONST_SGL(0.97079252950321f / 8.0), -     FL2FXCONST_SGL(0.09325857238682f / 8.0)}, -    {FL2FXCONST_SGL(-0.92404293670797f / 8.0), -     FL2FXCONST_SGL(0.85507704027855f / 8.0)}, -    {FL2FXCONST_SGL(-0.69506469500450f / 8.0), -     FL2FXCONST_SGL(0.98633412625459f / 8.0)}, -    {FL2FXCONST_SGL(0.26559203620024f / 8.0), -     FL2FXCONST_SGL(0.73314307966524f / 8.0)}, -    {FL2FXCONST_SGL(0.28038443336943f / 8.0), -     FL2FXCONST_SGL(0.14537913654427f / 8.0)}, -    {FL2FXCONST_SGL(-0.74138124825523f / 8.0), -     FL2FXCONST_SGL(0.99310339807762f / 8.0)}, -    {FL2FXCONST_SGL(-0.01752795995444f / 8.0), -     FL2FXCONST_SGL(-0.82616635284178f / 8.0)}, -    {FL2FXCONST_SGL(-0.55126773094930f / 8.0), -     FL2FXCONST_SGL(-0.98898543862153f / 8.0)}, -    {FL2FXCONST_SGL(0.97960898850996f / 8.0), -     FL2FXCONST_SGL(-0.94021446752851f / 8.0)}, -    {FL2FXCONST_SGL(-0.99196309146936f / 8.0), -     FL2FXCONST_SGL(0.67019017358456f / 8.0)}, -    {FL2FXCONST_SGL(-0.67684928085260f / 8.0), -     FL2FXCONST_SGL(0.12631491649378f / 8.0)}, -    {FL2FXCONST_SGL(0.09140039465500f / 8.0), -     FL2FXCONST_SGL(-0.20537731453108f / 8.0)}, -    {FL2FXCONST_SGL(-0.71658965751996f / 8.0), -     FL2FXCONST_SGL(-0.97788200391224f / 8.0)}, -    {FL2FXCONST_SGL(0.81014640078925f / 8.0), -     FL2FXCONST_SGL(0.53722648362443f / 8.0)}, -    {FL2FXCONST_SGL(0.40616991671205f / 8.0), -     FL2FXCONST_SGL(-0.26469008598449f / 8.0)}, -    {FL2FXCONST_SGL(-0.67680188682972f / 8.0), -     FL2FXCONST_SGL(0.94502052337695f / 8.0)}, -    {FL2FXCONST_SGL(0.86849774348749f / 8.0), -     FL2FXCONST_SGL(-0.18333598647899f / 8.0)}, -    {FL2FXCONST_SGL(-0.99500381284851f / 8.0), -     FL2FXCONST_SGL(-0.02634122068550f / 8.0)}, -    {FL2FXCONST_SGL(0.84329189340667f / 8.0), -     FL2FXCONST_SGL(0.10406957462213f / 8.0)}, -    {FL2FXCONST_SGL(-0.09215968531446f / 8.0), -     FL2FXCONST_SGL(0.69540012101253f / 8.0)}, -    {FL2FXCONST_SGL(0.99956173327206f / 8.0), -     FL2FXCONST_SGL(-0.12358542001404f / 8.0)}, -    {FL2FXCONST_SGL(-0.79732779473535f / 8.0), -     FL2FXCONST_SGL(-0.91582524736159f / 8.0)}, -    {FL2FXCONST_SGL(0.96349973642406f / 8.0), -     FL2FXCONST_SGL(0.96640458041000f / 8.0)}, -    {FL2FXCONST_SGL(-0.79942778496547f / 8.0), -     FL2FXCONST_SGL(0.64323902822857f / 8.0)}, -    {FL2FXCONST_SGL(-0.11566039853896f / 8.0), -     FL2FXCONST_SGL(0.28587846253726f / 8.0)}, -    {FL2FXCONST_SGL(-0.39922954514662f / 8.0), -     FL2FXCONST_SGL(0.94129601616966f / 8.0)}, -    {FL2FXCONST_SGL(0.99089197565987f / 8.0), -     FL2FXCONST_SGL(-0.92062625581587f / 8.0)}, -    {FL2FXCONST_SGL(0.28631285179909f / 8.0), -     FL2FXCONST_SGL(-0.91035047143603f / 8.0)}, -    {FL2FXCONST_SGL(-0.83302725605608f / 8.0), -     FL2FXCONST_SGL(-0.67330410892084f / 8.0)}, -    {FL2FXCONST_SGL(0.95404443402072f / 8.0), -     FL2FXCONST_SGL(0.49162765398743f / 8.0)}, -    {FL2FXCONST_SGL(-0.06449863579434f / 8.0), -     FL2FXCONST_SGL(0.03250560813135f / 8.0)}, -    {FL2FXCONST_SGL(-0.99575054486311f / 8.0), -     FL2FXCONST_SGL(0.42389784469507f / 8.0)}, -    {FL2FXCONST_SGL(-0.65501142790847f / 8.0), -     FL2FXCONST_SGL(0.82546114655624f / 8.0)}, -    {FL2FXCONST_SGL(-0.81254441908887f / 8.0), -     FL2FXCONST_SGL(-0.51627234660629f / 8.0)}, -    {FL2FXCONST_SGL(-0.99646369485481f / 8.0), -     FL2FXCONST_SGL(0.84490533520752f / 8.0)}, -    {FL2FXCONST_SGL(0.00287840603348f / 8.0), -     FL2FXCONST_SGL(0.64768261158166f / 8.0)}, -    {FL2FXCONST_SGL(0.70176989408455f / 8.0), -     FL2FXCONST_SGL(-0.20453028573322f / 8.0)}, -    {FL2FXCONST_SGL(0.96361882270190f / 8.0), -     FL2FXCONST_SGL(0.40706967140989f / 8.0)}, -    {FL2FXCONST_SGL(-0.68883758192426f / 8.0), -     FL2FXCONST_SGL(0.91338958840772f / 8.0)}, -    {FL2FXCONST_SGL(-0.34875585502238f / 8.0), -     FL2FXCONST_SGL(0.71472290693300f / 8.0)}, -    {FL2FXCONST_SGL(0.91980081243087f / 8.0), -     FL2FXCONST_SGL(0.66507455644919f / 8.0)}, -    {FL2FXCONST_SGL(-0.99009048343881f / 8.0), -     FL2FXCONST_SGL(0.85868021604848f / 8.0)}, -    {FL2FXCONST_SGL(0.68865791458395f / 8.0), -     FL2FXCONST_SGL(0.55660316809678f / 8.0)}, -    {FL2FXCONST_SGL(-0.99484402129368f / 8.0), -     FL2FXCONST_SGL(-0.20052559254934f / 8.0)}, -    {FL2FXCONST_SGL(0.94214511408023f / 8.0), -     FL2FXCONST_SGL(-0.99696425367461f / 8.0)}, -    {FL2FXCONST_SGL(-0.67414626793544f / 8.0), -     FL2FXCONST_SGL(0.49548221180078f / 8.0)}, -    {FL2FXCONST_SGL(-0.47339353684664f / 8.0), -     FL2FXCONST_SGL(-0.85904328834047f / 8.0)}, -    {FL2FXCONST_SGL(0.14323651387360f / 8.0), -     FL2FXCONST_SGL(-0.94145598222488f / 8.0)}, -    {FL2FXCONST_SGL(-0.29268293575672f / 8.0), -     FL2FXCONST_SGL(0.05759224927952f / 8.0)}, -    {FL2FXCONST_SGL(0.43793861458754f / 8.0), -     FL2FXCONST_SGL(-0.78904969892724f / 8.0)}, -    {FL2FXCONST_SGL(-0.36345126374441f / 8.0), -     FL2FXCONST_SGL(0.64874435357162f / 8.0)}, -    {FL2FXCONST_SGL(-0.08750604656825f / 8.0), -     FL2FXCONST_SGL(0.97686944362527f / 8.0)}, -    {FL2FXCONST_SGL(-0.96495267812511f / 8.0), -     FL2FXCONST_SGL(-0.53960305946511f / 8.0)}, -    {FL2FXCONST_SGL(0.55526940659947f / 8.0), -     FL2FXCONST_SGL(0.78891523734774f / 8.0)}, -    {FL2FXCONST_SGL(0.73538215752630f / 8.0), -     FL2FXCONST_SGL(0.96452072373404f / 8.0)}, -    {FL2FXCONST_SGL(-0.30889773919437f / 8.0), -     FL2FXCONST_SGL(-0.80664389776860f / 8.0)}, -    {FL2FXCONST_SGL(0.03574995626194f / 8.0), -     FL2FXCONST_SGL(-0.97325616900959f / 8.0)}, -    {FL2FXCONST_SGL(0.98720684660488f / 8.0), -     FL2FXCONST_SGL(0.48409133691962f / 8.0)}, -    {FL2FXCONST_SGL(-0.81689296271203f / 8.0), -     FL2FXCONST_SGL(-0.90827703628298f / 8.0)}, -    {FL2FXCONST_SGL(0.67866860118215f / 8.0), -     FL2FXCONST_SGL(0.81284503870856f / 8.0)}, -    {FL2FXCONST_SGL(-0.15808569732583f / 8.0), -     FL2FXCONST_SGL(0.85279555024382f / 8.0)}, -    {FL2FXCONST_SGL(0.80723395114371f / 8.0), -     FL2FXCONST_SGL(-0.24717418514605f / 8.0)}, -    {FL2FXCONST_SGL(0.47788757329038f / 8.0), -     FL2FXCONST_SGL(-0.46333147839295f / 8.0)}, -    {FL2FXCONST_SGL(0.96367554763201f / 8.0), -     FL2FXCONST_SGL(0.38486749303242f / 8.0)}, -    {FL2FXCONST_SGL(-0.99143875716818f / 8.0), -     FL2FXCONST_SGL(-0.24945277239809f / 8.0)}, -    {FL2FXCONST_SGL(0.83081876925833f / 8.0), -     FL2FXCONST_SGL(-0.94780851414763f / 8.0)}, -    {FL2FXCONST_SGL(-0.58753191905341f / 8.0), -     FL2FXCONST_SGL(0.01290772389163f / 8.0)}, -    {FL2FXCONST_SGL(0.95538108220960f / 8.0), -     FL2FXCONST_SGL(-0.85557052096538f / 8.0)}, -    {FL2FXCONST_SGL(-0.96490920476211f / 8.0), -     FL2FXCONST_SGL(-0.64020970923102f / 8.0)}, -    {FL2FXCONST_SGL(-0.97327101028521f / 8.0), -     FL2FXCONST_SGL(0.12378128133110f / 8.0)}, -    {FL2FXCONST_SGL(0.91400366022124f / 8.0), -     FL2FXCONST_SGL(0.57972471346930f / 8.0)}, -    {FL2FXCONST_SGL(-0.99925837363824f / 8.0), -     FL2FXCONST_SGL(0.71084847864067f / 8.0)}, -    {FL2FXCONST_SGL(-0.86875903507313f / 8.0), -     FL2FXCONST_SGL(-0.20291699203564f / 8.0)}, -    {FL2FXCONST_SGL(-0.26240034795124f / 8.0), -     FL2FXCONST_SGL(-0.68264554369108f / 8.0)}, -    {FL2FXCONST_SGL(-0.24664412953388f / 8.0), -     FL2FXCONST_SGL(-0.87642273115183f / 8.0)}, -    {FL2FXCONST_SGL(0.02416275806869f / 8.0), -     FL2FXCONST_SGL(0.27192914288905f / 8.0)}, -    {FL2FXCONST_SGL(0.82068619590515f / 8.0), -     FL2FXCONST_SGL(-0.85087787994476f / 8.0)}, -    {FL2FXCONST_SGL(0.88547373760759f / 8.0), -     FL2FXCONST_SGL(-0.89636802901469f / 8.0)}, -    {FL2FXCONST_SGL(-0.18173078152226f / 8.0), -     FL2FXCONST_SGL(-0.26152145156800f / 8.0)}, -    {FL2FXCONST_SGL(0.09355476558534f / 8.0), -     FL2FXCONST_SGL(0.54845123045604f / 8.0)}, -    {FL2FXCONST_SGL(-0.54668414224090f / 8.0), -     FL2FXCONST_SGL(0.95980774020221f / 8.0)}, -    {FL2FXCONST_SGL(0.37050990604091f / 8.0), -     FL2FXCONST_SGL(-0.59910140383171f / 8.0)}, -    {FL2FXCONST_SGL(-0.70373594262891f / 8.0), -     FL2FXCONST_SGL(0.91227665827081f / 8.0)}, -    {FL2FXCONST_SGL(-0.34600785879594f / 8.0), -     FL2FXCONST_SGL(-0.99441426144200f / 8.0)}, -    {FL2FXCONST_SGL(-0.68774481731008f / 8.0), -     FL2FXCONST_SGL(-0.30238837956299f / 8.0)}, -    {FL2FXCONST_SGL(-0.26843291251234f / 8.0), -     FL2FXCONST_SGL(0.83115668004362f / 8.0)}, -    {FL2FXCONST_SGL(0.49072334613242f / 8.0), -     FL2FXCONST_SGL(-0.45359708737775f / 8.0)}, -    {FL2FXCONST_SGL(0.38975993093975f / 8.0), -     FL2FXCONST_SGL(0.95515358099121f / 8.0)}, -    {FL2FXCONST_SGL(-0.97757125224150f / 8.0), -     FL2FXCONST_SGL(0.05305894580606f / 8.0)}, -    {FL2FXCONST_SGL(-0.17325552859616f / 8.0), -     FL2FXCONST_SGL(-0.92770672250494f / 8.0)}, -    {FL2FXCONST_SGL(0.99948035025744f / 8.0), -     FL2FXCONST_SGL(0.58285545563426f / 8.0)}, -    {FL2FXCONST_SGL(-0.64946246527458f / 8.0), -     FL2FXCONST_SGL(0.68645507104960f / 8.0)}, -    {FL2FXCONST_SGL(-0.12016920576437f / 8.0), -     FL2FXCONST_SGL(-0.57147322153312f / 8.0)}, -    {FL2FXCONST_SGL(-0.58947456517751f / 8.0), -     FL2FXCONST_SGL(-0.34847132454388f / 8.0)}, -    {FL2FXCONST_SGL(-0.41815140454465f / 8.0), -     FL2FXCONST_SGL(0.16276422358861f / 8.0)}, -    {FL2FXCONST_SGL(0.99885650204884f / 8.0), -     FL2FXCONST_SGL(0.11136095490444f / 8.0)}, -    {FL2FXCONST_SGL(-0.56649614128386f / 8.0), -     FL2FXCONST_SGL(-0.90494866361587f / 8.0)}, -    {FL2FXCONST_SGL(0.94138021032330f / 8.0), -     FL2FXCONST_SGL(0.35281916733018f / 8.0)}, -    {FL2FXCONST_SGL(-0.75725076534641f / 8.0), -     FL2FXCONST_SGL(0.53650549640587f / 8.0)}, -    {FL2FXCONST_SGL(0.20541973692630f / 8.0), -     FL2FXCONST_SGL(-0.94435144369918f / 8.0)}, -    {FL2FXCONST_SGL(0.99980371023351f / 8.0), -     FL2FXCONST_SGL(0.79835913565599f / 8.0)}, -    {FL2FXCONST_SGL(0.29078277605775f / 8.0), -     FL2FXCONST_SGL(0.35393777921520f / 8.0)}, -    {FL2FXCONST_SGL(-0.62858772103030f / 8.0), -     FL2FXCONST_SGL(0.38765693387102f / 8.0)}, -    {FL2FXCONST_SGL(0.43440904467688f / 8.0), -     FL2FXCONST_SGL(-0.98546330463232f / 8.0)}, -    {FL2FXCONST_SGL(-0.98298583762390f / 8.0), -     FL2FXCONST_SGL(0.21021524625209f / 8.0)}, -    {FL2FXCONST_SGL(0.19513029146934f / 8.0), -     FL2FXCONST_SGL(-0.94239832251867f / 8.0)}, -    {FL2FXCONST_SGL(-0.95476662400101f / 8.0), -     FL2FXCONST_SGL(0.98364554179143f / 8.0)}, -    {FL2FXCONST_SGL(0.93379635304810f / 8.0), -     FL2FXCONST_SGL(-0.70881994583682f / 8.0)}, -    {FL2FXCONST_SGL(-0.85235410573336f / 8.0), -     FL2FXCONST_SGL(-0.08342347966410f / 8.0)}, -    {FL2FXCONST_SGL(-0.86425093011245f / 8.0), -     FL2FXCONST_SGL(-0.45795025029466f / 8.0)}, -    {FL2FXCONST_SGL(0.38879779059045f / 8.0), -     FL2FXCONST_SGL(0.97274429344593f / 8.0)}, -    {FL2FXCONST_SGL(0.92045124735495f / 8.0), -     FL2FXCONST_SGL(-0.62433652524220f / 8.0)}, -    {FL2FXCONST_SGL(0.89162532251878f / 8.0), -     FL2FXCONST_SGL(0.54950955570563f / 8.0)}, -    {FL2FXCONST_SGL(-0.36834336949252f / 8.0), -     FL2FXCONST_SGL(0.96458298020975f / 8.0)}, -    {FL2FXCONST_SGL(0.93891760988045f / 8.0), -     FL2FXCONST_SGL(-0.89968353740388f / 8.0)}, -    {FL2FXCONST_SGL(0.99267657565094f / 8.0), -     FL2FXCONST_SGL(-0.03757034316958f / 8.0)}, -    {FL2FXCONST_SGL(-0.94063471614176f / 8.0), -     FL2FXCONST_SGL(0.41332338538963f / 8.0)}, -    {FL2FXCONST_SGL(0.99740224117019f / 8.0), -     FL2FXCONST_SGL(-0.16830494996370f / 8.0)}, -    {FL2FXCONST_SGL(-0.35899413170555f / 8.0), -     FL2FXCONST_SGL(-0.46633226649613f / 8.0)}, -    {FL2FXCONST_SGL(0.05237237274947f / 8.0), -     FL2FXCONST_SGL(-0.25640361602661f / 8.0)}, -    {FL2FXCONST_SGL(0.36703583957424f / 8.0), -     FL2FXCONST_SGL(-0.38653265641875f / 8.0)}, -    {FL2FXCONST_SGL(0.91653180367913f / 8.0), -     FL2FXCONST_SGL(-0.30587628726597f / 8.0)}, -    {FL2FXCONST_SGL(0.69000803499316f / 8.0), -     FL2FXCONST_SGL(0.90952171386132f / 8.0)}, -    {FL2FXCONST_SGL(-0.38658751133527f / 8.0), -     FL2FXCONST_SGL(0.99501571208985f / 8.0)}, -    {FL2FXCONST_SGL(-0.29250814029851f / 8.0), -     FL2FXCONST_SGL(0.37444994344615f / 8.0)}, -    {FL2FXCONST_SGL(-0.60182204677608f / 8.0), -     FL2FXCONST_SGL(0.86779651036123f / 8.0)}, -    {FL2FXCONST_SGL(-0.97418588163217f / 8.0), -     FL2FXCONST_SGL(0.96468523666475f / 8.0)}, -    {FL2FXCONST_SGL(0.88461574003963f / 8.0), -     FL2FXCONST_SGL(0.57508405276414f / 8.0)}, -    {FL2FXCONST_SGL(0.05198933055162f / 8.0), -     FL2FXCONST_SGL(0.21269661669964f / 8.0)}, -    {FL2FXCONST_SGL(-0.53499621979720f / 8.0), -     FL2FXCONST_SGL(0.97241553731237f / 8.0)}, -    {FL2FXCONST_SGL(-0.49429560226497f / 8.0), -     FL2FXCONST_SGL(0.98183865291903f / 8.0)}, -    {FL2FXCONST_SGL(-0.98935142339139f / 8.0), -     FL2FXCONST_SGL(-0.40249159006933f / 8.0)}, -    {FL2FXCONST_SGL(-0.98081380091130f / 8.0), -     FL2FXCONST_SGL(-0.72856895534041f / 8.0)}, -    {FL2FXCONST_SGL(-0.27338148835532f / 8.0), -     FL2FXCONST_SGL(0.99950922447209f / 8.0)}, -    {FL2FXCONST_SGL(0.06310802338302f / 8.0), -     FL2FXCONST_SGL(-0.54539587529618f / 8.0)}, -    {FL2FXCONST_SGL(-0.20461677199539f / 8.0), -     FL2FXCONST_SGL(-0.14209977628489f / 8.0)}, -    {FL2FXCONST_SGL(0.66223843141647f / 8.0), -     FL2FXCONST_SGL(0.72528579940326f / 8.0)}, -    {FL2FXCONST_SGL(-0.84764345483665f / 8.0), -     FL2FXCONST_SGL(0.02372316801261f / 8.0)}, -    {FL2FXCONST_SGL(-0.89039863483811f / 8.0), -     FL2FXCONST_SGL(0.88866581484602f / 8.0)}, -    {FL2FXCONST_SGL(0.95903308477986f / 8.0), -     FL2FXCONST_SGL(0.76744927173873f / 8.0)}, -    {FL2FXCONST_SGL(0.73504123909879f / 8.0), -     FL2FXCONST_SGL(-0.03747203173192f / 8.0)}, -    {FL2FXCONST_SGL(-0.31744434966056f / 8.0), -     FL2FXCONST_SGL(-0.36834111883652f / 8.0)}, -    {FL2FXCONST_SGL(-0.34110827591623f / 8.0), -     FL2FXCONST_SGL(0.40211222807691f / 8.0)}, -    {FL2FXCONST_SGL(0.47803883714199f / 8.0), -     FL2FXCONST_SGL(-0.39423219786288f / 8.0)}, -    {FL2FXCONST_SGL(0.98299195879514f / 8.0), -     FL2FXCONST_SGL(0.01989791390047f / 8.0)}, -    {FL2FXCONST_SGL(-0.30963073129751f / 8.0), -     FL2FXCONST_SGL(-0.18076720599336f / 8.0)}, -    {FL2FXCONST_SGL(0.99992588229018f / 8.0), -     FL2FXCONST_SGL(-0.26281872094289f / 8.0)}, -    {FL2FXCONST_SGL(-0.93149731080767f / 8.0), -     FL2FXCONST_SGL(-0.98313162570490f / 8.0)}, -    {FL2FXCONST_SGL(0.99923472302773f / 8.0), -     FL2FXCONST_SGL(-0.80142993767554f / 8.0)}, -    {FL2FXCONST_SGL(-0.26024169633417f / 8.0), -     FL2FXCONST_SGL(-0.75999759855752f / 8.0)}, -    {FL2FXCONST_SGL(-0.35712514743563f / 8.0), -     FL2FXCONST_SGL(0.19298963768574f / 8.0)}, -    {FL2FXCONST_SGL(-0.99899084509530f / 8.0), -     FL2FXCONST_SGL(0.74645156992493f / 8.0)}, -    {FL2FXCONST_SGL(0.86557171579452f / 8.0), -     FL2FXCONST_SGL(0.55593866696299f / 8.0)}, -    {FL2FXCONST_SGL(0.33408042438752f / 8.0), -     FL2FXCONST_SGL(0.86185953874709f / 8.0)}, -    {FL2FXCONST_SGL(0.99010736374716f / 8.0), -     FL2FXCONST_SGL(0.04602397576623f / 8.0)}, -    {FL2FXCONST_SGL(-0.66694269691195f / 8.0), -     FL2FXCONST_SGL(-0.91643611810148f / 8.0)}, -    {FL2FXCONST_SGL(0.64016792079480f / 8.0), -     FL2FXCONST_SGL(0.15649530836856f / 8.0)}, -    {FL2FXCONST_SGL(0.99570534804836f / 8.0), -     FL2FXCONST_SGL(0.45844586038111f / 8.0)}, -    {FL2FXCONST_SGL(-0.63431466947340f / 8.0), -     FL2FXCONST_SGL(0.21079116459234f / 8.0)}, -    {FL2FXCONST_SGL(-0.07706847005931f / 8.0), -     FL2FXCONST_SGL(-0.89581437101329f / 8.0)}, -    {FL2FXCONST_SGL(0.98590090577724f / 8.0), -     FL2FXCONST_SGL(0.88241721133981f / 8.0)}, -    {FL2FXCONST_SGL(0.80099335254678f / 8.0), -     FL2FXCONST_SGL(-0.36851896710853f / 8.0)}, -    {FL2FXCONST_SGL(0.78368131392666f / 8.0), -     FL2FXCONST_SGL(0.45506999802597f / 8.0)}, -    {FL2FXCONST_SGL(0.08707806671691f / 8.0), -     FL2FXCONST_SGL(0.80938994918745f / 8.0)}, -    {FL2FXCONST_SGL(-0.86811883080712f / 8.0), -     FL2FXCONST_SGL(0.39347308654705f / 8.0)}, -    {FL2FXCONST_SGL(-0.39466529740375f / 8.0), -     FL2FXCONST_SGL(-0.66809432114456f / 8.0)}, -    {FL2FXCONST_SGL(0.97875325649683f / 8.0), -     FL2FXCONST_SGL(-0.72467840967746f / 8.0)}, -    {FL2FXCONST_SGL(-0.95038560288864f / 8.0), -     FL2FXCONST_SGL(0.89563219587625f / 8.0)}, -    {FL2FXCONST_SGL(0.17005239424212f / 8.0), -     FL2FXCONST_SGL(0.54683053962658f / 8.0)}, -    {FL2FXCONST_SGL(-0.76910792026848f / 8.0), -     FL2FXCONST_SGL(-0.96226617549298f / 8.0)}, -    {FL2FXCONST_SGL(0.99743281016846f / 8.0), -     FL2FXCONST_SGL(0.42697157037567f / 8.0)}, -    {FL2FXCONST_SGL(0.95437383549973f / 8.0), -     FL2FXCONST_SGL(0.97002324109952f / 8.0)}, -    {FL2FXCONST_SGL(0.99578905365569f / 8.0), -     FL2FXCONST_SGL(-0.54106826257356f / 8.0)}, -    {FL2FXCONST_SGL(0.28058259829990f / 8.0), -     FL2FXCONST_SGL(-0.85361420634036f / 8.0)}, -    {FL2FXCONST_SGL(0.85256524470573f / 8.0), -     FL2FXCONST_SGL(-0.64567607735589f / 8.0)}, -    {FL2FXCONST_SGL(-0.50608540105128f / 8.0), -     FL2FXCONST_SGL(-0.65846015480300f / 8.0)}, -    {FL2FXCONST_SGL(-0.97210735183243f / 8.0), -     FL2FXCONST_SGL(-0.23095213067791f / 8.0)}, -    {FL2FXCONST_SGL(0.95424048234441f / 8.0), -     FL2FXCONST_SGL(-0.99240147091219f / 8.0)}, -    {FL2FXCONST_SGL(-0.96926570524023f / 8.0), -     FL2FXCONST_SGL(0.73775654896574f / 8.0)}, -    {FL2FXCONST_SGL(0.30872163214726f / 8.0), -     FL2FXCONST_SGL(0.41514960556126f / 8.0)}, -    {FL2FXCONST_SGL(-0.24523839572639f / 8.0), -     FL2FXCONST_SGL(0.63206633394807f / 8.0)}, -    {FL2FXCONST_SGL(-0.33813265086024f / 8.0), -     FL2FXCONST_SGL(-0.38661779441897f / 8.0)}, -    {FL2FXCONST_SGL(-0.05826828420146f / 8.0), -     FL2FXCONST_SGL(-0.06940774188029f / 8.0)}, -    {FL2FXCONST_SGL(-0.22898461455054f / 8.0), -     FL2FXCONST_SGL(0.97054853316316f / 8.0)}, -    {FL2FXCONST_SGL(-0.18509915019881f / 8.0), -     FL2FXCONST_SGL(0.47565762892084f / 8.0)}, -    {FL2FXCONST_SGL(-0.10488238045009f / 8.0), -     FL2FXCONST_SGL(-0.87769947402394f / 8.0)}, -    {FL2FXCONST_SGL(-0.71886586182037f / 8.0), -     FL2FXCONST_SGL(0.78030982480538f / 8.0)}, -    {FL2FXCONST_SGL(0.99793873738654f / 8.0), -     FL2FXCONST_SGL(0.90041310491497f / 8.0)}, -    {FL2FXCONST_SGL(0.57563307626120f / 8.0), -     FL2FXCONST_SGL(-0.91034337352097f / 8.0)}, -    {FL2FXCONST_SGL(0.28909646383717f / 8.0), -     FL2FXCONST_SGL(0.96307783970534f / 8.0)}, -    {FL2FXCONST_SGL(0.42188998312520f / 8.0), -     FL2FXCONST_SGL(0.48148651230437f / 8.0)}, -    {FL2FXCONST_SGL(0.93335049681047f / 8.0), -     FL2FXCONST_SGL(-0.43537023883588f / 8.0)}, -    {FL2FXCONST_SGL(-0.97087374418267f / 8.0), -     FL2FXCONST_SGL(0.86636445711364f / 8.0)}, -    {FL2FXCONST_SGL(0.36722871286923f / 8.0), -     FL2FXCONST_SGL(0.65291654172961f / 8.0)}, -    {FL2FXCONST_SGL(-0.81093025665696f / 8.0), -     FL2FXCONST_SGL(0.08778370229363f / 8.0)}, -    {FL2FXCONST_SGL(-0.26240603062237f / 8.0), -     FL2FXCONST_SGL(-0.92774095379098f / 8.0)}, -    {FL2FXCONST_SGL(0.83996497984604f / 8.0), -     FL2FXCONST_SGL(0.55839849139647f / 8.0)}, -    {FL2FXCONST_SGL(-0.99909615720225f / 8.0), -     FL2FXCONST_SGL(-0.96024605713970f / 8.0)}, -    {FL2FXCONST_SGL(0.74649464155061f / 8.0), -     FL2FXCONST_SGL(0.12144893606462f / 8.0)}, -    {FL2FXCONST_SGL(-0.74774595569805f / 8.0), -     FL2FXCONST_SGL(-0.26898062008959f / 8.0)}, -    {FL2FXCONST_SGL(0.95781667469567f / 8.0), -     FL2FXCONST_SGL(-0.79047927052628f / 8.0)}, -    {FL2FXCONST_SGL(0.95472308713099f / 8.0), -     FL2FXCONST_SGL(-0.08588776019550f / 8.0)}, -    {FL2FXCONST_SGL(0.48708332746299f / 8.0), -     FL2FXCONST_SGL(0.99999041579432f / 8.0)}, -    {FL2FXCONST_SGL(0.46332038247497f / 8.0), -     FL2FXCONST_SGL(0.10964126185063f / 8.0)}, -    {FL2FXCONST_SGL(-0.76497004940162f / 8.0), -     FL2FXCONST_SGL(0.89210929242238f / 8.0)}, -    {FL2FXCONST_SGL(0.57397389364339f / 8.0), -     FL2FXCONST_SGL(0.35289703373760f / 8.0)}, -    {FL2FXCONST_SGL(0.75374316974495f / 8.0), -     FL2FXCONST_SGL(0.96705214651335f / 8.0)}, -    {FL2FXCONST_SGL(-0.59174397685714f / 8.0), -     FL2FXCONST_SGL(-0.89405370422752f / 8.0)}, -    {FL2FXCONST_SGL(0.75087906691890f / 8.0), -     FL2FXCONST_SGL(-0.29612672982396f / 8.0)}, -    {FL2FXCONST_SGL(-0.98607857336230f / 8.0), -     FL2FXCONST_SGL(0.25034911730023f / 8.0)}, -    {FL2FXCONST_SGL(-0.40761056640505f / 8.0), -     FL2FXCONST_SGL(-0.90045573444695f / 8.0)}, -    {FL2FXCONST_SGL(0.66929266740477f / 8.0), -     FL2FXCONST_SGL(0.98629493401748f / 8.0)}, -    {FL2FXCONST_SGL(-0.97463695257310f / 8.0), -     FL2FXCONST_SGL(-0.00190223301301f / 8.0)}, -    {FL2FXCONST_SGL(0.90145509409859f / 8.0), -     FL2FXCONST_SGL(0.99781390365446f / 8.0)}, -    {FL2FXCONST_SGL(-0.87259289048043f / 8.0), -     FL2FXCONST_SGL(0.99233587353666f / 8.0)}, -    {FL2FXCONST_SGL(-0.91529461447692f / 8.0), -     FL2FXCONST_SGL(-0.15698707534206f / 8.0)}, -    {FL2FXCONST_SGL(-0.03305738840705f / 8.0), -     FL2FXCONST_SGL(-0.37205262859764f / 8.0)}, -    {FL2FXCONST_SGL(0.07223051368337f / 8.0), -     FL2FXCONST_SGL(-0.88805001733626f / 8.0)}, -    {FL2FXCONST_SGL(0.99498012188353f / 8.0), -     FL2FXCONST_SGL(0.97094358113387f / 8.0)}, -    {FL2FXCONST_SGL(-0.74904939500519f / 8.0), -     FL2FXCONST_SGL(0.99985483641521f / 8.0)}, -    {FL2FXCONST_SGL(0.04585228574211f / 8.0), -     FL2FXCONST_SGL(0.99812337444082f / 8.0)}, -    {FL2FXCONST_SGL(-0.89054954257993f / 8.0), -     FL2FXCONST_SGL(-0.31791913188064f / 8.0)}, -    {FL2FXCONST_SGL(-0.83782144651251f / 8.0), -     FL2FXCONST_SGL(0.97637632547466f / 8.0)}, -    {FL2FXCONST_SGL(0.33454804933804f / 8.0), -     FL2FXCONST_SGL(-0.86231516800408f / 8.0)}, -    {FL2FXCONST_SGL(-0.99707579362824f / 8.0), -     FL2FXCONST_SGL(0.93237990079441f / 8.0)}, -    {FL2FXCONST_SGL(-0.22827527843994f / 8.0), -     FL2FXCONST_SGL(0.18874759397997f / 8.0)}, -    {FL2FXCONST_SGL(0.67248046289143f / 8.0), -     FL2FXCONST_SGL(-0.03646211390569f / 8.0)}, -    {FL2FXCONST_SGL(-0.05146538187944f / 8.0), -     FL2FXCONST_SGL(-0.92599700120679f / 8.0)}, -    {FL2FXCONST_SGL(0.99947295749905f / 8.0), -     FL2FXCONST_SGL(0.93625229707912f / 8.0)}, -    {FL2FXCONST_SGL(0.66951124390363f / 8.0), -     FL2FXCONST_SGL(0.98905825623893f / 8.0)}, -    {FL2FXCONST_SGL(-0.99602956559179f / 8.0), -     FL2FXCONST_SGL(-0.44654715757688f / 8.0)}, -    {FL2FXCONST_SGL(0.82104905483590f / 8.0), -     FL2FXCONST_SGL(0.99540741724928f / 8.0)}, -    {FL2FXCONST_SGL(0.99186510988782f / 8.0), -     FL2FXCONST_SGL(0.72023001312947f / 8.0)}, -    {FL2FXCONST_SGL(-0.65284592392918f / 8.0), -     FL2FXCONST_SGL(0.52186723253637f / 8.0)}, -    {FL2FXCONST_SGL(0.93885443798188f / 8.0), -     FL2FXCONST_SGL(-0.74895312615259f / 8.0)}, -    {FL2FXCONST_SGL(0.96735248738388f / 8.0), -     FL2FXCONST_SGL(0.90891816978629f / 8.0)}, -    {FL2FXCONST_SGL(-0.22225968841114f / 8.0), -     FL2FXCONST_SGL(0.57124029781228f / 8.0)}, -    {FL2FXCONST_SGL(-0.44132783753414f / 8.0), -     FL2FXCONST_SGL(-0.92688840659280f / 8.0)}, -    {FL2FXCONST_SGL(-0.85694974219574f / 8.0), -     FL2FXCONST_SGL(0.88844532719844f / 8.0)}, -    {FL2FXCONST_SGL(0.91783042091762f / 8.0), -     FL2FXCONST_SGL(-0.46356892383970f / 8.0)}, -    {FL2FXCONST_SGL(0.72556974415690f / 8.0), -     FL2FXCONST_SGL(-0.99899555770747f / 8.0)}, -    {FL2FXCONST_SGL(-0.99711581834508f / 8.0), -     FL2FXCONST_SGL(0.58211560180426f / 8.0)}, -    {FL2FXCONST_SGL(0.77638976371966f / 8.0), -     FL2FXCONST_SGL(0.94321834873819f / 8.0)}, -    {FL2FXCONST_SGL(0.07717324253925f / 8.0), -     FL2FXCONST_SGL(0.58638399856595f / 8.0)}, -    {FL2FXCONST_SGL(-0.56049829194163f / 8.0), -     FL2FXCONST_SGL(0.82522301569036f / 8.0)}, -    {FL2FXCONST_SGL(0.98398893639988f / 8.0), -     FL2FXCONST_SGL(0.39467440420569f / 8.0)}, -    {FL2FXCONST_SGL(0.47546946844938f / 8.0), -     FL2FXCONST_SGL(0.68613044836811f / 8.0)}, -    {FL2FXCONST_SGL(0.65675089314631f / 8.0), -     FL2FXCONST_SGL(0.18331637134880f / 8.0)}, -    {FL2FXCONST_SGL(0.03273375457980f / 8.0), -     FL2FXCONST_SGL(-0.74933109564108f / 8.0)}, -    {FL2FXCONST_SGL(-0.38684144784738f / 8.0), -     FL2FXCONST_SGL(0.51337349030406f / 8.0)}, -    {FL2FXCONST_SGL(-0.97346267944545f / 8.0), -     FL2FXCONST_SGL(-0.96549364384098f / 8.0)}, -    {FL2FXCONST_SGL(-0.53282156061942f / 8.0), -     FL2FXCONST_SGL(-0.91423265091354f / 8.0)}, -    {FL2FXCONST_SGL(0.99817310731176f / 8.0), -     FL2FXCONST_SGL(0.61133572482148f / 8.0)}, -    {FL2FXCONST_SGL(-0.50254500772635f / 8.0), -     FL2FXCONST_SGL(-0.88829338134294f / 8.0)}, -    {FL2FXCONST_SGL(0.01995873238855f / 8.0), -     FL2FXCONST_SGL(0.85223515096765f / 8.0)}, -    {FL2FXCONST_SGL(0.99930381973804f / 8.0), -     FL2FXCONST_SGL(0.94578896296649f / 8.0)}, -    {FL2FXCONST_SGL(0.82907767600783f / 8.0), -     FL2FXCONST_SGL(-0.06323442598128f / 8.0)}, -    {FL2FXCONST_SGL(-0.58660709669728f / 8.0), -     FL2FXCONST_SGL(0.96840773806582f / 8.0)}, -    {FL2FXCONST_SGL(-0.17573736667267f / 8.0), -     FL2FXCONST_SGL(-0.48166920859485f / 8.0)}, -    {FL2FXCONST_SGL(0.83434292401346f / 8.0), -     FL2FXCONST_SGL(-0.13023450646997f / 8.0)}, -    {FL2FXCONST_SGL(0.05946491307025f / 8.0), -     FL2FXCONST_SGL(0.20511047074866f / 8.0)}, -    {FL2FXCONST_SGL(0.81505484574602f / 8.0), -     FL2FXCONST_SGL(-0.94685947861369f / 8.0)}, -    {FL2FXCONST_SGL(-0.44976380954860f / 8.0), -     FL2FXCONST_SGL(0.40894572671545f / 8.0)}, -    {FL2FXCONST_SGL(-0.89746474625671f / 8.0), -     FL2FXCONST_SGL(0.99846578838537f / 8.0)}, -    {FL2FXCONST_SGL(0.39677256130792f / 8.0), -     FL2FXCONST_SGL(-0.74854668609359f / 8.0)}, -    {FL2FXCONST_SGL(-0.07588948563079f / 8.0), -     FL2FXCONST_SGL(0.74096214084170f / 8.0)}, -    {FL2FXCONST_SGL(0.76343198951445f / 8.0), -     FL2FXCONST_SGL(0.41746629422634f / 8.0)}, -    {FL2FXCONST_SGL(-0.74490104699626f / 8.0), -     FL2FXCONST_SGL(0.94725911744610f / 8.0)}, -    {FL2FXCONST_SGL(0.64880119792759f / 8.0), -     FL2FXCONST_SGL(0.41336660830571f / 8.0)}, -    {FL2FXCONST_SGL(0.62319537462542f / 8.0), -     FL2FXCONST_SGL(-0.93098313552599f / 8.0)}, -    {FL2FXCONST_SGL(0.42215817594807f / 8.0), -     FL2FXCONST_SGL(-0.07712787385208f / 8.0)}, -    {FL2FXCONST_SGL(0.02704554141885f / 8.0), -     FL2FXCONST_SGL(-0.05417518053666f / 8.0)}, -    {FL2FXCONST_SGL(0.80001773566818f / 8.0), -     FL2FXCONST_SGL(0.91542195141039f / 8.0)}, -    {FL2FXCONST_SGL(-0.79351832348816f / 8.0), -     FL2FXCONST_SGL(-0.36208897989136f / 8.0)}, -    {FL2FXCONST_SGL(0.63872359151636f / 8.0), -     FL2FXCONST_SGL(0.08128252493444f / 8.0)}, -    {FL2FXCONST_SGL(0.52890520960295f / 8.0), -     FL2FXCONST_SGL(0.60048872455592f / 8.0)}, -    {FL2FXCONST_SGL(0.74238552914587f / 8.0), -     FL2FXCONST_SGL(0.04491915291044f / 8.0)}, -    {FL2FXCONST_SGL(0.99096131449250f / 8.0), -     FL2FXCONST_SGL(-0.19451182854402f / 8.0)}, -    {FL2FXCONST_SGL(-0.80412329643109f / 8.0), -     FL2FXCONST_SGL(-0.88513818199457f / 8.0)}, -    {FL2FXCONST_SGL(-0.64612616129736f / 8.0), -     FL2FXCONST_SGL(0.72198674804544f / 8.0)}, -    {FL2FXCONST_SGL(0.11657770663191f / 8.0), -     FL2FXCONST_SGL(-0.83662833815041f / 8.0)}, -    {FL2FXCONST_SGL(-0.95053182488101f / 8.0), -     FL2FXCONST_SGL(-0.96939905138082f / 8.0)}, -    {FL2FXCONST_SGL(-0.62228872928622f / 8.0), -     FL2FXCONST_SGL(0.82767262846661f / 8.0)}, -    {FL2FXCONST_SGL(0.03004475787316f / 8.0), -     FL2FXCONST_SGL(-0.99738896333384f / 8.0)}, -    {FL2FXCONST_SGL(-0.97987214341034f / 8.0), -     FL2FXCONST_SGL(0.36526129686425f / 8.0)}, -    {FL2FXCONST_SGL(-0.99986980746200f / 8.0), -     FL2FXCONST_SGL(-0.36021610299715f / 8.0)}, -    {FL2FXCONST_SGL(0.89110648599879f / 8.0), -     FL2FXCONST_SGL(-0.97894250343044f / 8.0)}, -    {FL2FXCONST_SGL(0.10407960510582f / 8.0), -     FL2FXCONST_SGL(0.77357793811619f / 8.0)}, -    {FL2FXCONST_SGL(0.95964737821728f / 8.0), -     FL2FXCONST_SGL(-0.35435818285502f / 8.0)}, -    {FL2FXCONST_SGL(0.50843233159162f / 8.0), -     FL2FXCONST_SGL(0.96107691266205f / 8.0)}, -    {FL2FXCONST_SGL(0.17006334670615f / 8.0), -     FL2FXCONST_SGL(-0.76854025314829f / 8.0)}, -    {FL2FXCONST_SGL(0.25872675063360f / 8.0), -     FL2FXCONST_SGL(0.99893303933816f / 8.0)}, -    {FL2FXCONST_SGL(-0.01115998681937f / 8.0), -     FL2FXCONST_SGL(0.98496019742444f / 8.0)}, -    {FL2FXCONST_SGL(-0.79598702973261f / 8.0), -     FL2FXCONST_SGL(0.97138411318894f / 8.0)}, -    {FL2FXCONST_SGL(-0.99264708948101f / 8.0), -     FL2FXCONST_SGL(-0.99542822402536f / 8.0)}, -    {FL2FXCONST_SGL(-0.99829663752818f / 8.0), -     FL2FXCONST_SGL(0.01877138824311f / 8.0)}, -    {FL2FXCONST_SGL(-0.70801016548184f / 8.0), -     FL2FXCONST_SGL(0.33680685948117f / 8.0)}, -    {FL2FXCONST_SGL(-0.70467057786826f / 8.0), -     FL2FXCONST_SGL(0.93272777501857f / 8.0)}, -    {FL2FXCONST_SGL(0.99846021905254f / 8.0), -     FL2FXCONST_SGL(-0.98725746254433f / 8.0)}, -    {FL2FXCONST_SGL(-0.63364968534650f / 8.0), -     FL2FXCONST_SGL(-0.16473594423746f / 8.0)}, -    {FL2FXCONST_SGL(-0.16258217500792f / 8.0), -     FL2FXCONST_SGL(-0.95939125400802f / 8.0)}, -    {FL2FXCONST_SGL(-0.43645594360633f / 8.0), -     FL2FXCONST_SGL(-0.94805030113284f / 8.0)}, -    {FL2FXCONST_SGL(-0.99848471702976f / 8.0), -     FL2FXCONST_SGL(0.96245166923809f / 8.0)}, -    {FL2FXCONST_SGL(-0.16796458968998f / 8.0), -     FL2FXCONST_SGL(-0.98987511890470f / 8.0)}, -    {FL2FXCONST_SGL(-0.87979225745213f / 8.0), -     FL2FXCONST_SGL(-0.71725725041680f / 8.0)}, -    {FL2FXCONST_SGL(0.44183099021786f / 8.0), -     FL2FXCONST_SGL(-0.93568974498761f / 8.0)}, -    {FL2FXCONST_SGL(0.93310180125532f / 8.0), -     FL2FXCONST_SGL(-0.99913308068246f / 8.0)}, -    {FL2FXCONST_SGL(-0.93941931782002f / 8.0), -     FL2FXCONST_SGL(-0.56409379640356f / 8.0)}, -    {FL2FXCONST_SGL(-0.88590003188677f / 8.0), -     FL2FXCONST_SGL(0.47624600491382f / 8.0)}, -    {FL2FXCONST_SGL(0.99971463703691f / 8.0), -     FL2FXCONST_SGL(-0.83889954253462f / 8.0)}, -    {FL2FXCONST_SGL(-0.75376385639978f / 8.0), -     FL2FXCONST_SGL(0.00814643438625f / 8.0)}, -    {FL2FXCONST_SGL(0.93887685615875f / 8.0), -     FL2FXCONST_SGL(-0.11284528204636f / 8.0)}, -    {FL2FXCONST_SGL(0.85126435782309f / 8.0), -     FL2FXCONST_SGL(0.52349251543547f / 8.0)}, -    {FL2FXCONST_SGL(0.39701421446381f / 8.0), -     FL2FXCONST_SGL(0.81779634174316f / 8.0)}, -    {FL2FXCONST_SGL(-0.37024464187437f / 8.0), -     FL2FXCONST_SGL(-0.87071656222959f / 8.0)}, -    {FL2FXCONST_SGL(-0.36024828242896f / 8.0), -     FL2FXCONST_SGL(0.34655735648287f / 8.0)}, -    {FL2FXCONST_SGL(-0.93388812549209f / 8.0), -     FL2FXCONST_SGL(-0.84476541096429f / 8.0)}, -    {FL2FXCONST_SGL(-0.65298804552119f / 8.0), -     FL2FXCONST_SGL(-0.18439575450921f / 8.0)}, -    {FL2FXCONST_SGL(0.11960319006843f / 8.0), -     FL2FXCONST_SGL(0.99899346780168f / 8.0)}, -    {FL2FXCONST_SGL(0.94292565553160f / 8.0), -     FL2FXCONST_SGL(0.83163906518293f / 8.0)}, -    {FL2FXCONST_SGL(0.75081145286948f / 8.0), -     FL2FXCONST_SGL(-0.35533223142265f / 8.0)}, -    {FL2FXCONST_SGL(0.56721979748394f / 8.0), -     FL2FXCONST_SGL(-0.24076836414499f / 8.0)}, -    {FL2FXCONST_SGL(0.46857766746029f / 8.0), -     FL2FXCONST_SGL(-0.30140233457198f / 8.0)}, -    {FL2FXCONST_SGL(0.97312313923635f / 8.0), -     FL2FXCONST_SGL(-0.99548191630031f / 8.0)}, -    {FL2FXCONST_SGL(-0.38299976567017f / 8.0), -     FL2FXCONST_SGL(0.98516909715427f / 8.0)}, -    {FL2FXCONST_SGL(0.41025800019463f / 8.0), -     FL2FXCONST_SGL(0.02116736935734f / 8.0)}, -    {FL2FXCONST_SGL(0.09638062008048f / 8.0), -     FL2FXCONST_SGL(0.04411984381457f / 8.0)}, -    {FL2FXCONST_SGL(-0.85283249275397f / 8.0), -     FL2FXCONST_SGL(0.91475563922421f / 8.0)}, -    {FL2FXCONST_SGL(0.88866808958124f / 8.0), -     FL2FXCONST_SGL(-0.99735267083226f / 8.0)}, -    {FL2FXCONST_SGL(-0.48202429536989f / 8.0), -     FL2FXCONST_SGL(-0.96805608884164f / 8.0)}, -    {FL2FXCONST_SGL(0.27572582416567f / 8.0), -     FL2FXCONST_SGL(0.58634753335832f / 8.0)}, -    {FL2FXCONST_SGL(-0.65889129659168f / 8.0), -     FL2FXCONST_SGL(0.58835634138583f / 8.0)}, -    {FL2FXCONST_SGL(0.98838086953732f / 8.0), -     FL2FXCONST_SGL(0.99994349600236f / 8.0)}, -    {FL2FXCONST_SGL(-0.20651349620689f / 8.0), -     FL2FXCONST_SGL(0.54593044066355f / 8.0)}, -    {FL2FXCONST_SGL(-0.62126416356920f / 8.0), -     FL2FXCONST_SGL(-0.59893681700392f / 8.0)}, -    {FL2FXCONST_SGL(0.20320105410437f / 8.0), -     FL2FXCONST_SGL(-0.86879180355289f / 8.0)}, -    {FL2FXCONST_SGL(-0.97790548600584f / 8.0), -     FL2FXCONST_SGL(0.96290806999242f / 8.0)}, -    {FL2FXCONST_SGL(0.11112534735126f / 8.0), -     FL2FXCONST_SGL(0.21484763313301f / 8.0)}, -    {FL2FXCONST_SGL(-0.41368337314182f / 8.0), -     FL2FXCONST_SGL(0.28216837680365f / 8.0)}, -    {FL2FXCONST_SGL(0.24133038992960f / 8.0), -     FL2FXCONST_SGL(0.51294362630238f / 8.0)}, -    {FL2FXCONST_SGL(-0.66393410674885f / 8.0), -     FL2FXCONST_SGL(-0.08249679629081f / 8.0)}, -    {FL2FXCONST_SGL(-0.53697829178752f / 8.0), -     FL2FXCONST_SGL(-0.97649903936228f / 8.0)}, -    {FL2FXCONST_SGL(-0.97224737889348f / 8.0), -     FL2FXCONST_SGL(0.22081333579837f / 8.0)}, -    {FL2FXCONST_SGL(0.87392477144549f / 8.0), -     FL2FXCONST_SGL(-0.12796173740361f / 8.0)}, -    {FL2FXCONST_SGL(0.19050361015753f / 8.0), -     FL2FXCONST_SGL(0.01602615387195f / 8.0)}, -    {FL2FXCONST_SGL(-0.46353441212724f / 8.0), -     FL2FXCONST_SGL(-0.95249041539006f / 8.0)}, -    {FL2FXCONST_SGL(-0.07064096339021f / 8.0), -     FL2FXCONST_SGL(-0.94479803205886f / 8.0)}, -    {FL2FXCONST_SGL(-0.92444085484466f / 8.0), -     FL2FXCONST_SGL(-0.10457590187436f / 8.0)}, -    {FL2FXCONST_SGL(-0.83822593578728f / 8.0), -     FL2FXCONST_SGL(-0.01695043208885f / 8.0)}, -    {FL2FXCONST_SGL(0.75214681811150f / 8.0), -     FL2FXCONST_SGL(-0.99955681042665f / 8.0)}, -    {FL2FXCONST_SGL(-0.42102998829339f / 8.0), -     FL2FXCONST_SGL(0.99720941999394f / 8.0)}, -    {FL2FXCONST_SGL(-0.72094786237696f / 8.0), -     FL2FXCONST_SGL(-0.35008961934255f / 8.0)}, -    {FL2FXCONST_SGL(0.78843311019251f / 8.0), -     FL2FXCONST_SGL(0.52851398958271f / 8.0)}, -    {FL2FXCONST_SGL(0.97394027897442f / 8.0), -     FL2FXCONST_SGL(-0.26695944086561f / 8.0)}, -    {FL2FXCONST_SGL(0.99206463477946f / 8.0), -     FL2FXCONST_SGL(-0.57010120849429f / 8.0)}, -    {FL2FXCONST_SGL(0.76789609461795f / 8.0), -     FL2FXCONST_SGL(-0.76519356730966f / 8.0)}, -    {FL2FXCONST_SGL(-0.82002421836409f / 8.0), -     FL2FXCONST_SGL(-0.73530179553767f / 8.0)}, -    {FL2FXCONST_SGL(0.81924990025724f / 8.0), -     FL2FXCONST_SGL(0.99698425250579f / 8.0)}, -    {FL2FXCONST_SGL(-0.26719850873357f / 8.0), -     FL2FXCONST_SGL(0.68903369776193f / 8.0)}, -    {FL2FXCONST_SGL(-0.43311260380975f / 8.0), -     FL2FXCONST_SGL(0.85321815947490f / 8.0)}, -    {FL2FXCONST_SGL(0.99194979673836f / 8.0), -     FL2FXCONST_SGL(0.91876249766422f / 8.0)}, -    {FL2FXCONST_SGL(-0.80692001248487f / 8.0), -     FL2FXCONST_SGL(-0.32627540663214f / 8.0)}, -    {FL2FXCONST_SGL(0.43080003649976f / 8.0), -     FL2FXCONST_SGL(-0.21919095636638f / 8.0)}, -    {FL2FXCONST_SGL(0.67709491937357f / 8.0), -     FL2FXCONST_SGL(-0.95478075822906f / 8.0)}, -    {FL2FXCONST_SGL(0.56151770568316f / 8.0), -     FL2FXCONST_SGL(-0.70693811747778f / 8.0)}, -    {FL2FXCONST_SGL(0.10831862810749f / 8.0), -     FL2FXCONST_SGL(-0.08628837174592f / 8.0)}, -    {FL2FXCONST_SGL(0.91229417540436f / 8.0), -     FL2FXCONST_SGL(-0.65987351408410f / 8.0)}, -    {FL2FXCONST_SGL(-0.48972893932274f / 8.0), -     FL2FXCONST_SGL(0.56289246362686f / 8.0)}, -    {FL2FXCONST_SGL(-0.89033658689697f / 8.0), -     FL2FXCONST_SGL(-0.71656563987082f / 8.0)}, -    {FL2FXCONST_SGL(0.65269447475094f / 8.0), -     FL2FXCONST_SGL(0.65916004833932f / 8.0)}, -    {FL2FXCONST_SGL(0.67439478141121f / 8.0), -     FL2FXCONST_SGL(-0.81684380846796f / 8.0)}, -    {FL2FXCONST_SGL(-0.47770832416973f / 8.0), -     FL2FXCONST_SGL(-0.16789556203025f / 8.0)}, -    {FL2FXCONST_SGL(-0.99715979260878f / 8.0), -     FL2FXCONST_SGL(-0.93565784007648f / 8.0)}, -    {FL2FXCONST_SGL(-0.90889593602546f / 8.0), -     FL2FXCONST_SGL(0.62034397054380f / 8.0)}, -    {FL2FXCONST_SGL(-0.06618622548177f / 8.0), -     FL2FXCONST_SGL(-0.23812217221359f / 8.0)}, -    {FL2FXCONST_SGL(0.99430266919728f / 8.0), -     FL2FXCONST_SGL(0.18812555317553f / 8.0)}, -    {FL2FXCONST_SGL(0.97686402381843f / 8.0), -     FL2FXCONST_SGL(-0.28664534366620f / 8.0)}, -    {FL2FXCONST_SGL(0.94813650221268f / 8.0), -     FL2FXCONST_SGL(-0.97506640027128f / 8.0)}, -    {FL2FXCONST_SGL(-0.95434497492853f / 8.0), -     FL2FXCONST_SGL(-0.79607978501983f / 8.0)}, -    {FL2FXCONST_SGL(-0.49104783137150f / 8.0), -     FL2FXCONST_SGL(0.32895214359663f / 8.0)}, -    {FL2FXCONST_SGL(0.99881175120751f / 8.0), -     FL2FXCONST_SGL(0.88993983831354f / 8.0)}, -    {FL2FXCONST_SGL(0.50449166760303f / 8.0), -     FL2FXCONST_SGL(-0.85995072408434f / 8.0)}, -    {FL2FXCONST_SGL(0.47162891065108f / 8.0), -     FL2FXCONST_SGL(-0.18680204049569f / 8.0)}, -    {FL2FXCONST_SGL(-0.62081581361840f / 8.0), -     FL2FXCONST_SGL(0.75000676218956f / 8.0)}, -    {FL2FXCONST_SGL(-0.43867015250812f / 8.0), -     FL2FXCONST_SGL(0.99998069244322f / 8.0)}, -    {FL2FXCONST_SGL(0.98630563232075f / 8.0), -     FL2FXCONST_SGL(-0.53578899600662f / 8.0)}, -    {FL2FXCONST_SGL(-0.61510362277374f / 8.0), -     FL2FXCONST_SGL(-0.89515019899997f / 8.0)}, -    {FL2FXCONST_SGL(-0.03841517601843f / 8.0), -     FL2FXCONST_SGL(-0.69888815681179f / 8.0)}, -    {FL2FXCONST_SGL(-0.30102157304644f / 8.0), -     FL2FXCONST_SGL(-0.07667808922205f / 8.0)}, -    {FL2FXCONST_SGL(0.41881284182683f / 8.0), -     FL2FXCONST_SGL(0.02188098922282f / 8.0)}, -    {FL2FXCONST_SGL(-0.86135454941237f / 8.0), -     FL2FXCONST_SGL(0.98947480909359f / 8.0)}, -    {FL2FXCONST_SGL(0.67226861393788f / 8.0), -     FL2FXCONST_SGL(-0.13494389011014f / 8.0)}, -    {FL2FXCONST_SGL(-0.70737398842068f / 8.0), -     FL2FXCONST_SGL(-0.76547349325992f / 8.0)}, -    {FL2FXCONST_SGL(0.94044946687963f / 8.0), -     FL2FXCONST_SGL(0.09026201157416f / 8.0)}, -    {FL2FXCONST_SGL(-0.82386352534327f / 8.0), -     FL2FXCONST_SGL(0.08924768823676f / 8.0)}, -    {FL2FXCONST_SGL(-0.32070666698656f / 8.0), -     FL2FXCONST_SGL(0.50143421908753f / 8.0)}, -    {FL2FXCONST_SGL(0.57593163224487f / 8.0), -     FL2FXCONST_SGL(-0.98966422921509f / 8.0)}, -    {FL2FXCONST_SGL(-0.36326018419965f / 8.0), -     FL2FXCONST_SGL(0.07440243123228f / 8.0)}, -    {FL2FXCONST_SGL(0.99979044674350f / 8.0), -     FL2FXCONST_SGL(-0.14130287347405f / 8.0)}, -    {FL2FXCONST_SGL(-0.92366023326932f / 8.0), -     FL2FXCONST_SGL(-0.97979298068180f / 8.0)}, -    {FL2FXCONST_SGL(-0.44607178518598f / 8.0), -     FL2FXCONST_SGL(-0.54233252016394f / 8.0)}, -    {FL2FXCONST_SGL(0.44226800932956f / 8.0), -     FL2FXCONST_SGL(0.71326756742752f / 8.0)}, -    {FL2FXCONST_SGL(0.03671907158312f / 8.0), -     FL2FXCONST_SGL(0.63606389366675f / 8.0)}, -    {FL2FXCONST_SGL(0.52175424682195f / 8.0), -     FL2FXCONST_SGL(-0.85396826735705f / 8.0)}, -    {FL2FXCONST_SGL(-0.94701139690956f / 8.0), -     FL2FXCONST_SGL(-0.01826348194255f / 8.0)}, -    {FL2FXCONST_SGL(-0.98759606946049f / 8.0), -     FL2FXCONST_SGL(0.82288714303073f / 8.0)}, -    {FL2FXCONST_SGL(0.87434794743625f / 8.0), -     FL2FXCONST_SGL(0.89399495655433f / 8.0)}, -    {FL2FXCONST_SGL(-0.93412041758744f / 8.0), -     FL2FXCONST_SGL(0.41374052024363f / 8.0)}, -    {FL2FXCONST_SGL(0.96063943315511f / 8.0), -     FL2FXCONST_SGL(0.93116709541280f / 8.0)}, -    {FL2FXCONST_SGL(0.97534253457837f / 8.0), -     FL2FXCONST_SGL(0.86150930812689f / 8.0)}, -    {FL2FXCONST_SGL(0.99642466504163f / 8.0), -     FL2FXCONST_SGL(0.70190043427512f / 8.0)}, -    {FL2FXCONST_SGL(-0.94705089665984f / 8.0), -     FL2FXCONST_SGL(-0.29580042814306f / 8.0)}, -    {FL2FXCONST_SGL(0.91599807087376f / 8.0), -     FL2FXCONST_SGL(-0.98147830385781f / 8.0)}}; +    {FL2FXCONST_SGL(-0.99948153278296f), FL2FXCONST_SGL(-0.59483417516607f)}, +    {FL2FXCONST_SGL(0.97113454393991f), FL2FXCONST_SGL(-0.67528515225647f)}, +    {FL2FXCONST_SGL(0.14130051758487f), FL2FXCONST_SGL(-0.95090983575689f)}, +    {FL2FXCONST_SGL(-0.47005496701697f), FL2FXCONST_SGL(-0.37340549728647f)}, +    {FL2FXCONST_SGL(0.80705063769351f), FL2FXCONST_SGL(0.29653668284408f)}, +    {FL2FXCONST_SGL(-0.38981478896926f), FL2FXCONST_SGL(0.89572605717087f)}, +    {FL2FXCONST_SGL(-0.01053049862020f), FL2FXCONST_SGL(-0.66959058036166f)}, +    {FL2FXCONST_SGL(-0.91266367957293f), FL2FXCONST_SGL(-0.11522938140034f)}, +    {FL2FXCONST_SGL(0.54840422910309f), FL2FXCONST_SGL(0.75221367176302f)}, +    {FL2FXCONST_SGL(0.40009252867955f), FL2FXCONST_SGL(-0.98929400334421f)}, +    {FL2FXCONST_SGL(-0.99867974711855f), FL2FXCONST_SGL(-0.88147068645358f)}, +    {FL2FXCONST_SGL(-0.95531076805040f), FL2FXCONST_SGL(0.90908757154593f)}, +    {FL2FXCONST_SGL(-0.45725933317144f), FL2FXCONST_SGL(-0.56716323646760f)}, +    {FL2FXCONST_SGL(-0.72929675029275f), FL2FXCONST_SGL(-0.98008272727324f)}, +    {FL2FXCONST_SGL(0.75622801399036f), FL2FXCONST_SGL(0.20950329995549f)}, +    {FL2FXCONST_SGL(0.07069442601050f), FL2FXCONST_SGL(-0.78247898470706f)}, +    {FL2FXCONST_SGL(0.74496252926055f), FL2FXCONST_SGL(-0.91169004445807f)}, +    {FL2FXCONST_SGL(-0.96440182703856f), FL2FXCONST_SGL(-0.94739918296622f)}, +    {FL2FXCONST_SGL(0.30424629369539f), FL2FXCONST_SGL(-0.49438267012479f)}, +    {FL2FXCONST_SGL(0.66565033746925f), FL2FXCONST_SGL(0.64652935542491f)}, +    {FL2FXCONST_SGL(0.91697008020594f), FL2FXCONST_SGL(0.17514097332009f)}, +    {FL2FXCONST_SGL(-0.70774918760427f), FL2FXCONST_SGL(0.52548653416543f)}, +    {FL2FXCONST_SGL(-0.70051415345560f), FL2FXCONST_SGL(-0.45340028808763f)}, +    {FL2FXCONST_SGL(-0.99496513054797f), FL2FXCONST_SGL(-0.90071908066973f)}, +    {FL2FXCONST_SGL(0.98164490790123f), FL2FXCONST_SGL(-0.77463155528697f)}, +    {FL2FXCONST_SGL(-0.54671580548181f), FL2FXCONST_SGL(-0.02570928536004f)}, +    {FL2FXCONST_SGL(-0.01689629065389f), FL2FXCONST_SGL(0.00287506445732f)}, +    {FL2FXCONST_SGL(-0.86110349531986f), FL2FXCONST_SGL(0.42548583726477f)}, +    {FL2FXCONST_SGL(-0.98892980586032f), FL2FXCONST_SGL(-0.87881132267556f)}, +    {FL2FXCONST_SGL(0.51756627678691f), FL2FXCONST_SGL(0.66926784710139f)}, +    {FL2FXCONST_SGL(-0.99635026409640f), FL2FXCONST_SGL(-0.58107730574765f)}, +    {FL2FXCONST_SGL(-0.99969370862163f), FL2FXCONST_SGL(0.98369989360250f)}, +    {FL2FXCONST_SGL(0.55266258627194f), FL2FXCONST_SGL(0.59449057465591f)}, +    {FL2FXCONST_SGL(0.34581177741673f), FL2FXCONST_SGL(0.94879421061866f)}, +    {FL2FXCONST_SGL(0.62664209577999f), FL2FXCONST_SGL(-0.74402970906471f)}, +    {FL2FXCONST_SGL(-0.77149701404973f), FL2FXCONST_SGL(-0.33883658042801f)}, +    {FL2FXCONST_SGL(-0.91592244254432f), FL2FXCONST_SGL(0.03687901376713f)}, +    {FL2FXCONST_SGL(-0.76285492357887f), FL2FXCONST_SGL(-0.91371867919124f)}, +    {FL2FXCONST_SGL(0.79788337195331f), FL2FXCONST_SGL(-0.93180971199849f)}, +    {FL2FXCONST_SGL(0.54473080610200f), FL2FXCONST_SGL(-0.11919206037186f)}, +    {FL2FXCONST_SGL(-0.85639281671058f), FL2FXCONST_SGL(0.42429854760451f)}, +    {FL2FXCONST_SGL(-0.92882402971423f), FL2FXCONST_SGL(0.27871809078609f)}, +    {FL2FXCONST_SGL(-0.11708371046774f), FL2FXCONST_SGL(-0.99800843444966f)}, +    {FL2FXCONST_SGL(0.21356749817493f), FL2FXCONST_SGL(-0.90716295627033f)}, +    {FL2FXCONST_SGL(-0.76191692573909f), FL2FXCONST_SGL(0.99768118356265f)}, +    {FL2FXCONST_SGL(0.98111043100884f), FL2FXCONST_SGL(-0.95854459734407f)}, +    {FL2FXCONST_SGL(-0.85913269895572f), FL2FXCONST_SGL(0.95766566168880f)}, +    {FL2FXCONST_SGL(-0.93307242253692f), FL2FXCONST_SGL(0.49431757696466f)}, +    {FL2FXCONST_SGL(0.30485754879632f), FL2FXCONST_SGL(-0.70540034357529f)}, +    {FL2FXCONST_SGL(0.85289650925190f), FL2FXCONST_SGL(0.46766131791044f)}, +    {FL2FXCONST_SGL(0.91328082618125f), FL2FXCONST_SGL(-0.99839597361769f)}, +    {FL2FXCONST_SGL(-0.05890199924154f), FL2FXCONST_SGL(0.70741827819497f)}, +    {FL2FXCONST_SGL(0.28398686150148f), FL2FXCONST_SGL(0.34633555702188f)}, +    {FL2FXCONST_SGL(0.95258164539612f), FL2FXCONST_SGL(-0.54893416026939f)}, +    {FL2FXCONST_SGL(-0.78566324168507f), FL2FXCONST_SGL(-0.75568541079691f)}, +    {FL2FXCONST_SGL(-0.95789495447877f), FL2FXCONST_SGL(-0.20423194696966f)}, +    {FL2FXCONST_SGL(0.82411158711197f), FL2FXCONST_SGL(0.96654618432562f)}, +    {FL2FXCONST_SGL(-0.65185446735885f), FL2FXCONST_SGL(-0.88734990773289f)}, +    {FL2FXCONST_SGL(-0.93643603134666f), FL2FXCONST_SGL(0.99870790442385f)}, +    {FL2FXCONST_SGL(0.91427159529618f), FL2FXCONST_SGL(-0.98290505544444f)}, +    {FL2FXCONST_SGL(-0.70395684036886f), FL2FXCONST_SGL(0.58796798221039f)}, +    {FL2FXCONST_SGL(0.00563771969365f), FL2FXCONST_SGL(0.61768196727244f)}, +    {FL2FXCONST_SGL(0.89065051931895f), FL2FXCONST_SGL(0.52783352697585f)}, +    {FL2FXCONST_SGL(-0.68683707712762f), FL2FXCONST_SGL(0.80806944710339f)}, +    {FL2FXCONST_SGL(0.72165342518718f), FL2FXCONST_SGL(-0.69259857349564f)}, +    {FL2FXCONST_SGL(-0.62928247730667f), FL2FXCONST_SGL(0.13627037407335f)}, +    {FL2FXCONST_SGL(0.29938434065514f), FL2FXCONST_SGL(-0.46051329682246f)}, +    {FL2FXCONST_SGL(-0.91781958879280f), FL2FXCONST_SGL(-0.74012716684186f)}, +    {FL2FXCONST_SGL(0.99298717043688f), FL2FXCONST_SGL(0.40816610075661f)}, +    {FL2FXCONST_SGL(0.82368298622748f), FL2FXCONST_SGL(-0.74036047190173f)}, +    {FL2FXCONST_SGL(-0.98512833386833f), FL2FXCONST_SGL(-0.99972330709594f)}, +    {FL2FXCONST_SGL(-0.95915368242257f), FL2FXCONST_SGL(-0.99237800466040f)}, +    {FL2FXCONST_SGL(-0.21411126572790f), FL2FXCONST_SGL(-0.93424819052545f)}, +    {FL2FXCONST_SGL(-0.68821476106884f), FL2FXCONST_SGL(-0.26892306315457f)}, +    {FL2FXCONST_SGL(0.91851997982317f), FL2FXCONST_SGL(0.09358228901785f)}, +    {FL2FXCONST_SGL(-0.96062769559127f), FL2FXCONST_SGL(0.36099095133739f)}, +    {FL2FXCONST_SGL(0.51646184922287f), FL2FXCONST_SGL(-0.71373332873917f)}, +    {FL2FXCONST_SGL(0.61130721139669f), FL2FXCONST_SGL(0.46950141175917f)}, +    {FL2FXCONST_SGL(0.47336129371299f), FL2FXCONST_SGL(-0.27333178296162f)}, +    {FL2FXCONST_SGL(0.90998308703519f), FL2FXCONST_SGL(0.96715662938132f)}, +    {FL2FXCONST_SGL(0.44844799194357f), FL2FXCONST_SGL(0.99211574628306f)}, +    {FL2FXCONST_SGL(0.66614891079092f), FL2FXCONST_SGL(0.96590176169121f)}, +    {FL2FXCONST_SGL(0.74922239129237f), FL2FXCONST_SGL(-0.89879858826087f)}, +    {FL2FXCONST_SGL(-0.99571588506485f), FL2FXCONST_SGL(0.52785521494349f)}, +    {FL2FXCONST_SGL(0.97401082477563f), FL2FXCONST_SGL(-0.16855870075190f)}, +    {FL2FXCONST_SGL(0.72683747733879f), FL2FXCONST_SGL(-0.48060774432251f)}, +    {FL2FXCONST_SGL(0.95432193457128f), FL2FXCONST_SGL(0.68849603408441f)}, +    {FL2FXCONST_SGL(-0.72962208425191f), FL2FXCONST_SGL(-0.76608443420917f)}, +    {FL2FXCONST_SGL(-0.85359479233537f), FL2FXCONST_SGL(0.88738125901579f)}, +    {FL2FXCONST_SGL(-0.81412430338535f), FL2FXCONST_SGL(-0.97480768049637f)}, +    {FL2FXCONST_SGL(-0.87930772356786f), FL2FXCONST_SGL(0.74748307690436f)}, +    {FL2FXCONST_SGL(-0.71573331064977f), FL2FXCONST_SGL(-0.98570608178923f)}, +    {FL2FXCONST_SGL(0.83524300028228f), FL2FXCONST_SGL(0.83702537075163f)}, +    {FL2FXCONST_SGL(-0.48086065601423f), FL2FXCONST_SGL(-0.98848504923531f)}, +    {FL2FXCONST_SGL(0.97139128574778f), FL2FXCONST_SGL(0.80093621198236f)}, +    {FL2FXCONST_SGL(0.51992825347895f), FL2FXCONST_SGL(0.80247631400510f)}, +    {FL2FXCONST_SGL(-0.00848591195325f), FL2FXCONST_SGL(-0.76670128000486f)}, +    {FL2FXCONST_SGL(-0.70294374303036f), FL2FXCONST_SGL(0.55359910445577f)}, +    {FL2FXCONST_SGL(-0.95894428168140f), FL2FXCONST_SGL(-0.43265504344783f)}, +    {FL2FXCONST_SGL(0.97079252950321f), FL2FXCONST_SGL(0.09325857238682f)}, +    {FL2FXCONST_SGL(-0.92404293670797f), FL2FXCONST_SGL(0.85507704027855f)}, +    {FL2FXCONST_SGL(-0.69506469500450f), FL2FXCONST_SGL(0.98633412625459f)}, +    {FL2FXCONST_SGL(0.26559203620024f), FL2FXCONST_SGL(0.73314307966524f)}, +    {FL2FXCONST_SGL(0.28038443336943f), FL2FXCONST_SGL(0.14537913654427f)}, +    {FL2FXCONST_SGL(-0.74138124825523f), FL2FXCONST_SGL(0.99310339807762f)}, +    {FL2FXCONST_SGL(-0.01752795995444f), FL2FXCONST_SGL(-0.82616635284178f)}, +    {FL2FXCONST_SGL(-0.55126773094930f), FL2FXCONST_SGL(-0.98898543862153f)}, +    {FL2FXCONST_SGL(0.97960898850996f), FL2FXCONST_SGL(-0.94021446752851f)}, +    {FL2FXCONST_SGL(-0.99196309146936f), FL2FXCONST_SGL(0.67019017358456f)}, +    {FL2FXCONST_SGL(-0.67684928085260f), FL2FXCONST_SGL(0.12631491649378f)}, +    {FL2FXCONST_SGL(0.09140039465500f), FL2FXCONST_SGL(-0.20537731453108f)}, +    {FL2FXCONST_SGL(-0.71658965751996f), FL2FXCONST_SGL(-0.97788200391224f)}, +    {FL2FXCONST_SGL(0.81014640078925f), FL2FXCONST_SGL(0.53722648362443f)}, +    {FL2FXCONST_SGL(0.40616991671205f), FL2FXCONST_SGL(-0.26469008598449f)}, +    {FL2FXCONST_SGL(-0.67680188682972f), FL2FXCONST_SGL(0.94502052337695f)}, +    {FL2FXCONST_SGL(0.86849774348749f), FL2FXCONST_SGL(-0.18333598647899f)}, +    {FL2FXCONST_SGL(-0.99500381284851f), FL2FXCONST_SGL(-0.02634122068550f)}, +    {FL2FXCONST_SGL(0.84329189340667f), FL2FXCONST_SGL(0.10406957462213f)}, +    {FL2FXCONST_SGL(-0.09215968531446f), FL2FXCONST_SGL(0.69540012101253f)}, +    {FL2FXCONST_SGL(0.99956173327206f), FL2FXCONST_SGL(-0.12358542001404f)}, +    {FL2FXCONST_SGL(-0.79732779473535f), FL2FXCONST_SGL(-0.91582524736159f)}, +    {FL2FXCONST_SGL(0.96349973642406f), FL2FXCONST_SGL(0.96640458041000f)}, +    {FL2FXCONST_SGL(-0.79942778496547f), FL2FXCONST_SGL(0.64323902822857f)}, +    {FL2FXCONST_SGL(-0.11566039853896f), FL2FXCONST_SGL(0.28587846253726f)}, +    {FL2FXCONST_SGL(-0.39922954514662f), FL2FXCONST_SGL(0.94129601616966f)}, +    {FL2FXCONST_SGL(0.99089197565987f), FL2FXCONST_SGL(-0.92062625581587f)}, +    {FL2FXCONST_SGL(0.28631285179909f), FL2FXCONST_SGL(-0.91035047143603f)}, +    {FL2FXCONST_SGL(-0.83302725605608f), FL2FXCONST_SGL(-0.67330410892084f)}, +    {FL2FXCONST_SGL(0.95404443402072f), FL2FXCONST_SGL(0.49162765398743f)}, +    {FL2FXCONST_SGL(-0.06449863579434f), FL2FXCONST_SGL(0.03250560813135f)}, +    {FL2FXCONST_SGL(-0.99575054486311f), FL2FXCONST_SGL(0.42389784469507f)}, +    {FL2FXCONST_SGL(-0.65501142790847f), FL2FXCONST_SGL(0.82546114655624f)}, +    {FL2FXCONST_SGL(-0.81254441908887f), FL2FXCONST_SGL(-0.51627234660629f)}, +    {FL2FXCONST_SGL(-0.99646369485481f), FL2FXCONST_SGL(0.84490533520752f)}, +    {FL2FXCONST_SGL(0.00287840603348f), FL2FXCONST_SGL(0.64768261158166f)}, +    {FL2FXCONST_SGL(0.70176989408455f), FL2FXCONST_SGL(-0.20453028573322f)}, +    {FL2FXCONST_SGL(0.96361882270190f), FL2FXCONST_SGL(0.40706967140989f)}, +    {FL2FXCONST_SGL(-0.68883758192426f), FL2FXCONST_SGL(0.91338958840772f)}, +    {FL2FXCONST_SGL(-0.34875585502238f), FL2FXCONST_SGL(0.71472290693300f)}, +    {FL2FXCONST_SGL(0.91980081243087f), FL2FXCONST_SGL(0.66507455644919f)}, +    {FL2FXCONST_SGL(-0.99009048343881f), FL2FXCONST_SGL(0.85868021604848f)}, +    {FL2FXCONST_SGL(0.68865791458395f), FL2FXCONST_SGL(0.55660316809678f)}, +    {FL2FXCONST_SGL(-0.99484402129368f), FL2FXCONST_SGL(-0.20052559254934f)}, +    {FL2FXCONST_SGL(0.94214511408023f), FL2FXCONST_SGL(-0.99696425367461f)}, +    {FL2FXCONST_SGL(-0.67414626793544f), FL2FXCONST_SGL(0.49548221180078f)}, +    {FL2FXCONST_SGL(-0.47339353684664f), FL2FXCONST_SGL(-0.85904328834047f)}, +    {FL2FXCONST_SGL(0.14323651387360f), FL2FXCONST_SGL(-0.94145598222488f)}, +    {FL2FXCONST_SGL(-0.29268293575672f), FL2FXCONST_SGL(0.05759224927952f)}, +    {FL2FXCONST_SGL(0.43793861458754f), FL2FXCONST_SGL(-0.78904969892724f)}, +    {FL2FXCONST_SGL(-0.36345126374441f), FL2FXCONST_SGL(0.64874435357162f)}, +    {FL2FXCONST_SGL(-0.08750604656825f), FL2FXCONST_SGL(0.97686944362527f)}, +    {FL2FXCONST_SGL(-0.96495267812511f), FL2FXCONST_SGL(-0.53960305946511f)}, +    {FL2FXCONST_SGL(0.55526940659947f), FL2FXCONST_SGL(0.78891523734774f)}, +    {FL2FXCONST_SGL(0.73538215752630f), FL2FXCONST_SGL(0.96452072373404f)}, +    {FL2FXCONST_SGL(-0.30889773919437f), FL2FXCONST_SGL(-0.80664389776860f)}, +    {FL2FXCONST_SGL(0.03574995626194f), FL2FXCONST_SGL(-0.97325616900959f)}, +    {FL2FXCONST_SGL(0.98720684660488f), FL2FXCONST_SGL(0.48409133691962f)}, +    {FL2FXCONST_SGL(-0.81689296271203f), FL2FXCONST_SGL(-0.90827703628298f)}, +    {FL2FXCONST_SGL(0.67866860118215f), FL2FXCONST_SGL(0.81284503870856f)}, +    {FL2FXCONST_SGL(-0.15808569732583f), FL2FXCONST_SGL(0.85279555024382f)}, +    {FL2FXCONST_SGL(0.80723395114371f), FL2FXCONST_SGL(-0.24717418514605f)}, +    {FL2FXCONST_SGL(0.47788757329038f), FL2FXCONST_SGL(-0.46333147839295f)}, +    {FL2FXCONST_SGL(0.96367554763201f), FL2FXCONST_SGL(0.38486749303242f)}, +    {FL2FXCONST_SGL(-0.99143875716818f), FL2FXCONST_SGL(-0.24945277239809f)}, +    {FL2FXCONST_SGL(0.83081876925833f), FL2FXCONST_SGL(-0.94780851414763f)}, +    {FL2FXCONST_SGL(-0.58753191905341f), FL2FXCONST_SGL(0.01290772389163f)}, +    {FL2FXCONST_SGL(0.95538108220960f), FL2FXCONST_SGL(-0.85557052096538f)}, +    {FL2FXCONST_SGL(-0.96490920476211f), FL2FXCONST_SGL(-0.64020970923102f)}, +    {FL2FXCONST_SGL(-0.97327101028521f), FL2FXCONST_SGL(0.12378128133110f)}, +    {FL2FXCONST_SGL(0.91400366022124f), FL2FXCONST_SGL(0.57972471346930f)}, +    {FL2FXCONST_SGL(-0.99925837363824f), FL2FXCONST_SGL(0.71084847864067f)}, +    {FL2FXCONST_SGL(-0.86875903507313f), FL2FXCONST_SGL(-0.20291699203564f)}, +    {FL2FXCONST_SGL(-0.26240034795124f), FL2FXCONST_SGL(-0.68264554369108f)}, +    {FL2FXCONST_SGL(-0.24664412953388f), FL2FXCONST_SGL(-0.87642273115183f)}, +    {FL2FXCONST_SGL(0.02416275806869f), FL2FXCONST_SGL(0.27192914288905f)}, +    {FL2FXCONST_SGL(0.82068619590515f), FL2FXCONST_SGL(-0.85087787994476f)}, +    {FL2FXCONST_SGL(0.88547373760759f), FL2FXCONST_SGL(-0.89636802901469f)}, +    {FL2FXCONST_SGL(-0.18173078152226f), FL2FXCONST_SGL(-0.26152145156800f)}, +    {FL2FXCONST_SGL(0.09355476558534f), FL2FXCONST_SGL(0.54845123045604f)}, +    {FL2FXCONST_SGL(-0.54668414224090f), FL2FXCONST_SGL(0.95980774020221f)}, +    {FL2FXCONST_SGL(0.37050990604091f), FL2FXCONST_SGL(-0.59910140383171f)}, +    {FL2FXCONST_SGL(-0.70373594262891f), FL2FXCONST_SGL(0.91227665827081f)}, +    {FL2FXCONST_SGL(-0.34600785879594f), FL2FXCONST_SGL(-0.99441426144200f)}, +    {FL2FXCONST_SGL(-0.68774481731008f), FL2FXCONST_SGL(-0.30238837956299f)}, +    {FL2FXCONST_SGL(-0.26843291251234f), FL2FXCONST_SGL(0.83115668004362f)}, +    {FL2FXCONST_SGL(0.49072334613242f), FL2FXCONST_SGL(-0.45359708737775f)}, +    {FL2FXCONST_SGL(0.38975993093975f), FL2FXCONST_SGL(0.95515358099121f)}, +    {FL2FXCONST_SGL(-0.97757125224150f), FL2FXCONST_SGL(0.05305894580606f)}, +    {FL2FXCONST_SGL(-0.17325552859616f), FL2FXCONST_SGL(-0.92770672250494f)}, +    {FL2FXCONST_SGL(0.99948035025744f), FL2FXCONST_SGL(0.58285545563426f)}, +    {FL2FXCONST_SGL(-0.64946246527458f), FL2FXCONST_SGL(0.68645507104960f)}, +    {FL2FXCONST_SGL(-0.12016920576437f), FL2FXCONST_SGL(-0.57147322153312f)}, +    {FL2FXCONST_SGL(-0.58947456517751f), FL2FXCONST_SGL(-0.34847132454388f)}, +    {FL2FXCONST_SGL(-0.41815140454465f), FL2FXCONST_SGL(0.16276422358861f)}, +    {FL2FXCONST_SGL(0.99885650204884f), FL2FXCONST_SGL(0.11136095490444f)}, +    {FL2FXCONST_SGL(-0.56649614128386f), FL2FXCONST_SGL(-0.90494866361587f)}, +    {FL2FXCONST_SGL(0.94138021032330f), FL2FXCONST_SGL(0.35281916733018f)}, +    {FL2FXCONST_SGL(-0.75725076534641f), FL2FXCONST_SGL(0.53650549640587f)}, +    {FL2FXCONST_SGL(0.20541973692630f), FL2FXCONST_SGL(-0.94435144369918f)}, +    {FL2FXCONST_SGL(0.99980371023351f), FL2FXCONST_SGL(0.79835913565599f)}, +    {FL2FXCONST_SGL(0.29078277605775f), FL2FXCONST_SGL(0.35393777921520f)}, +    {FL2FXCONST_SGL(-0.62858772103030f), FL2FXCONST_SGL(0.38765693387102f)}, +    {FL2FXCONST_SGL(0.43440904467688f), FL2FXCONST_SGL(-0.98546330463232f)}, +    {FL2FXCONST_SGL(-0.98298583762390f), FL2FXCONST_SGL(0.21021524625209f)}, +    {FL2FXCONST_SGL(0.19513029146934f), FL2FXCONST_SGL(-0.94239832251867f)}, +    {FL2FXCONST_SGL(-0.95476662400101f), FL2FXCONST_SGL(0.98364554179143f)}, +    {FL2FXCONST_SGL(0.93379635304810f), FL2FXCONST_SGL(-0.70881994583682f)}, +    {FL2FXCONST_SGL(-0.85235410573336f), FL2FXCONST_SGL(-0.08342347966410f)}, +    {FL2FXCONST_SGL(-0.86425093011245f), FL2FXCONST_SGL(-0.45795025029466f)}, +    {FL2FXCONST_SGL(0.38879779059045f), FL2FXCONST_SGL(0.97274429344593f)}, +    {FL2FXCONST_SGL(0.92045124735495f), FL2FXCONST_SGL(-0.62433652524220f)}, +    {FL2FXCONST_SGL(0.89162532251878f), FL2FXCONST_SGL(0.54950955570563f)}, +    {FL2FXCONST_SGL(-0.36834336949252f), FL2FXCONST_SGL(0.96458298020975f)}, +    {FL2FXCONST_SGL(0.93891760988045f), FL2FXCONST_SGL(-0.89968353740388f)}, +    {FL2FXCONST_SGL(0.99267657565094f), FL2FXCONST_SGL(-0.03757034316958f)}, +    {FL2FXCONST_SGL(-0.94063471614176f), FL2FXCONST_SGL(0.41332338538963f)}, +    {FL2FXCONST_SGL(0.99740224117019f), FL2FXCONST_SGL(-0.16830494996370f)}, +    {FL2FXCONST_SGL(-0.35899413170555f), FL2FXCONST_SGL(-0.46633226649613f)}, +    {FL2FXCONST_SGL(0.05237237274947f), FL2FXCONST_SGL(-0.25640361602661f)}, +    {FL2FXCONST_SGL(0.36703583957424f), FL2FXCONST_SGL(-0.38653265641875f)}, +    {FL2FXCONST_SGL(0.91653180367913f), FL2FXCONST_SGL(-0.30587628726597f)}, +    {FL2FXCONST_SGL(0.69000803499316f), FL2FXCONST_SGL(0.90952171386132f)}, +    {FL2FXCONST_SGL(-0.38658751133527f), FL2FXCONST_SGL(0.99501571208985f)}, +    {FL2FXCONST_SGL(-0.29250814029851f), FL2FXCONST_SGL(0.37444994344615f)}, +    {FL2FXCONST_SGL(-0.60182204677608f), FL2FXCONST_SGL(0.86779651036123f)}, +    {FL2FXCONST_SGL(-0.97418588163217f), FL2FXCONST_SGL(0.96468523666475f)}, +    {FL2FXCONST_SGL(0.88461574003963f), FL2FXCONST_SGL(0.57508405276414f)}, +    {FL2FXCONST_SGL(0.05198933055162f), FL2FXCONST_SGL(0.21269661669964f)}, +    {FL2FXCONST_SGL(-0.53499621979720f), FL2FXCONST_SGL(0.97241553731237f)}, +    {FL2FXCONST_SGL(-0.49429560226497f), FL2FXCONST_SGL(0.98183865291903f)}, +    {FL2FXCONST_SGL(-0.98935142339139f), FL2FXCONST_SGL(-0.40249159006933f)}, +    {FL2FXCONST_SGL(-0.98081380091130f), FL2FXCONST_SGL(-0.72856895534041f)}, +    {FL2FXCONST_SGL(-0.27338148835532f), FL2FXCONST_SGL(0.99950922447209f)}, +    {FL2FXCONST_SGL(0.06310802338302f), FL2FXCONST_SGL(-0.54539587529618f)}, +    {FL2FXCONST_SGL(-0.20461677199539f), FL2FXCONST_SGL(-0.14209977628489f)}, +    {FL2FXCONST_SGL(0.66223843141647f), FL2FXCONST_SGL(0.72528579940326f)}, +    {FL2FXCONST_SGL(-0.84764345483665f), FL2FXCONST_SGL(0.02372316801261f)}, +    {FL2FXCONST_SGL(-0.89039863483811f), FL2FXCONST_SGL(0.88866581484602f)}, +    {FL2FXCONST_SGL(0.95903308477986f), FL2FXCONST_SGL(0.76744927173873f)}, +    {FL2FXCONST_SGL(0.73504123909879f), FL2FXCONST_SGL(-0.03747203173192f)}, +    {FL2FXCONST_SGL(-0.31744434966056f), FL2FXCONST_SGL(-0.36834111883652f)}, +    {FL2FXCONST_SGL(-0.34110827591623f), FL2FXCONST_SGL(0.40211222807691f)}, +    {FL2FXCONST_SGL(0.47803883714199f), FL2FXCONST_SGL(-0.39423219786288f)}, +    {FL2FXCONST_SGL(0.98299195879514f), FL2FXCONST_SGL(0.01989791390047f)}, +    {FL2FXCONST_SGL(-0.30963073129751f), FL2FXCONST_SGL(-0.18076720599336f)}, +    {FL2FXCONST_SGL(0.99992588229018f), FL2FXCONST_SGL(-0.26281872094289f)}, +    {FL2FXCONST_SGL(-0.93149731080767f), FL2FXCONST_SGL(-0.98313162570490f)}, +    {FL2FXCONST_SGL(0.99923472302773f), FL2FXCONST_SGL(-0.80142993767554f)}, +    {FL2FXCONST_SGL(-0.26024169633417f), FL2FXCONST_SGL(-0.75999759855752f)}, +    {FL2FXCONST_SGL(-0.35712514743563f), FL2FXCONST_SGL(0.19298963768574f)}, +    {FL2FXCONST_SGL(-0.99899084509530f), FL2FXCONST_SGL(0.74645156992493f)}, +    {FL2FXCONST_SGL(0.86557171579452f), FL2FXCONST_SGL(0.55593866696299f)}, +    {FL2FXCONST_SGL(0.33408042438752f), FL2FXCONST_SGL(0.86185953874709f)}, +    {FL2FXCONST_SGL(0.99010736374716f), FL2FXCONST_SGL(0.04602397576623f)}, +    {FL2FXCONST_SGL(-0.66694269691195f), FL2FXCONST_SGL(-0.91643611810148f)}, +    {FL2FXCONST_SGL(0.64016792079480f), FL2FXCONST_SGL(0.15649530836856f)}, +    {FL2FXCONST_SGL(0.99570534804836f), FL2FXCONST_SGL(0.45844586038111f)}, +    {FL2FXCONST_SGL(-0.63431466947340f), FL2FXCONST_SGL(0.21079116459234f)}, +    {FL2FXCONST_SGL(-0.07706847005931f), FL2FXCONST_SGL(-0.89581437101329f)}, +    {FL2FXCONST_SGL(0.98590090577724f), FL2FXCONST_SGL(0.88241721133981f)}, +    {FL2FXCONST_SGL(0.80099335254678f), FL2FXCONST_SGL(-0.36851896710853f)}, +    {FL2FXCONST_SGL(0.78368131392666f), FL2FXCONST_SGL(0.45506999802597f)}, +    {FL2FXCONST_SGL(0.08707806671691f), FL2FXCONST_SGL(0.80938994918745f)}, +    {FL2FXCONST_SGL(-0.86811883080712f), FL2FXCONST_SGL(0.39347308654705f)}, +    {FL2FXCONST_SGL(-0.39466529740375f), FL2FXCONST_SGL(-0.66809432114456f)}, +    {FL2FXCONST_SGL(0.97875325649683f), FL2FXCONST_SGL(-0.72467840967746f)}, +    {FL2FXCONST_SGL(-0.95038560288864f), FL2FXCONST_SGL(0.89563219587625f)}, +    {FL2FXCONST_SGL(0.17005239424212f), FL2FXCONST_SGL(0.54683053962658f)}, +    {FL2FXCONST_SGL(-0.76910792026848f), FL2FXCONST_SGL(-0.96226617549298f)}, +    {FL2FXCONST_SGL(0.99743281016846f), FL2FXCONST_SGL(0.42697157037567f)}, +    {FL2FXCONST_SGL(0.95437383549973f), FL2FXCONST_SGL(0.97002324109952f)}, +    {FL2FXCONST_SGL(0.99578905365569f), FL2FXCONST_SGL(-0.54106826257356f)}, +    {FL2FXCONST_SGL(0.28058259829990f), FL2FXCONST_SGL(-0.85361420634036f)}, +    {FL2FXCONST_SGL(0.85256524470573f), FL2FXCONST_SGL(-0.64567607735589f)}, +    {FL2FXCONST_SGL(-0.50608540105128f), FL2FXCONST_SGL(-0.65846015480300f)}, +    {FL2FXCONST_SGL(-0.97210735183243f), FL2FXCONST_SGL(-0.23095213067791f)}, +    {FL2FXCONST_SGL(0.95424048234441f), FL2FXCONST_SGL(-0.99240147091219f)}, +    {FL2FXCONST_SGL(-0.96926570524023f), FL2FXCONST_SGL(0.73775654896574f)}, +    {FL2FXCONST_SGL(0.30872163214726f), FL2FXCONST_SGL(0.41514960556126f)}, +    {FL2FXCONST_SGL(-0.24523839572639f), FL2FXCONST_SGL(0.63206633394807f)}, +    {FL2FXCONST_SGL(-0.33813265086024f), FL2FXCONST_SGL(-0.38661779441897f)}, +    {FL2FXCONST_SGL(-0.05826828420146f), FL2FXCONST_SGL(-0.06940774188029f)}, +    {FL2FXCONST_SGL(-0.22898461455054f), FL2FXCONST_SGL(0.97054853316316f)}, +    {FL2FXCONST_SGL(-0.18509915019881f), FL2FXCONST_SGL(0.47565762892084f)}, +    {FL2FXCONST_SGL(-0.10488238045009f), FL2FXCONST_SGL(-0.87769947402394f)}, +    {FL2FXCONST_SGL(-0.71886586182037f), FL2FXCONST_SGL(0.78030982480538f)}, +    {FL2FXCONST_SGL(0.99793873738654f), FL2FXCONST_SGL(0.90041310491497f)}, +    {FL2FXCONST_SGL(0.57563307626120f), FL2FXCONST_SGL(-0.91034337352097f)}, +    {FL2FXCONST_SGL(0.28909646383717f), FL2FXCONST_SGL(0.96307783970534f)}, +    {FL2FXCONST_SGL(0.42188998312520f), FL2FXCONST_SGL(0.48148651230437f)}, +    {FL2FXCONST_SGL(0.93335049681047f), FL2FXCONST_SGL(-0.43537023883588f)}, +    {FL2FXCONST_SGL(-0.97087374418267f), FL2FXCONST_SGL(0.86636445711364f)}, +    {FL2FXCONST_SGL(0.36722871286923f), FL2FXCONST_SGL(0.65291654172961f)}, +    {FL2FXCONST_SGL(-0.81093025665696f), FL2FXCONST_SGL(0.08778370229363f)}, +    {FL2FXCONST_SGL(-0.26240603062237f), FL2FXCONST_SGL(-0.92774095379098f)}, +    {FL2FXCONST_SGL(0.83996497984604f), FL2FXCONST_SGL(0.55839849139647f)}, +    {FL2FXCONST_SGL(-0.99909615720225f), FL2FXCONST_SGL(-0.96024605713970f)}, +    {FL2FXCONST_SGL(0.74649464155061f), FL2FXCONST_SGL(0.12144893606462f)}, +    {FL2FXCONST_SGL(-0.74774595569805f), FL2FXCONST_SGL(-0.26898062008959f)}, +    {FL2FXCONST_SGL(0.95781667469567f), FL2FXCONST_SGL(-0.79047927052628f)}, +    {FL2FXCONST_SGL(0.95472308713099f), FL2FXCONST_SGL(-0.08588776019550f)}, +    {FL2FXCONST_SGL(0.48708332746299f), MAXVAL_SGL}, +    {FL2FXCONST_SGL(0.46332038247497f), FL2FXCONST_SGL(0.10964126185063f)}, +    {FL2FXCONST_SGL(-0.76497004940162f), FL2FXCONST_SGL(0.89210929242238f)}, +    {FL2FXCONST_SGL(0.57397389364339f), FL2FXCONST_SGL(0.35289703373760f)}, +    {FL2FXCONST_SGL(0.75374316974495f), FL2FXCONST_SGL(0.96705214651335f)}, +    {FL2FXCONST_SGL(-0.59174397685714f), FL2FXCONST_SGL(-0.89405370422752f)}, +    {FL2FXCONST_SGL(0.75087906691890f), FL2FXCONST_SGL(-0.29612672982396f)}, +    {FL2FXCONST_SGL(-0.98607857336230f), FL2FXCONST_SGL(0.25034911730023f)}, +    {FL2FXCONST_SGL(-0.40761056640505f), FL2FXCONST_SGL(-0.90045573444695f)}, +    {FL2FXCONST_SGL(0.66929266740477f), FL2FXCONST_SGL(0.98629493401748f)}, +    {FL2FXCONST_SGL(-0.97463695257310f), FL2FXCONST_SGL(-0.00190223301301f)}, +    {FL2FXCONST_SGL(0.90145509409859f), FL2FXCONST_SGL(0.99781390365446f)}, +    {FL2FXCONST_SGL(-0.87259289048043f), FL2FXCONST_SGL(0.99233587353666f)}, +    {FL2FXCONST_SGL(-0.91529461447692f), FL2FXCONST_SGL(-0.15698707534206f)}, +    {FL2FXCONST_SGL(-0.03305738840705f), FL2FXCONST_SGL(-0.37205262859764f)}, +    {FL2FXCONST_SGL(0.07223051368337f), FL2FXCONST_SGL(-0.88805001733626f)}, +    {FL2FXCONST_SGL(0.99498012188353f), FL2FXCONST_SGL(0.97094358113387f)}, +    {FL2FXCONST_SGL(-0.74904939500519f), FL2FXCONST_SGL(0.99985483641521f)}, +    {FL2FXCONST_SGL(0.04585228574211f), FL2FXCONST_SGL(0.99812337444082f)}, +    {FL2FXCONST_SGL(-0.89054954257993f), FL2FXCONST_SGL(-0.31791913188064f)}, +    {FL2FXCONST_SGL(-0.83782144651251f), FL2FXCONST_SGL(0.97637632547466f)}, +    {FL2FXCONST_SGL(0.33454804933804f), FL2FXCONST_SGL(-0.86231516800408f)}, +    {FL2FXCONST_SGL(-0.99707579362824f), FL2FXCONST_SGL(0.93237990079441f)}, +    {FL2FXCONST_SGL(-0.22827527843994f), FL2FXCONST_SGL(0.18874759397997f)}, +    {FL2FXCONST_SGL(0.67248046289143f), FL2FXCONST_SGL(-0.03646211390569f)}, +    {FL2FXCONST_SGL(-0.05146538187944f), FL2FXCONST_SGL(-0.92599700120679f)}, +    {FL2FXCONST_SGL(0.99947295749905f), FL2FXCONST_SGL(0.93625229707912f)}, +    {FL2FXCONST_SGL(0.66951124390363f), FL2FXCONST_SGL(0.98905825623893f)}, +    {FL2FXCONST_SGL(-0.99602956559179f), FL2FXCONST_SGL(-0.44654715757688f)}, +    {FL2FXCONST_SGL(0.82104905483590f), FL2FXCONST_SGL(0.99540741724928f)}, +    {FL2FXCONST_SGL(0.99186510988782f), FL2FXCONST_SGL(0.72023001312947f)}, +    {FL2FXCONST_SGL(-0.65284592392918f), FL2FXCONST_SGL(0.52186723253637f)}, +    {FL2FXCONST_SGL(0.93885443798188f), FL2FXCONST_SGL(-0.74895312615259f)}, +    {FL2FXCONST_SGL(0.96735248738388f), FL2FXCONST_SGL(0.90891816978629f)}, +    {FL2FXCONST_SGL(-0.22225968841114f), FL2FXCONST_SGL(0.57124029781228f)}, +    {FL2FXCONST_SGL(-0.44132783753414f), FL2FXCONST_SGL(-0.92688840659280f)}, +    {FL2FXCONST_SGL(-0.85694974219574f), FL2FXCONST_SGL(0.88844532719844f)}, +    {FL2FXCONST_SGL(0.91783042091762f), FL2FXCONST_SGL(-0.46356892383970f)}, +    {FL2FXCONST_SGL(0.72556974415690f), FL2FXCONST_SGL(-0.99899555770747f)}, +    {FL2FXCONST_SGL(-0.99711581834508f), FL2FXCONST_SGL(0.58211560180426f)}, +    {FL2FXCONST_SGL(0.77638976371966f), FL2FXCONST_SGL(0.94321834873819f)}, +    {FL2FXCONST_SGL(0.07717324253925f), FL2FXCONST_SGL(0.58638399856595f)}, +    {FL2FXCONST_SGL(-0.56049829194163f), FL2FXCONST_SGL(0.82522301569036f)}, +    {FL2FXCONST_SGL(0.98398893639988f), FL2FXCONST_SGL(0.39467440420569f)}, +    {FL2FXCONST_SGL(0.47546946844938f), FL2FXCONST_SGL(0.68613044836811f)}, +    {FL2FXCONST_SGL(0.65675089314631f), FL2FXCONST_SGL(0.18331637134880f)}, +    {FL2FXCONST_SGL(0.03273375457980f), FL2FXCONST_SGL(-0.74933109564108f)}, +    {FL2FXCONST_SGL(-0.38684144784738f), FL2FXCONST_SGL(0.51337349030406f)}, +    {FL2FXCONST_SGL(-0.97346267944545f), FL2FXCONST_SGL(-0.96549364384098f)}, +    {FL2FXCONST_SGL(-0.53282156061942f), FL2FXCONST_SGL(-0.91423265091354f)}, +    {FL2FXCONST_SGL(0.99817310731176f), FL2FXCONST_SGL(0.61133572482148f)}, +    {FL2FXCONST_SGL(-0.50254500772635f), FL2FXCONST_SGL(-0.88829338134294f)}, +    {FL2FXCONST_SGL(0.01995873238855f), FL2FXCONST_SGL(0.85223515096765f)}, +    {FL2FXCONST_SGL(0.99930381973804f), FL2FXCONST_SGL(0.94578896296649f)}, +    {FL2FXCONST_SGL(0.82907767600783f), FL2FXCONST_SGL(-0.06323442598128f)}, +    {FL2FXCONST_SGL(-0.58660709669728f), FL2FXCONST_SGL(0.96840773806582f)}, +    {FL2FXCONST_SGL(-0.17573736667267f), FL2FXCONST_SGL(-0.48166920859485f)}, +    {FL2FXCONST_SGL(0.83434292401346f), FL2FXCONST_SGL(-0.13023450646997f)}, +    {FL2FXCONST_SGL(0.05946491307025f), FL2FXCONST_SGL(0.20511047074866f)}, +    {FL2FXCONST_SGL(0.81505484574602f), FL2FXCONST_SGL(-0.94685947861369f)}, +    {FL2FXCONST_SGL(-0.44976380954860f), FL2FXCONST_SGL(0.40894572671545f)}, +    {FL2FXCONST_SGL(-0.89746474625671f), FL2FXCONST_SGL(0.99846578838537f)}, +    {FL2FXCONST_SGL(0.39677256130792f), FL2FXCONST_SGL(-0.74854668609359f)}, +    {FL2FXCONST_SGL(-0.07588948563079f), FL2FXCONST_SGL(0.74096214084170f)}, +    {FL2FXCONST_SGL(0.76343198951445f), FL2FXCONST_SGL(0.41746629422634f)}, +    {FL2FXCONST_SGL(-0.74490104699626f), FL2FXCONST_SGL(0.94725911744610f)}, +    {FL2FXCONST_SGL(0.64880119792759f), FL2FXCONST_SGL(0.41336660830571f)}, +    {FL2FXCONST_SGL(0.62319537462542f), FL2FXCONST_SGL(-0.93098313552599f)}, +    {FL2FXCONST_SGL(0.42215817594807f), FL2FXCONST_SGL(-0.07712787385208f)}, +    {FL2FXCONST_SGL(0.02704554141885f), FL2FXCONST_SGL(-0.05417518053666f)}, +    {FL2FXCONST_SGL(0.80001773566818f), FL2FXCONST_SGL(0.91542195141039f)}, +    {FL2FXCONST_SGL(-0.79351832348816f), FL2FXCONST_SGL(-0.36208897989136f)}, +    {FL2FXCONST_SGL(0.63872359151636f), FL2FXCONST_SGL(0.08128252493444f)}, +    {FL2FXCONST_SGL(0.52890520960295f), FL2FXCONST_SGL(0.60048872455592f)}, +    {FL2FXCONST_SGL(0.74238552914587f), FL2FXCONST_SGL(0.04491915291044f)}, +    {FL2FXCONST_SGL(0.99096131449250f), FL2FXCONST_SGL(-0.19451182854402f)}, +    {FL2FXCONST_SGL(-0.80412329643109f), FL2FXCONST_SGL(-0.88513818199457f)}, +    {FL2FXCONST_SGL(-0.64612616129736f), FL2FXCONST_SGL(0.72198674804544f)}, +    {FL2FXCONST_SGL(0.11657770663191f), FL2FXCONST_SGL(-0.83662833815041f)}, +    {FL2FXCONST_SGL(-0.95053182488101f), FL2FXCONST_SGL(-0.96939905138082f)}, +    {FL2FXCONST_SGL(-0.62228872928622f), FL2FXCONST_SGL(0.82767262846661f)}, +    {FL2FXCONST_SGL(0.03004475787316f), FL2FXCONST_SGL(-0.99738896333384f)}, +    {FL2FXCONST_SGL(-0.97987214341034f), FL2FXCONST_SGL(0.36526129686425f)}, +    {FL2FXCONST_SGL(-0.99986980746200f), FL2FXCONST_SGL(-0.36021610299715f)}, +    {FL2FXCONST_SGL(0.89110648599879f), FL2FXCONST_SGL(-0.97894250343044f)}, +    {FL2FXCONST_SGL(0.10407960510582f), FL2FXCONST_SGL(0.77357793811619f)}, +    {FL2FXCONST_SGL(0.95964737821728f), FL2FXCONST_SGL(-0.35435818285502f)}, +    {FL2FXCONST_SGL(0.50843233159162f), FL2FXCONST_SGL(0.96107691266205f)}, +    {FL2FXCONST_SGL(0.17006334670615f), FL2FXCONST_SGL(-0.76854025314829f)}, +    {FL2FXCONST_SGL(0.25872675063360f), FL2FXCONST_SGL(0.99893303933816f)}, +    {FL2FXCONST_SGL(-0.01115998681937f), FL2FXCONST_SGL(0.98496019742444f)}, +    {FL2FXCONST_SGL(-0.79598702973261f), FL2FXCONST_SGL(0.97138411318894f)}, +    {FL2FXCONST_SGL(-0.99264708948101f), FL2FXCONST_SGL(-0.99542822402536f)}, +    {FL2FXCONST_SGL(-0.99829663752818f), FL2FXCONST_SGL(0.01877138824311f)}, +    {FL2FXCONST_SGL(-0.70801016548184f), FL2FXCONST_SGL(0.33680685948117f)}, +    {FL2FXCONST_SGL(-0.70467057786826f), FL2FXCONST_SGL(0.93272777501857f)}, +    {FL2FXCONST_SGL(0.99846021905254f), FL2FXCONST_SGL(-0.98725746254433f)}, +    {FL2FXCONST_SGL(-0.63364968534650f), FL2FXCONST_SGL(-0.16473594423746f)}, +    {FL2FXCONST_SGL(-0.16258217500792f), FL2FXCONST_SGL(-0.95939125400802f)}, +    {FL2FXCONST_SGL(-0.43645594360633f), FL2FXCONST_SGL(-0.94805030113284f)}, +    {FL2FXCONST_SGL(-0.99848471702976f), FL2FXCONST_SGL(0.96245166923809f)}, +    {FL2FXCONST_SGL(-0.16796458968998f), FL2FXCONST_SGL(-0.98987511890470f)}, +    {FL2FXCONST_SGL(-0.87979225745213f), FL2FXCONST_SGL(-0.71725725041680f)}, +    {FL2FXCONST_SGL(0.44183099021786f), FL2FXCONST_SGL(-0.93568974498761f)}, +    {FL2FXCONST_SGL(0.93310180125532f), FL2FXCONST_SGL(-0.99913308068246f)}, +    {FL2FXCONST_SGL(-0.93941931782002f), FL2FXCONST_SGL(-0.56409379640356f)}, +    {FL2FXCONST_SGL(-0.88590003188677f), FL2FXCONST_SGL(0.47624600491382f)}, +    {FL2FXCONST_SGL(0.99971463703691f), FL2FXCONST_SGL(-0.83889954253462f)}, +    {FL2FXCONST_SGL(-0.75376385639978f), FL2FXCONST_SGL(0.00814643438625f)}, +    {FL2FXCONST_SGL(0.93887685615875f), FL2FXCONST_SGL(-0.11284528204636f)}, +    {FL2FXCONST_SGL(0.85126435782309f), FL2FXCONST_SGL(0.52349251543547f)}, +    {FL2FXCONST_SGL(0.39701421446381f), FL2FXCONST_SGL(0.81779634174316f)}, +    {FL2FXCONST_SGL(-0.37024464187437f), FL2FXCONST_SGL(-0.87071656222959f)}, +    {FL2FXCONST_SGL(-0.36024828242896f), FL2FXCONST_SGL(0.34655735648287f)}, +    {FL2FXCONST_SGL(-0.93388812549209f), FL2FXCONST_SGL(-0.84476541096429f)}, +    {FL2FXCONST_SGL(-0.65298804552119f), FL2FXCONST_SGL(-0.18439575450921f)}, +    {FL2FXCONST_SGL(0.11960319006843f), FL2FXCONST_SGL(0.99899346780168f)}, +    {FL2FXCONST_SGL(0.94292565553160f), FL2FXCONST_SGL(0.83163906518293f)}, +    {FL2FXCONST_SGL(0.75081145286948f), FL2FXCONST_SGL(-0.35533223142265f)}, +    {FL2FXCONST_SGL(0.56721979748394f), FL2FXCONST_SGL(-0.24076836414499f)}, +    {FL2FXCONST_SGL(0.46857766746029f), FL2FXCONST_SGL(-0.30140233457198f)}, +    {FL2FXCONST_SGL(0.97312313923635f), FL2FXCONST_SGL(-0.99548191630031f)}, +    {FL2FXCONST_SGL(-0.38299976567017f), FL2FXCONST_SGL(0.98516909715427f)}, +    {FL2FXCONST_SGL(0.41025800019463f), FL2FXCONST_SGL(0.02116736935734f)}, +    {FL2FXCONST_SGL(0.09638062008048f), FL2FXCONST_SGL(0.04411984381457f)}, +    {FL2FXCONST_SGL(-0.85283249275397f), FL2FXCONST_SGL(0.91475563922421f)}, +    {FL2FXCONST_SGL(0.88866808958124f), FL2FXCONST_SGL(-0.99735267083226f)}, +    {FL2FXCONST_SGL(-0.48202429536989f), FL2FXCONST_SGL(-0.96805608884164f)}, +    {FL2FXCONST_SGL(0.27572582416567f), FL2FXCONST_SGL(0.58634753335832f)}, +    {FL2FXCONST_SGL(-0.65889129659168f), FL2FXCONST_SGL(0.58835634138583f)}, +    {FL2FXCONST_SGL(0.98838086953732f), FL2FXCONST_SGL(0.99994349600236f)}, +    {FL2FXCONST_SGL(-0.20651349620689f), FL2FXCONST_SGL(0.54593044066355f)}, +    {FL2FXCONST_SGL(-0.62126416356920f), FL2FXCONST_SGL(-0.59893681700392f)}, +    {FL2FXCONST_SGL(0.20320105410437f), FL2FXCONST_SGL(-0.86879180355289f)}, +    {FL2FXCONST_SGL(-0.97790548600584f), FL2FXCONST_SGL(0.96290806999242f)}, +    {FL2FXCONST_SGL(0.11112534735126f), FL2FXCONST_SGL(0.21484763313301f)}, +    {FL2FXCONST_SGL(-0.41368337314182f), FL2FXCONST_SGL(0.28216837680365f)}, +    {FL2FXCONST_SGL(0.24133038992960f), FL2FXCONST_SGL(0.51294362630238f)}, +    {FL2FXCONST_SGL(-0.66393410674885f), FL2FXCONST_SGL(-0.08249679629081f)}, +    {FL2FXCONST_SGL(-0.53697829178752f), FL2FXCONST_SGL(-0.97649903936228f)}, +    {FL2FXCONST_SGL(-0.97224737889348f), FL2FXCONST_SGL(0.22081333579837f)}, +    {FL2FXCONST_SGL(0.87392477144549f), FL2FXCONST_SGL(-0.12796173740361f)}, +    {FL2FXCONST_SGL(0.19050361015753f), FL2FXCONST_SGL(0.01602615387195f)}, +    {FL2FXCONST_SGL(-0.46353441212724f), FL2FXCONST_SGL(-0.95249041539006f)}, +    {FL2FXCONST_SGL(-0.07064096339021f), FL2FXCONST_SGL(-0.94479803205886f)}, +    {FL2FXCONST_SGL(-0.92444085484466f), FL2FXCONST_SGL(-0.10457590187436f)}, +    {FL2FXCONST_SGL(-0.83822593578728f), FL2FXCONST_SGL(-0.01695043208885f)}, +    {FL2FXCONST_SGL(0.75214681811150f), FL2FXCONST_SGL(-0.99955681042665f)}, +    {FL2FXCONST_SGL(-0.42102998829339f), FL2FXCONST_SGL(0.99720941999394f)}, +    {FL2FXCONST_SGL(-0.72094786237696f), FL2FXCONST_SGL(-0.35008961934255f)}, +    {FL2FXCONST_SGL(0.78843311019251f), FL2FXCONST_SGL(0.52851398958271f)}, +    {FL2FXCONST_SGL(0.97394027897442f), FL2FXCONST_SGL(-0.26695944086561f)}, +    {FL2FXCONST_SGL(0.99206463477946f), FL2FXCONST_SGL(-0.57010120849429f)}, +    {FL2FXCONST_SGL(0.76789609461795f), FL2FXCONST_SGL(-0.76519356730966f)}, +    {FL2FXCONST_SGL(-0.82002421836409f), FL2FXCONST_SGL(-0.73530179553767f)}, +    {FL2FXCONST_SGL(0.81924990025724f), FL2FXCONST_SGL(0.99698425250579f)}, +    {FL2FXCONST_SGL(-0.26719850873357f), FL2FXCONST_SGL(0.68903369776193f)}, +    {FL2FXCONST_SGL(-0.43311260380975f), FL2FXCONST_SGL(0.85321815947490f)}, +    {FL2FXCONST_SGL(0.99194979673836f), FL2FXCONST_SGL(0.91876249766422f)}, +    {FL2FXCONST_SGL(-0.80692001248487f), FL2FXCONST_SGL(-0.32627540663214f)}, +    {FL2FXCONST_SGL(0.43080003649976f), FL2FXCONST_SGL(-0.21919095636638f)}, +    {FL2FXCONST_SGL(0.67709491937357f), FL2FXCONST_SGL(-0.95478075822906f)}, +    {FL2FXCONST_SGL(0.56151770568316f), FL2FXCONST_SGL(-0.70693811747778f)}, +    {FL2FXCONST_SGL(0.10831862810749f), FL2FXCONST_SGL(-0.08628837174592f)}, +    {FL2FXCONST_SGL(0.91229417540436f), FL2FXCONST_SGL(-0.65987351408410f)}, +    {FL2FXCONST_SGL(-0.48972893932274f), FL2FXCONST_SGL(0.56289246362686f)}, +    {FL2FXCONST_SGL(-0.89033658689697f), FL2FXCONST_SGL(-0.71656563987082f)}, +    {FL2FXCONST_SGL(0.65269447475094f), FL2FXCONST_SGL(0.65916004833932f)}, +    {FL2FXCONST_SGL(0.67439478141121f), FL2FXCONST_SGL(-0.81684380846796f)}, +    {FL2FXCONST_SGL(-0.47770832416973f), FL2FXCONST_SGL(-0.16789556203025f)}, +    {FL2FXCONST_SGL(-0.99715979260878f), FL2FXCONST_SGL(-0.93565784007648f)}, +    {FL2FXCONST_SGL(-0.90889593602546f), FL2FXCONST_SGL(0.62034397054380f)}, +    {FL2FXCONST_SGL(-0.06618622548177f), FL2FXCONST_SGL(-0.23812217221359f)}, +    {FL2FXCONST_SGL(0.99430266919728f), FL2FXCONST_SGL(0.18812555317553f)}, +    {FL2FXCONST_SGL(0.97686402381843f), FL2FXCONST_SGL(-0.28664534366620f)}, +    {FL2FXCONST_SGL(0.94813650221268f), FL2FXCONST_SGL(-0.97506640027128f)}, +    {FL2FXCONST_SGL(-0.95434497492853f), FL2FXCONST_SGL(-0.79607978501983f)}, +    {FL2FXCONST_SGL(-0.49104783137150f), FL2FXCONST_SGL(0.32895214359663f)}, +    {FL2FXCONST_SGL(0.99881175120751f), FL2FXCONST_SGL(0.88993983831354f)}, +    {FL2FXCONST_SGL(0.50449166760303f), FL2FXCONST_SGL(-0.85995072408434f)}, +    {FL2FXCONST_SGL(0.47162891065108f), FL2FXCONST_SGL(-0.18680204049569f)}, +    {FL2FXCONST_SGL(-0.62081581361840f), FL2FXCONST_SGL(0.75000676218956f)}, +    {FL2FXCONST_SGL(-0.43867015250812f), FL2FXCONST_SGL(0.99998069244322f)}, +    {FL2FXCONST_SGL(0.98630563232075f), FL2FXCONST_SGL(-0.53578899600662f)}, +    {FL2FXCONST_SGL(-0.61510362277374f), FL2FXCONST_SGL(-0.89515019899997f)}, +    {FL2FXCONST_SGL(-0.03841517601843f), FL2FXCONST_SGL(-0.69888815681179f)}, +    {FL2FXCONST_SGL(-0.30102157304644f), FL2FXCONST_SGL(-0.07667808922205f)}, +    {FL2FXCONST_SGL(0.41881284182683f), FL2FXCONST_SGL(0.02188098922282f)}, +    {FL2FXCONST_SGL(-0.86135454941237f), FL2FXCONST_SGL(0.98947480909359f)}, +    {FL2FXCONST_SGL(0.67226861393788f), FL2FXCONST_SGL(-0.13494389011014f)}, +    {FL2FXCONST_SGL(-0.70737398842068f), FL2FXCONST_SGL(-0.76547349325992f)}, +    {FL2FXCONST_SGL(0.94044946687963f), FL2FXCONST_SGL(0.09026201157416f)}, +    {FL2FXCONST_SGL(-0.82386352534327f), FL2FXCONST_SGL(0.08924768823676f)}, +    {FL2FXCONST_SGL(-0.32070666698656f), FL2FXCONST_SGL(0.50143421908753f)}, +    {FL2FXCONST_SGL(0.57593163224487f), FL2FXCONST_SGL(-0.98966422921509f)}, +    {FL2FXCONST_SGL(-0.36326018419965f), FL2FXCONST_SGL(0.07440243123228f)}, +    {FL2FXCONST_SGL(0.99979044674350f), FL2FXCONST_SGL(-0.14130287347405f)}, +    {FL2FXCONST_SGL(-0.92366023326932f), FL2FXCONST_SGL(-0.97979298068180f)}, +    {FL2FXCONST_SGL(-0.44607178518598f), FL2FXCONST_SGL(-0.54233252016394f)}, +    {FL2FXCONST_SGL(0.44226800932956f), FL2FXCONST_SGL(0.71326756742752f)}, +    {FL2FXCONST_SGL(0.03671907158312f), FL2FXCONST_SGL(0.63606389366675f)}, +    {FL2FXCONST_SGL(0.52175424682195f), FL2FXCONST_SGL(-0.85396826735705f)}, +    {FL2FXCONST_SGL(-0.94701139690956f), FL2FXCONST_SGL(-0.01826348194255f)}, +    {FL2FXCONST_SGL(-0.98759606946049f), FL2FXCONST_SGL(0.82288714303073f)}, +    {FL2FXCONST_SGL(0.87434794743625f), FL2FXCONST_SGL(0.89399495655433f)}, +    {FL2FXCONST_SGL(-0.93412041758744f), FL2FXCONST_SGL(0.41374052024363f)}, +    {FL2FXCONST_SGL(0.96063943315511f), FL2FXCONST_SGL(0.93116709541280f)}, +    {FL2FXCONST_SGL(0.97534253457837f), FL2FXCONST_SGL(0.86150930812689f)}, +    {FL2FXCONST_SGL(0.99642466504163f), FL2FXCONST_SGL(0.70190043427512f)}, +    {FL2FXCONST_SGL(-0.94705089665984f), FL2FXCONST_SGL(-0.29580042814306f)}, +    {FL2FXCONST_SGL(0.91599807087376f), FL2FXCONST_SGL(-0.98147830385781f)}};  //@}  /* diff --git a/fdk-aac/libSBRdec/src/sbrdecoder.cpp b/fdk-aac/libSBRdec/src/sbrdecoder.cpp index 4bc6f69..c827ced 100644 --- a/fdk-aac/libSBRdec/src/sbrdecoder.cpp +++ b/fdk-aac/libSBRdec/src/sbrdecoder.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -871,11 +871,10 @@ INT sbrDecoder_Header(HANDLE_SBRDECODER self, HANDLE_FDK_BITSTREAM hBs,          if (sbrError == SBRDEC_OK) {            hSbrHeader->syncState = SBR_HEADER;            hSbrHeader->status |= SBRDEC_HDR_STAT_UPDATE; +        } else { +          hSbrHeader->syncState = SBR_NOT_INITIALIZED; +          hSbrHeader->status = HEADER_ERROR;          } -        /* else { -          Since we already have overwritten the old SBR header the only way out -        is UPSAMPLING! This will be prepared in the next step. -        } */        }      }    } diff --git a/src/GSTInput.cpp b/src/GSTInput.cpp index a2401cb..5c63147 100644 --- a/src/GSTInput.cpp +++ b/src/GSTInput.cpp @@ -121,7 +121,11 @@ void GSTInput::prepare()      m_gst_data.audio_resample = gst_element_factory_make("audioresample", "audio_resample");      assert(m_gst_data.audio_resample != nullptr);      g_object_set(m_gst_data.audio_resample, +#if (GST_VERSION_MAJOR == 1 && GST_VERSION_MINOR >= 10) || GST_VERSION_MAJOR > 1              "sinc-filter-mode", GST_AUDIO_RESAMPLER_FILTER_MODE_FULL, +#else +#warning "GStreamer version is too old to set GST_AUDIO_RESAMPLER_FILTER_MODE_FULL" GST_VERSION_MAJOR +#endif              "quality", 6, // between 0 and 10, 10 being best              /* default audio-resampler-method: GST_AUDIO_RESAMPLER_METHOD_KAISER */              NULL); diff --git a/src/StatsPublish.cpp b/src/StatsPublish.cpp index cdb32cb..5998913 100644 --- a/src/StatsPublish.cpp +++ b/src/StatsPublish.cpp @@ -1,5 +1,5 @@  /* ------------------------------------------------------------------ - * Copyright (C) 2019 Matthias P. Braendli + * Copyright (C) 2020 Matthias P. Braendli   *   * Licensed under the Apache License, Version 2.0 (the "License");   * you may not use this file except in compliance with the License. @@ -26,6 +26,7 @@  #include <sys/socket.h>  #include <sys/un.h>  #include <unistd.h> +#include <fcntl.h>  using namespace std; @@ -35,17 +36,28 @@ StatsPublisher::StatsPublisher(const string& socket_path) :      // The client socket binds to a socket whose name depends on PID, and connects to      // `socket_path` -    m_sock = socket(AF_UNIX, SOCK_DGRAM | SOCK_NONBLOCK, 0); +    m_sock = ::socket(AF_UNIX, SOCK_DGRAM, 0);      if (m_sock == -1) {          throw runtime_error("Stats socket creation failed: " + string(strerror(errno)));      } +    int flags = fcntl(m_sock, F_GETFL); +    if (flags == -1) { +        std::string errstr(strerror(errno)); +        throw std::runtime_error("Stats socket: Could not get socket flags: " + errstr); +    } + +    if (fcntl(m_sock, F_SETFL, flags | O_NONBLOCK) == -1) { +        std::string errstr(strerror(errno)); +        throw std::runtime_error("Stats socket: Could not set O_NONBLOCK: " + errstr); +    } +      struct sockaddr_un claddr;      memset(&claddr, 0, sizeof(struct sockaddr_un));      claddr.sun_family = AF_UNIX;      snprintf(claddr.sun_path, sizeof(claddr.sun_path), "/tmp/odr-audioenc.%ld", (long) getpid()); -    int ret = bind(m_sock, (const struct sockaddr *) &claddr, sizeof(struct sockaddr_un)); +    int ret = ::bind(m_sock, (const struct sockaddr *) &claddr, sizeof(struct sockaddr_un));      if (ret == -1) {          throw runtime_error("Stats socket bind failed " + string(strerror(errno)));      } @@ -54,7 +66,7 @@ StatsPublisher::StatsPublisher(const string& socket_path) :  StatsPublisher::~StatsPublisher()  {      if (m_sock != -1) { -        close(m_sock); +        ::close(m_sock);      }  } @@ -97,7 +109,7 @@ void StatsPublisher::send_stats()      claddr.sun_family = AF_UNIX;      snprintf(claddr.sun_path, sizeof(claddr.sun_path), "%s", m_socket_path.c_str()); -    int ret = sendto(m_sock, yamlstr.data(), yamlstr.size(), 0, +    int ret = ::sendto(m_sock, yamlstr.data(), yamlstr.size(), 0,              (struct sockaddr *) &claddr, sizeof(struct sockaddr_un));      if (ret == -1) {          // This suppresses the -Wlogical-op warning | 
