gnu: Add jacal.

* gnu/packages/maths.scm (jacal): New variable.
* gnu/packages/patches/jacal-fix-texinfo.patch: New file.
This commit is contained in:
John Darrington 2017-02-26 20:28:48 +01:00
parent 8c48d0eb33
commit 479c4273e6
No known key found for this signature in database
GPG key ID: 8A67719C2DE827B3
2 changed files with 144 additions and 0 deletions

View file

@ -83,6 +83,7 @@ (define-module (gnu packages maths)
#:use-module (gnu packages python)
#:use-module (gnu packages readline)
#:use-module (gnu packages tbb)
#:use-module (gnu packages scheme)
#:use-module (gnu packages shells)
#:use-module (gnu packages tcl)
#:use-module (gnu packages texinfo)
@ -2958,3 +2959,54 @@ (define-public reducelcs
Longest Commons Subsequence of a set of strings.")
(home-page "https://github.com/gdv/Reduce-Expand-for-LCS")
(license license:gpl3+))))
(define-public jacal
(package
(name "jacal")
(version "1c4")
(source (origin
(method url-fetch)
(uri (string-append
"http://groups.csail.mit.edu/mac/ftpdir/scm/jacal-"
version ".zip"))
(sha256 (base32
"055zrn12a1dmy0dqkwrkq3fklbhg3yir6vn0lacp4mvbg8573a3q"))
(patches (search-patches "jacal-fix-texinfo.patch"))))
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'build 'pre-build
;; Don't use upstream's script - it really doesn't fit into
;; Guix's functional paradigm.
(lambda* (#:key inputs outputs #:allow-other-keys)
(substitute* "Makefile"
(("^install: install-script") "install: "))))
(add-after 'install 'post-install
;; Instead, we provide our own simplified script.
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((wrapper (string-append (assoc-ref outputs "out")
"/bin/jacal")))
(format (open wrapper (logior O_WRONLY O_CREAT))
(string-append "#!~a\nexec ~a/bin/scm -ip1 "
"-e '(slib:load \"~a/lib/jacal/math\") "
"(math)' \"$@\"\n")
(which "bash")
(assoc-ref inputs "scm")
(assoc-ref outputs "out"))
(chmod wrapper #o555))))
(replace 'configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(zero? (system* "./configure"
(string-append "--prefix="
(assoc-ref outputs "out")))))))))
(inputs `(("scm" ,scm)))
(native-inputs `(("unzip" ,unzip)
("texinfo" ,texinfo)))
(synopsis "Symbolic mathematics system")
(description "GNU JACAL is an interactive symbolic mathematics program based on
Scheme. It manipulate and simplify a range of mathematical expressions such
as equations, scalars, vectors, and matrices.")
(home-page "http://www.gnu.org/software/jacal")
(license license:gpl3+)))

View file

@ -0,0 +1,92 @@
Fix the broken Texinfo in the Jacal package documentation
--- jacal/jacal.texi,orig 2017-02-23 20:35:55.303980444 +0100
+++ jacal/jacal.texi 2017-02-23 20:53:14.539024674 +0100
@@ -343,7 +343,7 @@
With the standard input grammar, the precedence of @samp{-} as a prefix
behaves strangely. @code{a^-b*c} becomes @code{a^(-b*c)} while
-@code{@result{a^b*c} (a^b)*c}.
+@code{a^b*c @result{} (a^b)*c}.
Using @code{divide} to divide a polynomial by an integer does not work.
@@ -675,8 +675,9 @@
e1: ---------
a
@end example
+@end deffn
-@deffnx Command suchthat var exp
+@deffn Command suchthat var exp
If an expression rather than an equation is given to @code{suchthat}, it
is as though the equation @code{@var{exp}=0} was given.
@@ -688,8 +689,9 @@
e2: ---------
a
@end example
+@end deffn
-@deffnx Operator | var exp_or_eqn
+@deffn Operator | var exp_or_eqn
An alternative infix notation is also available for @code{suchthat}.
@@ -857,8 +859,9 @@
Returns the degree of polynomial or equation @var{poly} in variable
@var{var}.
+@end deffn
-@deffnx Operator degree poly
+@deffn Operator degree poly
Returns the total-degree, the degree of its highest degree monomial,
of polynomial or equation @var{poly}.
@@ -1016,10 +1019,12 @@
Returns @var{poly1} reduced with respect to @var{poly2} (or @var{eqn})
and @var{var}. If @var{poly2} is univariate, the third argument is not
needed.
+@end deffn
-@deffnx Command mod poly1 n
+@deffn Command mod poly1 n
Returns @var{poly1} with all the coefficients taken modulo @var{n}.
-@deffnx Command mod poly1
+@end deffn
+@deffn Command mod poly1
Returns @var{poly1} with all the coefficients taken modulo the
current modulus.
@@ -1220,8 +1225,9 @@
e1: -1 2 3 5
@end group
@end example
+@end deffn
-@deffnx Command factor polyratio
+@deffn Command factor polyratio
Given a univariate ratio of polynomials @var{polyratio}, returns a
matrix of factors and exponents.
@@ -2028,7 +2034,7 @@
formed from the pair-wise products of components of the inputs. For
example, for the input tensors @code{x[a,b]} and @code{y[c]}
@example
-@result{z:tmult(x,y);} z[a,b,c] = x[a,b]*y[c]
+z:tmult(x,y); @result{} z[a,b,c] = x[a,b]*y[c]
@end example
With an additional argument, @code{tmult} will produce the inner product
@@ -2464,8 +2470,9 @@
If you do not wish to return to Jacal but really want to terminate the
session and return to the operating system, then after typing
@code{qed();}, type @code{(slib:exit)} or use @code{quit}.
+@end deffn
-@deffnx Command quit
+@deffn Command quit
Exit directly from Jacal to the operating system. You will not be able
to continue your Jacal session.