This PR adresses removes CNodes, and replaces with a much slimmed-down "LNodes" which contains the basics:
Variables and Arrays of Scalar (same as tensor), Real (same as geometry) and Int
Basic math operations +-*/
Math functions, including conditional statements
ForRange loops
but removes almost everything else.
All Symbols must now have a DataType
Additionally, the Abstract Syntax Tree (AST) which is generated is now processed separately in c_implementation.py, which will allow us to post-process into other languages/libraries in the future.
This is quite a large PR, unfortunately, but I think it will move things in the right direction.
coverage: 76.575% (-2.0%) from 78.566% when pulling 5198ba64ff90652ed0d5f4dd4bd895354c70a0ef on chris/lnodes into 4572bec1d9d67bbaa711ec4d09e80935e0d84f99 on main.
I just added some formatting for complex numbes and variable precision. Standard C needs the 1.0+1.0*I rather than 1.0+1.0j although modern compilers seem to accept either.
This PR adresses removes CNodes, and replaces with a much slimmed-down "LNodes" which contains the basics:
Scalar
(same as tensor),Real
(same as geometry) andInt
but removes almost everything else.
Symbols
must now have aDataType
Additionally, the Abstract Syntax Tree (AST) which is generated is now processed separately in
c_implementation.py
, which will allow us to post-process into other languages/libraries in the future.This is quite a large PR, unfortunately, but I think it will move things in the right direction.