Cadabra
Computer algebra system for field theory problems
Loading...
Searching...
No Matches
DisplaySympy.hh
Go to the documentation of this file.
1
2#pragma once
3
4#include "DisplayBase.hh"
5#include <ostream>
6#include <map>
7#include <set>
8
9typedef uint32_t kunichar;
10
11namespace cadabra {
12
13 class Derivative;
14
22
23 class DisplaySympy : public DisplayBase {
24 public:
25 DisplaySympy(const Kernel&, const Ex&);
26
32
33 void import(Ex&);
34
35 std::string preparse_import(const std::string&);
36
37 protected:
38 virtual bool needs_brackets(Ex::iterator it) override;
39
40 private:
45
46 void print_multiplier(std::ostream&, Ex::iterator);
47 void print_opening_bracket(std::ostream&, str_node::bracket_t);
48 void print_closing_bracket(std::ostream&, str_node::bracket_t);
49 void print_parent_rel(std::ostream&, str_node::parent_rel_t, bool first);
50 void print_children(std::ostream&, Ex::iterator, int skip=0);
51
52
59
60 virtual void dispatch(std::ostream&, Ex::iterator) override;
61
67
68 void print_productlike(std::ostream&, Ex::iterator, const std::string& inbetween);
69 void print_sumlike(std::ostream&, Ex::iterator);
70 void print_fraclike(std::ostream&, Ex::iterator);
71 void print_commalike(std::ostream&, Ex::iterator);
72 void print_arrowlike(std::ostream&, Ex::iterator);
73 void print_powlike(std::ostream&, Ex::iterator);
74 void print_intlike(std::ostream&, Ex::iterator);
75 void print_equalitylike(std::ostream&, Ex::iterator);
76 void print_components(std::ostream&, Ex::iterator);
77 void print_matrix(std::ostream& str, Ex::iterator it);
78 void print_derivative(std::ostream& str, Ex::iterator it, const Derivative *der);
79 void print_other(std::ostream& str, Ex::iterator it);
80
81 bool children_have_brackets(Ex::iterator ch) const;
82
84 std::map<std::string, std::string> symmap;
85 std::multimap<std::string, std::string> regex_map;
86
89 std::map<nset_t::iterator, Ex, nset_it_less> depsyms;
90 };
91
92 const char *unichar(kunichar c);
93
94 }
uint32_t kunichar
Definition DisplayMMA.hh:9
uint32_t kunichar
Definition DisplaySympy.hh:9
Definition Derivative.hh:26
Base class for all display classes.
Definition DisplayBase.hh:19
Class to display expressions in a format that Sympy can parse.
Definition DisplaySympy.hh:23
void print_fraclike(std::ostream &, Ex::iterator)
Definition DisplaySympy.cc:401
void print_intlike(std::ostream &, Ex::iterator)
Definition DisplaySympy.cc:506
void print_equalitylike(std::ostream &, Ex::iterator)
Definition DisplaySympy.cc:522
void print_multiplier(std::ostream &, Ex::iterator)
Output the expression to a sympy-readable form.
Definition DisplaySympy.cc:244
std::map< std::string, std::string > symmap
Map from Cadabra symbols to Sympy symbols.
Definition DisplaySympy.hh:84
void print_commalike(std::ostream &, Ex::iterator)
Definition DisplaySympy.cc:373
void print_productlike(std::ostream &, Ex::iterator, const std::string &inbetween)
Printing members for various standard constructions, e.g.
Definition DisplaySympy.cc:418
std::multimap< std::string, std::string > regex_map
Definition DisplaySympy.hh:85
std::string preparse_import(const std::string &)
Definition DisplaySympy.cc:624
void print_components(std::ostream &, Ex::iterator)
Definition DisplaySympy.cc:535
void print_children(std::ostream &, Ex::iterator, int skip=0)
Definition DisplaySympy.cc:187
void print_parent_rel(std::ostream &, str_node::parent_rel_t, bool first)
Definition DisplaySympy.cc:321
void print_closing_bracket(std::ostream &, str_node::bracket_t)
Definition DisplaySympy.cc:298
void print_arrowlike(std::ostream &, Ex::iterator)
Definition DisplaySympy.cc:390
void print_derivative(std::ostream &str, Ex::iterator it, const Derivative *der)
Definition DisplaySympy.cc:555
void print_sumlike(std::ostream &, Ex::iterator)
Definition DisplaySympy.cc:462
bool children_have_brackets(Ex::iterator ch) const
Definition DisplaySympy.cc:615
std::map< nset_t::iterator, Ex, nset_it_less > depsyms
Map from symbols which have had dependencies added to an expression containing these dependencies.
Definition DisplaySympy.hh:89
void print_opening_bracket(std::ostream &, str_node::bracket_t)
Definition DisplaySympy.cc:275
void print_matrix(std::ostream &str, Ex::iterator it)
Definition DisplaySympy.cc:595
virtual bool needs_brackets(Ex::iterator it) override
Determine if a node needs extra brackets around it.
Definition DisplaySympy.cc:122
void print_powlike(std::ostream &, Ex::iterator)
Definition DisplaySympy.cc:488
void print_other(std::ostream &str, Ex::iterator it)
Definition DisplaySympy.cc:147
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 ...
Definition DisplaySympy.cc:345
Definition Storage.hh:170
Definition Kernel.hh:15
bracket_t
Definition Storage.hh:64
parent_rel_t
Child nodes are related to their parent node by a so-called parent relation, which can be one of thes...
Definition Storage.hh:68
Functions to handle the exchange properties of two or more symbols in a product.
Definition Adjform.cc:83
const char * unichar(kunichar c)
void set(rset_t::iterator &num, multiplier_t fac)
Definition Storage.cc:1179