编译型复数表达式计算器
由于在最近的一个项目中需要用到复数表达式的计算,计算的特点是:对于同一个公式需要进行重复多次的计算,每次计算时只需要变换公式中的某些变量的值。于是花了点时间写了个编译型的复数表达式计算器,该计算器的核心思想是对一个字符串编译一次,转换为一个计算序列,计算时不再分析字符串,直接按照计算序列计算。例如:1+2*5,可以转换为类似下面的计算序列:
1、数值1赋值到临时变量1
2、数值2赋值到临时变量2
3、数值5赋值到临时变量3
4、临时变量2等于临时变量2乘以临时变量5
5、临时变量1等于临时变量1加上临时变量2
6、返回临时变量1
这样在多次重复计算是就省去了编译的过程,提高了效率。
基于以上思想我编写了这个编译型复数表达式计算器。
该计算器提供了多种复数计算函数,支持变量(变量在表达式中以大写的V开头),支持多行表达式,表达式之间用分号";"间隔。例如您可以这样写计算表达式:
V0=12+i;
V1=V0*V0;
log(V1);
计算的结果为4.976734 + 0.166282i。
> 支持常量e和pi,例如表达式e^pii的计算结果为-1.000000 + 0.000000i。支持的运算符有-(负号)、+、-、*、/、^(幂运算符)、=、(、)、i(虚数定义符);支持的函数有abs, arg, conj, real, imag, norm, exp, log, log10, sqrt, sin, cos, sinh, cosh, tan, tanh
...展开详情收缩
用户评论
不是很好,还可以改进
没有源码,很失望