/usr/lib/open-axiom/src/algebra/elfuts.spad is in open-axiom-source 1.4.1+svn~2626-2ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | --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.
)abbrev package ELFUTS EllipticFunctionsUnivariateTaylorSeries
++ Elliptic functions expanded as Taylor series
++ Author: Bill Burge, Clifton J. Williamson
++ Date Created: 1986
++ Date Last Updated: 17 February 1992
++ Keywords: elliptic function, Taylor series
++ Examples:
++ References:
++ Description: The elliptic functions sn, sc and dn are expanded as
++ Taylor series.
EllipticFunctionsUnivariateTaylorSeries(Coef,UTS):
Exports == Implementation where
Coef : Field
UTS : UnivariateTaylorSeriesCategory Coef
L ==> List
I ==> Integer
RN ==> Fraction Integer
ST ==> Stream Coef
STT ==> StreamTaylorSeriesOperations Coef
YS ==> Y$ParadoxicalCombinatorsForStreams(Coef)
Exports ==> with
sn : (UTS,Coef) -> UTS
++\spad{sn(x,k)} expands the elliptic function sn as a Taylor
++ series.
cn : (UTS,Coef) -> UTS
++\spad{cn(x,k)} expands the elliptic function cn as a Taylor
++ series.
dn : (UTS,Coef) -> UTS
++\spad{dn(x,k)} expands the elliptic function dn as a Taylor
++ series.
sncndn: (ST,Coef) -> L ST
++\spad{sncndn(s,c)} is used internally.
Implementation ==> add
import StreamTaylorSeriesOperations Coef
UPS==> StreamTaylorSeriesOperations Coef
integrate ==> lazyIntegrate
sncndnre:(Coef,L ST,ST,Coef) -> L ST
sncndnre(k,scd,dx,sign) ==
[integrate(0, scd.2*$UPS scd.3*$UPS dx), _
integrate(1, sign*scd.1*$UPS scd.3*$UPS dx), _
integrate(1,sign*k**2*$UPS scd.1*$UPS scd.2*$UPS dx)]
sncndn(z,k) ==
empty? z => [0@Coef :: ST,1@Coef :: ST,1@Coef::ST]
frst z = 0 => YS(sncndnre(k,#1,deriv z,-1),3)
error "ELFUTS:sncndn: constant coefficient should be 0"
sn(x,k) == series sncndn.(coefficients x,k).1
cn(x,k) == series sncndn.(coefficients x,k).2
dn(x,k) == series sncndn.(coefficients x,k).3
|