Index: tools/generate-trig-table.py |
diff --git a/test/intl/testcfg.py b/tools/generate-trig-table.py |
similarity index 53% |
copy from test/intl/testcfg.py |
copy to tools/generate-trig-table.py |
index 9fc087e5f523fc46eda2b3c94f9951c638447d10..14d4472aadb28ad5947f83a42b83edec568a12cf 100644 |
--- a/test/intl/testcfg.py |
+++ b/tools/generate-trig-table.py |
@@ -1,3 +1,5 @@ |
+#!/usr/bin/env python |
+# |
# Copyright 2013 the V8 project authors. All rights reserved. |
# Redistribution and use in source and binary forms, with or without |
# modification, are permitted provided that the following conditions are |
@@ -25,47 +27,58 @@ |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-import os |
+# This is a utility for populating the lookup table for the |
+# approximation of trigonometric functions. |
+ |
+import sys, math |
+ |
+SAMPLES = 1800 |
-from testrunner.local import testsuite |
-from testrunner.objects import testcase |
+TEMPLATE = """\ |
+// Copyright 2013 Google Inc. All Rights Reserved. |
+// This file was generated from a python script. |
-class IntlTestSuite(testsuite.TestSuite): |
+#include "v8.h" |
+#include "trig-table.h" |
- def __init__(self, name, root): |
- super(IntlTestSuite, self).__init__(name, root) |
+namespace v8 { |
+namespace internal { |
- def ListTests(self, context): |
- tests = [] |
- for dirname, dirs, files in os.walk(self.root): |
- for dotted in [x for x in dirs if x.startswith('.')]: |
- dirs.remove(dotted) |
- dirs.sort() |
- files.sort() |
- for filename in files: |
- if (filename.endswith(".js") and filename != "assert.js" and |
- filename != "utils.js"): |
- testname = os.path.join(dirname[len(self.root) + 1:], filename[:-3]) |
- test = testcase.TestCase(self, testname) |
- tests.append(test) |
- return tests |
+ const double TrigonometricLookupTable::kSinTable[] = |
+ { %(sine_table)s }; |
+ const double TrigonometricLookupTable::kCosXIntervalTable[] = |
+ { %(cosine_table)s }; |
+ const int TrigonometricLookupTable::kSamples = %(samples)i; |
+ const int TrigonometricLookupTable::kTableSize = %(table_size)i; |
+ const double TrigonometricLookupTable::kSamplesOverPiHalf = |
+ %(samples_over_pi_half)s; |
- def GetFlagsForTestCase(self, testcase, context): |
- flags = ["--allow-natives-syntax"] + context.mode_flags |
+} } // v8::internal |
+""" |
- files = [] |
- files.append(os.path.join(self.root, "assert.js")) |
- files.append(os.path.join(self.root, "utils.js")) |
- files.append(os.path.join(self.root, testcase.path + self.suffix())) |
+def main(): |
+ pi_half = math.pi / 2 |
+ interval = pi_half / SAMPLES |
+ sin = [] |
+ cos_times_interval = [] |
+ table_size = SAMPLES + 2 |
- flags += files |
- if context.isolates: |
- flags.append("--isolate") |
- flags += files |
+ for i in range(0, table_size): |
+ sample = i * interval |
+ sin.append(repr(math.sin(sample))) |
+ cos_times_interval.append(repr(math.cos(sample) * interval)) |
- return testcase.flags + flags |
+ output_file = sys.argv[1] |
+ output = open(str(output_file), "w") |
+ output.write(TEMPLATE % { |
+ 'sine_table': ','.join(sin), |
+ 'cosine_table': ','.join(cos_times_interval), |
+ 'samples': SAMPLES, |
+ 'table_size': table_size, |
+ 'samples_over_pi_half': repr(SAMPLES / pi_half) |
+ }) |
+if __name__ == "__main__": |
+ main() |
-def GetSuite(name, root): |
- return IntlTestSuite(name, root) |