elisp中的复数/虚数?

时间:2015-02-20 13:10:35

标签: elisp

elisp是否支持虚数?我正在尝试使用lisp交互模式缓冲区运行来跟踪在线数学课程。是否有更高的数学" Emacs elisp的模块/库?

4 个答案:

答案 0 :(得分:3)

Emacs包含calc,一个支持复数的综合计算器。

手册在这里: C-h i g (calc) RET

特别注意的其他节点是:

  • (calc) Complex Numbers
  • (calc) Complex Number Functions
  • (calc) Calling Calc from Your Programs

答案 1 :(得分:0)

我刚刚找到一个调用Calc的好例子:Mastering Emacs; Fun with Emacs Calc它讨论了使用calc-eval函数在elisp代码中嵌入Calc:

ELISP> (calc-eval "1+2")
"3"

它给出了一个在elisp代码中使用calc-eval调用Calc的示例。

答案 2 :(得分:0)

Unfornutabilly emacs lisp没有本机复数。它仅具有手册enter link description here中所述:

Integer Basics: Representation and range of integers.
Float Basics: Representation and range of floating point. 

此外,您不能重叠基本的数学函数来使用其他类型的数字,请参见this discussion

  

不幸的是,您实际上无法建议已经   分配的字节码操作码。这包括*和大多数其他数学   操作员。您的建议不会针对已执行的任何功能触发   字节编译。几年前,这让我感到惊讶:The Limits of Emacs

因此添加这种担忧并不容易,幸运的是emacs lisp是lisp的后代,因此您可以有其他许多解决方案。

有一个package可以使用复数:

  

“ cplx”包将复数表示为一对   缺点。

并且还添加了与emacs lisp数字交互的数字的基本操作。

此外,正如@phils答案中指出的那样,emacs内部还存在calc,它被描述为基于HP-S28的高级桌面计算器,它也是用Elisp编写的代数系统,您可以扩展easilly,并支持所有数字类型,您可以使用calc或在emacs lisp程序中使用它

以字符串表示形式

ELISP> (calc-eval "1 + 2i + 3")
"2 i + 4"

ELISP> (calc-eval "1 + 2i * 3")
"6 i + 1" 

或直接使用数据类型

ELISP> (calcFunc-add 3 '(float 5 0) '(cplx 4 5))
(cplx
 (float 12 0)
 5)

请仔细阅读emacs lisp calc manual,并查看一些谈论该主题的博客,例如this one

答案 3 :(得分:0)

迟到的回复,但是,除了 calc 之外,还有面向数学的支持: