Chromium Code Reviews

Side by Side Diff: unit_test/math_test.cc

Issue 1361813002: replace random with fastrand (Closed) Base URL: https://chromium.googlesource.com/libyuv/libyuv@master
Patch Set: remove win32 version of random Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
« no previous file with comments | « unit_test/convert_test.cc ('k') | unit_test/planar_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2013 The LibYuv Project Authors. All rights reserved. 2 * Copyright 2013 The LibYuv Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 48 matching lines...)
59 for (int i = 1; i < 4100; ++i) { 59 for (int i = 1; i < 4100; ++i) {
60 EXPECT_EQ(0x10000, libyuv::FixedDiv(i, i)); 60 EXPECT_EQ(0x10000, libyuv::FixedDiv(i, i));
61 EXPECT_EQ(0x20000, libyuv::FixedDiv(i * 2, i)); 61 EXPECT_EQ(0x20000, libyuv::FixedDiv(i * 2, i));
62 EXPECT_EQ(0x30000, libyuv::FixedDiv(i * 3, i)); 62 EXPECT_EQ(0x30000, libyuv::FixedDiv(i * 3, i));
63 EXPECT_EQ(0x40000, libyuv::FixedDiv(i * 4, i)); 63 EXPECT_EQ(0x40000, libyuv::FixedDiv(i * 4, i));
64 EXPECT_EQ(0x08000, libyuv::FixedDiv(i, i * 2)); 64 EXPECT_EQ(0x08000, libyuv::FixedDiv(i, i * 2));
65 EXPECT_NEAR(16384 * 65536 / i, libyuv::FixedDiv(16384, i), 1); 65 EXPECT_NEAR(16384 * 65536 / i, libyuv::FixedDiv(16384, i), 1);
66 } 66 }
67 EXPECT_EQ(123 * 65536, libyuv::FixedDiv(123, 1)); 67 EXPECT_EQ(123 * 65536, libyuv::FixedDiv(123, 1));
68 68
69 srandom(time(NULL));
70 MemRandomize(reinterpret_cast<uint8*>(&num[0]), sizeof(num)); 69 MemRandomize(reinterpret_cast<uint8*>(&num[0]), sizeof(num));
71 MemRandomize(reinterpret_cast<uint8*>(&div[0]), sizeof(div)); 70 MemRandomize(reinterpret_cast<uint8*>(&div[0]), sizeof(div));
72 for (int j = 0; j < 1280; ++j) { 71 for (int j = 0; j < 1280; ++j) {
73 if (div[j] == 0) { 72 if (div[j] == 0) {
74 div[j] = 1280; 73 div[j] = 1280;
75 } 74 }
76 num[j] &= 0xffff; // Clamp to avoid divide overflow. 75 num[j] &= 0xffff; // Clamp to avoid divide overflow.
77 } 76 }
78 for (int i = 0; i < benchmark_pixels_div1280_; ++i) { 77 for (int i = 0; i < benchmark_pixels_div1280_; ++i) {
79 for (int j = 0; j < 1280; ++j) { 78 for (int j = 0; j < 1280; ++j) {
80 result_opt[j] = libyuv::FixedDiv(num[j], div[j]); 79 result_opt[j] = libyuv::FixedDiv(num[j], div[j]);
81 } 80 }
82 } 81 }
83 for (int j = 0; j < 1280; ++j) { 82 for (int j = 0; j < 1280; ++j) {
84 result_c[j] = libyuv::FixedDiv_C(num[j], div[j]); 83 result_c[j] = libyuv::FixedDiv_C(num[j], div[j]);
85 EXPECT_NEAR(result_c[j], result_opt[j], 1); 84 EXPECT_NEAR(result_c[j], result_opt[j], 1);
86 } 85 }
87 } 86 }
88 87
89 TEST_F(libyuvTest, TestFixedDiv_Opt) { 88 TEST_F(libyuvTest, TestFixedDiv_Opt) {
90 int num[1280]; 89 int num[1280];
91 int div[1280]; 90 int div[1280];
92 int result_opt[1280]; 91 int result_opt[1280];
93 int result_c[1280]; 92 int result_c[1280];
94 93
95 srandom(time(NULL));
96 MemRandomize(reinterpret_cast<uint8*>(&num[0]), sizeof(num)); 94 MemRandomize(reinterpret_cast<uint8*>(&num[0]), sizeof(num));
97 MemRandomize(reinterpret_cast<uint8*>(&div[0]), sizeof(div)); 95 MemRandomize(reinterpret_cast<uint8*>(&div[0]), sizeof(div));
98 for (int j = 0; j < 1280; ++j) { 96 for (int j = 0; j < 1280; ++j) {
99 num[j] &= 4095; // Make numerator smaller. 97 num[j] &= 4095; // Make numerator smaller.
100 div[j] &= 4095; // Make divisor smaller. 98 div[j] &= 4095; // Make divisor smaller.
101 if (div[j] == 0) { 99 if (div[j] == 0) {
102 div[j] = 1280; 100 div[j] = 1280;
103 } 101 }
104 } 102 }
105 103
(...skipping 14 matching lines...)
120 EXPECT_NEAR(result_c[j], result_opt[j], 1); 118 EXPECT_NEAR(result_c[j], result_opt[j], 1);
121 } 119 }
122 } 120 }
123 121
124 TEST_F(libyuvTest, TestFixedDiv1_Opt) { 122 TEST_F(libyuvTest, TestFixedDiv1_Opt) {
125 int num[1280]; 123 int num[1280];
126 int div[1280]; 124 int div[1280];
127 int result_opt[1280]; 125 int result_opt[1280];
128 int result_c[1280]; 126 int result_c[1280];
129 127
130 srandom(time(NULL));
131 MemRandomize(reinterpret_cast<uint8*>(&num[0]), sizeof(num)); 128 MemRandomize(reinterpret_cast<uint8*>(&num[0]), sizeof(num));
132 MemRandomize(reinterpret_cast<uint8*>(&div[0]), sizeof(div)); 129 MemRandomize(reinterpret_cast<uint8*>(&div[0]), sizeof(div));
133 for (int j = 0; j < 1280; ++j) { 130 for (int j = 0; j < 1280; ++j) {
134 num[j] &= 4095; // Make numerator smaller. 131 num[j] &= 4095; // Make numerator smaller.
135 div[j] &= 4095; // Make divisor smaller. 132 div[j] &= 4095; // Make divisor smaller.
136 if (div[j] <= 1) { 133 if (div[j] <= 1) {
137 div[j] = 1280; 134 div[j] = 1280;
138 } 135 }
139 } 136 }
140 137
141 int has_x86 = TestCpuFlag(kCpuHasX86); 138 int has_x86 = TestCpuFlag(kCpuHasX86);
142 for (int i = 0; i < benchmark_pixels_div1280_; ++i) { 139 for (int i = 0; i < benchmark_pixels_div1280_; ++i) {
143 if (has_x86) { 140 if (has_x86) {
144 for (int j = 0; j < 1280; ++j) { 141 for (int j = 0; j < 1280; ++j) {
145 result_opt[j] = libyuv::FixedDiv1(num[j], div[j]); 142 result_opt[j] = libyuv::FixedDiv1(num[j], div[j]);
146 } 143 }
147 } else { 144 } else {
148 for (int j = 0; j < 1280; ++j) { 145 for (int j = 0; j < 1280; ++j) {
149 result_opt[j] = libyuv::FixedDiv1_C(num[j], div[j]); 146 result_opt[j] = libyuv::FixedDiv1_C(num[j], div[j]);
150 } 147 }
151 } 148 }
152 } 149 }
153 for (int j = 0; j < 1280; ++j) { 150 for (int j = 0; j < 1280; ++j) {
154 result_c[j] = libyuv::FixedDiv1_C(num[j], div[j]); 151 result_c[j] = libyuv::FixedDiv1_C(num[j], div[j]);
155 EXPECT_NEAR(result_c[j], result_opt[j], 1); 152 EXPECT_NEAR(result_c[j], result_opt[j], 1);
156 } 153 }
157 } 154 }
158 155
159 } // namespace libyuv 156 } // namespace libyuv
OLDNEW
« no previous file with comments | « unit_test/convert_test.cc ('k') | unit_test/planar_test.cc » ('j') | no next file with comments »

Powered by Google App Engine