diff options
author | kripken <alonzakai@gmail.com> | 2011-07-13 17:19:19 -0700 |
---|---|---|
committer | kripken <alonzakai@gmail.com> | 2011-07-13 17:19:19 -0700 |
commit | efbf009d0d40443c74cdef9c47e1e54206629e8d (patch) | |
tree | c485f2bee422bc5a274f94f4652c54360966cbc4 | |
parent | dc24fffc94606ccb566a3e6bb8dae5543f1ab790 (diff) | |
parent | 3c07ebaefda5c70d5014ceaa5d7cf2a3e65e9316 (diff) |
Merge pull request #52 from max99x/master
Minor improvements: Pyhon 2.6- compatibility; hyperbolic math functions
-rwxr-xr-x | emscripten.py | 61 | ||||
-rw-r--r-- | src/library.js | 43 | ||||
-rw-r--r-- | tests/hyperbolic/output.txt | 1280 | ||||
-rw-r--r-- | tests/hyperbolic/src.c | 17 | ||||
-rw-r--r-- | tests/runner.py | 22 |
5 files changed, 1386 insertions, 37 deletions
diff --git a/emscripten.py b/emscripten.py index 6fe7b504..b77c361d 100755 --- a/emscripten.py +++ b/emscripten.py @@ -1,12 +1,12 @@ #!/usr/bin/python -import argparse import json +import optparse import os import subprocess import sys import tempfile -import tools.shared as shared +from tools import shared # Temporary files that should be deleted once the program is finished. @@ -173,7 +173,7 @@ def main(args): # Prepare settings for serialization to JSON. settings = {} for setting in args.settings: - name, value = setting.split('=', 1) + name, value = setting.strip().split('=', 1) settings[name] = json.loads(value) # Adjust sign correction for dlmalloc. @@ -192,33 +192,40 @@ def main(args): if __name__ == '__main__': - parser = argparse.ArgumentParser( - description='Compile LLVM assembly to Javascript.', + parser = optparse.OptionParser( + usage='usage: %prog [-h] [-O] [-m] [-o OUTFILE] [-s FOO=BAR]* infile', + description=('Compile an LLVM assembly file to Javascript. Accepts both ' + 'human-readable (*.ll) and bitcode (*.bc) formats.'), epilog='You should have an ~/.emscripten file set up; see settings.py.') - parser.add_argument('infile', - help='The LLVM assembly file to compile, either in ' - 'human-readable (*.ll) or in bitcode (*.bc) format.') - parser.add_argument('-O', '--optimize', - default=False, - action='store_true', - help='Run LLVM optimizations on the input.') - parser.add_argument('-m', '--dlmalloc', - default=False, - action='store_true', - help='Use dlmalloc. Without, uses a dummy allocator.') - parser.add_argument('-o', '--outfile', - default=sys.stdout, - type=argparse.FileType('w'), - help='Where to write the output; defaults to stdout.') - parser.add_argument('-s', '--settings', - default=[], - nargs=argparse.ZERO_OR_MORE, - metavar='FOO=BAR', - help='Overrides for settings defined in settings.js.') + parser.add_option('-O', '--optimize', + default=False, + action='store_true', + help='Run LLVM optimizations on the input.') + parser.add_option('-m', '--dlmalloc', + default=False, + action='store_true', + help='Use dlmalloc. Without, uses a dummy allocator.') + parser.add_option('-o', '--outfile', + default=sys.stdout, + help='Where to write the output; defaults to stdout.') + parser.add_option('-s', '--setting', + dest='settings', + default=[], + action='append', + metavar='FOO=BAR', + help=('Overrides for settings defined in settings.js. ' + 'May occur multiple times.')) + + # Convert to the same format that argparse would have produced. + keywords, positional = parser.parse_args() + if len(positional) != 1: + raise RuntimeError('Must provide exactly one positional argument.') + keywords.infile = positional[0] + if isinstance(keywords.outfile, basestring): + keywords.outfile = open(keywords.outfile, 'w') try: - main(parser.parse_args()) + main(keywords) finally: - # Clean up temporary files. for filename in TEMP_FILES_TO_CLEAN: os.unlink(filename) diff --git a/src/library.js b/src/library.js index 07d177c2..e1366822 100644 --- a/src/library.js +++ b/src/library.js @@ -342,7 +342,8 @@ var Library = { var parts = argText.split('e'); if (isGeneral && !flagAlternative) { // Discard trailing zeros and periods. - while (parts[0].length > 1 && (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) { + while (parts[0].length > 1 && parts[0].indexOf('.') != -1 && + (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) { parts[0] = parts[0].slice(0, -1); } } else { @@ -1485,17 +1486,20 @@ var Library = { return sig; }, - __finite: function(x) { - return x !== Infinity && x !== -Infinity; + finite: function(x) { + return isFinite(x); }, + __finite: 'finite', - __isinf: function(x) { - return x === Infinity || x === -Infinity; + isinf: function(x) { + return !isNaN(x) && !isFinite(x); }, + __isinf: 'isinf', - __isnan: function(x) { + isnan: function(x) { return isNaN(x); }, + __isnan: 'isnan', copysign: function(a, b) { if (a<0 === b<0) return a; @@ -1506,6 +1510,33 @@ var Library = { return Math.sqrt(a*a + b*b); }, + sinh: function(x) { + var p = Math.pow(Math.E, x); + return (p - (1 / p)) / 2; + }, + + cosh: function(x) { + var p = Math.pow(Math.E, x); + return (p + (1 / p)) / 2; + }, + + tanh__deps: ['sinh', 'cosh'], + tanh: function(x) { + return _sinh(x) / _cosh(x); + }, + + asinh: function(x) { + return Math.log(x + Math.sqrt(x * x + 1)); + }, + + acosh: function(x) { + return Math.log(x * 1 + Math.sqrt(x * x - 1)); + }, + + atanh: function(x) { + return Math.log((1 + x) / (1 - x)) / 2; + }, + // LLVM internal math exp2: function(x) { diff --git a/tests/hyperbolic/output.txt b/tests/hyperbolic/output.txt new file mode 100644 index 00000000..76af4329 --- /dev/null +++ b/tests/hyperbolic/output.txt @@ -0,0 +1,1280 @@ +i: -10 +sinh: -11013.2 +cosh: 11013.2 +tanh: -1 +asinh: -2.99822 +acosh: nan +atanh: nan + +i: -9.875 +sinh: -9719.14 +cosh: 9719.14 +tanh: -1 +asinh: -2.98571 +acosh: nan +atanh: nan + +i: -9.75 +sinh: -8577.11 +cosh: 8577.11 +tanh: -1 +asinh: -2.97303 +acosh: nan +atanh: nan + +i: -9.625 +sinh: -7569.28 +cosh: 7569.28 +tanh: -1 +asinh: -2.9602 +acosh: nan +atanh: nan + +i: -9.5 +sinh: -6679.86 +cosh: 6679.86 +tanh: -1 +asinh: -2.9472 +acosh: nan +atanh: nan + +i: -9.375 +sinh: -5894.96 +cosh: 5894.96 +tanh: -1 +asinh: -2.93403 +acosh: nan +atanh: nan + +i: -9.25 +sinh: -5202.28 +cosh: 5202.28 +tanh: -1 +asinh: -2.92068 +acosh: nan +atanh: nan + +i: -9.125 +sinh: -4591 +cosh: 4591 +tanh: -1 +asinh: -2.90715 +acosh: nan +atanh: nan + +i: -9 +sinh: -4051.54 +cosh: 4051.54 +tanh: -1 +asinh: -2.89344 +acosh: nan +atanh: nan + +i: -8.875 +sinh: -3575.47 +cosh: 3575.47 +tanh: -1 +asinh: -2.87954 +acosh: nan +atanh: nan + +i: -8.75 +sinh: -3155.34 +cosh: 3155.34 +tanh: -1 +asinh: -2.86545 +acosh: nan +atanh: nan + +i: -8.625 +sinh: -2784.58 +cosh: 2784.58 +tanh: -1 +asinh: -2.85116 +acosh: nan +atanh: nan + +i: -8.5 +sinh: -2457.38 +cosh: 2457.38 +tanh: -1 +asinh: -2.83666 +acosh: nan +atanh: nan + +i: -8.375 +sinh: -2168.63 +cosh: 2168.63 +tanh: -1 +asinh: -2.82194 +acosh: nan +atanh: nan + +i: -8.25 +sinh: -1913.81 +cosh: 1913.81 +tanh: -1 +asinh: -2.80701 +acosh: nan +atanh: nan + +i: -8.125 +sinh: -1688.93 +cosh: 1688.93 +tanh: -1 +asinh: -2.79186 +acosh: nan +atanh: nan + +i: -8 +sinh: -1490.48 +cosh: 1490.48 +tanh: -1 +asinh: -2.77647 +acosh: nan +atanh: nan + +i: -7.875 +sinh: -1315.34 +cosh: 1315.34 +tanh: -1 +asinh: -2.76085 +acosh: nan +atanh: nan + +i: -7.75 +sinh: -1160.79 +cosh: 1160.79 +tanh: -1 +asinh: -2.74498 +acosh: nan +atanh: nan + +i: -7.625 +sinh: -1024.39 +cosh: 1024.39 +tanh: -1 +asinh: -2.72885 +acosh: nan +atanh: nan + +i: -7.5 +sinh: -904.021 +cosh: 904.021 +tanh: -0.999999 +asinh: -2.71247 +acosh: nan +atanh: nan + +i: -7.375 +sinh: -797.796 +cosh: 797.796 +tanh: -0.999999 +asinh: -2.69581 +acosh: nan +atanh: nan + +i: -7.25 +sinh: -704.052 +cosh: 704.053 +tanh: -0.999999 +asinh: -2.67887 +acosh: nan +atanh: nan + +i: -7.125 +sinh: -621.324 +cosh: 621.324 +tanh: -0.999999 +asinh: -2.66165 +acosh: nan +atanh: nan + +i: -7 +sinh: -548.316 +cosh: 548.317 +tanh: -0.999998 +asinh: -2.64412 +acosh: nan +atanh: nan + +i: -6.875 +sinh: -483.887 +cosh: 483.888 +tanh: -0.999998 +asinh: -2.62629 +acosh: nan +atanh: nan + +i: -6.75 +sinh: -427.029 +cosh: 427.03 +tanh: -0.999997 +asinh: -2.60813 +acosh: nan +atanh: nan + +i: -6.625 +sinh: -376.851 +cosh: 376.853 +tanh: -0.999996 +asinh: -2.58965 +acosh: nan +atanh: nan + +i: -6.5 +sinh: -332.57 +cosh: 332.572 +tanh: -0.999995 +asinh: -2.57081 +acosh: nan +atanh: nan + +i: -6.375 +sinh: -293.492 +cosh: 293.494 +tanh: -0.999994 +asinh: -2.55163 +acosh: nan +atanh: nan + +i: -6.25 +sinh: -259.005 +cosh: 259.007 +tanh: -0.999993 +asinh: -2.53207 +acosh: nan +atanh: nan + +i: -6.125 +sinh: -228.571 +cosh: 228.573 +tanh: -0.99999 +asinh: -2.51212 +acosh: nan +atanh: nan + +i: -6 +sinh: -201.713 +cosh: 201.716 +tanh: -0.999988 +asinh: -2.49178 +acosh: nan +atanh: nan + +i: -5.875 +sinh: -178.011 +cosh: 178.014 +tanh: -0.999984 +asinh: -2.47102 +acosh: nan +atanh: nan + +i: -5.75 +sinh: -157.094 +cosh: 157.097 +tanh: -0.99998 +asinh: -2.44982 +acosh: nan +atanh: nan + +i: -5.625 +sinh: -138.634 +cosh: 138.638 +tanh: -0.999974 +asinh: -2.42818 +acosh: nan +atanh: nan + +i: -5.5 +sinh: -122.344 +cosh: 122.348 +tanh: -0.999967 +asinh: -2.40606 +acosh: nan +atanh: nan + +i: -5.375 +sinh: -107.968 +cosh: 107.972 +tanh: -0.999957 +asinh: -2.38345 +acosh: nan +atanh: nan + +i: -5.25 +sinh: -95.2805 +cosh: 95.2858 +tanh: -0.999945 +asinh: -2.36032 +acosh: nan +atanh: nan + +i: -5.125 +sinh: -84.0841 +cosh: 84.09 +tanh: -0.999929 +asinh: -2.33666 +acosh: nan +atanh: nan + +i: -5 +sinh: -74.2032 +cosh: 74.2099 +tanh: -0.999909 +asinh: -2.31244 +acosh: nan +atanh: nan + +i: -4.875 +sinh: -65.4833 +cosh: 65.4909 +tanh: -0.999883 +asinh: -2.28762 +acosh: nan +atanh: nan + +i: -4.75 +sinh: -57.7878 +cosh: 57.7965 +tanh: -0.99985 +asinh: -2.26219 +acosh: nan +atanh: nan + +i: -4.625 +sinh: -50.9965 +cosh: 51.0063 +tanh: -0.999808 +asinh: -2.23611 +acosh: nan +atanh: nan + +i: -4.5 +sinh: -45.003 +cosh: 45.0141 +tanh: -0.999753 +asinh: -2.20935 +acosh: nan +atanh: nan + +i: -4.375 +sinh: -39.7136 +cosh: 39.7262 +tanh: -0.999683 +asinh: -2.18187 +acosh: nan +atanh: nan + +i: -4.25 +sinh: -35.0456 +cosh: 35.0598 +tanh: -0.999593 +asinh: -2.15363 +acosh: nan +atanh: nan + +i: -4.125 +sinh: -30.9258 +cosh: 30.942 +tanh: -0.999478 +asinh: -2.12459 +acosh: nan +atanh: nan + +i: -4 +sinh: -27.2899 +cosh: 27.3082 +tanh: -0.999329 +asinh: -2.09471 +acosh: nan +atanh: nan + +i: -3.875 +sinh: -24.081 +cosh: 24.1017 +tanh: -0.999139 +asinh: -2.06394 +acosh: nan +atanh: nan + +i: -3.75 +sinh: -21.2488 +cosh: 21.2723 +tanh: -0.998894 +asinh: -2.03222 +acosh: nan +atanh: nan + +i: -3.625 +sinh: -18.749 +cosh: 18.7757 +tanh: -0.998581 +asinh: -1.99951 +acosh: nan +atanh: nan + +i: -3.5 +sinh: -16.5426 +cosh: 16.5728 +tanh: -0.998178 +asinh: -1.96572 +acosh: nan +atanh: nan + +i: -3.375 +sinh: -14.595 +cosh: 14.6293 +tanh: -0.997661 +asinh: -1.9308 +acosh: nan +atanh: nan + +i: -3.25 +sinh: -12.8758 +cosh: 12.9146 +tanh: -0.996998 +asinh: -1.89467 +acosh: nan +atanh: nan + +i: -3.125 +sinh: -11.358 +cosh: 11.4019 +tanh: -0.996147 +asinh: -1.85725 +acosh: nan +atanh: nan + +i: -3 +sinh: -10.0179 +cosh: 10.0677 +tanh: -0.995055 +asinh: -1.81845 +acosh: nan +atanh: nan + +i: -2.875 +sinh: -8.8345 +cosh: 8.89092 +tanh: -0.993655 +asinh: -1.77816 +acosh: nan +atanh: nan + +i: -2.75 +sinh: -7.78935 +cosh: 7.85328 +tanh: -0.99186 +asinh: -1.73628 +acosh: nan +atanh: nan + +i: -2.625 +sinh: -6.86607 +cosh: 6.93851 +tanh: -0.98956 +asinh: -1.69268 +acosh: nan +atanh: nan + +i: -2.5 +sinh: -6.0502 +cosh: 6.13229 +tanh: -0.986614 +asinh: -1.64723 +acosh: nan +atanh: nan + +i: -2.375 +sinh: -5.329 +cosh: 5.42201 +tanh: -0.982845 +asinh: -1.59978 +acosh: nan +atanh: nan + +i: -2.25 +sinh: -4.69117 +cosh: 4.79657 +tanh: -0.978026 +asinh: -1.55016 +acosh: nan +atanh: nan + +i: -2.125 +sinh: -4.12673 +cosh: 4.24617 +tanh: -0.971873 +asinh: -1.49818 +acosh: nan +atanh: nan + +i: -2 +sinh: -3.62686 +cosh: 3.7622 +tanh: -0.964028 +asinh: -1.44364 +acosh: nan +atanh: nan + +i: -1.875 +sinh: -3.18373 +cosh: 3.33709 +tanh: -0.954045 +asinh: -1.38629 +acosh: nan +atanh: nan + +i: -1.75 +sinh: -2.79041 +cosh: 2.96419 +tanh: -0.941376 +asinh: -1.3259 +acosh: nan +atanh: nan + +i: -1.625 +sinh: -2.44075 +cosh: 2.63767 +tanh: -0.925346 +asinh: -1.26216 +acosh: nan +atanh: nan + +i: -1.5 +sinh: -2.12928 +cosh: 2.35241 +tanh: -0.905148 +asinh: -1.19476 +acosh: nan +atanh: nan + +i: -1.375 +sinh: -1.85112 +cosh: 2.10396 +tanh: -0.879827 +asinh: -1.12336 +acosh: nan +atanh: nan + +i: -1.25 +sinh: -1.60192 +cosh: 1.88842 +tanh: -0.848284 +asinh: -1.04759 +acosh: nan +atanh: nan + +i: -1.125 +sinh: -1.37778 +cosh: 1.70243 +tanh: -0.809301 +asinh: -0.96706 +acosh: nan +atanh: nan + +i: -1 +sinh: -1.1752 +cosh: 1.54308 +tanh: -0.761594 +asinh: -0.881374 +acosh: nan +atanh: -inf + +i: -0.875 +sinh: -0.991007 +cosh: 1.40787 +tanh: -0.703906 +asinh: -0.790169 +acosh: nan +atanh: -1.35403 + +i: -0.75 +sinh: -0.822317 +cosh: 1.29468 +tanh: -0.635149 +asinh: -0.693147 +acosh: nan +atanh: -0.972955 + +i: -0.625 +sinh: -0.666492 +cosh: 1.20175 +tanh: -0.5546 +asinh: -0.590144 +acosh: nan +atanh: -0.733169 + +i: -0.5 +sinh: -0.521095 +cosh: 1.12763 +tanh: -0.462117 +asinh: -0.481212 +acosh: nan +atanh: -0.549306 + +i: -0.375 +sinh: -0.383851 +cosh: 1.07114 +tanh: -0.358357 +asinh: -0.366725 +acosh: nan +atanh: -0.394229 + +i: -0.25 +sinh: -0.252612 +cosh: 1.03141 +tanh: -0.244919 +asinh: -0.247466 +acosh: nan +atanh: -0.255413 + +i: -0.125 +sinh: -0.125326 +cosh: 1.00782 +tanh: -0.124353 +asinh: -0.124677 +acosh: nan +atanh: -0.125657 + +i: 0 +sinh: 0 +cosh: 1 +tanh: 0 +asinh: 0 +acosh: nan +atanh: 0 + +i: 0.125 +sinh: 0.125326 +cosh: 1.00782 +tanh: 0.124353 +asinh: 0.124677 +acosh: nan +atanh: 0.125657 + +i: 0.25 +sinh: 0.252612 +cosh: 1.03141 +tanh: 0.244919 +asinh: 0.247466 +acosh: nan +atanh: 0.255413 + +i: 0.375 +sinh: 0.383851 +cosh: 1.07114 +tanh: 0.358357 +asinh: 0.366725 +acosh: nan +atanh: 0.394229 + +i: 0.5 +sinh: 0.521095 +cosh: 1.12763 +tanh: 0.462117 +asinh: 0.481212 +acosh: nan +atanh: 0.549306 + +i: 0.625 +sinh: 0.666492 +cosh: 1.20175 +tanh: 0.5546 +asinh: 0.590144 +acosh: nan +atanh: 0.733169 + +i: 0.75 +sinh: 0.822317 +cosh: 1.29468 +tanh: 0.635149 +asinh: 0.693147 +acosh: nan +atanh: 0.972955 + +i: 0.875 +sinh: 0.991007 +cosh: 1.40787 +tanh: 0.703906 +asinh: 0.790169 +acosh: nan +atanh: 1.35403 + +i: 1 +sinh: 1.1752 +cosh: 1.54308 +tanh: 0.761594 +asinh: 0.881374 +acosh: 0 +atanh: inf + +i: 1.125 +sinh: 1.37778 +cosh: 1.70243 +tanh: 0.809301 +asinh: 0.96706 +acosh: 0.494933 +atanh: nan + +i: 1.25 +sinh: 1.60192 +cosh: 1.88842 +tanh: 0.848284 +asinh: 1.04759 +acosh: 0.693147 +atanh: nan + +i: 1.375 +sinh: 1.85112 +cosh: 2.10396 +tanh: 0.879827 +asinh: 1.12336 +acosh: 0.841019 +atanh: nan + +i: 1.5 +sinh: 2.12928 +cosh: 2.35241 +tanh: 0.905148 +asinh: 1.19476 +acosh: 0.962424 +atanh: nan + +i: 1.625 +sinh: 2.44075 +cosh: 2.63767 +tanh: 0.925346 +asinh: 1.26216 +acosh: 1.06673 +atanh: nan + +i: 1.75 +sinh: 2.79041 +cosh: 2.96419 +tanh: 0.941376 +asinh: 1.3259 +acosh: 1.15881 +atanh: nan + +i: 1.875 +sinh: 3.18373 +cosh: 3.33709 +tanh: 0.954045 +asinh: 1.38629 +acosh: 1.24158 +atanh: nan + +i: 2 +sinh: 3.62686 +cosh: 3.7622 +tanh: 0.964028 +asinh: 1.44364 +acosh: 1.31696 +atanh: nan + +i: 2.125 +sinh: 4.12673 +cosh: 4.24617 +tanh: 0.971873 +asinh: 1.49818 +acosh: 1.38629 +atanh: nan + +i: 2.25 +sinh: 4.69117 +cosh: 4.79657 +tanh: 0.978026 +asinh: 1.55016 +acosh: 1.45057 +atanh: nan + +i: 2.375 +sinh: 5.329 +cosh: 5.42201 +tanh: 0.982845 +asinh: 1.59978 +acosh: 1.51055 +atanh: nan + +i: 2.5 +sinh: 6.0502 +cosh: 6.13229 +tanh: 0.986614 +asinh: 1.64723 +acosh: 1.5668 +atanh: nan + +i: 2.625 +sinh: 6.86607 +cosh: 6.93851 +tanh: 0.98956 +asinh: 1.69268 +acosh: 1.6198 +atanh: nan + +i: 2.75 +sinh: 7.78935 +cosh: 7.85328 +tanh: 0.99186 +asinh: 1.73628 +acosh: 1.66992 +atanh: nan + +i: 2.875 +sinh: 8.8345 +cosh: 8.89092 +tanh: 0.993655 +asinh: 1.77816 +acosh: 1.71748 +atanh: nan + +i: 3 +sinh: 10.0179 +cosh: 10.0677 +tanh: 0.995055 +asinh: 1.81845 +acosh: 1.76275 +atanh: nan + +i: 3.125 +sinh: 11.358 +cosh: 11.4019 +tanh: 0.996147 +asinh: 1.85725 +acosh: 1.80594 +atanh: nan + +i: 3.25 +sinh: 12.8758 +cosh: 12.9146 +tanh: 0.996998 +asinh: 1.89467 +acosh: 1.84725 +atanh: nan + +i: 3.375 +sinh: 14.595 +cosh: 14.6293 +tanh: 0.997661 +asinh: 1.9308 +acosh: 1.88683 +atanh: nan + +i: 3.5 +sinh: 16.5426 +cosh: 16.5728 +tanh: 0.998178 +asinh: 1.96572 +acosh: 1.92485 +atanh: nan + +i: 3.625 +sinh: 18.749 +cosh: 18.7757 +tanh: 0.998581 +asinh: 1.99951 +acosh: 1.96141 +atanh: nan + +i: 3.75 +sinh: 21.2488 +cosh: 21.2723 +tanh: 0.998894 +asinh: 2.03222 +acosh: 1.99663 +atanh: nan + +i: 3.875 +sinh: 24.081 +cosh: 24.1017 +tanh: 0.999139 +asinh: 2.06394 +acosh: 2.03061 +atanh: nan + +i: 4 +sinh: 27.2899 +cosh: 27.3082 +tanh: 0.999329 +asinh: 2.09471 +acosh: 2.06344 +atanh: nan + +i: 4.125 +sinh: 30.9258 +cosh: 30.942 +tanh: 0.999478 +asinh: 2.12459 +acosh: 2.09519 +atanh: nan + +i: 4.25 +sinh: 35.0456 +cosh: 35.0598 +tanh: 0.999593 +asinh: 2.15363 +acosh: 2.12593 +atanh: nan + +i: 4.375 +sinh: 39.7136 +cosh: 39.7262 +tanh: 0.999683 +asinh: 2.18187 +acosh: 2.15573 +atanh: nan + +i: 4.5 +sinh: 45.003 +cosh: 45.0141 +tanh: 0.999753 +asinh: 2.20935 +acosh: 2.18464 +atanh: nan + +i: 4.625 +sinh: 50.9965 +cosh: 51.0063 +tanh: 0.999808 +asinh: 2.23611 +acosh: 2.21273 +atanh: nan + +i: 4.75 +sinh: 57.7878 +cosh: 57.7965 +tanh: 0.99985 +asinh: 2.26219 +acosh: 2.24002 +atanh: nan + +i: 4.875 +sinh: 65.4833 +cosh: 65.4909 +tanh: 0.999883 +asinh: 2.28762 +acosh: 2.26658 +atanh: nan + +i: 5 +sinh: 74.2032 +cosh: 74.2099 +tanh: 0.999909 +asinh: 2.31244 +acosh: 2.29243 +atanh: nan + +i: 5.125 +sinh: 84.0841 +cosh: 84.09 +tanh: 0.999929 +asinh: 2.33666 +acosh: 2.31762 +atanh: nan + +i: 5.25 +sinh: 95.2805 +cosh: 95.2858 +tanh: 0.999945 +asinh: 2.36032 +acosh: 2.34218 +atanh: nan + +i: 5.375 +sinh: 107.968 +cosh: 107.972 +tanh: 0.999957 +asinh: 2.38345 +acosh: 2.36614 +atanh: nan + +i: 5.5 +sinh: 122.344 +cosh: 122.348 +tanh: 0.999967 +asinh: 2.40606 +acosh: 2.38953 +atanh: nan + +i: 5.625 +sinh: 138.634 +cosh: 138.638 +tanh: 0.999974 +asinh: 2.42818 +acosh: 2.41237 +atanh: nan + +i: 5.75 +sinh: 157.094 +cosh: 157.097 +tanh: 0.99998 +asinh: 2.44982 +acosh: 2.4347 +atanh: nan + +i: 5.875 +sinh: 178.011 +cosh: 178.014 +tanh: 0.999984 +asinh: 2.47102 +acosh: 2.45653 +atanh: nan + +i: 6 +sinh: 201.713 +cosh: 201.716 +tanh: 0.999988 +asinh: 2.49178 +acosh: 2.47789 +atanh: nan + +i: 6.125 +sinh: 228.571 +cosh: 228.573 +tanh: 0.99999 +asinh: 2.51212 +acosh: 2.49879 +atanh: nan + +i: 6.25 +sinh: 259.005 +cosh: 259.007 +tanh: 0.999993 +asinh: 2.53207 +acosh: 2.51927 +atanh: nan + +i: 6.375 +sinh: 293.492 +cosh: 293.494 +tanh: 0.999994 +asinh: 2.55163 +acosh: 2.53932 +atanh: nan + +i: 6.5 +sinh: 332.57 +cosh: 332.572 +tanh: 0.999995 +asinh: 2.57081 +acosh: 2.55898 +atanh: nan + +i: 6.625 +sinh: 376.851 +cosh: 376.853 +tanh: 0.999996 +asinh: 2.58965 +acosh: 2.57825 +atanh: nan + +i: 6.75 +sinh: 427.029 +cosh: 427.03 +tanh: 0.999997 +asinh: 2.60813 +acosh: 2.59716 +atanh: nan + +i: 6.875 +sinh: 483.887 +cosh: 483.888 +tanh: 0.999998 +asinh: 2.62629 +acosh: 2.61571 +atanh: nan + +i: 7 +sinh: 548.316 +cosh: 548.317 +tanh: 0.999998 +asinh: 2.64412 +acosh: 2.63392 +atanh: nan + +i: 7.125 +sinh: 621.324 +cosh: 621.324 +tanh: 0.999999 +asinh: 2.66165 +acosh: 2.6518 +atanh: nan + +i: 7.25 +sinh: 704.052 +cosh: 704.053 +tanh: 0.999999 +asinh: 2.67887 +acosh: 2.66936 +atanh: nan + +i: 7.375 +sinh: 797.796 +cosh: 797.796 +tanh: 0.999999 +asinh: 2.69581 +acosh: 2.68661 +atanh: nan + +i: 7.5 +sinh: 904.021 +cosh: 904.021 +tanh: 0.999999 +asinh: 2.71247 +acosh: 2.70358 +atanh: nan + +i: 7.625 +sinh: 1024.39 +cosh: 1024.39 +tanh: 1 +asinh: 2.72885 +acosh: 2.72025 +atanh: nan + +i: 7.75 +sinh: 1160.79 +cosh: 1160.79 +tanh: 1 +asinh: 2.74498 +acosh: 2.73665 +atanh: nan + +i: 7.875 +sinh: 1315.34 +cosh: 1315.34 +tanh: 1 +asinh: 2.76085 +acosh: 2.75278 +atanh: nan + +i: 8 +sinh: 1490.48 +cosh: 1490.48 +tanh: 1 +asinh: 2.77647 +acosh: 2.76866 +atanh: nan + +i: 8.125 +sinh: 1688.93 +cosh: 1688.93 +tanh: 1 +asinh: 2.79186 +acosh: 2.78428 +atanh: nan + +i: 8.25 +sinh: 1913.81 +cosh: 1913.81 +tanh: 1 +asinh: 2.80701 +acosh: 2.79967 +atanh: nan + +i: 8.375 +sinh: 2168.63 +cosh: 2168.63 +tanh: 1 +asinh: 2.82194 +acosh: 2.81481 +atanh: nan + +i: 8.5 +sinh: 2457.38 +cosh: 2457.38 +tanh: 1 +asinh: 2.83666 +acosh: 2.82974 +atanh: nan + +i: 8.625 +sinh: 2784.58 +cosh: 2784.58 +tanh: 1 +asinh: 2.85116 +acosh: 2.84443 +atanh: nan + +i: 8.75 +sinh: 3155.34 +cosh: 3155.34 +tanh: 1 +asinh: 2.86545 +acosh: 2.85892 +atanh: nan + +i: 8.875 +sinh: 3575.47 +cosh: 3575.47 +tanh: 1 +asinh: 2.87954 +acosh: 2.8732 +atanh: nan + +i: 9 +sinh: 4051.54 +cosh: 4051.54 +tanh: 1 +asinh: 2.89344 +acosh: 2.88727 +atanh: nan + +i: 9.125 +sinh: 4591 +cosh: 4591 +tanh: 1 +asinh: 2.90715 +acosh: 2.90115 +atanh: nan + +i: 9.25 +sinh: 5202.28 +cosh: 5202.28 +tanh: 1 +asinh: 2.92068 +acosh: 2.91484 +atanh: nan + +i: 9.375 +sinh: 5894.96 +cosh: 5894.96 +tanh: 1 +asinh: 2.93403 +acosh: 2.92834 +atanh: nan + +i: 9.5 +sinh: 6679.86 +cosh: 6679.86 +tanh: 1 +asinh: 2.9472 +acosh: 2.94166 +atanh: nan + +i: 9.625 +sinh: 7569.28 +cosh: 7569.28 +tanh: 1 +asinh: 2.9602 +acosh: 2.9548 +atanh: nan + +i: 9.75 +sinh: 8577.11 +cosh: 8577.11 +tanh: 1 +asinh: 2.97303 +acosh: 2.96777 +atanh: nan + +i: 9.875 +sinh: 9719.14 +cosh: 9719.14 +tanh: 1 +asinh: 2.98571 +acosh: 2.98058 +atanh: nan + diff --git a/tests/hyperbolic/src.c b/tests/hyperbolic/src.c new file mode 100644 index 00000000..4644f2d3 --- /dev/null +++ b/tests/hyperbolic/src.c @@ -0,0 +1,17 @@ +#include <stdio.h> +#include <math.h> + +int main() { + double i; + for (i = -10; i < 10; i += 0.125) { + printf("i: %g\n", i); + printf("sinh: %g\n", sinh(i)); + printf("cosh: %g\n", cosh(i)); + printf("tanh: %g\n", tanh(i)); + printf("asinh: %g\n", asinh(i)); + printf("acosh: %g\n", acosh(i)); + printf("atanh: %g\n", atanh(i)); + printf("\n"); + } + return 0; +} diff --git a/tests/runner.py b/tests/runner.py index 3d122cd8..797b78f9 100644 --- a/tests/runner.py +++ b/tests/runner.py @@ -179,8 +179,8 @@ class RunnerCore(unittest.TestCase): exported_settings[setting] = value except: pass - settings = ['%s=%s' % (k, json.dumps(v)) for k, v in exported_settings.items()] - compiler_output = timeout_run(Popen([EMSCRIPTEN, filename + ('.o.ll' if append_ext else ''), '-o', filename + '.o.js', '-s'] + settings + extra_args, stdout=PIPE, stderr=STDOUT), TIMEOUT, 'Compiling') + settings = ['-s %s=%s' % (k, json.dumps(v)) for k, v in exported_settings.items()] + compiler_output = timeout_run(Popen([EMSCRIPTEN, filename + ('.o.ll' if append_ext else ''), '-o', filename + '.o.js'] + settings + extra_args, stdout=PIPE, stderr=STDOUT), TIMEOUT, 'Compiling') # Detect compilation crashes and errors if compiler_output is not None and 'Traceback' in compiler_output and 'in test_' in compiler_output: print compiler_output; assert 0 @@ -537,11 +537,25 @@ if 'benchmark' not in sys.argv: #include <cmath> int main() { - printf("*%.2f,%.2f,%f,%f*\\n", M_PI, -M_PI, 1/0.0, -1/0.0); + printf("*%.2f,%.2f,%f,%f", M_PI, -M_PI, 1/0.0, -1/0.0); + printf(",%d", finite(NAN) != 0); + printf(",%d", finite(INFINITY) != 0); + printf(",%d", finite(-INFINITY) != 0); + printf(",%d", finite(12.3) != 0); + printf(",%d", isinf(NAN) != 0); + printf(",%d", isinf(INFINITY) != 0); + printf(",%d", i |