mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18: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 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+)))
|
||||
|
||||
|
|
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