* qatar/master: (36 commits)
ARM: allow unaligned buffer in fixed-point NEON FFT4
fate: test more FFT etc sizes
dca: set AVCodecContext frame_size for DTS audio
YASM: Shut up unused variable compiler warning with --disable-yasm.
x86_32: Fix build on x86_32 with --disable-yasm.
iirfilter: add fate test
doxygen: Add qmul docs.
ogg: propagate return values and return more meaningful error values
H.264: fix overreads of qscale_table
Remove unused static tables and static inline functions.
eval: clear Parser instances before using
dct-test: remove 'ref' function pointer from tables
build: Remove deleted 'check' target from .PHONY list.
oggdec: Abort Ogg header parsing when encountering a data packet.
Add LGPL license boilerplate to files lacking it.
mxfenc: small typo fix
doxygen: Fix documentation for some VP8 functions.
sha: use AV_RB32() instead of assuming buffer can be cast to uint32_t*
des: allow unaligned input and output buffers
aes: allow unaligned input and output buffers
...
Conflicts:
libavcodec/dct-test.c
libavcodec/libvpxenc.c
libavcodec/x86/dsputil_mmx.c
libavcodec/x86/h264_qpel_mmx.c
libavfilter/x86/gradfun.c
libavformat/oggdec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
| ... | ... |
@@ -164,5 +164,5 @@ $(sort $(OBJDIRS)): |
| 164 | 164 |
# so this saves some time on slow systems. |
| 165 | 165 |
.SUFFIXES: |
| 166 | 166 |
|
| 167 |
-.PHONY: all all-yes alltools *clean check config examples install* |
|
| 167 |
+.PHONY: all all-yes alltools *clean config examples install* |
|
| 168 | 168 |
.PHONY: testprogs uninstall* |
| ... | ... |
@@ -1650,6 +1650,7 @@ static int dca_decode_frame(AVCodecContext * avctx, |
| 1650 | 1650 |
//set AVCodec values with parsed data |
| 1651 | 1651 |
avctx->sample_rate = s->sample_rate; |
| 1652 | 1652 |
avctx->bit_rate = s->bit_rate; |
| 1653 |
+ avctx->frame_size = s->sample_blocks * 32; |
|
| 1653 | 1654 |
|
| 1654 | 1655 |
s->profile = FF_PROFILE_DTS; |
| 1655 | 1656 |
|
| ... | ... |
@@ -68,12 +68,12 @@ void ff_simple_idct_neon(DCTELEM *data); |
| 68 | 68 |
void ff_simple_idct_axp(DCTELEM *data); |
| 69 | 69 |
|
| 70 | 70 |
struct algo {
|
| 71 |
- const char *name; |
|
| 72 |
- enum { FDCT, IDCT } is_idct;
|
|
| 73 |
- void (* func) (DCTELEM *block); |
|
| 74 |
- void (* ref) (DCTELEM *block); |
|
| 75 |
- enum formattag { NO_PERM,MMX_PERM, MMX_SIMPLE_PERM, SCALE_PERM, SSE2_PERM, PARTTRANS_PERM } format;
|
|
| 76 |
- int mm_support; |
|
| 71 |
+ const char *name; |
|
| 72 |
+ void (*func)(DCTELEM *block); |
|
| 73 |
+ enum formattag { NO_PERM, MMX_PERM, MMX_SIMPLE_PERM, SCALE_PERM,
|
|
| 74 |
+ SSE2_PERM, PARTTRANS_PERM } format; |
|
| 75 |
+ int mm_support; |
|
| 76 |
+ int nonspec; |
|
| 77 | 77 |
}; |
| 78 | 78 |
|
| 79 | 79 |
#ifndef FAAN_POSTSCALE |
| ... | ... |
@@ -84,61 +84,69 @@ struct algo {
|
| 84 | 84 |
|
| 85 | 85 |
static int cpu_flags; |
| 86 | 86 |
|
| 87 |
-struct algo algos[] = {
|
|
| 88 |
- {"REF-DBL", 0, ff_ref_fdct, ff_ref_fdct, NO_PERM},
|
|
| 89 |
- {"FAAN", 0, ff_faandct, ff_ref_fdct, FAAN_SCALE},
|
|
| 90 |
- {"FAANI", 1, ff_faanidct, ff_ref_idct, NO_PERM},
|
|
| 91 |
- {"IJG-AAN-INT", 0, fdct_ifast, ff_ref_fdct, SCALE_PERM},
|
|
| 92 |
- {"IJG-LLM-INT", 0, ff_jpeg_fdct_islow, ff_ref_fdct, NO_PERM},
|
|
| 93 |
- {"REF-DBL", 1, ff_ref_idct, ff_ref_idct, NO_PERM},
|
|
| 94 |
- {"INT", 1, j_rev_dct, ff_ref_idct, MMX_PERM},
|
|
| 95 |
- {"SIMPLE-C", 1, ff_simple_idct, ff_ref_idct, NO_PERM},
|
|
| 87 |
+static const struct algo fdct_tab[] = {
|
|
| 88 |
+ { "REF-DBL", ff_ref_fdct, NO_PERM },
|
|
| 89 |
+ { "FAAN", ff_faandct, FAAN_SCALE },
|
|
| 90 |
+ { "IJG-AAN-INT", fdct_ifast, SCALE_PERM },
|
|
| 91 |
+ { "IJG-LLM-INT", ff_jpeg_fdct_islow, NO_PERM },
|
|
| 96 | 92 |
|
| 97 | 93 |
#if HAVE_MMX |
| 98 |
- {"MMX", 0, ff_fdct_mmx, ff_ref_fdct, NO_PERM, AV_CPU_FLAG_MMX},
|
|
| 99 |
-#if HAVE_MMX2 |
|
| 100 |
- {"MMX2", 0, ff_fdct_mmx2, ff_ref_fdct, NO_PERM, AV_CPU_FLAG_MMX2},
|
|
| 101 |
- {"SSE2", 0, ff_fdct_sse2, ff_ref_fdct, NO_PERM, AV_CPU_FLAG_SSE2},
|
|
| 94 |
+ { "MMX", ff_fdct_mmx, NO_PERM, AV_CPU_FLAG_MMX },
|
|
| 95 |
+ { "MMX2", ff_fdct_mmx2, NO_PERM, AV_CPU_FLAG_MMX2 },
|
|
| 96 |
+ { "SSE2", ff_fdct_sse2, NO_PERM, AV_CPU_FLAG_SSE2 },
|
|
| 102 | 97 |
#endif |
| 103 | 98 |
|
| 104 |
-#if CONFIG_GPL |
|
| 105 |
- {"LIBMPEG2-MMX", 1, ff_mmx_idct, ff_ref_idct, MMX_PERM, AV_CPU_FLAG_MMX},
|
|
| 106 |
- {"LIBMPEG2-MMX2", 1, ff_mmxext_idct, ff_ref_idct, MMX_PERM, AV_CPU_FLAG_MMX2},
|
|
| 99 |
+#if HAVE_ALTIVEC |
|
| 100 |
+ { "altivecfdct", fdct_altivec, NO_PERM, AV_CPU_FLAG_ALTIVEC },
|
|
| 107 | 101 |
#endif |
| 108 |
- {"SIMPLE-MMX", 1, ff_simple_idct_mmx, ff_ref_idct, MMX_SIMPLE_PERM, AV_CPU_FLAG_MMX},
|
|
| 109 |
- {"XVID-MMX", 1, ff_idct_xvid_mmx, ff_ref_idct, NO_PERM, AV_CPU_FLAG_MMX},
|
|
| 110 |
- {"XVID-MMX2", 1, ff_idct_xvid_mmx2, ff_ref_idct, NO_PERM, AV_CPU_FLAG_MMX2},
|
|
| 111 |
- {"XVID-SSE2", 1, ff_idct_xvid_sse2, ff_ref_idct, SSE2_PERM, AV_CPU_FLAG_SSE2},
|
|
| 102 |
+ |
|
| 103 |
+#if ARCH_BFIN |
|
| 104 |
+ { "BFINfdct", ff_bfin_fdct, NO_PERM },
|
|
| 112 | 105 |
#endif |
| 113 | 106 |
|
| 114 |
-#if HAVE_ALTIVEC |
|
| 115 |
- {"altivecfdct", 0, fdct_altivec, ff_ref_fdct, NO_PERM, AV_CPU_FLAG_ALTIVEC},
|
|
| 107 |
+ { 0 }
|
|
| 108 |
+}; |
|
| 109 |
+ |
|
| 110 |
+static const struct algo idct_tab[] = {
|
|
| 111 |
+ { "FAANI", ff_faanidct, NO_PERM },
|
|
| 112 |
+ { "REF-DBL", ff_ref_idct, NO_PERM },
|
|
| 113 |
+ { "INT", j_rev_dct, MMX_PERM },
|
|
| 114 |
+ { "SIMPLE-C", ff_simple_idct, NO_PERM },
|
|
| 115 |
+ |
|
| 116 |
+#if HAVE_MMX |
|
| 117 |
+#if CONFIG_GPL |
|
| 118 |
+ { "LIBMPEG2-MMX", ff_mmx_idct, MMX_PERM, AV_CPU_FLAG_MMX, 1 },
|
|
| 119 |
+ { "LIBMPEG2-MMX2", ff_mmxext_idct, MMX_PERM, AV_CPU_FLAG_MMX2, 1 },
|
|
| 120 |
+#endif |
|
| 121 |
+ { "SIMPLE-MMX", ff_simple_idct_mmx, MMX_SIMPLE_PERM, AV_CPU_FLAG_MMX },
|
|
| 122 |
+ { "XVID-MMX", ff_idct_xvid_mmx, NO_PERM, AV_CPU_FLAG_MMX, 1 },
|
|
| 123 |
+ { "XVID-MMX2", ff_idct_xvid_mmx2, NO_PERM, AV_CPU_FLAG_MMX2, 1 },
|
|
| 124 |
+ { "XVID-SSE2", ff_idct_xvid_sse2, SSE2_PERM, AV_CPU_FLAG_SSE2, 1 },
|
|
| 116 | 125 |
#endif |
| 117 | 126 |
|
| 118 | 127 |
#if ARCH_BFIN |
| 119 |
- {"BFINfdct", 0, ff_bfin_fdct, ff_ref_fdct, NO_PERM},
|
|
| 120 |
- {"BFINidct", 1, ff_bfin_idct, ff_ref_idct, NO_PERM},
|
|
| 128 |
+ { "BFINidct", ff_bfin_idct, NO_PERM },
|
|
| 121 | 129 |
#endif |
| 122 | 130 |
|
| 123 | 131 |
#if ARCH_ARM |
| 124 |
- {"SIMPLE-ARM", 1, ff_simple_idct_arm, ff_ref_idct, NO_PERM },
|
|
| 125 |
- {"INT-ARM", 1, ff_j_rev_dct_arm, ff_ref_idct, MMX_PERM },
|
|
| 132 |
+ { "SIMPLE-ARM", ff_simple_idct_arm, NO_PERM },
|
|
| 133 |
+ { "INT-ARM", ff_j_rev_dct_arm, MMX_PERM },
|
|
| 134 |
+#endif |
|
| 126 | 135 |
#if HAVE_ARMV5TE |
| 127 |
- {"SIMPLE-ARMV5TE", 1, ff_simple_idct_armv5te, ff_ref_idct, NO_PERM },
|
|
| 136 |
+ { "SIMPLE-ARMV5TE", ff_simple_idct_armv5te,NO_PERM },
|
|
| 128 | 137 |
#endif |
| 129 | 138 |
#if HAVE_ARMV6 |
| 130 |
- {"SIMPLE-ARMV6", 1, ff_simple_idct_armv6, ff_ref_idct, MMX_PERM },
|
|
| 139 |
+ { "SIMPLE-ARMV6", ff_simple_idct_armv6, MMX_PERM },
|
|
| 131 | 140 |
#endif |
| 132 | 141 |
#if HAVE_NEON |
| 133 |
- {"SIMPLE-NEON", 1, ff_simple_idct_neon, ff_ref_idct, PARTTRANS_PERM },
|
|
| 142 |
+ { "SIMPLE-NEON", ff_simple_idct_neon, PARTTRANS_PERM },
|
|
| 134 | 143 |
#endif |
| 135 |
-#endif /* ARCH_ARM */ |
|
| 136 | 144 |
|
| 137 | 145 |
#if ARCH_ALPHA |
| 138 |
- {"SIMPLE-ALPHA", 1, ff_simple_idct_axp, ff_ref_idct, NO_PERM },
|
|
| 146 |
+ { "SIMPLE-ALPHA", ff_simple_idct_axp, NO_PERM },
|
|
| 139 | 147 |
#endif |
| 140 | 148 |
|
| 141 |
- { 0 }
|
|
| 149 |
+ { 0 }
|
|
| 142 | 150 |
}; |
| 143 | 151 |
|
| 144 | 152 |
#define AANSCALE_BITS 12 |
| ... | ... |
@@ -148,7 +156,7 @@ uint8_t cropTbl[256 + 2 * MAX_NEG_CROP]; |
| 148 | 148 |
static int64_t gettime(void) |
| 149 | 149 |
{
|
| 150 | 150 |
struct timeval tv; |
| 151 |
- gettimeofday(&tv,NULL); |
|
| 151 |
+ gettimeofday(&tv, NULL); |
|
| 152 | 152 |
return (int64_t)tv.tv_sec * 1000000 + tv.tv_usec; |
| 153 | 153 |
} |
| 154 | 154 |
|
| ... | ... |
@@ -157,18 +165,18 @@ static int64_t gettime(void) |
| 157 | 157 |
|
| 158 | 158 |
static short idct_mmx_perm[64]; |
| 159 | 159 |
|
| 160 |
-static short idct_simple_mmx_perm[64]={
|
|
| 161 |
- 0x00, 0x08, 0x04, 0x09, 0x01, 0x0C, 0x05, 0x0D, |
|
| 162 |
- 0x10, 0x18, 0x14, 0x19, 0x11, 0x1C, 0x15, 0x1D, |
|
| 163 |
- 0x20, 0x28, 0x24, 0x29, 0x21, 0x2C, 0x25, 0x2D, |
|
| 164 |
- 0x12, 0x1A, 0x16, 0x1B, 0x13, 0x1E, 0x17, 0x1F, |
|
| 165 |
- 0x02, 0x0A, 0x06, 0x0B, 0x03, 0x0E, 0x07, 0x0F, |
|
| 166 |
- 0x30, 0x38, 0x34, 0x39, 0x31, 0x3C, 0x35, 0x3D, |
|
| 167 |
- 0x22, 0x2A, 0x26, 0x2B, 0x23, 0x2E, 0x27, 0x2F, |
|
| 168 |
- 0x32, 0x3A, 0x36, 0x3B, 0x33, 0x3E, 0x37, 0x3F, |
|
| 160 |
+static short idct_simple_mmx_perm[64] = {
|
|
| 161 |
+ 0x00, 0x08, 0x04, 0x09, 0x01, 0x0C, 0x05, 0x0D, |
|
| 162 |
+ 0x10, 0x18, 0x14, 0x19, 0x11, 0x1C, 0x15, 0x1D, |
|
| 163 |
+ 0x20, 0x28, 0x24, 0x29, 0x21, 0x2C, 0x25, 0x2D, |
|
| 164 |
+ 0x12, 0x1A, 0x16, 0x1B, 0x13, 0x1E, 0x17, 0x1F, |
|
| 165 |
+ 0x02, 0x0A, 0x06, 0x0B, 0x03, 0x0E, 0x07, 0x0F, |
|
| 166 |
+ 0x30, 0x38, 0x34, 0x39, 0x31, 0x3C, 0x35, 0x3D, |
|
| 167 |
+ 0x22, 0x2A, 0x26, 0x2B, 0x23, 0x2E, 0x27, 0x2F, |
|
| 168 |
+ 0x32, 0x3A, 0x36, 0x3B, 0x33, 0x3E, 0x37, 0x3F, |
|
| 169 | 169 |
}; |
| 170 | 170 |
|
| 171 |
-static const uint8_t idct_sse2_row_perm[8] = {0, 4, 1, 5, 2, 6, 3, 7};
|
|
| 171 |
+static const uint8_t idct_sse2_row_perm[8] = { 0, 4, 1, 5, 2, 6, 3, 7 };
|
|
| 172 | 172 |
|
| 173 | 173 |
static void idct_mmx_init(void) |
| 174 | 174 |
{
|
| ... | ... |
@@ -177,13 +185,12 @@ static void idct_mmx_init(void) |
| 177 | 177 |
/* the mmx/mmxext idct uses a reordered input, so we patch scan tables */ |
| 178 | 178 |
for (i = 0; i < 64; i++) {
|
| 179 | 179 |
idct_mmx_perm[i] = (i & 0x38) | ((i & 6) >> 1) | ((i & 1) << 2); |
| 180 |
-// idct_simple_mmx_perm[i] = simple_block_permute_op(i); |
|
| 181 | 180 |
} |
| 182 | 181 |
} |
| 183 | 182 |
|
| 184 | 183 |
DECLARE_ALIGNED(16, static DCTELEM, block)[64]; |
| 185 |
-DECLARE_ALIGNED(8, static DCTELEM, block1)[64]; |
|
| 186 |
-DECLARE_ALIGNED(8, static DCTELEM, block_org)[64]; |
|
| 184 |
+DECLARE_ALIGNED(8, static DCTELEM, block1)[64]; |
|
| 185 |
+DECLARE_ALIGNED(8, static DCTELEM, block_org)[64]; |
|
| 187 | 186 |
|
| 188 | 187 |
static inline void mmx_emms(void) |
| 189 | 188 |
{
|
| ... | ... |
@@ -193,188 +200,177 @@ static inline void mmx_emms(void) |
| 193 | 193 |
#endif |
| 194 | 194 |
} |
| 195 | 195 |
|
| 196 |
-static void dct_error(const char *name, int is_idct, |
|
| 197 |
- void (*fdct_func)(DCTELEM *block), |
|
| 198 |
- void (*fdct_ref)(DCTELEM *block), int form, int test, const int bits) |
|
| 196 |
+ |
|
| 197 |
+static int dct_error(const struct algo *dct, int test, int is_idct, int speed, const int bits) |
|
| 199 | 198 |
{
|
| 199 |
+ void (*ref)(DCTELEM *block) = is_idct ? ff_ref_idct : ff_ref_fdct; |
|
| 200 | 200 |
int it, i, scale; |
| 201 | 201 |
int err_inf, v; |
| 202 |
- int64_t err2, ti, ti1, it1; |
|
| 203 |
- int64_t sysErr[64], sysErrMax=0; |
|
| 204 |
- int maxout=0; |
|
| 205 |
- int blockSumErrMax=0, blockSumErr; |
|
| 202 |
+ int64_t err2, ti, ti1, it1, err_sum = 0; |
|
| 203 |
+ int64_t sysErr[64], sysErrMax = 0; |
|
| 204 |
+ int maxout = 0; |
|
| 205 |
+ int blockSumErrMax = 0, blockSumErr; |
|
| 206 | 206 |
AVLFG prng; |
| 207 | 207 |
const int vals=1<<bits; |
| 208 |
+ double omse, ome; |
|
| 209 |
+ int spec_err; |
|
| 208 | 210 |
|
| 209 | 211 |
av_lfg_init(&prng, 1); |
| 210 | 212 |
|
| 211 | 213 |
err_inf = 0; |
| 212 | 214 |
err2 = 0; |
| 213 |
- for(i=0; i<64; i++) sysErr[i]=0; |
|
| 214 |
- for(it=0;it<NB_ITS;it++) {
|
|
| 215 |
- for(i=0;i<64;i++) |
|
| 215 |
+ for (i = 0; i < 64; i++) |
|
| 216 |
+ sysErr[i] = 0; |
|
| 217 |
+ for (it = 0; it < NB_ITS; it++) {
|
|
| 218 |
+ for (i = 0; i < 64; i++) |
|
| 216 | 219 |
block1[i] = 0; |
| 217 |
- switch(test){
|
|
| 220 |
+ switch (test) {
|
|
| 218 | 221 |
case 0: |
| 219 |
- for(i=0;i<64;i++) |
|
| 222 |
+ for (i = 0; i < 64; i++) |
|
| 220 | 223 |
block1[i] = (av_lfg_get(&prng) % (2*vals)) -vals; |
| 221 |
- if (is_idct){
|
|
| 224 |
+ if (is_idct) {
|
|
| 222 | 225 |
ff_ref_fdct(block1); |
| 223 |
- |
|
| 224 |
- for(i=0;i<64;i++) |
|
| 225 |
- block1[i]>>=3; |
|
| 226 |
+ for (i = 0; i < 64; i++) |
|
| 227 |
+ block1[i] >>= 3; |
|
| 226 | 228 |
} |
| 227 |
- break; |
|
| 228 |
- case 1:{
|
|
| 229 |
- int num = av_lfg_get(&prng) % 10 + 1; |
|
| 230 |
- for(i=0;i<num;i++) |
|
| 231 |
- block1[av_lfg_get(&prng) % 64] = av_lfg_get(&prng) % (2*vals) -vals; |
|
| 232 |
- }break; |
|
| 229 |
+ break; |
|
| 230 |
+ case 1: {
|
|
| 231 |
+ int num = av_lfg_get(&prng) % 10 + 1; |
|
| 232 |
+ for (i = 0; i < num; i++) |
|
| 233 |
+ block1[av_lfg_get(&prng) % 64] = av_lfg_get(&prng) % (2*vals) -vals; |
|
| 234 |
+ } |
|
| 235 |
+ break; |
|
| 233 | 236 |
case 2: |
| 234 | 237 |
block1[0] = av_lfg_get(&prng) % (16*vals) - (8*vals); |
| 235 |
- block1[63]= (block1[0]&1)^1; |
|
| 236 |
- break; |
|
| 238 |
+ block1[63] = (block1[0] & 1) ^ 1; |
|
| 239 |
+ break; |
|
| 237 | 240 |
} |
| 238 | 241 |
|
| 239 |
-#if 0 // simulate mismatch control |
|
| 240 |
-{ int sum=0;
|
|
| 241 |
- for(i=0;i<64;i++) |
|
| 242 |
- sum+=block1[i]; |
|
| 243 |
- |
|
| 244 |
- if((sum&1)==0) block1[63]^=1; |
|
| 245 |
-} |
|
| 246 |
-#endif |
|
| 242 |
+ for (i = 0; i < 64; i++) |
|
| 243 |
+ block_org[i] = block1[i]; |
|
| 247 | 244 |
|
| 248 |
- for(i=0; i<64; i++) |
|
| 249 |
- block_org[i]= block1[i]; |
|
| 250 |
- |
|
| 251 |
- if (form == MMX_PERM) {
|
|
| 252 |
- for(i=0;i<64;i++) |
|
| 245 |
+ if (dct->format == MMX_PERM) {
|
|
| 246 |
+ for (i = 0; i < 64; i++) |
|
| 253 | 247 |
block[idct_mmx_perm[i]] = block1[i]; |
| 254 |
- } else if (form == MMX_SIMPLE_PERM) {
|
|
| 255 |
- for(i=0;i<64;i++) |
|
| 248 |
+ } else if (dct->format == MMX_SIMPLE_PERM) {
|
|
| 249 |
+ for (i = 0; i < 64; i++) |
|
| 256 | 250 |
block[idct_simple_mmx_perm[i]] = block1[i]; |
| 257 |
- |
|
| 258 |
- } else if (form == SSE2_PERM) {
|
|
| 259 |
- for(i=0; i<64; i++) |
|
| 260 |
- block[(i&0x38) | idct_sse2_row_perm[i&7]] = block1[i]; |
|
| 261 |
- } else if (form == PARTTRANS_PERM) {
|
|
| 262 |
- for(i=0; i<64; i++) |
|
| 263 |
- block[(i&0x24) | ((i&3)<<3) | ((i>>3)&3)] = block1[i]; |
|
| 251 |
+ } else if (dct->format == SSE2_PERM) {
|
|
| 252 |
+ for (i = 0; i < 64; i++) |
|
| 253 |
+ block[(i & 0x38) | idct_sse2_row_perm[i & 7]] = block1[i]; |
|
| 254 |
+ } else if (dct->format == PARTTRANS_PERM) {
|
|
| 255 |
+ for (i = 0; i < 64; i++) |
|
| 256 |
+ block[(i & 0x24) | ((i & 3) << 3) | ((i >> 3) & 3)] = block1[i]; |
|
| 264 | 257 |
} else {
|
| 265 |
- for(i=0; i<64; i++) |
|
| 266 |
- block[i]= block1[i]; |
|
| 258 |
+ for (i = 0; i < 64; i++) |
|
| 259 |
+ block[i] = block1[i]; |
|
| 267 | 260 |
} |
| 268 |
-#if 0 // simulate mismatch control for tested IDCT but not the ref |
|
| 269 |
-{ int sum=0;
|
|
| 270 |
- for(i=0;i<64;i++) |
|
| 271 |
- sum+=block[i]; |
|
| 272 |
- |
|
| 273 |
- if((sum&1)==0) block[63]^=1; |
|
| 274 |
-} |
|
| 275 |
-#endif |
|
| 276 | 261 |
|
| 277 |
- fdct_func(block); |
|
| 262 |
+ dct->func(block); |
|
| 278 | 263 |
mmx_emms(); |
| 279 | 264 |
|
| 280 |
- if (form == SCALE_PERM) {
|
|
| 281 |
- for(i=0; i<64; i++) {
|
|
| 282 |
- scale = 8*(1 << (AANSCALE_BITS + 11)) / ff_aanscales[i]; |
|
| 283 |
- block[i] = (block[i] * scale /*+ (1<<(AANSCALE_BITS-1))*/) >> AANSCALE_BITS; |
|
| 265 |
+ if (dct->format == SCALE_PERM) {
|
|
| 266 |
+ for (i = 0; i < 64; i++) {
|
|
| 267 |
+ scale = 8 * (1 << (AANSCALE_BITS + 11)) / ff_aanscales[i]; |
|
| 268 |
+ block[i] = (block[i] * scale) >> AANSCALE_BITS; |
|
| 284 | 269 |
} |
| 285 | 270 |
} |
| 286 | 271 |
|
| 287 |
- fdct_ref(block1); |
|
| 272 |
+ ref(block1); |
|
| 288 | 273 |
|
| 289 |
- blockSumErr=0; |
|
| 290 |
- for(i=0;i<64;i++) {
|
|
| 291 |
- v = abs(block[i] - block1[i]); |
|
| 274 |
+ blockSumErr = 0; |
|
| 275 |
+ for (i = 0; i < 64; i++) {
|
|
| 276 |
+ int err = block[i] - block1[i]; |
|
| 277 |
+ err_sum += err; |
|
| 278 |
+ v = abs(err); |
|
| 292 | 279 |
if (v > err_inf) |
| 293 | 280 |
err_inf = v; |
| 294 | 281 |
err2 += v * v; |
| 295 | 282 |
sysErr[i] += block[i] - block1[i]; |
| 296 | 283 |
blockSumErr += v; |
| 297 |
- if( abs(block[i])>maxout) maxout=abs(block[i]); |
|
| 284 |
+ if (abs(block[i]) > maxout) |
|
| 285 |
+ maxout = abs(block[i]); |
|
| 298 | 286 |
} |
| 299 |
- if(blockSumErrMax < blockSumErr) blockSumErrMax= blockSumErr; |
|
| 300 |
-#if 0 // print different matrix pairs |
|
| 301 |
- if(blockSumErr){
|
|
| 302 |
- printf("\n");
|
|
| 303 |
- for(i=0; i<64; i++){
|
|
| 304 |
- if((i&7)==0) printf("\n");
|
|
| 305 |
- printf("%4d ", block_org[i]);
|
|
| 306 |
- } |
|
| 307 |
- for(i=0; i<64; i++){
|
|
| 308 |
- if((i&7)==0) printf("\n");
|
|
| 309 |
- printf("%4d ", block[i] - block1[i]);
|
|
| 310 |
- } |
|
| 311 |
- } |
|
| 312 |
-#endif |
|
| 287 |
+ if (blockSumErrMax < blockSumErr) |
|
| 288 |
+ blockSumErrMax = blockSumErr; |
|
| 313 | 289 |
} |
| 314 |
- for(i=0; i<64; i++) sysErrMax= FFMAX(sysErrMax, FFABS(sysErr[i])); |
|
| 290 |
+ for (i = 0; i < 64; i++) |
|
| 291 |
+ sysErrMax = FFMAX(sysErrMax, FFABS(sysErr[i])); |
|
| 315 | 292 |
|
| 316 |
- for(i=0; i<64; i++){
|
|
| 317 |
- if(i%8==0) printf("\n");
|
|
| 318 |
- printf("%7d ", (int)sysErr[i]);
|
|
| 293 |
+ for (i = 0; i < 64; i++) {
|
|
| 294 |
+ if (i % 8 == 0) |
|
| 295 |
+ printf("\n");
|
|
| 296 |
+ printf("%7d ", (int) sysErr[i]);
|
|
| 319 | 297 |
} |
| 320 | 298 |
printf("\n");
|
| 321 | 299 |
|
| 322 |
- printf("%s %s: err_inf=%d err2=%0.8f syserr=%0.8f maxout=%d blockSumErr=%d\n",
|
|
| 323 |
- is_idct ? "IDCT" : "DCT", |
|
| 324 |
- name, err_inf, (double)err2 / NB_ITS / 64.0, (double)sysErrMax / NB_ITS, maxout, blockSumErrMax); |
|
| 300 |
+ omse = (double) err2 / NB_ITS / 64; |
|
| 301 |
+ ome = (double) err_sum / NB_ITS / 64; |
|
| 302 |
+ |
|
| 303 |
+ spec_err = is_idct && (err_inf > 1 || omse > 0.02 || fabs(ome) > 0.0015); |
|
| 304 |
+ |
|
| 305 |
+ printf("%s %s: ppe=%d omse=%0.8f ome=%0.8f syserr=%0.8f maxout=%d blockSumErr=%d\n",
|
|
| 306 |
+ is_idct ? "IDCT" : "DCT", dct->name, err_inf, |
|
| 307 |
+ omse, ome, (double) sysErrMax / NB_ITS, |
|
| 308 |
+ maxout, blockSumErrMax); |
|
| 309 |
+ |
|
| 310 |
+ if (spec_err && !dct->nonspec) |
|
| 311 |
+ return 1; |
|
| 312 |
+ |
|
| 313 |
+ if (!speed) |
|
| 314 |
+ return 0; |
|
| 325 | 315 |
|
| 326 | 316 |
/* speed test */ |
| 327 |
- for(i=0;i<64;i++) |
|
| 317 |
+ for (i = 0; i < 64; i++) |
|
| 328 | 318 |
block1[i] = 0; |
| 329 |
- switch(test){
|
|
| 319 |
+ |
|
| 320 |
+ switch (test) {
|
|
| 330 | 321 |
case 0: |
| 331 |
- for(i=0;i<64;i++) |
|
| 322 |
+ for (i = 0; i < 64; i++) |
|
| 332 | 323 |
block1[i] = av_lfg_get(&prng) % (2*vals) -vals; |
| 333 |
- if (is_idct){
|
|
| 324 |
+ if (is_idct) {
|
|
| 334 | 325 |
ff_ref_fdct(block1); |
| 335 |
- |
|
| 336 |
- for(i=0;i<64;i++) |
|
| 337 |
- block1[i]>>=3; |
|
| 326 |
+ for (i = 0; i < 64; i++) |
|
| 327 |
+ block1[i] >>= 3; |
|
| 338 | 328 |
} |
| 339 |
- break; |
|
| 340 |
- case 1:{
|
|
| 329 |
+ break; |
|
| 330 |
+ case 1: |
|
| 341 | 331 |
case 2: |
| 342 | 332 |
block1[0] = av_lfg_get(&prng) % (2*vals) -vals; |
| 343 | 333 |
block1[1] = av_lfg_get(&prng) % (2*vals) -vals; |
| 344 | 334 |
block1[2] = av_lfg_get(&prng) % (2*vals) -vals; |
| 345 | 335 |
block1[3] = av_lfg_get(&prng) % (2*vals) -vals; |
| 346 |
- }break; |
|
| 336 |
+ break; |
|
| 347 | 337 |
} |
| 348 | 338 |
|
| 349 |
- if (form == MMX_PERM) {
|
|
| 350 |
- for(i=0;i<64;i++) |
|
| 339 |
+ if (dct->format == MMX_PERM) {
|
|
| 340 |
+ for (i = 0; i < 64; i++) |
|
| 351 | 341 |
block[idct_mmx_perm[i]] = block1[i]; |
| 352 |
- } else if(form == MMX_SIMPLE_PERM) {
|
|
| 353 |
- for(i=0;i<64;i++) |
|
| 342 |
+ } else if (dct->format == MMX_SIMPLE_PERM) {
|
|
| 343 |
+ for (i = 0; i < 64; i++) |
|
| 354 | 344 |
block[idct_simple_mmx_perm[i]] = block1[i]; |
| 355 | 345 |
} else {
|
| 356 |
- for(i=0; i<64; i++) |
|
| 357 |
- block[i]= block1[i]; |
|
| 346 |
+ for (i = 0; i < 64; i++) |
|
| 347 |
+ block[i] = block1[i]; |
|
| 358 | 348 |
} |
| 359 | 349 |
|
| 360 | 350 |
ti = gettime(); |
| 361 | 351 |
it1 = 0; |
| 362 | 352 |
do {
|
| 363 |
- for(it=0;it<NB_ITS_SPEED;it++) {
|
|
| 364 |
- for(i=0; i<64; i++) |
|
| 365 |
- block[i]= block1[i]; |
|
| 366 |
-// memcpy(block, block1, sizeof(DCTELEM) * 64); |
|
| 367 |
-// do not memcpy especially not fastmemcpy because it does movntq !!! |
|
| 368 |
- fdct_func(block); |
|
| 353 |
+ for (it = 0; it < NB_ITS_SPEED; it++) {
|
|
| 354 |
+ for (i = 0; i < 64; i++) |
|
| 355 |
+ block[i] = block1[i]; |
|
| 356 |
+ dct->func(block); |
|
| 369 | 357 |
} |
| 370 | 358 |
it1 += NB_ITS_SPEED; |
| 371 | 359 |
ti1 = gettime() - ti; |
| 372 | 360 |
} while (ti1 < 1000000); |
| 373 | 361 |
mmx_emms(); |
| 374 | 362 |
|
| 375 |
- printf("%s %s: %0.1f kdct/s\n",
|
|
| 376 |
- is_idct ? "IDCT" : "DCT", |
|
| 377 |
- name, (double)it1 * 1000.0 / (double)ti1); |
|
| 363 |
+ printf("%s %s: %0.1f kdct/s\n", is_idct ? "IDCT" : "DCT", dct->name,
|
|
| 364 |
+ (double) it1 * 1000.0 / (double) ti1); |
|
| 365 |
+ |
|
| 366 |
+ return 0; |
|
| 378 | 367 |
} |
| 379 | 368 |
|
| 380 | 369 |
DECLARE_ALIGNED(8, static uint8_t, img_dest)[64]; |
| ... | ... |
@@ -392,19 +388,19 @@ static void idct248_ref(uint8_t *dest, int linesize, int16_t *block) |
| 392 | 392 |
if (!init) {
|
| 393 | 393 |
init = 1; |
| 394 | 394 |
|
| 395 |
- for(i=0;i<8;i++) {
|
|
| 395 |
+ for (i = 0; i < 8; i++) {
|
|
| 396 | 396 |
sum = 0; |
| 397 |
- for(j=0;j<8;j++) {
|
|
| 398 |
- s = (i==0) ? sqrt(1.0/8.0) : sqrt(1.0/4.0); |
|
| 397 |
+ for (j = 0; j < 8; j++) {
|
|
| 398 |
+ s = (i == 0) ? sqrt(1.0 / 8.0) : sqrt(1.0 / 4.0); |
|
| 399 | 399 |
c8[i][j] = s * cos(M_PI * i * (j + 0.5) / 8.0); |
| 400 | 400 |
sum += c8[i][j] * c8[i][j]; |
| 401 | 401 |
} |
| 402 | 402 |
} |
| 403 | 403 |
|
| 404 |
- for(i=0;i<4;i++) {
|
|
| 404 |
+ for (i = 0; i < 4; i++) {
|
|
| 405 | 405 |
sum = 0; |
| 406 |
- for(j=0;j<4;j++) {
|
|
| 407 |
- s = (i==0) ? sqrt(1.0/4.0) : sqrt(1.0/2.0); |
|
| 406 |
+ for (j = 0; j < 4; j++) {
|
|
| 407 |
+ s = (i == 0) ? sqrt(1.0 / 4.0) : sqrt(1.0 / 2.0); |
|
| 408 | 408 |
c4[i][j] = s * cos(M_PI * i * (j + 0.5) / 4.0); |
| 409 | 409 |
sum += c4[i][j] * c4[i][j]; |
| 410 | 410 |
} |
| ... | ... |
@@ -413,58 +409,59 @@ static void idct248_ref(uint8_t *dest, int linesize, int16_t *block) |
| 413 | 413 |
|
| 414 | 414 |
/* butterfly */ |
| 415 | 415 |
s = 0.5 * sqrt(2.0); |
| 416 |
- for(i=0;i<4;i++) {
|
|
| 417 |
- for(j=0;j<8;j++) {
|
|
| 418 |
- block1[8*(2*i)+j] = (block[8*(2*i)+j] + block[8*(2*i+1)+j]) * s; |
|
| 419 |
- block1[8*(2*i+1)+j] = (block[8*(2*i)+j] - block[8*(2*i+1)+j]) * s; |
|
| 416 |
+ for (i = 0; i < 4; i++) {
|
|
| 417 |
+ for (j = 0; j < 8; j++) {
|
|
| 418 |
+ block1[8 * (2 * i) + j] = |
|
| 419 |
+ (block[8 * (2 * i) + j] + block[8 * (2 * i + 1) + j]) * s; |
|
| 420 |
+ block1[8 * (2 * i + 1) + j] = |
|
| 421 |
+ (block[8 * (2 * i) + j] - block[8 * (2 * i + 1) + j]) * s; |
|
| 420 | 422 |
} |
| 421 | 423 |
} |
| 422 | 424 |
|
| 423 | 425 |
/* idct8 on lines */ |
| 424 |
- for(i=0;i<8;i++) {
|
|
| 425 |
- for(j=0;j<8;j++) {
|
|
| 426 |
+ for (i = 0; i < 8; i++) {
|
|
| 427 |
+ for (j = 0; j < 8; j++) {
|
|
| 426 | 428 |
sum = 0; |
| 427 |
- for(k=0;k<8;k++) |
|
| 428 |
- sum += c8[k][j] * block1[8*i+k]; |
|
| 429 |
- block2[8*i+j] = sum; |
|
| 429 |
+ for (k = 0; k < 8; k++) |
|
| 430 |
+ sum += c8[k][j] * block1[8 * i + k]; |
|
| 431 |
+ block2[8 * i + j] = sum; |
|
| 430 | 432 |
} |
| 431 | 433 |
} |
| 432 | 434 |
|
| 433 | 435 |
/* idct4 */ |
| 434 |
- for(i=0;i<8;i++) {
|
|
| 435 |
- for(j=0;j<4;j++) {
|
|
| 436 |
+ for (i = 0; i < 8; i++) {
|
|
| 437 |
+ for (j = 0; j < 4; j++) {
|
|
| 436 | 438 |
/* top */ |
| 437 | 439 |
sum = 0; |
| 438 |
- for(k=0;k<4;k++) |
|
| 439 |
- sum += c4[k][j] * block2[8*(2*k)+i]; |
|
| 440 |
- block3[8*(2*j)+i] = sum; |
|
| 440 |
+ for (k = 0; k < 4; k++) |
|
| 441 |
+ sum += c4[k][j] * block2[8 * (2 * k) + i]; |
|
| 442 |
+ block3[8 * (2 * j) + i] = sum; |
|
| 441 | 443 |
|
| 442 | 444 |
/* bottom */ |
| 443 | 445 |
sum = 0; |
| 444 |
- for(k=0;k<4;k++) |
|
| 445 |
- sum += c4[k][j] * block2[8*(2*k+1)+i]; |
|
| 446 |
- block3[8*(2*j+1)+i] = sum; |
|
| 446 |
+ for (k = 0; k < 4; k++) |
|
| 447 |
+ sum += c4[k][j] * block2[8 * (2 * k + 1) + i]; |
|
| 448 |
+ block3[8 * (2 * j + 1) + i] = sum; |
|
| 447 | 449 |
} |
| 448 | 450 |
} |
| 449 | 451 |
|
| 450 | 452 |
/* clamp and store the result */ |
| 451 |
- for(i=0;i<8;i++) {
|
|
| 452 |
- for(j=0;j<8;j++) {
|
|
| 453 |
- v = block3[8*i+j]; |
|
| 454 |
- if (v < 0) |
|
| 455 |
- v = 0; |
|
| 456 |
- else if (v > 255) |
|
| 457 |
- v = 255; |
|
| 458 |
- dest[i * linesize + j] = (int)rint(v); |
|
| 453 |
+ for (i = 0; i < 8; i++) {
|
|
| 454 |
+ for (j = 0; j < 8; j++) {
|
|
| 455 |
+ v = block3[8 * i + j]; |
|
| 456 |
+ if (v < 0) v = 0; |
|
| 457 |
+ else if (v > 255) v = 255; |
|
| 458 |
+ dest[i * linesize + j] = (int) rint(v); |
|
| 459 | 459 |
} |
| 460 | 460 |
} |
| 461 | 461 |
} |
| 462 | 462 |
|
| 463 | 463 |
static void idct248_error(const char *name, |
| 464 |
- void (*idct248_put)(uint8_t *dest, int line_size, int16_t *block)) |
|
| 464 |
+ void (*idct248_put)(uint8_t *dest, int line_size, |
|
| 465 |
+ int16_t *block), |
|
| 466 |
+ int speed) |
|
| 465 | 467 |
{
|
| 466 | 468 |
int it, i, it1, ti, ti1, err_max, v; |
| 467 |
- |
|
| 468 | 469 |
AVLFG prng; |
| 469 | 470 |
|
| 470 | 471 |
av_lfg_init(&prng, 1); |
| ... | ... |
@@ -472,23 +469,22 @@ static void idct248_error(const char *name, |
| 472 | 472 |
/* just one test to see if code is correct (precision is less |
| 473 | 473 |
important here) */ |
| 474 | 474 |
err_max = 0; |
| 475 |
- for(it=0;it<NB_ITS;it++) {
|
|
| 476 |
- |
|
| 475 |
+ for (it = 0; it < NB_ITS; it++) {
|
|
| 477 | 476 |
/* XXX: use forward transform to generate values */ |
| 478 |
- for(i=0;i<64;i++) |
|
| 477 |
+ for (i = 0; i < 64; i++) |
|
| 479 | 478 |
block1[i] = av_lfg_get(&prng) % 256 - 128; |
| 480 | 479 |
block1[0] += 1024; |
| 481 | 480 |
|
| 482 |
- for(i=0; i<64; i++) |
|
| 483 |
- block[i]= block1[i]; |
|
| 481 |
+ for (i = 0; i < 64; i++) |
|
| 482 |
+ block[i] = block1[i]; |
|
| 484 | 483 |
idct248_ref(img_dest1, 8, block); |
| 485 | 484 |
|
| 486 |
- for(i=0; i<64; i++) |
|
| 487 |
- block[i]= block1[i]; |
|
| 485 |
+ for (i = 0; i < 64; i++) |
|
| 486 |
+ block[i] = block1[i]; |
|
| 488 | 487 |
idct248_put(img_dest, 8, block); |
| 489 | 488 |
|
| 490 |
- for(i=0;i<64;i++) {
|
|
| 491 |
- v = abs((int)img_dest[i] - (int)img_dest1[i]); |
|
| 489 |
+ for (i = 0; i < 64; i++) {
|
|
| 490 |
+ v = abs((int) img_dest[i] - (int) img_dest1[i]); |
|
| 492 | 491 |
if (v == 255) |
| 493 | 492 |
printf("%d %d\n", img_dest[i], img_dest1[i]);
|
| 494 | 493 |
if (v > err_max) |
| ... | ... |
@@ -514,18 +510,17 @@ static void idct248_error(const char *name, |
| 514 | 514 |
} |
| 515 | 515 |
#endif |
| 516 | 516 |
} |
| 517 |
- printf("%s %s: err_inf=%d\n",
|
|
| 518 |
- 1 ? "IDCT248" : "DCT248", |
|
| 519 |
- name, err_max); |
|
| 517 |
+ printf("%s %s: err_inf=%d\n", 1 ? "IDCT248" : "DCT248", name, err_max);
|
|
| 518 |
+ |
|
| 519 |
+ if (!speed) |
|
| 520 |
+ return; |
|
| 520 | 521 |
|
| 521 | 522 |
ti = gettime(); |
| 522 | 523 |
it1 = 0; |
| 523 | 524 |
do {
|
| 524 |
- for(it=0;it<NB_ITS_SPEED;it++) {
|
|
| 525 |
- for(i=0; i<64; i++) |
|
| 526 |
- block[i]= block1[i]; |
|
| 527 |
-// memcpy(block, block1, sizeof(DCTELEM) * 64); |
|
| 528 |
-// do not memcpy especially not fastmemcpy because it does movntq !!! |
|
| 525 |
+ for (it = 0; it < NB_ITS_SPEED; it++) {
|
|
| 526 |
+ for (i = 0; i < 64; i++) |
|
| 527 |
+ block[i] = block1[i]; |
|
| 529 | 528 |
idct248_put(img_dest, 8, block); |
| 530 | 529 |
} |
| 531 | 530 |
it1 += NB_ITS_SPEED; |
| ... | ... |
@@ -533,9 +528,8 @@ static void idct248_error(const char *name, |
| 533 | 533 |
} while (ti1 < 1000000); |
| 534 | 534 |
mmx_emms(); |
| 535 | 535 |
|
| 536 |
- printf("%s %s: %0.1f kdct/s\n",
|
|
| 537 |
- 1 ? "IDCT248" : "DCT248", |
|
| 538 |
- name, (double)it1 * 1000.0 / (double)ti1); |
|
| 536 |
+ printf("%s %s: %0.1f kdct/s\n", 1 ? "IDCT248" : "DCT248", name,
|
|
| 537 |
+ (double) it1 * 1000.0 / (double) ti1); |
|
| 539 | 538 |
} |
| 540 | 539 |
|
| 541 | 540 |
static void help(void) |
| ... | ... |
@@ -545,56 +539,67 @@ static void help(void) |
| 545 | 545 |
" 1 -> test with random sparse matrixes\n" |
| 546 | 546 |
" 2 -> do 3. test from mpeg4 std\n" |
| 547 | 547 |
"-i test IDCT implementations\n" |
| 548 |
- "-4 test IDCT248 implementations\n"); |
|
| 548 |
+ "-4 test IDCT248 implementations\n" |
|
| 549 |
+ "-t speed test\n"); |
|
| 549 | 550 |
} |
| 550 | 551 |
|
| 551 | 552 |
int main(int argc, char **argv) |
| 552 | 553 |
{
|
| 553 | 554 |
int test_idct = 0, test_248_dct = 0; |
| 554 |
- int c,i; |
|
| 555 |
- int test=1; |
|
| 555 |
+ int c, i; |
|
| 556 |
+ int test = 1; |
|
| 557 |
+ int speed = 0; |
|
| 558 |
+ int err = 0; |
|
| 556 | 559 |
int bits=8; |
| 560 |
+ |
|
| 557 | 561 |
cpu_flags = av_get_cpu_flags(); |
| 558 | 562 |
|
| 559 | 563 |
ff_ref_dct_init(); |
| 560 | 564 |
idct_mmx_init(); |
| 561 | 565 |
|
| 562 |
- for(i=0;i<256;i++) cropTbl[i + MAX_NEG_CROP] = i; |
|
| 563 |
- for(i=0;i<MAX_NEG_CROP;i++) {
|
|
| 566 |
+ for (i = 0; i < 256; i++) |
|
| 567 |
+ cropTbl[i + MAX_NEG_CROP] = i; |
|
| 568 |
+ for (i = 0; i < MAX_NEG_CROP; i++) {
|
|
| 564 | 569 |
cropTbl[i] = 0; |
| 565 | 570 |
cropTbl[i + MAX_NEG_CROP + 256] = 255; |
| 566 | 571 |
} |
| 567 | 572 |
|
| 568 |
- for(;;) {
|
|
| 569 |
- c = getopt(argc, argv, "ih4"); |
|
| 573 |
+ for (;;) {
|
|
| 574 |
+ c = getopt(argc, argv, "ih4t"); |
|
| 570 | 575 |
if (c == -1) |
| 571 | 576 |
break; |
| 572 |
- switch(c) {
|
|
| 577 |
+ switch (c) {
|
|
| 573 | 578 |
case 'i': |
| 574 | 579 |
test_idct = 1; |
| 575 | 580 |
break; |
| 576 | 581 |
case '4': |
| 577 | 582 |
test_248_dct = 1; |
| 578 | 583 |
break; |
| 579 |
- default : |
|
| 584 |
+ case 't': |
|
| 585 |
+ speed = 1; |
|
| 586 |
+ break; |
|
| 587 |
+ default: |
|
| 580 | 588 |
case 'h': |
| 581 | 589 |
help(); |
| 582 | 590 |
return 0; |
| 583 | 591 |
} |
| 584 | 592 |
} |
| 585 | 593 |
|
| 586 |
- if(optind <argc) test= atoi(argv[optind]); |
|
| 594 |
+ if (optind < argc) |
|
| 595 |
+ test = atoi(argv[optind]); |
|
| 587 | 596 |
if(optind+1 < argc) bits= atoi(argv[optind+1]); |
| 588 | 597 |
|
| 589 | 598 |
printf("ffmpeg DCT/IDCT test\n");
|
| 590 | 599 |
|
| 591 | 600 |
if (test_248_dct) {
|
| 592 |
- idct248_error("SIMPLE-C", ff_simple_idct248_put);
|
|
| 601 |
+ idct248_error("SIMPLE-C", ff_simple_idct248_put, speed);
|
|
| 593 | 602 |
} else {
|
| 594 |
- for (i=0;algos[i].name;i++) |
|
| 595 |
- if (algos[i].is_idct == test_idct && !(~cpu_flags & algos[i].mm_support)) {
|
|
| 596 |
- dct_error (algos[i].name, algos[i].is_idct, algos[i].func, algos[i].ref, algos[i].format, test, bits); |
|
| 597 |
- } |
|
| 603 |
+ const struct algo *algos = test_idct ? idct_tab : fdct_tab; |
|
| 604 |
+ for (i = 0; algos[i].name; i++) |
|
| 605 |
+ if (!(~cpu_flags & algos[i].mm_support)) {
|
|
| 606 |
+ err |= dct_error(&algos[i], test, test_idct, speed, bits); |
|
| 607 |
+ } |
|
| 598 | 608 |
} |
| 599 |
- return 0; |
|
| 609 |
+ |
|
| 610 |
+ return err; |
|
| 600 | 611 |
} |
| ... | ... |
@@ -237,6 +237,7 @@ void FUNCC(ff_h264_idct_add8)(uint8_t **dest, const int *block_offset, DCTELEM * |
| 237 | 237 |
} |
| 238 | 238 |
/** |
| 239 | 239 |
* IDCT transforms the 16 dc values and dequantizes them. |
| 240 |
+ * @param qmul quantization parameter |
|
| 240 | 241 |
*/ |
| 241 | 242 |
void FUNCC(ff_h264_luma_dc_dequant_idct)(DCTELEM *p_output, DCTELEM *p_input, int qmul){
|
| 242 | 243 |
#define stride 16 |
| ... | ... |
@@ -1,3 +1,21 @@ |
| 1 |
+/* |
|
| 2 |
+ * This file is part of Libav. |
|
| 3 |
+ * |
|
| 4 |
+ * Libav is free software; you can redistribute it and/or |
|
| 5 |
+ * modify it under the terms of the GNU Lesser General Public |
|
| 6 |
+ * License as published by the Free Software Foundation; either |
|
| 7 |
+ * version 2.1 of the License, or (at your option) any later version. |
|
| 8 |
+ * |
|
| 9 |
+ * Libav is distributed in the hope that it will be useful, |
|
| 10 |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
| 12 |
+ * Lesser General Public License for more details. |
|
| 13 |
+ * |
|
| 14 |
+ * You should have received a copy of the GNU Lesser General Public |
|
| 15 |
+ * License along with Libav; if not, write to the Free Software |
|
| 16 |
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
|
| 17 |
+ */ |
|
| 18 |
+ |
|
| 1 | 19 |
#include "dsputil.h" |
| 2 | 20 |
|
| 3 | 21 |
#ifndef BIT_DEPTH |
| ... | ... |
@@ -311,6 +311,9 @@ av_cold void ff_iir_filter_free_coeffs(struct FFIIRFilterCoeffs *coeffs) |
| 311 | 311 |
} |
| 312 | 312 |
|
| 313 | 313 |
#ifdef TEST |
| 314 |
+#undef printf |
|
| 315 |
+#include <stdio.h> |
|
| 316 |
+ |
|
| 314 | 317 |
#define FILT_ORDER 4 |
| 315 | 318 |
#define SIZE 1024 |
| 316 | 319 |
int main(void) |
| ... | ... |
@@ -320,7 +323,6 @@ int main(void) |
| 320 | 320 |
float cutoff_coeff = 0.4; |
| 321 | 321 |
int16_t x[SIZE], y[SIZE]; |
| 322 | 322 |
int i; |
| 323 |
- FILE* fd; |
|
| 324 | 323 |
|
| 325 | 324 |
fcoeffs = ff_iir_filter_init_coeffs(NULL, FF_FILTER_TYPE_BUTTERWORTH, |
| 326 | 325 |
FF_FILTER_MODE_LOWPASS, FILT_ORDER, |
| ... | ... |
@@ -333,13 +335,8 @@ int main(void) |
| 333 | 333 |
|
| 334 | 334 |
ff_iir_filter(fcoeffs, fstate, SIZE, x, 1, y, 1); |
| 335 | 335 |
|
| 336 |
- fd = fopen("in.bin", "w");
|
|
| 337 |
- fwrite(x, sizeof(x[0]), SIZE, fd); |
|
| 338 |
- fclose(fd); |
|
| 339 |
- |
|
| 340 |
- fd = fopen("out.bin", "w");
|
|
| 341 |
- fwrite(y, sizeof(y[0]), SIZE, fd); |
|
| 342 |
- fclose(fd); |
|
| 336 |
+ for (i = 0; i < SIZE; i++) |
|
| 337 |
+ printf("%6d %6d\n", x[i], y[i]);
|
|
| 343 | 338 |
|
| 344 | 339 |
ff_iir_filter_free_coeffs(fcoeffs); |
| 345 | 340 |
ff_iir_filter_free_state(fstate); |
| ... | ... |
@@ -285,9 +285,10 @@ int ff_alloc_picture(MpegEncContext *s, Picture *pic, int shared){
|
| 285 | 285 |
} |
| 286 | 286 |
|
| 287 | 287 |
FF_ALLOCZ_OR_GOTO(s->avctx, pic->mbskip_table , mb_array_size * sizeof(uint8_t)+2, fail) //the +2 is for the slice end check |
| 288 |
- FF_ALLOCZ_OR_GOTO(s->avctx, pic->qscale_table , mb_array_size * sizeof(uint8_t) , fail) |
|
| 288 |
+ FF_ALLOCZ_OR_GOTO(s->avctx, pic->qscale_table_base , (big_mb_num + s->mb_stride) * sizeof(uint8_t) , fail) |
|
| 289 | 289 |
FF_ALLOCZ_OR_GOTO(s->avctx, pic->mb_type_base , (big_mb_num + s->mb_stride) * sizeof(uint32_t), fail) |
| 290 | 290 |
pic->mb_type= pic->mb_type_base + 2*s->mb_stride+1; |
| 291 |
+ pic->qscale_table = pic->qscale_table_base + 2*s->mb_stride + 1; |
|
| 291 | 292 |
if(s->out_format == FMT_H264){
|
| 292 | 293 |
for(i=0; i<2; i++){
|
| 293 | 294 |
FF_ALLOCZ_OR_GOTO(s->avctx, pic->motion_val_base[i], 2 * (b4_array_size+4) * sizeof(int16_t), fail) |
| ... | ... |
@@ -339,7 +340,7 @@ static void free_picture(MpegEncContext *s, Picture *pic){
|
| 339 | 339 |
av_freep(&pic->mc_mb_var); |
| 340 | 340 |
av_freep(&pic->mb_mean); |
| 341 | 341 |
av_freep(&pic->mbskip_table); |
| 342 |
- av_freep(&pic->qscale_table); |
|
| 342 |
+ av_freep(&pic->qscale_table_base); |
|
| 343 | 343 |
av_freep(&pic->mb_type_base); |
| 344 | 344 |
av_freep(&pic->dct_coeff); |
| 345 | 345 |
av_freep(&pic->pan_scan); |
| ... | ... |
@@ -88,6 +88,7 @@ typedef struct Picture{
|
| 88 | 88 |
* halfpel luma planes. |
| 89 | 89 |
*/ |
| 90 | 90 |
uint8_t *interpolated[3]; |
| 91 |
+ int8_t *qscale_table_base; |
|
| 91 | 92 |
int16_t (*motion_val_base[2])[2]; |
| 92 | 93 |
uint32_t *mb_type_base; |
| 93 | 94 |
#define MB_TYPE_INTRA MB_TYPE_INTRA4x4 //default mb_type if there is just one type |
| ... | ... |
@@ -1,3 +1,21 @@ |
| 1 |
+/* |
|
| 2 |
+ * This file is part of Libav. |
|
| 3 |
+ * |
|
| 4 |
+ * Libav is free software; you can redistribute it and/or |
|
| 5 |
+ * modify it under the terms of the GNU Lesser General Public |
|
| 6 |
+ * License as published by the Free Software Foundation; either |
|
| 7 |
+ * version 2.1 of the License, or (at your option) any later version. |
|
| 8 |
+ * |
|
| 9 |
+ * Libav is distributed in the hope that it will be useful, |
|
| 10 |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
| 12 |
+ * Lesser General Public License for more details. |
|
| 13 |
+ * |
|
| 14 |
+ * You should have received a copy of the GNU Lesser General Public |
|
| 15 |
+ * License along with Libav; if not, write to the Free Software |
|
| 16 |
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
|
| 17 |
+ */ |
|
| 18 |
+ |
|
| 1 | 19 |
/** |
| 2 | 20 |
* @file |
| 3 | 21 |
* This header is provided for compatibility only and will be removed |
| ... | ... |
@@ -424,17 +424,6 @@ static inline RV34VLC* choose_vlc_set(int quant, int mod, int type) |
| 424 | 424 |
} |
| 425 | 425 |
|
| 426 | 426 |
/** |
| 427 |
- * Decode quantizer difference and return modified quantizer. |
|
| 428 |
- */ |
|
| 429 |
-static inline int rv34_decode_dquant(GetBitContext *gb, int quant) |
|
| 430 |
-{
|
|
| 431 |
- if(get_bits1(gb)) |
|
| 432 |
- return rv34_dquant_tab[get_bits1(gb)][quant]; |
|
| 433 |
- else |
|
| 434 |
- return get_bits(gb, 5); |
|
| 435 |
-} |
|
| 436 |
- |
|
| 437 |
-/** |
|
| 438 | 427 |
* Decode macroblock header and return CBP in case of success, -1 otherwise. |
| 439 | 428 |
*/ |
| 440 | 429 |
static int rv34_decode_mb_header(RV34DecContext *r, int8_t *intra_types) |
| ... | ... |
@@ -1255,15 +1244,6 @@ static int check_slice_end(RV34DecContext *r, MpegEncContext *s) |
| 1255 | 1255 |
return 0; |
| 1256 | 1256 |
} |
| 1257 | 1257 |
|
| 1258 |
-static inline int slice_compare(SliceInfo *si1, SliceInfo *si2) |
|
| 1259 |
-{
|
|
| 1260 |
- return si1->type != si2->type || |
|
| 1261 |
- si1->start >= si2->start || |
|
| 1262 |
- si1->width != si2->width || |
|
| 1263 |
- si1->height != si2->height|| |
|
| 1264 |
- si1->pts != si2->pts; |
|
| 1265 |
-} |
|
| 1266 |
- |
|
| 1267 | 1258 |
static int rv34_decode_slice(RV34DecContext *r, int end, const uint8_t* buf, int buf_size) |
| 1268 | 1259 |
{
|
| 1269 | 1260 |
MpegEncContext *s = &r->s; |
| ... | ... |
@@ -641,8 +641,6 @@ void decode_mb_mode(VP8Context *s, VP8Macroblock *mb, int mb_x, int mb_y, uint8_ |
| 641 | 641 |
* @param block destination for block coefficients |
| 642 | 642 |
* @param probs probabilities to use when reading trees from the bitstream |
| 643 | 643 |
* @param i initial coeff index, 0 unless a separate DC block is coded |
| 644 |
- * @param zero_nhood the initial prediction context for number of surrounding |
|
| 645 |
- * all-zero blocks (only left/top, so 0-2) |
|
| 646 | 644 |
* @param qmul array holding the dc/ac dequant factor at position 0/1 |
| 647 | 645 |
* @return 0 if no coeffs were decoded |
| 648 | 646 |
* otherwise, the index of the last coeff decoded plus one |
| ... | ... |
@@ -701,6 +699,17 @@ skip_eob: |
| 701 | 701 |
} |
| 702 | 702 |
#endif |
| 703 | 703 |
|
| 704 |
+/** |
|
| 705 |
+ * @param c arithmetic bitstream reader context |
|
| 706 |
+ * @param block destination for block coefficients |
|
| 707 |
+ * @param probs probabilities to use when reading trees from the bitstream |
|
| 708 |
+ * @param i initial coeff index, 0 unless a separate DC block is coded |
|
| 709 |
+ * @param zero_nhood the initial prediction context for number of surrounding |
|
| 710 |
+ * all-zero blocks (only left/top, so 0-2) |
|
| 711 |
+ * @param qmul array holding the dc/ac dequant factor at position 0/1 |
|
| 712 |
+ * @return 0 if no coeffs were decoded |
|
| 713 |
+ * otherwise, the index of the last coeff decoded plus one |
|
| 714 |
+ */ |
|
| 704 | 715 |
static av_always_inline |
| 705 | 716 |
int decode_block_coeffs(VP56RangeCoder *c, DCTELEM block[16], |
| 706 | 717 |
uint8_t probs[16][3][NUM_DCT_TOKENS-1], |
| ... | ... |
@@ -1034,10 +1043,9 @@ static const uint8_t subpel_idx[3][8] = {
|
| 1034 | 1034 |
}; |
| 1035 | 1035 |
|
| 1036 | 1036 |
/** |
| 1037 |
- * Generic MC function. |
|
| 1037 |
+ * luma MC function |
|
| 1038 | 1038 |
* |
| 1039 | 1039 |
* @param s VP8 decoding context |
| 1040 |
- * @param luma 1 for luma (Y) planes, 0 for chroma (Cb/Cr) planes |
|
| 1041 | 1040 |
* @param dst target buffer for block data at block position |
| 1042 | 1041 |
* @param ref reference picture buffer at origin (0, 0) |
| 1043 | 1042 |
* @param mv motion vector (relative to block position) to get pixel data from |
| ... | ... |
@@ -1083,6 +1091,23 @@ void vp8_mc_luma(VP8Context *s, uint8_t *dst, AVFrame *ref, const VP56mv *mv, |
| 1083 | 1083 |
} |
| 1084 | 1084 |
} |
| 1085 | 1085 |
|
| 1086 |
+/** |
|
| 1087 |
+ * chroma MC function |
|
| 1088 |
+ * |
|
| 1089 |
+ * @param s VP8 decoding context |
|
| 1090 |
+ * @param dst1 target buffer for block data at block position (U plane) |
|
| 1091 |
+ * @param dst2 target buffer for block data at block position (V plane) |
|
| 1092 |
+ * @param ref reference picture buffer at origin (0, 0) |
|
| 1093 |
+ * @param mv motion vector (relative to block position) to get pixel data from |
|
| 1094 |
+ * @param x_off horizontal position of block from origin (0, 0) |
|
| 1095 |
+ * @param y_off vertical position of block from origin (0, 0) |
|
| 1096 |
+ * @param block_w width of block (16, 8 or 4) |
|
| 1097 |
+ * @param block_h height of block (always same as block_w) |
|
| 1098 |
+ * @param width width of src/dst plane data |
|
| 1099 |
+ * @param height height of src/dst plane data |
|
| 1100 |
+ * @param linesize size of a single line of plane data, including padding |
|
| 1101 |
+ * @param mc_func motion compensation function pointers (bilinear or sixtap MC) |
|
| 1102 |
+ */ |
|
| 1086 | 1103 |
static av_always_inline |
| 1087 | 1104 |
void vp8_mc_chroma(VP8Context *s, uint8_t *dst1, uint8_t *dst2, AVFrame *ref, |
| 1088 | 1105 |
const VP56mv *mv, int x_off, int y_off, |
| ... | ... |
@@ -2563,8 +2563,8 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx) |
| 2563 | 2563 |
SET_QPEL_FUNCS(avg_h264_qpel, 1, 8, mmx2, ); |
| 2564 | 2564 |
SET_QPEL_FUNCS(avg_h264_qpel, 2, 4, mmx2, ); |
| 2565 | 2565 |
} |
| 2566 |
-#if HAVE_YASM |
|
| 2567 | 2566 |
else if (bit_depth == 10) {
|
| 2567 |
+#if HAVE_YASM |
|
| 2568 | 2568 |
#if !ARCH_X86_64 |
| 2569 | 2569 |
SET_QPEL_FUNCS(avg_h264_qpel, 0, 16, 10_mmxext, ff_); |
| 2570 | 2570 |
SET_QPEL_FUNCS(put_h264_qpel, 0, 16, 10_mmxext, ff_); |
| ... | ... |
@@ -2573,8 +2573,8 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx) |
| 2573 | 2573 |
#endif |
| 2574 | 2574 |
SET_QPEL_FUNCS(put_h264_qpel, 2, 4, 10_mmxext, ff_); |
| 2575 | 2575 |
SET_QPEL_FUNCS(avg_h264_qpel, 2, 4, 10_mmxext, ff_); |
| 2576 |
- } |
|
| 2577 | 2576 |
#endif |
| 2577 |
+ } |
|
| 2578 | 2578 |
|
| 2579 | 2579 |
SET_QPEL_FUNCS(put_2tap_qpel, 0, 16, mmx2, ); |
| 2580 | 2580 |
SET_QPEL_FUNCS(put_2tap_qpel, 1, 8, mmx2, ); |
| ... | ... |
@@ -1,19 +1,21 @@ |
| 1 | 1 |
/* |
| 2 |
+ * Copyright (C) 2009 Loren Merritt <lorenm@u.washignton.edu> |
|
| 3 |
+ * |
|
| 2 | 4 |
* This file is part of FFmpeg. |
| 3 | 5 |
* |
| 4 |
- * FFmpeg is free software; you can redistribute it and/or modify |
|
| 5 |
- * it under the terms of the GNU General Public License as published by |
|
| 6 |
- * the Free Software Foundation; either version 2 of the License, or |
|
| 7 |
- * (at your option) any later version. |
|
| 6 |
+ * FFmpeg is free software; you can redistribute it and/or |
|
| 7 |
+ * modify it under the terms of the GNU Lesser General Public |
|
| 8 |
+ * License as published by the Free Software Foundation; either |
|
| 9 |
+ * version 2.1 of the License, or (at your option) any later version. |
|
| 8 | 10 |
* |
| 9 | 11 |
* FFmpeg is distributed in the hope that it will be useful, |
| 10 | 12 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 11 |
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 |
- * GNU General Public License for more details. |
|
| 13 |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
| 14 |
+ * Lesser General Public License for more details. |
|
| 13 | 15 |
* |
| 14 |
- * You should have received a copy of the GNU General Public License along |
|
| 15 |
- * with FFmpeg; if not, write to the Free Software Foundation, Inc., |
|
| 16 |
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
|
| 16 |
+ * You should have received a copy of the GNU Lesser General Public |
|
| 17 |
+ * License along with FFmpeg; if not, write to the Free Software |
|
| 18 |
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
|
| 17 | 19 |
*/ |
| 18 | 20 |
|
| 19 | 21 |
#include "libavutil/cpu.h" |
| ... | ... |
@@ -1549,7 +1549,7 @@ static uint32_t ff_framenum_to_12m_time_code(unsigned frame, int drop, int fps) |
| 1549 | 1549 |
((((frame / (fps * 60)) % 60) / 10) << 12) | // tens of minutes |
| 1550 | 1550 |
((((frame / (fps * 60)) % 60) % 10) << 8) | // units of minutes |
| 1551 | 1551 |
(0 << 7) | // b1 |
| 1552 |
- (0 << 6) | // b2 (NSC), field phase (PAL) |
|
| 1552 |
+ (0 << 6) | // b2 (NTSC), field phase (PAL) |
|
| 1553 | 1553 |
((((frame / (fps * 3600) % 24)) / 10) << 4) | // tens of hours |
| 1554 | 1554 |
( (frame / (fps * 3600) % 24)) % 10; // units of hours |
| 1555 | 1555 |
} |
| ... | ... |
@@ -201,7 +201,7 @@ static int ogg_read_page(AVFormatContext *s, int *str) |
| 201 | 201 |
uint8_t sync[4]; |
| 202 | 202 |
int sp = 0; |
| 203 | 203 |
|
| 204 |
- ret = avio_read (bc, sync, 4); |
|
| 204 |
+ ret = avio_read(bc, sync, 4); |
|
| 205 | 205 |
if (ret < 4) |
| 206 | 206 |
return ret < 0 ? ret : AVERROR_EOF; |
| 207 | 207 |
|
| ... | ... |
@@ -259,7 +259,7 @@ static int ogg_read_page(AVFormatContext *s, int *str) |
| 259 | 259 |
if(os->psize > 0) |
| 260 | 260 |
ogg_new_buf(ogg, idx); |
| 261 | 261 |
|
| 262 |
- ret = avio_read (bc, os->segments, nsegs); |
|
| 262 |
+ ret = avio_read(bc, os->segments, nsegs); |
|
| 263 | 263 |
if (ret < nsegs) |
| 264 | 264 |
return ret < 0 ? ret : AVERROR_EOF; |
| 265 | 265 |
|
| ... | ... |
@@ -292,7 +292,7 @@ static int ogg_read_page(AVFormatContext *s, int *str) |
| 292 | 292 |
os->buf = nb; |
| 293 | 293 |
} |
| 294 | 294 |
|
| 295 |
- ret = avio_read (bc, os->buf + os->bufpos, size); |
|
| 295 |
+ ret = avio_read(bc, os->buf + os->bufpos, size); |
|
| 296 | 296 |
if (ret < size) |
| 297 | 297 |
return ret < 0 ? ret : AVERROR_EOF; |
| 298 | 298 |
|
| ... | ... |
@@ -321,7 +321,7 @@ static int ogg_packet(AVFormatContext *s, int *str, int *dstart, int *dsize, |
| 321 | 321 |
idx = ogg->curidx; |
| 322 | 322 |
|
| 323 | 323 |
while (idx < 0){
|
| 324 |
- ret = ogg_read_page (s, &idx); |
|
| 324 |
+ ret = ogg_read_page(s, &idx); |
|
| 325 | 325 |
if (ret < 0) |
| 326 | 326 |
return ret; |
| 327 | 327 |
} |
| ... | ... |
@@ -437,7 +437,7 @@ static int ogg_get_headers(AVFormatContext *s) |
| 437 | 437 |
int ret; |
| 438 | 438 |
|
| 439 | 439 |
do{
|
| 440 |
- ret = ogg_packet (s, NULL, NULL, NULL, NULL); |
|
| 440 |
+ ret = ogg_packet(s, NULL, NULL, NULL, NULL); |
|
| 441 | 441 |
if (ret < 0) |
| 442 | 442 |
return ret; |
| 443 | 443 |
}while (!ogg->headers); |
| ... | ... |
@@ -501,10 +501,9 @@ static int ogg_read_header(AVFormatContext *s, AVFormatParameters *ap) |
| 501 | 501 |
int ret, i; |
| 502 | 502 |
ogg->curidx = -1; |
| 503 | 503 |
//linear headers seek from start |
| 504 |
- ret = ogg_get_headers (s); |
|
| 505 |
- if (ret < 0){
|
|
| 504 |
+ ret = ogg_get_headers(s); |
|
| 505 |
+ if (ret < 0) |
|
| 506 | 506 |
return ret; |
| 507 |
- } |
|
| 508 | 507 |
|
| 509 | 508 |
for (i = 0; i < ogg->nstreams; i++) |
| 510 | 509 |
if (ogg->streams[i].header < 0) |
| ... | ... |
@@ -558,7 +557,7 @@ static int ogg_read_packet(AVFormatContext *s, AVPacket *pkt) |
| 558 | 558 |
//Get an ogg packet |
| 559 | 559 |
retry: |
| 560 | 560 |
do{
|
| 561 |
- ret = ogg_packet (s, &idx, &pstart, &psize, &fpos); |
|
| 561 |
+ ret = ogg_packet(s, &idx, &pstart, &psize, &fpos); |
|
| 562 | 562 |
if (ret < 0) |
| 563 | 563 |
return ret; |
| 564 | 564 |
}while (idx < 0 || !s->streams[idx]); |
| ... | ... |
@@ -574,7 +573,7 @@ retry: |
| 574 | 574 |
os->keyframe_seek = 0; |
| 575 | 575 |
|
| 576 | 576 |
//Alloc a pkt |
| 577 |
- ret = av_new_packet (pkt, psize); |
|
| 577 |
+ ret = av_new_packet(pkt, psize); |
|
| 578 | 578 |
if (ret < 0) |
| 579 | 579 |
return ret; |
| 580 | 580 |
pkt->stream_index = idx; |
| ... | ... |
@@ -22,6 +22,7 @@ |
| 22 | 22 |
|
| 23 | 23 |
#include "common.h" |
| 24 | 24 |
#include "aes.h" |
| 25 |
+#include "intreadwrite.h" |
|
| 25 | 26 |
|
| 26 | 27 |
typedef union {
|
| 27 | 28 |
uint64_t u64[2]; |
| ... | ... |
@@ -67,6 +68,20 @@ static inline void addkey(av_aes_block *dst, const av_aes_block *src, |
| 67 | 67 |
dst->u64[1] = src->u64[1] ^ round_key->u64[1]; |
| 68 | 68 |
} |
| 69 | 69 |
|
| 70 |
+static inline void addkey_s(av_aes_block *dst, const uint8_t *src, |
|
| 71 |
+ const av_aes_block *round_key) |
|
| 72 |
+{
|
|
| 73 |
+ dst->u64[0] = AV_RN64(src) ^ round_key->u64[0]; |
|
| 74 |
+ dst->u64[1] = AV_RN64(src + 8) ^ round_key->u64[1]; |
|
| 75 |
+} |
|
| 76 |
+ |
|
| 77 |
+static inline void addkey_d(uint8_t *dst, const av_aes_block *src, |
|
| 78 |
+ const av_aes_block *round_key) |
|
| 79 |
+{
|
|
| 80 |
+ AV_WN64(dst, src->u64[0] ^ round_key->u64[0]); |
|
| 81 |
+ AV_WN64(dst + 8, src->u64[1] ^ round_key->u64[1]); |
|
| 82 |
+} |
|
| 83 |
+ |
|
| 70 | 84 |
static void subshift(av_aes_block s0[2], int s, const uint8_t *box) |
| 71 | 85 |
{
|
| 72 | 86 |
av_aes_block *s1 = (av_aes_block *) (s0[0].u8 - s); |
| ... | ... |
@@ -119,32 +134,28 @@ static inline void crypt(AVAES *a, int s, const uint8_t *sbox, |
| 119 | 119 |
subshift(&a->state[0], s, sbox); |
| 120 | 120 |
} |
| 121 | 121 |
|
| 122 |
-void av_aes_crypt(AVAES *a, uint8_t *dst_, const uint8_t *src_, |
|
| 123 |
- int count, uint8_t *iv_, int decrypt) |
|
| 122 |
+void av_aes_crypt(AVAES *a, uint8_t *dst, const uint8_t *src, |
|
| 123 |
+ int count, uint8_t *iv, int decrypt) |
|
| 124 | 124 |
{
|
| 125 |
- av_aes_block *dst = (av_aes_block *) dst_; |
|
| 126 |
- const av_aes_block *src = (const av_aes_block *) src_; |
|
| 127 |
- av_aes_block *iv = (av_aes_block *) iv_; |
|
| 128 |
- |
|
| 129 | 125 |
while (count--) {
|
| 130 |
- addkey(&a->state[1], src, &a->round_key[a->rounds]); |
|
| 126 |
+ addkey_s(&a->state[1], src, &a->round_key[a->rounds]); |
|
| 131 | 127 |
if (decrypt) {
|
| 132 | 128 |
crypt(a, 0, inv_sbox, dec_multbl); |
| 133 | 129 |
if (iv) {
|
| 134 |
- addkey(&a->state[0], &a->state[0], iv); |
|
| 135 |
- *iv = *src; |
|
| 130 |
+ addkey_s(&a->state[0], iv, &a->state[0]); |
|
| 131 |
+ memcpy(iv, src, 16); |
|
| 136 | 132 |
} |
| 137 |
- addkey(dst, &a->state[0], &a->round_key[0]); |
|
| 133 |
+ addkey_d(dst, &a->state[0], &a->round_key[0]); |
|
| 138 | 134 |
} else {
|
| 139 | 135 |
if (iv) |
| 140 |
- addkey(&a->state[1], &a->state[1], iv); |
|
| 136 |
+ addkey_s(&a->state[1], iv, &a->state[1]); |
|
| 141 | 137 |
crypt(a, 2, sbox, enc_multbl); |
| 142 |
- addkey(dst, &a->state[0], &a->round_key[0]); |
|
| 138 |
+ addkey_d(dst, &a->state[0], &a->round_key[0]); |
|
| 143 | 139 |
if (iv) |
| 144 |
- *iv = *dst; |
|
| 140 |
+ memcpy(iv, dst, 16); |
|
| 145 | 141 |
} |
| 146 |
- src++; |
|
| 147 |
- dst++; |
|
| 142 |
+ src += 16; |
|
| 143 |
+ dst += 16; |
|
| 148 | 144 |
} |
| 149 | 145 |
} |
| 150 | 146 |
|
| ... | ... |
@@ -299,10 +299,10 @@ int av_des_init(AVDES *d, const uint8_t *key, int key_bits, int decrypt) {
|
| 299 | 299 |
} |
| 300 | 300 |
|
| 301 | 301 |
void av_des_crypt(AVDES *d, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt) {
|
| 302 |
- uint64_t iv_val = iv ? av_be2ne64(*(uint64_t *)iv) : 0; |
|
| 302 |
+ uint64_t iv_val = iv ? AV_RB64(iv) : 0; |
|
| 303 | 303 |
while (count-- > 0) {
|
| 304 | 304 |
uint64_t dst_val; |
| 305 |
- uint64_t src_val = src ? av_be2ne64(*(const uint64_t *)src) : 0; |
|
| 305 |
+ uint64_t src_val = src ? AV_RB64(src) : 0; |
|
| 306 | 306 |
if (decrypt) {
|
| 307 | 307 |
uint64_t tmp = src_val; |
| 308 | 308 |
if (d->triple_des) {
|
| ... | ... |
@@ -319,12 +319,12 @@ void av_des_crypt(AVDES *d, uint8_t *dst, const uint8_t *src, int count, uint8_t |
| 319 | 319 |
} |
| 320 | 320 |
iv_val = iv ? dst_val : 0; |
| 321 | 321 |
} |
| 322 |
- *(uint64_t *)dst = av_be2ne64(dst_val); |
|
| 322 |
+ AV_WB64(dst, dst_val); |
|
| 323 | 323 |
src += 8; |
| 324 | 324 |
dst += 8; |
| 325 | 325 |
} |
| 326 | 326 |
if (iv) |
| 327 |
- *(uint64_t *)iv = av_be2ne64(iv_val); |
|
| 327 |
+ AV_WB64(iv, iv_val); |
|
| 328 | 328 |
} |
| 329 | 329 |
|
| 330 | 330 |
#ifdef TEST |
| ... | ... |
@@ -472,7 +472,7 @@ int av_expr_parse(AVExpr **expr, const char *s, |
| 472 | 472 |
const char * const *func2_names, double (* const *funcs2)(void *, double, double), |
| 473 | 473 |
int log_offset, void *log_ctx) |
| 474 | 474 |
{
|
| 475 |
- Parser p; |
|
| 475 |
+ Parser p = { 0 };
|
|
| 476 | 476 |
AVExpr *e = NULL; |
| 477 | 477 |
char *w = av_malloc(strlen(s) + 1); |
| 478 | 478 |
char *wp = w; |
| ... | ... |
@@ -517,7 +517,7 @@ end: |
| 517 | 517 |
|
| 518 | 518 |
double av_expr_eval(AVExpr *e, const double *const_values, void *opaque) |
| 519 | 519 |
{
|
| 520 |
- Parser p; |
|
| 520 |
+ Parser p = { 0 };
|
|
| 521 | 521 |
|
| 522 | 522 |
p.const_values = const_values; |
| 523 | 523 |
p.opaque = opaque; |
| ... | ... |
@@ -576,6 +576,8 @@ void av_free_expr(AVExpr *e) |
| 576 | 576 |
|
| 577 | 577 |
#ifdef TEST |
| 578 | 578 |
#undef printf |
| 579 |
+#include <string.h> |
|
| 580 |
+ |
|
| 579 | 581 |
static double const_values[] = {
|
| 580 | 582 |
M_PI, |
| 581 | 583 |
M_E, |
| ... | ... |
@@ -588,7 +590,7 @@ static const char *const_names[] = {
|
| 588 | 588 |
0 |
| 589 | 589 |
}; |
| 590 | 590 |
|
| 591 |
-int main(void) |
|
| 591 |
+int main(int argc, char **argv) |
|
| 592 | 592 |
{
|
| 593 | 593 |
int i; |
| 594 | 594 |
double d; |
| ... | ... |
@@ -669,13 +671,16 @@ int main(void) |
| 669 | 669 |
NULL, NULL, NULL, NULL, NULL, 0, NULL); |
| 670 | 670 |
printf("%f == 0.931322575\n", d);
|
| 671 | 671 |
|
| 672 |
- for (i=0; i<1050; i++) {
|
|
| 673 |
- START_TIMER |
|
| 672 |
+ if (argc > 1 && !strcmp(argv[1], "-t")) {
|
|
| 673 |
+ for (i = 0; i < 1050; i++) {
|
|
| 674 |
+ START_TIMER; |
|
| 674 | 675 |
av_expr_parse_and_eval(&d, "1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", |
| 675 | 676 |
const_names, const_values, |
| 676 | 677 |
NULL, NULL, NULL, NULL, NULL, 0, NULL); |
| 677 |
- STOP_TIMER("av_expr_parse_and_eval")
|
|
| 678 |
+ STOP_TIMER("av_expr_parse_and_eval");
|
|
| 679 |
+ } |
|
| 678 | 680 |
} |
| 681 |
+ |
|
| 679 | 682 |
return 0; |
| 680 | 683 |
} |
| 681 | 684 |
#endif |
| ... | ... |
@@ -42,7 +42,7 @@ const int av_sha_size = sizeof(AVSHA); |
| 42 | 42 |
#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits)))) |
| 43 | 43 |
|
| 44 | 44 |
/* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */ |
| 45 |
-#define blk0(i) (block[i] = av_be2ne32(((const uint32_t*)buffer)[i])) |
|
| 45 |
+#define blk0(i) (block[i] = AV_RB32(buffer + 4 * (i))) |
|
| 46 | 46 |
#define blk(i) (block[i] = rol(block[i-3] ^ block[i-8] ^ block[i-14] ^ block[i-16], 1)) |
| 47 | 47 |
|
| 48 | 48 |
#define R0(v,w,x,y,z,i) z += ((w&(x^y))^y) + blk0(i) + 0x5A827999 + rol(v, 5); w = rol(w, 30); |
| ... | ... |
@@ -67,7 +67,7 @@ static void sha1_transform(uint32_t state[5], const uint8_t buffer[64]) |
| 67 | 67 |
for (i = 0; i < 80; i++) {
|
| 68 | 68 |
int t; |
| 69 | 69 |
if (i < 16) |
| 70 |
- t = av_be2ne32(((uint32_t*)buffer)[i]); |
|
| 70 |
+ t = AV_RB32(buffer + 4 * i); |
|
| 71 | 71 |
else |
| 72 | 72 |
t = rol(block[i-3] ^ block[i-8] ^ block[i-14] ^ block[i-16], 1); |
| 73 | 73 |
block[i] = t; |
| ... | ... |
@@ -80,17 +80,6 @@ untested special converters |
| 80 | 80 |
#define RV ( (int)(0.500*224/255*(1<<RGB2YUV_SHIFT)+0.5)) |
| 81 | 81 |
#define RU (-(int)(0.169*224/255*(1<<RGB2YUV_SHIFT)+0.5)) |
| 82 | 82 |
|
| 83 |
-static const double rgb2yuv_table[8][9]={
|
|
| 84 |
- {0.7152, 0.0722, 0.2126, -0.386, 0.5, -0.115, -0.454, -0.046, 0.5}, //ITU709
|
|
| 85 |
- {0.7152, 0.0722, 0.2126, -0.386, 0.5, -0.115, -0.454, -0.046, 0.5}, //ITU709
|
|
| 86 |
- {0.587 , 0.114 , 0.299 , -0.331, 0.5, -0.169, -0.419, -0.081, 0.5}, //DEFAULT / ITU601 / ITU624 / SMPTE 170M
|
|
| 87 |
- {0.587 , 0.114 , 0.299 , -0.331, 0.5, -0.169, -0.419, -0.081, 0.5}, //DEFAULT / ITU601 / ITU624 / SMPTE 170M
|
|
| 88 |
- {0.59 , 0.11 , 0.30 , -0.331, 0.5, -0.169, -0.421, -0.079, 0.5}, //FCC
|
|
| 89 |
- {0.587 , 0.114 , 0.299 , -0.331, 0.5, -0.169, -0.419, -0.081, 0.5}, //DEFAULT / ITU601 / ITU624 / SMPTE 170M
|
|
| 90 |
- {0.587 , 0.114 , 0.299 , -0.331, 0.5, -0.169, -0.419, -0.081, 0.5}, //DEFAULT / ITU601 / ITU624 / SMPTE 170M
|
|
| 91 |
- {0.701 , 0.087 , 0.212 , -0.384, 0.5, -0.116, -0.445, -0.055, 0.5}, //SMPTE 240M
|
|
| 92 |
-}; |
|
| 93 |
- |
|
| 94 | 83 |
/* |
| 95 | 84 |
NOTES |
| 96 | 85 |
Special versions: fast Y 1:1 scaling (no interpolation in y direction) |
| ... | ... |
@@ -41,6 +41,7 @@ include $(SRC_PATH)/tests/fate/aac.mak |
| 41 | 41 |
include $(SRC_PATH)/tests/fate/als.mak |
| 42 | 42 |
include $(SRC_PATH)/tests/fate/amrnb.mak |
| 43 | 43 |
include $(SRC_PATH)/tests/fate/amrwb.mak |
| 44 |
+include $(SRC_PATH)/tests/fate/dct.mak |
|
| 44 | 45 |
include $(SRC_PATH)/tests/fate/fft.mak |
| 45 | 46 |
include $(SRC_PATH)/tests/fate/h264.mak |
| 46 | 47 |
include $(SRC_PATH)/tests/fate/libavutil.mak |
| ... | ... |
@@ -123,6 +123,7 @@ if test -e "$ref"; then |
| 123 | 123 |
diff) diff -u -w "$ref" "$outfile" >$cmpfile ;; |
| 124 | 124 |
oneoff) oneoff "$ref" "$outfile" "$fuzz" >$cmpfile ;; |
| 125 | 125 |
stddev) stddev "$ref" "$outfile" "$fuzz" >$cmpfile ;; |
| 126 |
+ null) cat "$outfile" >$cmpfile ;; |
|
| 126 | 127 |
esac |
| 127 | 128 |
cmperr=$? |
| 128 | 129 |
test $err = 0 && err=$cmperr |
| ... | ... |
@@ -1,28 +1,36 @@ |
| 1 |
-FATE_FFT = fate-fft fate-ifft \ |
|
| 2 |
- fate-mdct fate-imdct \ |
|
| 3 |
- fate-rdft fate-irdft \ |
|
| 4 |
- fate-dct1d fate-idct1d |
|
| 5 |
- |
|
| 6 |
-fate-fft: CMD = run libavcodec/fft-test |
|
| 7 |
-fate-ifft: CMD = run libavcodec/fft-test -i |
|
| 8 |
-fate-mdct: CMD = run libavcodec/fft-test -m |
|
| 9 |
-fate-imdct: CMD = run libavcodec/fft-test -m -i |
|
| 10 |
-fate-rdft: CMD = run libavcodec/fft-test -r |
|
| 11 |
-fate-irdft: CMD = run libavcodec/fft-test -r -i |
|
| 12 |
-fate-dct1d: CMD = run libavcodec/fft-test -d |
|
| 13 |
-fate-idct1d: CMD = run libavcodec/fft-test -d -i |
|
| 1 |
+define DEF_FFT |
|
| 2 |
+FATE_FFT += fate-fft-$(1) fate-ifft-$(1) \ |
|
| 3 |
+ fate-mdct-$(1) fate-imdct-$(1) \ |
|
| 4 |
+ fate-rdft-$(1) fate-irdft-$(1) \ |
|
| 5 |
+ fate-dct1d-$(1) fate-idct1d-$(1) |
|
| 6 |
+ |
|
| 7 |
+fate-fft-$(N): CMD = run libavcodec/fft-test -n$(1) |
|
| 8 |
+fate-ifft-$(N): CMD = run libavcodec/fft-test -n$(1) -i |
|
| 9 |
+fate-mdct-$(N): CMD = run libavcodec/fft-test -n$(1) -m |
|
| 10 |
+fate-imdct-$(N): CMD = run libavcodec/fft-test -n$(1) -m -i |
|
| 11 |
+fate-rdft-$(N): CMD = run libavcodec/fft-test -n$(1) -r |
|
| 12 |
+fate-irdft-$(N): CMD = run libavcodec/fft-test -n$(1) -r -i |
|
| 13 |
+fate-dct1d-$(N): CMD = run libavcodec/fft-test -n$(1) -d |
|
| 14 |
+fate-idct1d-$(N): CMD = run libavcodec/fft-test -n$(1) -d -i |
|
| 15 |
+endef |
|
| 16 |
+ |
|
| 17 |
+$(foreach N, 4 5 6 7 8 9 10 11 12, $(eval $(call DEF_FFT,$(N)))) |
|
| 14 | 18 |
|
| 15 | 19 |
fate-fft-test: $(FATE_FFT) |
| 16 | 20 |
$(FATE_FFT): libavcodec/fft-test$(EXESUF) |
| 17 | 21 |
$(FATE_FFT): REF = /dev/null |
| 18 | 22 |
|
| 19 |
-FATE_FFT_FIXED = fate-fft-fixed fate-ifft-fixed \ |
|
| 20 |
- fate-mdct-fixed fate-imdct-fixed |
|
| 23 |
+define DEF_FFT_FIXED |
|
| 24 |
+FATE_FFT_FIXED += fate-fft-fixed-$(1) fate-ifft-fixed-$(1) \ |
|
| 25 |
+ fate-mdct-fixed-$(1) fate-imdct-fixed-$(1) |
|
| 26 |
+ |
|
| 27 |
+fate-fft-fixed-$(1): CMD = run libavcodec/fft-fixed-test -n$(1) |
|
| 28 |
+fate-ifft-fixed-$(1): CMD = run libavcodec/fft-fixed-test -n$(1) -i |
|
| 29 |
+fate-mdct-fixed-$(1): CMD = run libavcodec/fft-fixed-test -n$(1) -m |
|
| 30 |
+fate-imdct-fixed-$(1): CMD = run libavcodec/fft-fixed-test -n$(1) -m -i |
|
| 31 |
+endef |
|
| 21 | 32 |
|
| 22 |
-fate-fft-fixed: CMD = run libavcodec/fft-fixed-test |
|
| 23 |
-fate-ifft-fixed: CMD = run libavcodec/fft-fixed-test -i |
|
| 24 |
-fate-mdct-fixed: CMD = run libavcodec/fft-fixed-test -m |
|
| 25 |
-fate-imdct-fixed: CMD = run libavcodec/fft-fixed-test -m -i |
|
| 33 |
+$(foreach N, 4 5 6 7 8 9 10 11 12, $(eval $(call DEF_FFT_FIXED,$(N)))) |
|
| 26 | 34 |
|
| 27 | 35 |
fate-fft-fixed-test: $(FATE_FFT_FIXED) |
| 28 | 36 |
$(FATE_FFT_FIXED): libavcodec/fft-fixed-test$(EXESUF) |
| ... | ... |
@@ -21,6 +21,10 @@ fate-des: libavutil/des-test$(EXESUF) |
| 21 | 21 |
fate-des: CMD = run libavutil/des-test |
| 22 | 22 |
fate-des: REF = /dev/null |
| 23 | 23 |
|
| 24 |
+FATE_TESTS += fate-eval |
|
| 25 |
+fate-eval: libavutil/eval-test$(EXESUF) |
|
| 26 |
+fate-eval: CMD = run libavutil/eval-test |
|
| 27 |
+ |
|
| 24 | 28 |
FATE_TESTS += fate-md5 |
| 25 | 29 |
fate-md5: libavutil/md5-test$(EXESUF) |
| 26 | 30 |
fate-md5: CMD = run libavutil/md5-test |
| ... | ... |
@@ -218,3 +218,7 @@ fate-musepack7: CMD = pcm -i $(SAMPLES)/musepack/inside-mp7.mpc |
| 218 | 218 |
fate-musepack7: CMP = oneoff |
| 219 | 219 |
fate-musepack7: REF = $(SAMPLES)/musepack/inside-mp7.pcm |
| 220 | 220 |
fate-musepack7: FUZZ = 1 |
| 221 |
+ |
|
| 222 |
+FATE_TESTS += fate-iirfilter |
|
| 223 |
+fate-iirfilter: libavcodec/iirfilter-test$(EXESUF) |
|
| 224 |
+fate-iirfilter: CMD = run libavcodec/iirfilter-test |
| 221 | 225 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,161 @@ |
| 0 |
+Evaluating '' |
|
| 1 |
+'' -> nan |
|
| 2 |
+ |
|
| 3 |
+Evaluating '1;2' |
|
| 4 |
+'1;2' -> 2.000000 |
|
| 5 |
+ |
|
| 6 |
+Evaluating '-20' |
|
| 7 |
+'-20' -> -20.000000 |
|
| 8 |
+ |
|
| 9 |
+Evaluating '-PI' |
|
| 10 |
+'-PI' -> -3.141593 |
|
| 11 |
+ |
|
| 12 |
+Evaluating '+PI' |
|
| 13 |
+'+PI' -> 3.141593 |
|
| 14 |
+ |
|
| 15 |
+Evaluating '1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)' |
|
| 16 |
+'1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)' -> 12.700000 |
|
| 17 |
+ |
|
| 18 |
+Evaluating '80G/80Gi1k' |
|
| 19 |
+'80G/80Gi1k' -> nan |
|
| 20 |
+ |
|
| 21 |
+Evaluating '1Gi' |
|
| 22 |
+'1Gi' -> 1073741824.000000 |
|
| 23 |
+ |
|
| 24 |
+Evaluating '1gi' |
|
| 25 |
+'1gi' -> nan |
|
| 26 |
+ |
|
| 27 |
+Evaluating '1GiFoo' |
|
| 28 |
+'1GiFoo' -> nan |
|
| 29 |
+ |
|
| 30 |
+Evaluating '1k+1k' |
|
| 31 |
+'1k+1k' -> 2000.000000 |
|
| 32 |
+ |
|
| 33 |
+Evaluating '1Gi*3foo' |
|
| 34 |
+'1Gi*3foo' -> nan |
|
| 35 |
+ |
|
| 36 |
+Evaluating 'foo' |
|
| 37 |
+'foo' -> nan |
|
| 38 |
+ |
|
| 39 |
+Evaluating 'foo('
|
|
| 40 |
+'foo(' -> nan
|
|
| 41 |
+ |
|
| 42 |
+Evaluating 'foo()' |
|
| 43 |
+'foo()' -> nan |
|
| 44 |
+ |
|
| 45 |
+Evaluating 'foo)' |
|
| 46 |
+'foo)' -> nan |
|
| 47 |
+ |
|
| 48 |
+Evaluating 'sin' |
|
| 49 |
+'sin' -> nan |
|
| 50 |
+ |
|
| 51 |
+Evaluating 'sin('
|
|
| 52 |
+'sin(' -> nan
|
|
| 53 |
+ |
|
| 54 |
+Evaluating 'sin()' |
|
| 55 |
+'sin()' -> nan |
|
| 56 |
+ |
|
| 57 |
+Evaluating 'sin)' |
|
| 58 |
+'sin)' -> nan |
|
| 59 |
+ |
|
| 60 |
+Evaluating 'sin 10' |
|
| 61 |
+'sin 10' -> nan |
|
| 62 |
+ |
|
| 63 |
+Evaluating 'sin(1,2,3)' |
|
| 64 |
+'sin(1,2,3)' -> nan |
|
| 65 |
+ |
|
| 66 |
+Evaluating 'sin(1 )' |
|
| 67 |
+'sin(1 )' -> 0.841471 |
|
| 68 |
+ |
|
| 69 |
+Evaluating '1' |
|
| 70 |
+'1' -> 1.000000 |
|
| 71 |
+ |
|
| 72 |
+Evaluating '1foo' |
|
| 73 |
+'1foo' -> nan |
|
| 74 |
+ |
|
| 75 |
+Evaluating 'bar + PI + E + 100f*2 + foo' |
|
| 76 |
+'bar + PI + E + 100f*2 + foo' -> nan |
|
| 77 |
+ |
|
| 78 |
+Evaluating '13k + 12f - foo(1, 2)' |
|
| 79 |
+'13k + 12f - foo(1, 2)' -> nan |
|
| 80 |
+ |
|
| 81 |
+Evaluating '1gi' |
|
| 82 |
+'1gi' -> nan |
|
| 83 |
+ |
|
| 84 |
+Evaluating '1Gi' |
|
| 85 |
+'1Gi' -> 1073741824.000000 |
|
| 86 |
+ |
|
| 87 |
+Evaluating 'st(0, 123)' |
|
| 88 |
+'st(0, 123)' -> 123.000000 |
|
| 89 |
+ |
|
| 90 |
+Evaluating 'st(1, 123); ld(1)' |
|
| 91 |
+'st(1, 123); ld(1)' -> 123.000000 |
|
| 92 |
+ |
|
| 93 |
+Evaluating 'st(0, 1); while(lte(ld(0), 100), st(1, ld(1)+ld(0));st(0, ld(0)+1)); ld(1)' |
|
| 94 |
+'st(0, 1); while(lte(ld(0), 100), st(1, ld(1)+ld(0));st(0, ld(0)+1)); ld(1)' -> 4950.000000 |
|
| 95 |
+ |
|
| 96 |
+Evaluating 'st(1, 1); st(2, 2); st(0, 1); while(lte(ld(0),10), st(3, ld(1)+ld(2)); st(1, ld(2)); st(2, ld(3)); st(0, ld(0)+1)); ld(3)' |
|
| 97 |
+'st(1, 1); st(2, 2); st(0, 1); while(lte(ld(0),10), st(3, ld(1)+ld(2)); st(1, ld(2)); st(2, ld(3)); st(0, ld(0)+1)); ld(3)' -> 144.000000 |
|
| 98 |
+ |
|
| 99 |
+Evaluating 'while(0, 10)' |
|
| 100 |
+'while(0, 10)' -> nan |
|
| 101 |
+ |
|
| 102 |
+Evaluating 'st(0, 1); while(lte(ld(0),100), st(1, ld(1)+ld(0)); st(0, ld(0)+1))' |
|
| 103 |
+'st(0, 1); while(lte(ld(0),100), st(1, ld(1)+ld(0)); st(0, ld(0)+1))' -> 100.000000 |
|
| 104 |
+ |
|
| 105 |
+Evaluating 'isnan(1)' |
|
| 106 |
+'isnan(1)' -> 0.000000 |
|
| 107 |
+ |
|
| 108 |
+Evaluating 'isnan(NAN)' |
|
| 109 |
+'isnan(NAN)' -> 1.000000 |
|
| 110 |
+ |
|
| 111 |
+Evaluating 'floor(NAN)' |
|
| 112 |
+'floor(NAN)' -> nan |
|
| 113 |
+ |
|
| 114 |
+Evaluating 'floor(123.123)' |
|
| 115 |
+'floor(123.123)' -> 123.000000 |
|
| 116 |
+ |
|
| 117 |
+Evaluating 'floor(-123.123)' |
|
| 118 |
+'floor(-123.123)' -> -124.000000 |
|
| 119 |
+ |
|
| 120 |
+Evaluating 'trunc(123.123)' |
|
| 121 |
+'trunc(123.123)' -> 123.000000 |
|
| 122 |
+ |
|
| 123 |
+Evaluating 'trunc(-123.123)' |
|
| 124 |
+'trunc(-123.123)' -> -123.000000 |
|
| 125 |
+ |
|
| 126 |
+Evaluating 'ceil(123.123)' |
|
| 127 |
+'ceil(123.123)' -> 124.000000 |
|
| 128 |
+ |
|
| 129 |
+Evaluating 'ceil(-123.123)' |
|
| 130 |
+'ceil(-123.123)' -> -123.000000 |
|
| 131 |
+ |
|
| 132 |
+Evaluating 'sqrt(1764)' |
|
| 133 |
+'sqrt(1764)' -> 42.000000 |
|
| 134 |
+ |
|
| 135 |
+Evaluating 'sqrt(-1)' |
|
| 136 |
+'sqrt(-1)' -> -nan |
|
| 137 |
+ |
|
| 138 |
+Evaluating 'not(1)' |
|
| 139 |
+'not(1)' -> 0.000000 |
|
| 140 |
+ |
|
| 141 |
+Evaluating 'not(NAN)' |
|
| 142 |
+'not(NAN)' -> 0.000000 |
|
| 143 |
+ |
|
| 144 |
+Evaluating 'not(0)' |
|
| 145 |
+'not(0)' -> 1.000000 |
|
| 146 |
+ |
|
| 147 |
+Evaluating 'pow(0,1.23)' |
|
| 148 |
+'pow(0,1.23)' -> 0.000000 |
|
| 149 |
+ |
|
| 150 |
+Evaluating 'pow(PI,1.23)' |
|
| 151 |
+'pow(PI,1.23)' -> 4.087844 |
|
| 152 |
+ |
|
| 153 |
+Evaluating 'PI^1.23' |
|
| 154 |
+'PI^1.23' -> 4.087844 |
|
| 155 |
+ |
|
| 156 |
+Evaluating 'pow(-1,1.23)' |
|
| 157 |
+'pow(-1,1.23)' -> -nan |
|
| 158 |
+ |
|
| 159 |
+12.700000 == 12.7 |
|
| 160 |
+0.931323 == 0.931322575 |
| 0 | 161 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,1024 @@ |
| 0 |
+ 0 0 |
|
| 1 |
+ 38 2 |
|
| 2 |
+ 151 15 |
|
| 3 |
+ 339 65 |
|
| 4 |
+ 603 182 |
|
| 5 |
+ 942 381 |
|
| 6 |
+ 1356 664 |
|
| 7 |
+ 1845 1021 |
|
| 8 |
+ 2409 1450 |
|
| 9 |
+ 3046 1953 |
|
| 10 |
+ 3755 2530 |
|
| 11 |
+ 4535 3182 |
|
| 12 |
+ 5384 3907 |
|
| 13 |
+ 6300 4700 |
|
| 14 |
+ 7278 5563 |
|
| 15 |
+ 8315 6491 |
|
| 16 |
+ 9405 7481 |
|
| 17 |
+ 10541 8529 |
|
| 18 |
+ 11717 9629 |
|
| 19 |
+ 12924 10773 |
|
| 20 |
+ 14151 11956 |
|
| 21 |
+ 15385 13167 |
|
| 22 |
+ 16615 14396 |
|
| 23 |
+ 17825 15630 |
|
| 24 |
+ 18997 16857 |
|
| 25 |
+ 20114 18060 |
|
| 26 |
+ 21156 19222 |
|
| 27 |
+ 22102 20325 |
|
| 28 |
+ 22929 21349 |
|
| 29 |
+ 23613 22273 |
|
| 30 |
+ 24132 23073 |
|
| 31 |
+ 24461 23726 |
|
| 32 |
+ 24575 24208 |
|
| 33 |
+ 24453 24495 |
|
| 34 |
+ 24073 24564 |
|
| 35 |
+ 23416 24392 |
|
| 36 |
+ 22467 23959 |
|
| 37 |
+ 21213 23245 |
|
| 38 |
+ 19649 22236 |
|
| 39 |
+ 17773 20922 |
|
| 40 |
+ 15590 19296 |
|
| 41 |
+ 13116 17360 |
|
| 42 |
+ 10371 15119 |
|
| 43 |
+ 7386 12591 |
|
| 44 |
+ 4201 9797 |
|
| 45 |
+ 867 6771 |
|
| 46 |
+ -2559 3554 |
|
| 47 |
+ -6008 199 |
|
| 48 |
+ -9405 -3235 |
|
| 49 |
+-12667 -6678 |
|
| 50 |
+-15707 -10053 |
|
| 51 |
+-18435 -13277 |
|
| 52 |
+-20762 -16261 |
|
| 53 |
+-22602 -18916 |
|
| 54 |
+-23875 -21153 |
|
| 55 |
+-24511 -22887 |
|
| 56 |
+-24457 -24040 |
|
| 57 |
+-23675 -24546 |
|
| 58 |
+-22151 -24352 |
|
| 59 |
+-19895 -23428 |
|
| 60 |
+-16946 -21762 |
|
| 61 |
+-13370 -19370 |
|
| 62 |
+ -9265 -16296 |
|
| 63 |
+ -4757 -12613 |
|
| 64 |
+ 0 -8423 |
|
| 65 |
+ 4831 -3858 |
|
| 66 |
+ 9544 923 |
|
| 67 |
+ 13934 5743 |
|
| 68 |
+ 17799 10406 |
|
| 69 |
+ 20942 14708 |
|
| 70 |
+ 23189 18447 |
|
| 71 |
+ 24395 21430 |
|
| 72 |
+ 24457 23488 |
|
| 73 |
+ 23323 24483 |
|
| 74 |
+ 21001 24321 |
|
| 75 |
+ 17563 22963 |
|
| 76 |
+ 13148 20426 |
|
| 77 |
+ 7959 16795 |
|
| 78 |
+ 2259 12223 |
|
| 79 |
+ -3643 6922 |
|
| 80 |
+ -9405 1166 |
|
| 81 |
+-14670 -4731 |
|
| 82 |
+-19092 -10421 |
|
| 83 |
+-22359 -15550 |
|
| 84 |
+-24213 -19777 |
|
| 85 |
+-24481 -22797 |
|
| 86 |
+-23087 -24368 |
|
| 87 |
+-20071 -24334 |
|
| 88 |
+-15590 -22639 |
|
| 89 |
+ -9924 -19343 |
|
| 90 |
+ -3457 -14629 |
|
| 91 |
+ 3345 -8793 |
|
| 92 |
+ 9959 -2236 |
|
| 93 |
+ 15851 4563 |
|
| 94 |
+ 20517 11078 |
|
| 95 |
+ 23528 16779 |
|
| 96 |
+ 24575 21171 |
|
| 97 |
+ 23506 23846 |
|
| 98 |
+ 20349 24522 |
|
| 99 |
+ 15327 23076 |
|
| 100 |
+ 8845 19572 |
|
| 101 |
+ 1469 14264 |
|
| 102 |
+ -6117 7589 |
|
| 103 |
+-13180 135 |
|
| 104 |
+-18997 -7403 |
|
| 105 |
+-22942 -14289 |
|
| 106 |
+-24553 -19814 |
|
| 107 |
+-23592 -23377 |
|
| 108 |
+-20092 -24551 |
|
| 109 |
+-14366 -23145 |
|
| 110 |
+ -6989 -19239 |
|
| 111 |
+ 1244 -13192 |
|
| 112 |
+ 9405 -5620 |
|
| 113 |
+ 16532 2656 |
|
| 114 |
+ 21744 10697 |
|
| 115 |
+ 24357 17548 |
|
| 116 |
+ 23978 22356 |
|
| 117 |
+ 20579 24483 |
|
| 118 |
+ 14518 23593 |
|
| 119 |
+ 6518 19723 |
|
| 120 |
+ -2409 13293 |
|
| 121 |
+-11083 5078 |
|
| 122 |
+-18310 -3876 |
|
| 123 |
+-23048 -12378 |
|
| 124 |
+-24568 -19252 |
|
| 125 |
+-22573 -23500 |
|
| 126 |
+-17270 -24458 |
|
| 127 |
+ -9370 -21908 |
|
| 128 |
+ 0 -16140 |
|
| 129 |
+ 9439 -7935 |
|
| 130 |
+ 17484 1526 |
|
| 131 |
+ 22832 10824 |
|
| 132 |
+ 24568 18508 |
|
| 133 |
+ 22327 23330 |
|
| 134 |
+ 16392 24452 |
|
| 135 |
+ 7673 21608 |
|
| 136 |
+ -2409 15181 |
|
| 137 |
+-12146 6168 |
|
| 138 |
+-19828 -3955 |
|
| 139 |
+-24050 -13466 |
|
| 140 |
+-23978 -20689 |
|
| 141 |
+-19535 -24292 |
|
| 142 |
+-11451 -23552 |
|
| 143 |
+ -1168 -18512 |
|
| 144 |
+ 9405 -10015 |
|
| 145 |
+ 18234 416 |
|
| 146 |
+ 23560 10836 |
|
| 147 |
+ 24257 19234 |
|
| 148 |
+ 20092 23929 |
|
| 149 |
+ 11817 23916 |
|
| 150 |
+ 1055 19105 |
|
| 151 |
+ -9993 10379 |
|
| 152 |
+-18997 -540 |
|
| 153 |
+-23986 -11413 |
|
| 154 |
+-23802 -19939 |
|
| 155 |
+-18385 -24246 |
|
| 156 |
+ -8845 -23318 |
|
| 157 |
+ 2746 -17260 |
|
| 158 |
+ 13778 -7325 |
|
| 159 |
+ 21691 4319 |
|
| 160 |
+ 24575 15045 |
|
| 161 |
+ 21656 22357 |
|
| 162 |
+ 13528 24482 |
|
| 163 |
+ 2071 20823 |
|
| 164 |
+ -9959 12152 |
|
| 165 |
+-19581 484 |
|
| 166 |
+-24331 -11367 |
|
| 167 |
+-22915 -20460 |
|
| 168 |
+-15590 -24459 |
|
| 169 |
+ -4164 -22257 |
|
| 170 |
+ 8421 -14315 |
|
| 171 |
+ 18828 -2603 |
|
| 172 |
+ 24213 9857 |
|
| 173 |
+ 23022 19756 |
|
| 174 |
+ 15474 24383 |
|
| 175 |
+ 3569 22388 |
|
| 176 |
+ -9405 14211 |
|
| 177 |
+-19761 2031 |
|
| 178 |
+-24471 -10785 |
|
| 179 |
+-22069 -20591 |
|
| 180 |
+-13148 -24512 |
|
| 181 |
+ -264 -21311 |
|
| 182 |
+ 12763 -11818 |
|
| 183 |
+ 21968 1241 |
|
| 184 |
+ 24457 13990 |
|
| 185 |
+ 19351 22545 |
|
| 186 |
+ 8137 24211 |
|
| 187 |
+ -5715 18362 |
|
| 188 |
+-17799 6720 |
|
| 189 |
+-24167 -7108 |
|
| 190 |
+-22646 -18722 |
|
| 191 |
+-13622 -24326 |
|
| 192 |
+ 0 -21995 |
|
| 193 |
+ 13685 -12382 |
|
| 194 |
+ 22762 1409 |
|
| 195 |
+ 24035 14788 |
|
| 196 |
+ 16946 23188 |
|
| 197 |
+ 3867 23644 |
|
| 198 |
+-10643 15884 |
|
| 199 |
+-21401 2514 |
|
| 200 |
+-24457 -11806 |
|
| 201 |
+-18584 -21960 |
|
| 202 |
+ -5825 -24220 |
|
| 203 |
+ 9160 -17649 |
|
| 204 |
+ 20762 -4546 |
|
| 205 |
+ 24527 10303 |
|
| 206 |
+ 18901 21343 |
|
| 207 |
+ 5935 24337 |
|
| 208 |
+ -9405 18028 |
|
| 209 |
+-21098 4727 |
|
| 210 |
+-24442 -10470 |
|
| 211 |
+-17979 -21608 |
|
| 212 |
+ -4201 -24206 |
|
| 213 |
+ 11351 -17110 |
|
| 214 |
+ 22280 -3064 |
|
| 215 |
+ 23970 12287 |
|
| 216 |
+ 15590 22636 |
|
| 217 |
+ 565 23615 |
|
| 218 |
+-14760 14693 |
|
| 219 |
+-23773 -479 |
|
| 220 |
+-22467 -15504 |
|
| 221 |
+-11284 -23907 |
|
| 222 |
+ 4942 -21954 |
|
| 223 |
+ 19021 -10373 |
|
| 224 |
+ 24575 5837 |
|
| 225 |
+ 18973 19502 |
|
| 226 |
+ 4646 24445 |
|
| 227 |
+-11883 18316 |
|
| 228 |
+-22929 3786 |
|
| 229 |
+-23226 -12541 |
|
| 230 |
+-12505 -23090 |
|
| 231 |
+ 4239 -22841 |
|
| 232 |
+ 18997 -11784 |
|
| 233 |
+ 24567 4932 |
|
| 234 |
+ 18107 19331 |
|
| 235 |
+ 2671 24403 |
|
| 236 |
+-14151 17558 |
|
| 237 |
+-23919 2036 |
|
| 238 |
+-21602 -14549 |
|
| 239 |
+ -8244 -23897 |
|
| 240 |
+ 9405 -21206 |
|
| 241 |
+ 22232 -7710 |
|
| 242 |
+ 23473 9785 |
|
| 243 |
+ 12342 22272 |
|
| 244 |
+ -5384 23186 |
|
| 245 |
+-20286 11920 |
|
| 246 |
+-24287 -5693 |
|
| 247 |
+-15090 -20319 |
|
| 248 |
+ 2409 -24060 |
|
| 249 |
+ 18633 -14771 |
|
| 250 |
+ 24538 2613 |
|
| 251 |
+ 16698 18608 |
|
| 252 |
+ -603 24329 |
|
| 253 |
+-17616 16471 |
|
| 254 |
+-24575 -682 |
|
| 255 |
+-17351 -17495 |
|
| 256 |
+ 0 -24355 |
|
| 257 |
+ 17404 -17211 |
|
| 258 |
+ 24575 -65 |
|
| 259 |
+ 17136 17163 |
|
| 260 |
+ -603 24334 |
|
| 261 |
+-18031 17094 |
|
| 262 |
+-24538 -374 |
|
| 263 |
+-16023 -17660 |
|
| 264 |
+ 2409 -24287 |
|
| 265 |
+ 19397 -16108 |
|
| 266 |
+ 24287 1992 |
|
| 267 |
+ 13872 18902 |
|
| 268 |
+ -5384 24066 |
|
| 269 |
+-21251 14131 |
|
| 270 |
+-23473 -4761 |
|
| 271 |
+-10473 -20664 |
|
| 272 |
+ 9405 -23351 |
|
| 273 |
+ 23151 -10967 |
|
| 274 |
+ 21602 8573 |
|
| 275 |
+ 5642 22543 |
|
| 276 |
+-14151 21682 |
|
| 277 |
+-24430 6431 |
|
| 278 |
+-18107 -13147 |
|
| 279 |
+ 641 -23920 |
|
| 280 |
+ 18997 -18514 |
|
| 281 |
+ 24207 -475 |
|
| 282 |
+ 12505 17922 |
|
| 283 |
+ -8030 23970 |
|
| 284 |
+-22929 13357 |
|
| 285 |
+-21511 -6625 |
|
| 286 |
+ -4646 -21972 |
|
| 287 |
+ 15619 -21758 |
|
| 288 |
+ 24575 -6009 |
|
| 289 |
+ 15561 14083 |
|
| 290 |
+ -4942 24019 |
|
| 291 |
+-21831 16485 |
|
| 292 |
+-22467 -3138 |
|
| 293 |
+ -6227 -20474 |
|
| 294 |
+ 14760 -22641 |
|
| 295 |
+ 24569 -7904 |
|
| 296 |
+ 15590 12791 |
|
| 297 |
+ -5421 23839 |
|
| 298 |
+-22280 16760 |
|
| 299 |
+-21797 -3160 |
|
| 300 |
+ -4201 -20666 |
|
| 301 |
+ 16754 -22169 |
|
| 302 |
+ 24442 -6381 |
|
| 303 |
+ 12602 14430 |
|
| 304 |
+ -9405 23865 |
|
| 305 |
+-23848 14348 |
|
| 306 |
+-18901 -6644 |
|
| 307 |
+ 1545 -22308 |
|
| 308 |
+ 20762 -19937 |
|
| 309 |
+ 22804 -1339 |
|
| 310 |
+ 5825 18365 |
|
| 311 |
+-16080 22954 |
|
| 312 |
+-24457 8529 |
|
| 313 |
+-12080 -13009 |
|
| 314 |
+ 10643 -23650 |
|
| 315 |
+ 24269 -14353 |
|
| 316 |
+ 16946 7119 |
|
| 317 |
+ -5127 22521 |
|
| 318 |
+-22762 18602 |
|
| 319 |
+-20413 -1370 |
|
| 320 |
+ 0 -20152 |
|
| 321 |
+ 20454 -21342 |
|
| 322 |
+ 22646 -3797 |
|
| 323 |
+ 4461 17096 |
|
| 324 |
+-17799 22804 |
|
| 325 |
+-23902 8148 |
|
| 326 |
+ -8137 -13817 |
|
| 327 |
+ 15149 -23296 |
|
| 328 |
+ 24457 -11618 |
|
| 329 |
+ 11016 10660 |
|
| 330 |
+-12763 23135 |
|
| 331 |
+-24574 14243 |
|
| 332 |
+-13148 -7861 |
|
| 333 |
+ 10813 -22608 |
|
| 334 |
+ 24471 -16124 |
|
| 335 |
+ 14609 5565 |
|
| 336 |
+ -9405 21949 |
|
| 337 |
+-24315 17379 |
|
| 338 |
+-15474 -3849 |
|
| 339 |
+ 8598 -21336 |
|
| 340 |
+ 24213 -18120 |
|
| 341 |
+ 15793 2745 |
|
| 342 |
+ -8421 20885 |
|
| 343 |
+-24220 18429 |
|
| 344 |
+-15590 -2263 |
|
| 345 |
+ 8880 -20663 |
|
| 346 |
+ 24331 -18359 |
|
| 347 |
+ 14851 2398 |
|
| 348 |
+ -9959 20685 |
|
| 349 |
+-24488 17917 |
|
| 350 |
+-13528 -3137 |
|
| 351 |
+ 11618 -20918 |
|
| 352 |
+ 24575 -17075 |
|
| 353 |
+ 11551 4460 |
|
| 354 |
+-13778 21286 |
|
| 355 |
+-24421 15770 |
|
| 356 |
+ -8845 -6328 |
|
| 357 |
+ 16307 -21661 |
|
| 358 |
+ 23802 -13916 |
|
| 359 |
+ 5348 8671 |
|
| 360 |
+-18997 21868 |
|
| 361 |
+-22452 11421 |
|
| 362 |
+ -1055 -11371 |
|
| 363 |
+ 21548 -21685 |
|
| 364 |
+ 20092 -8212 |
|
| 365 |
+ -3941 14242 |
|
| 366 |
+-23560 20853 |
|
| 367 |
+-16476 4267 |
|
| 368 |
+ 9405 -17009 |
|
| 369 |
+ 24547 -19106 |
|
| 370 |
+ 11451 343 |
|
| 371 |
+-14911 19309 |
|
| 372 |
+-23978 16208 |
|
| 373 |
+ -5053 -5409 |
|
| 374 |
+ 19828 -20699 |
|
| 375 |
+ 21364 -12016 |
|
| 376 |
+ -2409 10553 |
|
| 377 |
+-23347 20700 |
|
| 378 |
+-16392 6559 |
|
| 379 |
+ 10268 -15211 |
|
| 380 |
+ 24568 -18879 |
|
| 381 |
+ 9090 -118 |
|
| 382 |
+-17484 18664 |
|
| 383 |
+-22690 14969 |
|
| 384 |
+ 0 -6714 |
|
| 385 |
+ 22719 -20134 |
|
| 386 |
+ 17270 -9014 |
|
| 387 |
+ -9717 13022 |
|
| 388 |
+-24568 18943 |
|
| 389 |
+ -8527 1506 |
|
| 390 |
+ 18310 -17662 |
|
| 391 |
+ 21934 -14749 |
|
| 392 |
+ -2409 6538 |
|
| 393 |
+-23695 19463 |
|
| 394 |
+-14518 7789 |
|
| 395 |
+ 13433 -13633 |
|
| 396 |
+ 23978 -17566 |
|
| 397 |
+ 3270 935 |
|
| 398 |
+-21744 18075 |
|
| 399 |
+-18184 11812 |
|
| 400 |
+ 9405 -9654 |
|
| 401 |
+ 24544 -18394 |
|
| 402 |
+ 6989 -3082 |
|
| 403 |
+-19939 16117 |
|
| 404 |
+-20092 13945 |
|
| 405 |
+ 6881 -6613 |
|
| 406 |
+ 24553 -18196 |
|
| 407 |
+ 8809 -5437 |
|
| 408 |
+-18997 14458 |
|
| 409 |
+-20742 14731 |
|
| 410 |
+ 6117 -4859 |
|
| 411 |
+ 24531 -17657 |
|
| 412 |
+ 8845 -6307 |
|
| 413 |
+-19210 13526 |
|
| 414 |
+-20349 14588 |
|
| 415 |
+ 7170 -4444 |
|
| 416 |
+ 24575 -17109 |
|
| 417 |
+ 7098 -5874 |
|
| 418 |
+-20517 13412 |
|
| 419 |
+-18780 13691 |
|
| 420 |
+ 9959 -5272 |
|
| 421 |
+ 24347 -16558 |
|
| 422 |
+ 3457 -4241 |
|
| 423 |
+-22482 13949 |
|
| 424 |
+-15590 11979 |
|
| 425 |
+ 14181 -7142 |
|
| 426 |
+ 23087 -15723 |
|
| 427 |
+ -2146 -1459 |
|
| 428 |
+-24213 14726 |
|
| 429 |
+-10200 9228 |
|
| 430 |
+ 19092 -9692 |
|
| 431 |
+ 19717 -14108 |
|
| 432 |
+ -9405 2343 |
|
| 433 |
+-24304 15085 |
|
| 434 |
+ -2259 5221 |
|
| 435 |
+ 23251 -12286 |
|
| 436 |
+ 13148 -11127 |
|
| 437 |
+-17190 6746 |
|
| 438 |
+-21001 14161 |
|
| 439 |
+ 7745 2 |
|
| 440 |
+ 24457 -13938 |
|
| 441 |
+ 2971 -6372 |
|
| 442 |
+-23189 10842 |
|
| 443 |
+-12860 11094 |
|
| 444 |
+ 17799 -5795 |
|
| 445 |
+ 20243 -13421 |
|
| 446 |
+ -9544 -30 |
|
| 447 |
+-24096 13184 |
|
| 448 |
+ 0 5498 |
|
| 449 |
+ 24110 -10713 |
|
| 450 |
+ 9265 -9718 |
|
| 451 |
+-20620 6673 |
|
| 452 |
+-16946 12155 |
|
| 453 |
+ 14427 -1883 |
|
| 454 |
+ 22151 -12653 |
|
| 455 |
+ -6591 -2861 |
|
| 456 |
+-24457 11378 |
|
| 457 |
+ -1770 6908 |
|
| 458 |
+ 23875 -8726 |
|
| 459 |
+ 9648 -9817 |
|
| 460 |
+-20762 5209 |
|
| 461 |
+-16251 11385 |
|
| 462 |
+ 15707 -1358 |
|
| 463 |
+ 21059 -11610 |
|
| 464 |
+ -9405 -2353 |
|
| 465 |
+-23830 10656 |
|
| 466 |
+ 2559 5560 |
|
| 467 |
+ 24560 -8789 |
|
| 468 |
+ 4201 -8028 |
|
| 469 |
+-23439 6314 |
|
| 470 |
+-10371 9643 |
|
| 471 |
+ 20783 -3542 |
|
| 472 |
+ 15590 -10404 |
|
| 473 |
+-16973 742 |
|
| 474 |
+-19649 10386 |
|
| 475 |
+ 12407 1870 |
|
| 476 |
+ 22467 -9720 |
|
| 477 |
+ -7458 -4144 |
|
| 478 |
+-24073 8562 |
|
| 479 |
+ 2446 5991 |
|
| 480 |
+ 24575 -7072 |
|
| 481 |
+ 2371 -7375 |
|
| 482 |
+-24132 5398 |
|
| 483 |
+ -6808 8306 |
|
| 484 |
+ 22929 -3667 |
|
| 485 |
+ 10745 -8824 |
|
| 486 |
+-21156 1980 |
|
| 487 |
+-14120 8987 |
|
| 488 |
+ 18997 -408 |
|
| 489 |
+ 16918 -8863 |
|
| 490 |
+-16615 -1001 |
|
| 491 |
+-19163 8521 |
|
| 492 |
+ 14151 2220 |
|
| 493 |
+ 20902 -8027 |
|
| 494 |
+-11717 -3241 |
|
| 495 |
+-22200 7441 |
|
| 496 |
+ 9405 4071 |
|
| 497 |
+ 23126 -6811 |
|
| 498 |
+ -7278 -4722 |
|
| 499 |
+-23754 6177 |
|
| 500 |
+ 5384 5213 |
|
| 501 |
+ 24153 -5571 |
|
| 502 |
+ -3755 -5566 |
|
| 503 |
+-24386 5013 |
|
| 504 |
+ 2409 5801 |
|
| 505 |
+ 24506 -4521 |
|
| 506 |
+ -1356 -5939 |
|
| 507 |
+-24557 4104 |
|
| 508 |
+ 603 5999 |
|
| 509 |
+ 24573 -3765 |
|
| 510 |
+ -151 -5994 |
|
| 511 |
+-24575 3508 |
|
| 512 |
+ 0 5937 |
|
| 513 |
+ 24575 -3331 |
|
| 514 |
+ -151 -5835 |
|
| 515 |
+-24573 3232 |
|
| 516 |
+ 603 5694 |
|
| 517 |
+ 24557 -3205 |
|
| 518 |
+ -1356 -5517 |
|
| 519 |
+-24506 3244 |
|
| 520 |
+ 2409 5303 |
|
| 521 |
+ 24386 -3343 |
|
| 522 |
+ -3755 -5049 |
|
| 523 |
+-24153 3494 |
|
| 524 |
+ 5384 4752 |
|
| 525 |
+ 23754 -3685 |
|
| 526 |
+ -7278 -4407 |
|
| 527 |
+-23126 3906 |
|
| 528 |
+ 9405 4007 |
|
| 529 |
+ 22200 -4143 |
|
| 530 |
+-11717 -3547 |
|
| 531 |
+-20902 4380 |
|
| 532 |
+ 14151 3025 |
|
| 533 |
+ 19163 -4598 |
|
| 534 |
+-16615 -2434 |
|
| 535 |
+-16918 4778 |
|
| 536 |
+ 18997 1780 |
|
| 537 |
+ 14120 -4898 |
|
| 538 |
+-21156 -1066 |
|
| 539 |
+-10745 4934 |
|
| 540 |
+ 22929 304 |
|
| 541 |
+ 6808 -4862 |
|
| 542 |
+-24132 489 |
|
| 543 |
+ -2371 4664 |
|
| 544 |
+ 24575 -1288 |
|
| 545 |
+ -2446 -4320 |
|
| 546 |
+-24073 2060 |
|
| 547 |
+ 7458 3820 |
|
| 548 |
+ 22467 -2767 |
|
| 549 |
+-12407 -3162 |
|
| 550 |
+-19649 3365 |
|
| 551 |
+ 16973 2357 |
|
| 552 |
+ 15590 -3808 |
|
| 553 |
+-20783 -1429 |
|
| 554 |
+-10371 4050 |
|
| 555 |
+ 23439 419 |
|
| 556 |
+ 4201 -4055 |
|
| 557 |
+-24560 616 |
|
| 558 |
+ 2559 3795 |
|
| 559 |
+ 23830 -1607 |
|
| 560 |
+ -9405 -3266 |
|
| 561 |
+-21059 2473 |
|
| 562 |
+ 15707 2486 |
|
| 563 |
+ 16251 -3130 |
|
| 564 |
+-20762 -1499 |
|
| 565 |
+ -9648 3505 |
|
| 566 |
+ 23875 386 |
|
| 567 |
+ 1770 -3539 |
|
| 568 |
+-24457 754 |
|
| 569 |
+ 6591 3205 |
|
| 570 |
+ 22151 -1798 |
|
| 571 |
+-14427 -2518 |
|
| 572 |
+-16946 2618 |
|
| 573 |
+ 20620 1540 |
|
| 574 |
+ 9265 -3101 |
|
| 575 |
+-24110 -381 |
|
| 576 |
+ 0 3162 |
|
| 577 |
+ 24096 -809 |
|
| 578 |
+ -9544 -2775 |
|
| 579 |
+-20243 1859 |
|
| 580 |
+ 17799 1978 |
|
| 581 |
+ 12860 -2598 |
|
| 582 |
+-23189 -879 |
|
| 583 |
+ -2971 2893 |
|
| 584 |
+ 24457 -344 |
|
| 585 |
+ -7745 -2674 |
|
| 586 |
+-21001 1478 |
|
| 587 |
+ 17190 1966 |
|
| 588 |
+ 13148 -2304 |
|
| 589 |
+-23251 -890 |
|
| 590 |
+ -2259 2647 |
|
| 591 |
+ 24304 -341 |
|
| 592 |
+ -9405 -2421 |
|
| 593 |
+-19717 1467 |
|
| 594 |
+ 19092 1662 |
|
| 595 |
+ 10200 -2229 |
|
| 596 |
+-24213 -535 |
|
| 597 |
+ 2146 2434 |
|
| 598 |
+ 23087 -692 |
|
| 599 |
+-14181 -2022 |
|
| 600 |
+-15590 1706 |
|
| 601 |
+ 22482 1090 |
|
| 602 |
+ 3457 -2230 |
|
| 603 |
+-24347 115 |
|
| 604 |
+ 9959 2111 |
|
| 605 |
+ 18780 -1251 |
|
| 606 |
+-20517 -1374 |
|
| 607 |
+ -7098 1975 |
|
| 608 |
+ 24575 238 |
|
| 609 |
+ -7170 -2057 |
|
| 610 |
+-20349 938 |
|
| 611 |
+ 19210 1464 |
|
| 612 |
+ 8845 -1763 |
|
| 613 |
+-24531 -392 |
|
| 614 |
+ 6117 1949 |
|
| 615 |
+ 20742 -783 |
|
| 616 |
+-18997 -1425 |
|
| 617 |
+ -8809 1630 |
|
| 618 |
+ 24553 385 |
|
| 619 |
+ -6881 -1825 |
|
| 620 |
+-20092 770 |
|
| 621 |
+ 19939 1291 |
|
| 622 |
+ 6989 -1572 |
|
| 623 |
+-24544 -244 |
|
| 624 |
+ 9405 1688 |
|
| 625 |
+ 18184 -869 |
|
| 626 |
+-21744 -1069 |
|
| 627 |
+ -3270 1559 |
|
| 628 |
+ 23978 -7 |
|
| 629 |
+-13433 -1511 |
|
| 630 |
+-14518 1041 |
|
| 631 |
+ 23695 753 |
|
| 632 |
+ -2409 -1536 |
|
| 633 |
+-21934 344 |
|
| 634 |
+ 18310 1251 |
|
| 635 |
+ 8527 -1225 |
|
| 636 |
+-24568 -337 |
|
| 637 |
+ 9717 1436 |
|
| 638 |
+ 17270 -719 |
|
| 639 |
+-22719 -869 |
|
| 640 |
+ 0 1342 |
|
| 641 |
+ 22690 -157 |
|
| 642 |
+-17484 -1188 |
|
| 643 |
+ -9090 1051 |
|
| 644 |
+ 24568 353 |
|
| 645 |
+-10268 -1293 |
|
| 646 |
+-16392 658 |
|
| 647 |
+ 23347 745 |
|
| 648 |
+ -2409 -1224 |
|
| 649 |
+-21364 244 |
|
| 650 |
+ 19828 996 |
|
| 651 |
+ 5053 -1036 |
|
| 652 |
+-23978 -132 |
|
| 653 |
+ 14911 1114 |
|
| 654 |
+ 11451 -783 |
|
| 655 |
+-24547 -437 |
|
| 656 |
+ 9405 1124 |
|
| 657 |
+ 16476 -513 |
|
| 658 |
+-23560 -661 |
|
| 659 |
+ 3941 1058 |
|
| 660 |
+ 20092 -257 |
|
| 661 |
+-21548 -807 |
|
| 662 |
+ -1055 945 |
|
| 663 |
+ 22452 -37 |
|
| 664 |
+-18997 -887 |
|
| 665 |
+ -5348 815 |
|
| 666 |
+ 23802 142 |
|
| 667 |
+-16307 -917 |
|
| 668 |
+ -8845 682 |
|
| 669 |
+ 24421 276 |
|
| 670 |
+-13778 -913 |
|
| 671 |
+-11551 563 |
|
| 672 |
+ 24575 371 |
|
| 673 |
+-11618 -888 |
|
| 674 |
+-13528 463 |
|
| 675 |
+ 24488 431 |
|
| 676 |
+ -9959 -854 |
|
| 677 |
+-14851 386 |
|
| 678 |
+ 24331 462 |
|
| 679 |
+ -8880 -815 |
|
| 680 |
+-15590 333 |
|
| 681 |
+ 24220 471 |
|
| 682 |
+ -8421 -779 |
|
| 683 |
+-15793 302 |
|
| 684 |
+ 24213 460 |
|
| 685 |
+ -8598 -746 |
|
| 686 |
+-15474 292 |
|
| 687 |
+ 24315 433 |
|
| 688 |
+ -9405 -717 |
|
| 689 |
+-14609 300 |
|
| 690 |
+ 24471 391 |
|
| 691 |
+-10813 -689 |
|
| 692 |
+-13148 324 |
|
| 693 |
+ 24574 336 |
|
| 694 |
+-12763 -660 |
|
| 695 |
+-11016 359 |
|
| 696 |
+ 24457 267 |
|
| 697 |
+-15149 -627 |
|
| 698 |
+ -8137 400 |
|
| 699 |
+ 23902 184 |
|
| 700 |
+-17799 -584 |
|
| 701 |
+ -4461 444 |
|
| 702 |
+ 22646 90 |
|
| 703 |
+-20454 -527 |
|
| 704 |
+ 0 483 |
|
| 705 |
+ 20413 -15 |
|
| 706 |
+-22762 -452 |
|
| 707 |
+ 5127 511 |
|
| 708 |
+ 16946 -124 |
|
| 709 |
+-24269 -357 |
|
| 710 |
+ 10643 517 |
|
| 711 |
+ 12080 -232 |
|
| 712 |
+-24457 -241 |
|
| 713 |
+ 16080 495 |
|
| 714 |
+ 5825 -328 |
|
| 715 |
+-22804 -107 |
|
| 716 |
+ 20762 440 |
|
| 717 |
+ -1545 -400 |
|
| 718 |
+-18901 35 |
|
| 719 |
+ 23848 347 |
|
| 720 |
+ -9405 -437 |
|
| 721 |
+-12602 173 |
|
| 722 |
+ 24442 220 |
|
| 723 |
+-16754 -426 |
|
| 724 |
+ -4201 290 |
|
| 725 |
+ 21797 69 |
|
| 726 |
+-22280 -362 |
|
| 727 |
+ 5421 366 |
|
| 728 |
+ 15590 -89 |
|
| 729 |
+-24569 -247 |
|
| 730 |
+ 14760 384 |
|
| 731 |
+ 6227 -228 |
|
| 732 |
+-22467 -95 |
|
| 733 |
+ 21831 335 |
|
| 734 |
+ -4942 -321 |
|
| 735 |
+-15561 71 |
|
| 736 |
+ 24575 222 |
|
| 737 |
+-15619 -344 |
|
| 738 |
+ -4646 214 |
|
| 739 |
+ 21511 65 |
|
| 740 |
+-22929 -288 |
|
| 741 |
+ 8030 300 |
|
| 742 |
+ 12505 -102 |
|
| 743 |
+-24207 -162 |
|
| 744 |
+ 18997 304 |
|
| 745 |
+ -641 -232 |
|
| 746 |
+-18107 4 |
|
| 747 |
+ 24430 218 |
|
| 748 |
+-14151 -286 |
|
| 749 |
+ -5642 160 |
|
| 750 |
+ 21602 68 |
|
| 751 |
+-23151 -244 |
|
| 752 |
+ 9405 253 |
|
| 753 |
+ 10473 -97 |
|
| 754 |
+-23473 -115 |
|
| 755 |
+ 21251 247 |
|
| 756 |
+ -5384 -216 |
|
| 757 |
+-13872 49 |
|
| 758 |
+ 24287 142 |
|
| 759 |
+-19397 -238 |
|
| 760 |
+ 2409 183 |
|
| 761 |
+ 16023 -17 |
|
| 762 |
+-24538 -153 |
|
| 763 |
+ 18031 224 |
|
| 764 |
+ -603 -158 |
|
| 765 |
+-17136 0 |
|
| 766 |
+ 24575 153 |
|
| 767 |
+-17404 -209 |
|
| 768 |
+ 0 142 |
|
| 769 |
+ 17351 6 |
|
| 770 |
+-24575 -144 |
|
| 771 |
+ 17616 196 |
|
| 772 |
+ -603 -133 |
|
| 773 |
+-16698 -1 |
|
| 774 |
+ 24538 131 |
|
| 775 |
+-18633 -182 |
|
| 776 |
+ 2409 132 |
|
| 777 |
+ 15090 -11 |
|
| 778 |
+-24287 -111 |
|
| 779 |
+ 20286 169 |
|
| 780 |
+ -5384 -134 |
|
| 781 |
+-12342 30 |
|
| 782 |
+ 23473 86 |
|
| 783 |
+-22232 -152 |
|
| 784 |
+ 9405 138 |
|
| 785 |
+ 8244 -53 |
|
| 786 |
+-21602 -56 |
|
| 787 |
+ 23919 132 |
|
| 788 |
+-14151 -138 |
|
| 789 |
+ -2671 76 |
|
| 790 |
+ 18107 21 |
|
| 791 |
+-24567 -104 |
|
| 792 |
+ 18997 134 |
|
| 793 |
+ -4239 -98 |
|
| 794 |
+-12505 16 |
|
| 795 |
+ 23226 69 |
|
| 796 |
+-22929 -119 |
|
| 797 |
+ 11883 111 |
|
| 798 |
+ 4646 -53 |
|
| 799 |
+-18973 -28 |
|
| 800 |
+ 24575 92 |
|
| 801 |
+-19021 -113 |
|
| 802 |
+ 4942 82 |
|
| 803 |
+ 11284 -16 |
|
| 804 |
+-22467 -54 |
|
| 805 |
+ 23773 97 |
|
| 806 |
+-14760 -97 |
|
| 807 |
+ -565 56 |
|
| 808 |
+ 15590 8 |
|
| 809 |
+-23970 -65 |
|
| 810 |
+ 22280 93 |
|
| 811 |
+-11351 -82 |
|
| 812 |
+ -4201 37 |
|
| 813 |
+ 17979 21 |
|
| 814 |
+-24442 -67 |
|
| 815 |
+ 21098 85 |
|
| 816 |
+ -9405 -69 |
|
| 817 |
+ -5935 26 |
|
| 818 |
+ 18901 24 |
|
| 819 |
+-24527 -64 |
|
| 820 |
+ 20762 77 |
|
| 821 |
+ -9160 -61 |
|
| 822 |
+ -5825 23 |
|
| 823 |
+ 18584 21 |
|
| 824 |
+-24457 -56 |
|
| 825 |
+ 21401 69 |
|
| 826 |
+-10643 -57 |
|
| 827 |
+ -3867 25 |
|
| 828 |
+ 16946 15 |
|
| 829 |
+-24035 -47 |
|
| 830 |
+ 22762 62 |
|
| 831 |
+-13685 -55 |
|
| 832 |
+ 0 29 |
|
| 833 |
+ 13622 4 |
|
| 834 |
+-22646 -35 |
|
| 835 |
+ 24167 53 |
|
| 836 |
+-17799 -52 |
|
| 837 |
+ 5715 36 |
|
| 838 |
+ 8137 -8 |
|
| 839 |
+-19351 -21 |
|
| 840 |
+ 24457 41 |
|
| 841 |
+-21968 -49 |
|
| 842 |
+ 12763 41 |
|
| 843 |
+ 264 -21 |
|
| 844 |
+-13148 -4 |
|
| 845 |
+ 22069 27 |
|
| 846 |
+-24471 -40 |
|
| 847 |
+ 19761 42 |
|
| 848 |
+ -9405 -31 |
|
| 849 |
+ -3569 12 |
|
| 850 |
+ 15474 9 |
|
| 851 |
+-23022 -27 |
|
| 852 |
+ 24213 36 |
|
| 853 |
+-18828 -35 |
|
| 854 |
+ 8421 25 |
|
| 855 |
+ 4164 -9 |
|
| 856 |
+-15590 -9 |
|
| 857 |
+ 22915 23 |
|
| 858 |
+-24331 -31 |
|
| 859 |
+ 19581 31 |
|
| 860 |
+ -9959 -23 |
|
| 861 |
+ -2071 10 |
|
| 862 |
+ 13528 5 |
|
| 863 |
+-21656 -18 |
|
| 864 |
+ 24575 26 |
|
| 865 |
+-21691 -27 |
|
| 866 |
+ 13778 22 |
|
| 867 |
+ -2746 -12 |
|
| 868 |
+ -8845 0 |
|
| 869 |
+ 18385 11 |
|
| 870 |
+-23802 -20 |
|
| 871 |
+ 23986 23 |
|
| 872 |
+-18997 -22 |
|
| 873 |
+ 9993 15 |
|
| 874 |
+ 1055 -7 |
|
| 875 |
+-11817 -3 |
|
| 876 |
+ 20092 11 |
|
| 877 |
+-24257 -17 |
|
| 878 |
+ 23560 19 |
|
| 879 |
+-18234 -17 |
|
| 880 |
+ 9405 12 |
|
| 881 |
+ 1168 -5 |
|
| 882 |
+-11451 -3 |
|
| 883 |
+ 19535 10 |
|
| 884 |
+-23978 -14 |
|
| 885 |
+ 24050 16 |
|
| 886 |
+-19828 -14 |
|
| 887 |
+ 12146 11 |
|
| 888 |
+ -2409 -5 |
|
| 889 |
+ -7673 0 |
|
| 890 |
+ 16392 6 |
|
| 891 |
+-22327 -10 |
|
| 892 |
+ 24568 12 |
|
| 893 |
+-22832 -12 |
|
| 894 |
+ 17484 11 |
|
| 895 |
+ -9439 -7 |
|
| 896 |
+ 0 3 |
|
| 897 |
+ 9370 2 |
|
| 898 |
+-17270 -5 |
|
| 899 |
+ 22573 8 |
|
| 900 |
+-24568 -9 |
|
| 901 |
+ 23048 10 |
|
| 902 |
+-18310 -8 |
|
| 903 |
+ 11083 5 |
|
| 904 |
+ -2409 -3 |
|
| 905 |
+ -6518 -1 |
|
| 906 |
+ 14518 3 |
|
| 907 |
+-20579 -5 |
|
| 908 |
+ 23978 7 |
|
| 909 |
+-24357 -7 |
|
| 910 |
+ 21744 7 |
|
| 911 |
+-16532 -6 |
|
| 912 |
+ 9405 3 |
|
| 913 |
+ -1244 -1 |
|
| 914 |
+ -6989 -1 |
|
| 915 |
+ 14366 3 |
|
| 916 |
+-20092 -4 |
|
| 917 |
+ 23592 5 |
|
| 918 |
+-24553 -5 |
|
| 919 |
+ 22942 5 |
|
| 920 |
+-18997 -4 |
|
| 921 |
+ 13180 3 |
|
| 922 |
+ -6117 -2 |
|
| 923 |
+ -1469 1 |
|
| 924 |
+ 8845 2 |
|
| 925 |
+-15327 -2 |
|
| 926 |
+ 20349 3 |
|
| 927 |
+-23506 -4 |
|
| 928 |
+ 24575 3 |
|
| 929 |
+-23528 -4 |
|
| 930 |
+ 20517 3 |
|
| 931 |
+-15851 -2 |
|
| 932 |
+ 9959 1 |
|
| 933 |
+ -3345 0 |
|
| 934 |
+ -3457 0 |
|
| 935 |
+ 9924 1 |
|
| 936 |
+-15590 -2 |
|
| 937 |
+ 20071 2 |
|
| 938 |
+-23087 -2 |
|
| 939 |
+ 24481 3 |
|
| 940 |
+-24213 -2 |
|
| 941 |
+ 22359 2 |
|
| 942 |
+-19092 -1 |
|
| 943 |
+ 14670 1 |
|
| 944 |
+ -9405 0 |
|
| 945 |
+ 3643 0 |
|
| 946 |
+ 2259 0 |
|
| 947 |
+ -7959 -1 |
|
| 948 |
+ 13148 1 |
|
| 949 |
+-17563 -1 |
|
| 950 |
+ 21001 1 |
|
| 951 |
+-23323 -1 |
|
| 952 |
+ 24457 1 |
|
| 953 |
+-24395 -1 |
|
| 954 |
+ 23189 1 |
|
| 955 |
+-20942 -1 |
|
| 956 |
+ 17799 1 |
|
| 957 |
+-13934 0 |
|
| 958 |
+ 9544 0 |
|
| 959 |
+ -4831 0 |
|
| 960 |
+ 0 0 |
|
| 961 |
+ 4757 1 |
|
| 962 |
+ -9265 0 |
|
| 963 |
+ 13370 0 |
|
| 964 |
+-16946 -1 |
|
| 965 |
+ 19895 0 |
|
| 966 |
+-22151 -1 |
|
| 967 |
+ 23675 0 |
|
| 968 |
+-24457 -1 |
|
| 969 |
+ 24511 0 |
|
| 970 |
+-23875 0 |
|
| 971 |
+ 22602 0 |
|
| 972 |
+-20762 0 |
|
| 973 |
+ 18435 0 |
|
| 974 |
+-15707 0 |
|
| 975 |
+ 12667 0 |
|
| 976 |
+ -9405 0 |
|
| 977 |
+ 6008 0 |
|
| 978 |
+ -2559 0 |
|
| 979 |
+ -867 0 |
|
| 980 |
+ 4201 0 |
|
| 981 |
+ -7386 0 |
|
| 982 |
+ 10371 0 |
|
| 983 |
+-13116 0 |
|
| 984 |
+ 15590 0 |
|
| 985 |
+-17773 0 |
|
| 986 |
+ 19649 0 |
|
| 987 |
+-21213 0 |
|
| 988 |
+ 22467 0 |
|
| 989 |
+-23416 0 |
|
| 990 |
+ 24073 0 |
|
| 991 |
+-24453 0 |
|
| 992 |
+ 24575 0 |
|
| 993 |
+-24461 0 |
|
| 994 |
+ 24132 0 |
|
| 995 |
+-23613 0 |
|
| 996 |
+ 22929 0 |
|
| 997 |
+-22102 0 |
|
| 998 |
+ 21156 0 |
|
| 999 |
+-20114 0 |
|
| 1000 |
+ 18997 0 |
|
| 1001 |
+-17825 0 |
|
| 1002 |
+ 16615 0 |
|
| 1003 |
+-15385 0 |
|
| 1004 |
+ 14151 0 |
|
| 1005 |
+-12924 0 |
|
| 1006 |
+ 11717 0 |
|
| 1007 |
+-10541 0 |
|
| 1008 |
+ 9405 0 |
|
| 1009 |
+ -8315 0 |
|
| 1010 |
+ 7278 0 |
|
| 1011 |
+ -6300 0 |
|
| 1012 |
+ 5384 0 |
|
| 1013 |
+ -4535 0 |
|
| 1014 |
+ 3755 0 |
|
| 1015 |
+ -3046 0 |
|
| 1016 |
+ 2409 0 |
|
| 1017 |
+ -1845 0 |
|
| 1018 |
+ 1356 0 |
|
| 1019 |
+ -942 0 |
|
| 1020 |
+ 603 0 |
|
| 1021 |
+ -339 0 |
|
| 1022 |
+ 151 0 |
|
| 1023 |
+ -38 0 |