mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
gnu: Add jacal.
* gnu/packages/maths.scm (jacal): New variable. * gnu/packages/patches/jacal-fix-texinfo.patch: New file.
This commit is contained in:
parent
8c48d0eb33
commit
479c4273e6
2 changed files with 144 additions and 0 deletions
|
@ -83,6 +83,7 @@ (define-module (gnu packages maths)
|
||||||
#:use-module (gnu packages python)
|
#:use-module (gnu packages python)
|
||||||
#:use-module (gnu packages readline)
|
#:use-module (gnu packages readline)
|
||||||
#:use-module (gnu packages tbb)
|
#:use-module (gnu packages tbb)
|
||||||
|
#:use-module (gnu packages scheme)
|
||||||
#:use-module (gnu packages shells)
|
#:use-module (gnu packages shells)
|
||||||
#:use-module (gnu packages tcl)
|
#:use-module (gnu packages tcl)
|
||||||
#:use-module (gnu packages texinfo)
|
#:use-module (gnu packages texinfo)
|
||||||
|
@ -2958,3 +2959,54 @@ (define-public reducelcs
|
||||||
Longest Commons Subsequence of a set of strings.")
|
Longest Commons Subsequence of a set of strings.")
|
||||||
(home-page "https://github.com/gdv/Reduce-Expand-for-LCS")
|
(home-page "https://github.com/gdv/Reduce-Expand-for-LCS")
|
||||||
(license license:gpl3+))))
|
(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+)))
|
||||||
|
|
||||||
|
|
92
gnu/packages/patches/jacal-fix-texinfo.patch
Normal file
92
gnu/packages/patches/jacal-fix-texinfo.patch
Normal 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.
|
||||||
|
|
Loading…
Reference in a new issue