]> www.ginac.de Git - ginac.git/commitdiff
synced to 1.0
authorChristian Bauer <Christian.Bauer@uni-mainz.de>
Tue, 29 Oct 2002 19:03:35 +0000 (19:03 +0000)
committerChristian Bauer <Christian.Bauer@uni-mainz.de>
Tue, 29 Oct 2002 19:03:35 +0000 (19:03 +0000)
ginac/normal.cpp
ginac/normal.h
ginsh/ginsh.1.in
ginsh/ginsh_parser.yy

index c936b566f4bf37a130062b5c414cc6032a7aa104..063ad69aa172a452d0c981bb97d871f3d6061309 100644 (file)
@@ -472,14 +472,14 @@ ex decomp_rational(const ex &a, const symbol &x)
 }
 
 
-/** Pseudo-remainder of polynomials a(x) and b(x) in Z[x].
+/** Pseudo-remainder of polynomials a(x) and b(x) in Q[x].
  *
  *  @param a  first polynomial in x (dividend)
  *  @param b  second polynomial in x (divisor)
  *  @param x  a and b are polynomials in x
  *  @param check_args  check whether a and b are polynomials with rational
  *         coefficients (defaults to "true")
- *  @return pseudo-remainder of a(x) and b(x) in Z[x] */
+ *  @return pseudo-remainder of a(x) and b(x) in Q[x] */
 ex prem(const ex &a, const ex &b, const symbol &x, bool check_args)
 {
        if (b.is_zero())
@@ -524,14 +524,14 @@ ex prem(const ex &a, const ex &b, const symbol &x, bool check_args)
 }
 
 
-/** Sparse pseudo-remainder of polynomials a(x) and b(x) in Z[x].
+/** Sparse pseudo-remainder of polynomials a(x) and b(x) in Q[x].
  *
  *  @param a  first polynomial in x (dividend)
  *  @param b  second polynomial in x (divisor)
  *  @param x  a and b are polynomials in x
  *  @param check_args  check whether a and b are polynomials with rational
  *         coefficients (defaults to "true")
- *  @return sparse pseudo-remainder of a(x) and b(x) in Z[x] */
+ *  @return sparse pseudo-remainder of a(x) and b(x) in Q[x] */
 ex sprem(const ex &a, const ex &b, const symbol &x, bool check_args)
 {
        if (b.is_zero())
index 71bf7548bfbb0fbc7455579e559643e8b3abb6c9..be67d8ebe450b0f3b0b963907991655914ed4a15 100644 (file)
@@ -42,9 +42,12 @@ extern ex rem(const ex &a, const ex &b, const symbol &x, bool check_args = true)
 // Decompose rational function a(x)=N(x)/D(x) into Q(x)+R(x)/D(x) with degree(R, x) < degree(D, x)
 extern ex decomp_rational(const ex &a, const symbol &x);
 
-// Pseudo-remainder of polynomials a(x) and b(x) in Z[x]
+// Pseudo-remainder of polynomials a(x) and b(x) in Q[x]
 extern ex prem(const ex &a, const ex &b, const symbol &x, bool check_args = true);
 
+// Pseudo-remainder of polynomials a(x) and b(x) in Q[x]
+extern ex sprem(const ex &a, const ex &b, const symbol &x, bool check_args = true);
+
 // Exact polynomial division of a(X) by b(X) in Q[X] (quotient returned in q), returns false when exact division fails
 extern bool divide(const ex &a, const ex &b, ex &q, bool check_args = true);
 
index 9f797f5741163aff409fdbb482afb4794850f7b7..e520213846612ccb1ddeb0949ee29d0cd356a4b3 100644 (file)
@@ -342,6 +342,9 @@ detail here. Please refer to the GiNaC documentation.
 .BI series( expression ", " relation-or-symbol ", " order )
 \- series expansion
 .br
+.BI sprem( expression ", " expression ", " symbol )
+\- sparse pseudo-remainder of polynomials
+.br
 .BI sqrfree( "expression [" ", " symbol-list] )
 \- square-free factorization of a polynomial
 .br
index 162f4564fd69c584b441b4c6f7924378fb243ed6..fb644351ea1a94c0486f5f4a702e2fdf2dee479e 100644 (file)
@@ -479,6 +479,12 @@ static ex f_series(const exprseq &e)
        return e[0].series(e[1], ex_to<numeric>(e[2]).to_int());
 }
 
+static ex f_sprem(const exprseq &e)
+{
+       CHECK_ARG(2, symbol, sprem);
+       return sprem(e[0], e[1], ex_to<symbol>(e[2]));
+}
+
 static ex f_sqrfree2(const exprseq &e)
 {
        CHECK_ARG(1, lst, sqrfree);
@@ -571,6 +577,7 @@ static const fcn_init builtin_fcns[] = {
        {"quo", fcn_desc(f_quo, 3)},
        {"rem", fcn_desc(f_rem, 3)},
        {"series", fcn_desc(f_series, 3)},
+       {"sprem", fcn_desc(f_sprem, 3)},
        {"sqrfree", fcn_desc(f_sqrfree1, 1)},
        {"sqrfree", fcn_desc(f_sqrfree2, 2)},
        {"sqrt", fcn_desc(f_sqrt, 1)},