Cadabra
Computer algebra system for field theory problems
|
Class to display expressions in a format that Sympy can parse.
Will throw an exception if a Cadabra Ex object cannot be understood by Sympy. Can also convert expressions back to Cadabra notation. This class contains the printing logic that you see in action when you call the __sympy__
method on an Ex object.
#include <DisplaySympy.hh>
Public Member Functions | |
DisplaySympy (const Kernel &, const Ex &) | |
void | import (Ex &) |
Rewrite the output of sympy back into a notation used by Cadabra. More... | |
std::string | preparse_import (const std::string &) |
Public Member Functions inherited from cadabra::DisplayBase | |
DisplayBase (const Kernel &, const Ex &) | |
void | output (std::ostream &) |
void | output (std::ostream &, Ex::iterator) |
Protected Member Functions | |
virtual bool | needs_brackets (Ex::iterator it) override |
Determine if a node needs extra brackets around it. More... | |
Private Member Functions | |
void | print_multiplier (std::ostream &, Ex::iterator) |
Output the expression to a sympy-readable form. More... | |
void | print_opening_bracket (std::ostream &, str_node::bracket_t) |
void | print_closing_bracket (std::ostream &, str_node::bracket_t) |
void | print_parent_rel (std::ostream &, str_node::parent_rel_t, bool first) |
void | print_children (std::ostream &, Ex::iterator, int skip=0) |
virtual void | dispatch (std::ostream &, Ex::iterator) override |
For every object encountered, dispatch will figure out the most appropriate way to convert it into a LaTeX expression. More... | |
void | print_productlike (std::ostream &, Ex::iterator, const std::string &inbetween) |
Printing members for various standard constructions, e.g. More... | |
void | print_sumlike (std::ostream &, Ex::iterator) |
void | print_fraclike (std::ostream &, Ex::iterator) |
void | print_commalike (std::ostream &, Ex::iterator) |
void | print_arrowlike (std::ostream &, Ex::iterator) |
void | print_powlike (std::ostream &, Ex::iterator) |
void | print_intlike (std::ostream &, Ex::iterator) |
void | print_equalitylike (std::ostream &, Ex::iterator) |
void | print_components (std::ostream &, Ex::iterator) |
void | print_partial (std::ostream &str, Ex::iterator it) |
void | print_matrix (std::ostream &str, Ex::iterator it) |
void | print_other (std::ostream &str, Ex::iterator it) |
bool | children_have_brackets (Ex::iterator ch) const |
Private Attributes | |
std::map< std::string, std::string > | symmap |
Map from Cadabra symbols to Sympy symbols. More... | |
std::multimap< std::string, std::string > | regex_map |
std::map< nset_t::iterator, Ex, nset_it_less > | depsyms |
Map from symbols which have had dependencies added to an expression containing these dependencies. More... | |
Additional Inherited Members | |
Protected Attributes inherited from cadabra::DisplayBase | |
const Ex & | tree |
const Kernel & | kernel |
|
private |
|
overrideprivatevirtual |
For every object encountered, dispatch will figure out the most appropriate way to convert it into a LaTeX expression.
This may be done by simply looking at the object's name (e.g. \prod
will print as a product) but may also involve looking up properties and deciding on the best course of action based on the attached properties.
Implements cadabra::DisplayBase.
void DisplaySympy::import | ( | Ex & | ex | ) |
Rewrite the output of sympy back into a notation used by Cadabra.
This in particular involves converting 'sin' and friends to \sin
and so on, as well as converting all the greek symbols. Currently only acts node-by-node, does not do anything complicated with trees.
|
overrideprotectedvirtual |
Determine if a node needs extra brackets around it.
Uses context from the parent node if necessary. Has to be implemented in a derived class, because the answer depends on the printing method (e.g. (a+b)/c
needs brackets when printed like this, but does not need brackets when printed as \frac{a+b}{c}
).
Implements cadabra::DisplayBase.
std::string DisplaySympy::preparse_import | ( | const std::string & | in | ) |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Output the expression to a sympy-readable form.
For symbols which cannot be parsed by sympy, this can convert to an alternative, Such rewrites can then be undone by the 'import' member above.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Printing members for various standard constructions, e.g.
print as a list, or as a decorated symbol with super/subscripts etc. The names reflect the structure of the output, not necessarily the meaning or name of the object that is being printed.
|
private |
|
private |
Map from symbols which have had dependencies added to an expression containing these dependencies.
|
private |
|
private |
Map from Cadabra symbols to Sympy symbols.