{'fraction_non_alphanumeric': 0.01919934640522876, 'fraction_numerical': 0.0, 'mean_word_length': 5.997142857142857, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Symbolic algorithms for embedded system design

The growing market of digital signal processing and multi-media applications requires development of complex embedded systems with significant data-path portions. However, current hardware synthesis and software optimizations tools and methodologies do not support arithmetic-level optimizations necessary for data intensive applications. In particular, most high-level synthesis tools cannot automatically synthesize data paths such that complex arithmetic library blocks are intelligently used. Thus, the data paths of such circuits are often manually designed and mapped to pre-optimized library elements. Similarly, current compilers and software optimization methods are frequently incapable of optimizations required by software designers. Namely, most high-level arithmetic optimizations and use of complex instructions and pre-optimized embedded library functions are left to the designers' ingenuity. Furthermore, a growing number of embedded systems are using application-specific embedded processors. The design of these processors requires manual specialization of processors based on an application. The new complex instructions added to the application specific processor are used by manual insertion of intrinsic functions in the computation intensive sections of the code. 
In this thesis, symbolic polynomial manipulation techniques are used to develop algorithms, tools, and methodologies that cover all aspects of embedded systems design including hardware, software, and processor design. High-level data-path synthesis, embedded-software optimization, and application specific embedded processor design are automated by using algorithms from symbolic computer algebra that enable high-level arithmetic optimizations. Results of the high-level data-path synthesis tool show significant improvements in delay and area of the synthesized circuits compared to standalone commercial high-level synthesis tools. The algorithmic-level description of a set of examples is optimized for a portable embedded system using the software optimization methodology. In addition to improving productivity, the number of instructions and memory accesses are lowered and thus the system power consumption is reduced. Finally, new instructions are automatically added to configurable processors to reduce execution time and efficiently specialize embedded processors for a given set of applications.