fpy2 0.2.1__tar.gz → 0.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. {fpy2-0.2.1 → fpy2-0.2.2}/PKG-INFO +1 -1
  2. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/__init__.py +7 -0
  3. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/format_infer/__init__.py +6 -0
  4. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/format_infer/analysis.py +504 -23
  5. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/format_infer/format.py +44 -16
  6. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/type_infer.py +18 -4
  7. fpy2-0.2.2/fpy2/analysis/value_class.py +707 -0
  8. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/ast/formatter.py +47 -25
  9. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/backend/cpp/compiler.py +11 -3
  10. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/backend/cpp/emitter.py +920 -80
  11. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/backend/cpp/storage.py +28 -2
  12. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/backend/cpp/target.py +13 -0
  13. fpy2-0.2.2/fpy2/backend/cpp/utils.py +43 -0
  14. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/backend/fpc.py +37 -12
  15. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/env.py +19 -1
  16. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/interpret/byte.py +77 -4
  17. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/libraries/core.py +11 -34
  18. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/context/mpb_fixed.py +7 -2
  19. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/engine/real.py +92 -14
  20. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/number/reals.py +8 -2
  21. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/ops.py +4 -4
  22. fpy2-0.2.2/fpy2/strategies/__init__.py +42 -0
  23. fpy2-0.2.2/fpy2/strategies/context_lift.py +61 -0
  24. fpy2-0.2.2/fpy2/strategies/fixed_rescale.py +88 -0
  25. fpy2-0.2.2/fpy2/strategies/float_lower.py +100 -0
  26. fpy2-0.2.2/fpy2/strategies/free_var.py +55 -0
  27. fpy2-0.2.2/fpy2/strategies/func_inline.py +92 -0
  28. fpy2-0.2.2/fpy2/strategies/iter_elim.py +89 -0
  29. fpy2-0.2.2/fpy2/strategies/loop_split.py +107 -0
  30. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/strategies/loop_unroll.py +69 -1
  31. fpy2-0.2.2/fpy2/strategies/mono.py +89 -0
  32. fpy2-0.2.2/fpy2/strategies/neg_zero_unfold.py +98 -0
  33. fpy2-0.2.2/fpy2/strategies/overflow_unfold.py +111 -0
  34. fpy2-0.2.2/fpy2/strategies/reduce_fusion.py +46 -0
  35. fpy2-0.2.2/fpy2/strategies/round_elim.py +57 -0
  36. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/strategies/simple.py +20 -0
  37. fpy2-0.2.2/fpy2/strategies/special_unfold.py +111 -0
  38. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/__init__.py +6 -0
  39. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/const_fold.py +6 -0
  40. fpy2-0.2.2/fpy2/transform/error.py +23 -0
  41. fpy2-0.2.2/fpy2/transform/float_to_fixed.py +575 -0
  42. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/for_unroll.py +15 -58
  43. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/func_inline.py +99 -12
  44. fpy2-0.2.2/fpy2/transform/rescale_fixed.py +515 -0
  45. fpy2-0.2.2/fpy2/transform/split_loop.py +413 -0
  46. fpy2-0.2.2/fpy2/transform/unfold_neg_zero.py +316 -0
  47. fpy2-0.2.2/fpy2/transform/unfold_overflow.py +618 -0
  48. fpy2-0.2.2/fpy2/transform/unfold_special.py +461 -0
  49. fpy2-0.2.2/fpy2/transform/utils.py +312 -0
  50. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/while_unroll.py +2 -1
  51. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2.egg-info/PKG-INFO +1 -1
  52. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2.egg-info/SOURCES.txt +20 -0
  53. {fpy2-0.2.1 → fpy2-0.2.2}/pyproject.toml +1 -1
  54. fpy2-0.2.1/fpy2/backend/cpp/utils.py +0 -66
  55. fpy2-0.2.1/fpy2/strategies/__init__.py +0 -14
  56. fpy2-0.2.1/fpy2/strategies/loop_split.py +0 -35
  57. fpy2-0.2.1/fpy2/transform/split_loop.py +0 -216
  58. {fpy2-0.2.1 → fpy2-0.2.2}/LICENSE +0 -0
  59. {fpy2-0.2.1 → fpy2-0.2.2}/README.md +0 -0
  60. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/__init__.py +0 -0
  61. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/alias.py +0 -0
  62. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/array_size.py +0 -0
  63. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/call_graph.py +0 -0
  64. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/context_use.py +0 -0
  65. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/define_use.py +0 -0
  66. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/defs.py +0 -0
  67. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/escape.py +0 -0
  68. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/live_vars.py +0 -0
  69. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/partial_eval.py +0 -0
  70. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/purity.py +0 -0
  71. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/reachability.py +0 -0
  72. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/reaching_defs.py +0 -0
  73. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/analysis/syntax_check.py +0 -0
  74. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/ast/__init__.py +0 -0
  75. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/ast/fpyast.py +0 -0
  76. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/ast/visitor.py +0 -0
  77. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/backend/__init__.py +0 -0
  78. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/backend/backend.py +0 -0
  79. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/backend/cpp/__init__.py +0 -0
  80. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/backend/cpp/ops.py +0 -0
  81. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/backend/cpp/storage_infer.py +0 -0
  82. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/backend/cpp/types.py +0 -0
  83. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/backend/cpp/unbox.py +0 -0
  84. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/decorator.py +0 -0
  85. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/fpc_context.py +0 -0
  86. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/frontend/__init__.py +0 -0
  87. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/frontend/fpc.py +0 -0
  88. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/frontend/parser.py +0 -0
  89. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/function.py +0 -0
  90. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/interpret/__init__.py +0 -0
  91. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/interpret/interpreter.py +0 -0
  92. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/libraries/__init__.py +0 -0
  93. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/libraries/base.py +0 -0
  94. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/libraries/eft.py +0 -0
  95. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/libraries/matrix.py +0 -0
  96. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/libraries/metrics.py +0 -0
  97. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/libraries/vector.py +0 -0
  98. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/module.py +0 -0
  99. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/__init__.py +0 -0
  100. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/context/__init__.py +0 -0
  101. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/context/context.py +0 -0
  102. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/context/efloat.py +0 -0
  103. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/context/exponential.py +0 -0
  104. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/context/fixed.py +0 -0
  105. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/context/format.py +0 -0
  106. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/context/ieee754.py +0 -0
  107. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/context/mp_fixed.py +0 -0
  108. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/context/mp_float.py +0 -0
  109. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/context/mpb_float.py +0 -0
  110. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/context/mps_float.py +0 -0
  111. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/context/real.py +0 -0
  112. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/context/sm_fixed.py +0 -0
  113. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/engine/__init__.py +0 -0
  114. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/engine/engine.py +0 -0
  115. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/engine/gmp.py +0 -0
  116. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/format.py +0 -0
  117. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/globals.py +0 -0
  118. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/gmputils.py +0 -0
  119. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/native.py +0 -0
  120. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/number/__init__.py +0 -0
  121. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/number/flags.py +0 -0
  122. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/number/floats.py +0 -0
  123. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/number/round.py +0 -0
  124. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/primitive.py +0 -0
  125. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/rewrite/__init__.py +0 -0
  126. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/rewrite/applier.py +0 -0
  127. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/rewrite/matcher.py +0 -0
  128. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/rewrite/pattern.py +0 -0
  129. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/rewrite/rewrite.py +0 -0
  130. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/rewrite/subst.py +0 -0
  131. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/runner.py +0 -0
  132. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/copy_propagate.py +0 -0
  133. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/dead_code.py +0 -0
  134. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/enumerate_elim.py +0 -0
  135. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/for_bundling.py +0 -0
  136. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/for_unpack.py +0 -0
  137. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/free_var_elim.py +0 -0
  138. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/if_bundling.py +0 -0
  139. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/iter_elim.py +0 -0
  140. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/lift_context.py +0 -0
  141. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/monomorphize.py +0 -0
  142. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/reduce_fusion.py +0 -0
  143. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/rename_target.py +0 -0
  144. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/round_elim.py +0 -0
  145. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/simplify_if.py +0 -0
  146. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/specialize.py +0 -0
  147. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/subst_var.py +0 -0
  148. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/while_bundling.py +0 -0
  149. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/transform/zip_elim.py +0 -0
  150. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/types.py +0 -0
  151. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/utils/__init__.py +0 -0
  152. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/utils/bits.py +0 -0
  153. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/utils/compare.py +0 -0
  154. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/utils/decorator.py +0 -0
  155. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/utils/default.py +0 -0
  156. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/utils/float_params.py +0 -0
  157. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/utils/fractions.py +0 -0
  158. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/utils/gensym.py +0 -0
  159. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/utils/identifier.py +0 -0
  160. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/utils/inspect.py +0 -0
  161. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/utils/iterator.py +0 -0
  162. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/utils/loader.py +0 -0
  163. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/utils/location.py +0 -0
  164. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/utils/ordering.py +0 -0
  165. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/utils/string.py +0 -0
  166. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/utils/uninit.py +0 -0
  167. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2/utils/unionfind.py +0 -0
  168. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2.egg-info/dependency_links.txt +0 -0
  169. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2.egg-info/requires.txt +0 -0
  170. {fpy2-0.2.1 → fpy2-0.2.2}/fpy2.egg-info/top_level.txt +0 -0
  171. {fpy2-0.2.1 → fpy2-0.2.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fpy2
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: An embedded DSL for numerical computing
5
5
  Author-email: Brett Saiki <bsaiki@cs.washington.edu>
6
6
  License-Expression: MIT
@@ -37,3 +37,10 @@ from .reaching_defs import (
37
37
  )
38
38
  from .syntax_check import FPySyntaxError, SyntaxCheck
39
39
  from .type_infer import TypeAnalysis, TypeInfer, TypeInferError
40
+ from .value_class import (
41
+ ValueClass,
42
+ ValueClassAnalysis,
43
+ ValueClassInfer,
44
+ class_of,
45
+ representable_classes,
46
+ )
@@ -11,6 +11,9 @@ from .analysis import (
11
11
  SetFormat,
12
12
  TupleFormat,
13
13
  exact_binop,
14
+ exact_exp2,
15
+ exact_logb,
16
+ exact_select,
14
17
  exact_unop,
15
18
  is_bottom,
16
19
  round_is_identity,
@@ -30,6 +33,9 @@ __all__ = [
30
33
  'SetFormat',
31
34
  'TupleFormat',
32
35
  'exact_binop',
36
+ 'exact_exp2',
37
+ 'exact_logb',
38
+ 'exact_select',
33
39
  'exact_unop',
34
40
  'is_bottom',
35
41
  'round_is_identity',