Index: tools/generate-trig-table.py |
diff --git a/tools/concatenate-files.py b/tools/generate-trig-table.py |
similarity index 53% |
copy from tools/concatenate-files.py |
copy to tools/generate-trig-table.py |
index 86bdf5638366ad5ee681ae2e4ab89499e4ebe18e..0a4fe2861831cce741874d4379cac5f854ee817b 100644 |
--- a/tools/concatenate-files.py |
+++ b/tools/generate-trig-table.py |
@@ -1,6 +1,6 @@ |
#!/usr/bin/env python |
# |
-# Copyright 2014 the V8 project authors. All rights reserved. |
+# 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 |
# met: |
@@ -27,49 +27,57 @@ |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-# This utility concatenates several files into one. On Unix-like systems |
-# it is equivalent to: |
-# cat file1 file2 file3 ...files... > target |
-# |
-# The reason for writing a seperate utility is that 'cat' is not available |
-# on all supported build platforms, but Python is, and hence this provides |
-# us with an easy and uniform way of doing this on all platforms. |
+# This is a utility for populating the lookup table for the |
+# approximation of trigonometric functions. |
+ |
+import sys, math |
-import optparse |
+SAMPLES = 1800 |
+TEMPLATE = """\ |
+// Copyright 2013 Google Inc. All Rights Reserved. |
-def Concatenate(filenames): |
- """Concatenate files. |
+// This file was generated from a python script. |
- Args: |
- files: Array of file names. |
- The last name is the target; all earlier ones are sources. |
+#include "src/v8.h" |
+#include "src/trig-table.h" |
- Returns: |
- True, if the operation was successful. |
- """ |
- if len(filenames) < 2: |
- print "An error occured generating %s:\nNothing to do." % filenames[-1] |
- return False |
+namespace v8 { |
+namespace internal { |
- try: |
- with open(filenames[-1], "wb") as target: |
- for filename in filenames[:-1]: |
- with open(filename, "rb") as current: |
- target.write(current.read()) |
- return True |
- except IOError as e: |
- print "An error occured when writing %s:\n%s" % (filenames[-1], e) |
- return False |
+ 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; |
+} } // v8::internal |
+""" |
def main(): |
- parser = optparse.OptionParser() |
- parser.set_usage("""Concatenate several files into one. |
- Equivalent to: cat file1 ... > target.""") |
- (options, args) = parser.parse_args() |
- exit(0 if Concatenate(args) else 1) |
+ pi_half = math.pi / 2 |
+ interval = pi_half / SAMPLES |
+ sin = [] |
+ cos_times_interval = [] |
+ table_size = SAMPLES + 2 |
+ |
+ 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)) |
+ 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() |