]> www.ginac.de Git - ginac.git/blobdiff - doc/tutorial/ginac.texi
- Eduardo Kalinowskis documentation add-on.
[ginac.git] / doc / tutorial / ginac.texi
index 536bf897a439267d05d4cc7f84001ffa382cd8f2..ce2e7b9514270e1a01b251b06010acd78da91d2b 100644 (file)
@@ -1300,6 +1300,9 @@ avoided.
 
 @subsection Checking expression types
 @cindex @code{is_ex_of_type()}
+@cindex @code{ex_to_numeric()}
+@cindex @code{ex_to_@dots{}}
+@cindex @code{Converting ex to other classes}
 @cindex @code{info()}
 
 Sometimes it's useful to check whether a given expression is a plain number,
@@ -1311,6 +1314,20 @@ bool is_ex_of_type(const ex & e, TYPENAME t);
 bool ex::info(unsigned flag);
 @end example
 
+When the test made by @code{is_ex_of_type()} returns true, it is safe to
+call one of the functions @code{ex_to_@dots{}}, where @code{@dots{}} is
+one of the class names (@xref{The Class Hierarchy}, for a list of all
+classes). For example, assuming @code{e} is an @code{ex}:
+
+@example
+@{
+    @dots{}
+    if (is_ex_of_type(e, numeric))
+        numeric n = ex_to_numeric(e);
+    @dots{}
+@}
+@end example
+
 @code{is_ex_of_type()} allows you to check whether the top-level object of
 an expression @samp{e} is an instance of the GiNaC class @samp{t}
 (@xref{The Class Hierarchy}, for a list of all classes). This is most useful,
@@ -2041,6 +2058,8 @@ GiNaC contains the following predefined mathematical functions:
 @tab exponential function
 @item @code{log(x)}
 @tab natural logarithm
+@item @code{Li2(x)}
+@tab Dilogarithm
 @item @code{zeta(x)}
 @tab Riemann's zeta function
 @item @code{zeta(n, x)}
@@ -2075,7 +2094,7 @@ negative real axis where the points on the axis itself belong to the
 upper part (i.e. continuous with quadrant II).  The inverse
 trigonometric and hyperbolic functions are not defined for complex
 arguments by the C++ standard, however.  Here, we follow the conventions
-used by CLN, which in turn follow the carefully structured definitions
+used by CLN, which in turn follow the carefully designed definitions
 in the Common Lisp standard.  Hopefully, future revisions of the C++
 standard incorporate these functions in the complex domain in a manner
 compatible with Common Lisp.
@@ -2409,7 +2428,7 @@ enough to know how to differentiate.  But if the function you want to
 implement does have a pole somewhere in the complex plane, you need to
 write another method for Laurent expansion around that point.
 
-Now that all the ingrediences for @code{cos} have been set up, we need
+Now that all the ingredients for @code{cos} have been set up, we need
 to tell the system about it.  This is done by a macro and we are not
 going to descibe how it expands, please consult your preprocessor if you
 are curious:
@@ -2970,9 +2989,9 @@ AC_PROG_CXX
 AC_PROG_INSTALL
 AC_LANG_CPLUSPLUS
 
-AM_PATH_GINAC(0.4.0, [
+AM_PATH_GINAC(0.6.0, [
   LIBS="$LIBS $GINACLIB_LIBS"
-  CPPFLAGS="$CFLAGS $GINACLIB_CPPFLAGS"  
+  CPPFLAGS="$CPPFLAGS $GINACLIB_CPPFLAGS"  
 ], AC_MSG_ERROR([need to have GiNaC installed]))
 
 AC_OUTPUT(Makefile)