emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] calc/calc-lang.el (c): Added support for more C (C99) functions.


From: Rüdiger Sonderfeld
Subject: [PATCH] calc/calc-lang.el (c): Added support for more C (C99) functions.
Date: Wed, 01 Feb 2012 19:01:32 +0100
User-agent: KMail/4.7.3 (Linux/3.0.0-15-generic; KDE/4.7.4; x86_64; ; )

I added support for more C (C99) functions to calc's C language mode. I have 
signed the fsf papers.

Regards,
Rüdiger

-- >8 --
Subject: [PATCH] calc/calc-lang.el (c): Added support for more C (C99) 
functions.

Support for fma (x*y+z), fmax (max), jn, j0, j1 (bessel 1st kind), yn,
y0, y1 (bessel 2nd kind), tgamma (gamma).

Signed-off-by: Rüdiger Sonderfeld <address@hidden>
---
 lisp/calc/calc-lang.el |   32 +++++++++++++++++++++++++++++++-
 1 files changed, 31 insertions(+), 1 deletions(-)

diff --git a/lisp/calc/calc-lang.el b/lisp/calc/calc-lang.el
index c53f59e..0463b6a 100644
--- a/lisp/calc/calc-lang.el
+++ b/lisp/calc/calc-lang.el
@@ -134,7 +134,37 @@
      ( asinh      . calcFunc-arcsinh )
      ( atan       . calcFunc-arctan )
      ( atan2      . calcFunc-arctan2 )
-     ( atanh      . calcFunc-arctanh )))
+     ( atanh      . calcFunc-arctanh )
+     ( fma         . (math-C-parse-fma))
+     ( fmax        . calcFunc-max )
+     ( jn          . calcFunc-besJ )
+     ( j0          . (math-C-parse-bess))
+     ( j1          . (math-C-parse-bess))
+     ( yn          . calcFunc-besY )
+     ( y0          . (math-C-parse-bess))
+     ( y1          . (math-C-parse-bess))
+     ( tgamma      . calcFunc-gamma )))
+
+(defun math-C-parse-bess (f val)
+  "Parse C's j0, j1, y0, y1 functions."
+  (let ((args (math-read-expr-list)))
+    (math-read-token)
+    (append
+     (cond ((eq val 'j0) '(calcFunc-besJ 0))
+           ((eq val 'j1) '(calcFunc-besJ 1))
+           ((eq val 'y0) '(calcFunc-besY 0))
+           ((eq val 'y1) '(calcFunc-besY 1)))
+     args)))
+
+(defun math-C-parse-fma (f val)
+  "Parse C's fma function fma(x,y,z) => (x * y + z)."
+  (let ((args (math-read-expr-list)))
+    (math-read-token)
+    (list 'calcFunc-add
+          (list 'calcFunc-mul
+                (nth 0 args)
+                (nth 1 args))
+          (nth 2 args))))
 
 (put 'c 'math-variable-table
   '( ( M_PI       . var-pi )
-- 
1.7.8.3




reply via email to

[Prev in Thread] Current Thread [Next in Thread]