diff options
author | dos-reis <gdr@axiomatics.org> | 2007-08-14 05:14:52 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2007-08-14 05:14:52 +0000 |
commit | ab8cc85adde879fb963c94d15675783f2cf4b183 (patch) | |
tree | c202482327f474583b750b2c45dedfc4e4312b1d /src/algebra/supxs.spad.pamphlet | |
download | open-axiom-ab8cc85adde879fb963c94d15675783f2cf4b183.tar.gz |
Initial population.
Diffstat (limited to 'src/algebra/supxs.spad.pamphlet')
-rw-r--r-- | src/algebra/supxs.spad.pamphlet | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/src/algebra/supxs.spad.pamphlet b/src/algebra/supxs.spad.pamphlet new file mode 100644 index 00000000..311d6cd6 --- /dev/null +++ b/src/algebra/supxs.spad.pamphlet @@ -0,0 +1,142 @@ +\documentclass{article} +\usepackage{axiom} +\begin{document} +\title{\$SPAD/src/algebra supxs.spad} +\author{Clifton J. Williamson} +\maketitle +\begin{abstract} +\end{abstract} +\eject +\tableofcontents +\eject +\section{domain SUPXS SparseUnivariatePuiseuxSeries} +<<domain SUPXS SparseUnivariatePuiseuxSeries>>= +)abbrev domain SUPXS SparseUnivariatePuiseuxSeries +++ Author: Clifton J. Williamson +++ Date Created: 11 November 1994 +++ Date Last Updated: 28 February 1995 +++ Basic Operations: +++ Related Domains: InnerSparseUnivariatePowerSeries, +++ SparseUnivariateTaylorSeries, SparseUnivariateLaurentSeries +++ Also See: +++ AMS Classifications: +++ Keywords: sparse, series +++ Examples: +++ References: +++ Description: Sparse Puiseux series in one variable +++ \spadtype{SparseUnivariatePuiseuxSeries} is a domain representing Puiseux +++ series in one variable with coefficients in an arbitrary ring. The +++ parameters of the type specify the coefficient ring, the power series +++ variable, and the center of the power series expansion. For example, +++ \spad{SparseUnivariatePuiseuxSeries(Integer,x,3)} represents Puiseux +++ series in \spad{(x - 3)} with \spadtype{Integer} coefficients. +SparseUnivariatePuiseuxSeries(Coef,var,cen): Exports == Implementation where + Coef : Ring + var : Symbol + cen : Coef + I ==> Integer + NNI ==> NonNegativeInteger + OUT ==> OutputForm + RN ==> Fraction Integer + SUTS ==> SparseUnivariateTaylorSeries(Coef,var,cen) + SULS ==> SparseUnivariateLaurentSeries(Coef,var,cen) + SUPS ==> InnerSparseUnivariatePowerSeries(Coef) + + Exports ==> Join(UnivariatePuiseuxSeriesConstructorCategory(Coef,SULS),_ + RetractableTo SUTS) with + coerce: Variable(var) -> % + ++ coerce(var) converts the series variable \spad{var} into a + ++ Puiseux series. + differentiate: (%,Variable(var)) -> % + ++ \spad{differentiate(f(x),x)} returns the derivative of + ++ \spad{f(x)} with respect to \spad{x}. + if Coef has Algebra Fraction Integer then + integrate: (%,Variable(var)) -> % + ++ \spad{integrate(f(x))} returns an anti-derivative of the power + ++ series \spad{f(x)} with constant coefficient 0. + ++ We may integrate a series when we can divide coefficients + ++ by integers. + + Implementation ==> UnivariatePuiseuxSeriesConstructor(Coef,SULS) add + + Rep := Record(expon:RN,lSeries:SULS) + + getExpon: % -> RN + getExpon pxs == pxs.expon + + variable x == var + center x == cen + + coerce(v: Variable(var)) == + zero? cen => monomial(1,1) + monomial(1,1) + monomial(cen,0) + + coerce(uts:SUTS) == uts :: SULS :: % + + retractIfCan(upxs:%):Union(SUTS,"failed") == + (uls := retractIfCan(upxs)@Union(SULS,"failed")) case "failed" => + "failed" + retractIfCan(uls :: SULS)@Union(SUTS,"failed") + + if Coef has "*": (Fraction Integer, Coef) -> Coef then + differentiate(upxs:%,v:Variable(var)) == differentiate upxs + + if Coef has Algebra Fraction Integer then + integrate(upxs:%,v:Variable(var)) == integrate upxs + +--% OutputForms + + coerce(x:%): OUT == + sups : SUPS := laurentRep(x) pretend SUPS + st := getStream sups; refer := getRef sups + if not(explicitlyEmpty? st or explicitEntries? st) _ + and (nx := retractIfCan(elt refer)@Union(I,"failed")) case I then + count : NNI := _$streamCount$Lisp + degr := min(count,(nx :: I) + count + 1) + extend(sups,degr) + seriesToOutputForm(st,refer,variable x,center x,rationalPower x) + +@ +\section{License} +<<license>>= +--Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. +--All rights reserved. +-- +--Redistribution and use in source and binary forms, with or without +--modification, are permitted provided that the following conditions are +--met: +-- +-- - Redistributions of source code must retain the above copyright +-- notice, this list of conditions and the following disclaimer. +-- +-- - Redistributions in binary form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in +-- the documentation and/or other materials provided with the +-- distribution. +-- +-- - Neither the name of The Numerical ALgorithms Group Ltd. nor the +-- names of its contributors may be used to endorse or promote products +-- derived from this software without specific prior written permission. +-- +--THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +--IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +--TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +--PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +--OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +--EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +--PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +--PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +--LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +--NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +--SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +@ +<<*>>= +<<license>> + +<<domain SUPXS SparseUnivariatePuiseuxSeries>> +@ +\eject +\begin{thebibliography}{99} +\bibitem{1} nothing +\end{thebibliography} +\end{document} |