16b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org/* Copyright (c) 2008-2011 Xiph.Org Foundation 26b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org Written by Jean-Marc Valin */ 36b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org/* 46b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org Redistribution and use in source and binary forms, with or without 56b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org modification, are permitted provided that the following conditions 66b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org are met: 76b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org 86b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org - Redistributions of source code must retain the above copyright 96b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org notice, this list of conditions and the following disclaimer. 106b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org 116b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org - Redistributions in binary form must reproduce the above copyright 126b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org notice, this list of conditions and the following disclaimer in the 136b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org documentation and/or other materials provided with the distribution. 146b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org 156b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 166b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 176b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 186b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 196b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 206b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 216b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 226b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 236b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 246b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 256b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 266b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org*/ 276b6bee25314cfac02cc555cddedb9680c63a26d6sergeyu@chromium.org 28885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifdef HAVE_CONFIG_H 29885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include "config.h" 30885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 31885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 32885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#define SKIP_CONFIG_H 33885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 34885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef CUSTOM_MODES 35885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#define CUSTOM_MODES 36885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 37885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 38885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <stdio.h> 39885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 40885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#define CELT_C 41885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include "mdct.h" 42885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include "stack_alloc.h" 43885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 44885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include "kiss_fft.c" 45885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include "mdct.c" 46885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include "mathops.c" 47885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include "entcode.c" 48885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 49885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef M_PI 50885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#define M_PI 3.141592653 51885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 52885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 53885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint ret = 0; 54885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid check(kiss_fft_scalar * in,kiss_fft_scalar * out,int nfft,int isinverse) 55885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 56885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org int bin,k; 57885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org double errpow=0,sigpow=0; 58885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org double snr; 59885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (bin=0;bin<nfft/2;++bin) { 60885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org double ansr = 0; 61885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org double difr; 62885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 63885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (k=0;k<nfft;++k) { 64885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org double phase = 2*M_PI*(k+.5+.25*nfft)*(bin+.5)/nfft; 65885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org double re = cos(phase); 66885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 67885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org re /= nfft/4; 68885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 69885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ansr += in[k] * re; 70885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 71885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /*printf ("%f %f\n", ansr, out[bin]);*/ 72885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org difr = ansr - out[bin]; 73885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org errpow += difr*difr; 74885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sigpow += ansr*ansr; 75885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 76885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org snr = 10*log10(sigpow/errpow); 77885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org printf("nfft=%d inverse=%d,snr = %f\n",nfft,isinverse,snr ); 78885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (snr<60) { 79885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org printf( "** poor snr: %f **\n", snr); 80885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ret = 1; 81885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 82885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 83885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 84885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid check_inv(kiss_fft_scalar * in,kiss_fft_scalar * out,int nfft,int isinverse) 85885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 86885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org int bin,k; 87885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org double errpow=0,sigpow=0; 88885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org double snr; 89885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (bin=0;bin<nfft;++bin) { 90885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org double ansr = 0; 91885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org double difr; 92885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 93885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (k=0;k<nfft/2;++k) { 94885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org double phase = 2*M_PI*(bin+.5+.25*nfft)*(k+.5)/nfft; 95885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org double re = cos(phase); 96885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 97885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /*re *= 2;*/ 98885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 99885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ansr += in[k] * re; 100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /*printf ("%f %f\n", ansr, out[bin]);*/ 102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org difr = ansr - out[bin]; 103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org errpow += difr*difr; 104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sigpow += ansr*ansr; 105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org snr = 10*log10(sigpow/errpow); 107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org printf("nfft=%d inverse=%d,snr = %f\n",nfft,isinverse,snr ); 108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (snr<60) { 109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org printf( "** poor snr: %f **\n", snr); 110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ret = 1; 111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid test1d(int nfft,int isinverse) 116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org mdct_lookup cfg; 118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org size_t buflen = sizeof(kiss_fft_scalar)*nfft; 119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org kiss_fft_scalar * in = (kiss_fft_scalar*)malloc(buflen); 121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org kiss_fft_scalar * in_copy = (kiss_fft_scalar*)malloc(buflen); 122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org kiss_fft_scalar * out= (kiss_fft_scalar*)malloc(buflen); 123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opus_val16 * window= (opus_val16*)malloc(sizeof(opus_val16)*nfft/2); 124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org int k; 125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org clt_mdct_init(&cfg, nfft, 0); 127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (k=0;k<nfft;++k) { 128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org in[k] = (rand() % 32768) - 16384; 129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (k=0;k<nfft/2;++k) { 132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org window[k] = Q15ONE; 133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (k=0;k<nfft;++k) { 135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org in[k] *= 32768; 136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (isinverse) 139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (k=0;k<nfft;++k) { 141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org in[k] /= nfft; 142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (k=0;k<nfft;++k) 146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org in_copy[k] = in[k]; 147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /*for (k=0;k<nfft;++k) printf("%d %d ", in[k].r, in[k].i);printf("\n");*/ 148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (isinverse) 150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (k=0;k<nfft;++k) 152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org out[k] = 0; 153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org clt_mdct_backward(&cfg,in,out, window, nfft/2, 0, 1); 154e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org /* apply TDAC because clt_mdct_backward() no longer does that */ 155e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org for (k=0;k<nfft/4;++k) 156e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org out[nfft-k-1] = out[nfft/2+k]; 157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org check_inv(in,out,nfft,isinverse); 158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } else { 159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org clt_mdct_forward(&cfg,in,out,window, nfft/2, 0, 1); 160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org check(in_copy,out,nfft,isinverse); 161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /*for (k=0;k<nfft;++k) printf("%d %d ", out[k].r, out[k].i);printf("\n");*/ 163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org free(in); 166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org free(out); 167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org clt_mdct_clear(&cfg); 168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint main(int argc,char ** argv) 171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ALLOC_STACK; 173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (argc>1) { 174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org int k; 175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (k=1;k<argc;++k) { 176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test1d(atoi(argv[k]),0); 177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test1d(atoi(argv[k]),1); 178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org }else{ 180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test1d(32,0); 181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test1d(32,1); 182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test1d(256,0); 183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test1d(256,1); 184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test1d(512,0); 185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test1d(512,1); 186e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org test1d(1024,0); 187e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org test1d(1024,1); 188e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org test1d(2048,0); 189e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org test1d(2048,1); 190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef RADIX_TWO_ONLY 191e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org test1d(36,0); 192e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org test1d(36,1); 193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test1d(40,0); 194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test1d(40,1); 195e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org test1d(60,0); 196e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org test1d(60,1); 197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test1d(120,0); 198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test1d(120,1); 199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test1d(240,0); 200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test1d(240,1); 201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test1d(480,0); 202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test1d(480,1); 203e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org test1d(960,0); 204e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org test1d(960,1); 205e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org test1d(1920,0); 206e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org test1d(1920,1); 207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return ret; 210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 211