ReMantissa[x_,b_]:=RealDigits[Re[x],b][[1]]
ImMantissa[x_,b_]:=RealDigits[Im[x],b][[1]]
ReExp[x_,b_]:=RealDigits[Re[x],b][[2]]
ImExp[x_,b_]:=RealDigits[Im[x],b][[2]]
FromComplexDigits[Refn_, Imfn_, xn_, b_] :=
FromDigits[{IntegerDigits[Refn[FromDigits[ReMantissa[xn, b]]], b],
ReExp[xn, b]}] +
FromDigits[{IntegerDigits[Imfn[FromDigits[ImMantissa[xn, b]]], b],
ImExp[xn, b]}]*I
FromComplexDigits[fn_, xn_, b_] := FromComplexDigits[fn, fn, xn, b]
(*函数定义*)
In[67]:= FromComplexDigits[IntegerReverse,9876.54321+12345.6789I,10]
Out[67]= 123456789/100000+(987654321 I)/10000
(*计算测试*)
计算测试通过,但是做各种列表操作报错。。。实在检查不出来,头都爆炸了。。
===============================================================================
Debug过程,列表操作:
In[55]:= PlotC`Core`test[fn_,xmin_,xmax_,ymin_,ymax_,step_]:=
Table[
Hue[(Arg[fn]+\[Pi])/(2 \[Pi]),1/(1+0.3 Log[Abs[fn]+1]),1-1/(1.1+5 Log[Abs[fn]+1]),1],
{y,ymin+0.0012,ymax,step},
{x,xmin+0.0012,xmax,step},
Method->"FinestGrained"]
PlotC`Core`test[FromComplexDigits[IntegerReverse,x+y I,10],-25,25,-25,25,0.5]
Out[56]= Table[Hue[(1/(2 \[Pi]))(Arg[10+10 IntegerDigits[IntegerReverse[FromDigits[-Im[y]+Re[x]]],10]+I (10+10 IntegerDigits[IntegerReverse[FromDigits[Im[x]+Re[y]]],10])]+\[Pi]),1/(1+0.3 Log[Abs[10+10 IntegerDigits[IntegerReverse[FromDigits[-Im[y]+Re[x]]],10]+I (10+10 IntegerDigits[IntegerReverse[FromDigits[Im[x]+Re[y]]],10])]+1]),1-1/(1.1 +5 Log[Abs[10+10 IntegerDigits[IntegerReverse[FromDigits[-Im[y]+Re[x]]],10]+I (10+10 IntegerDigits[IntegerReverse[FromDigits[Im[x]+Re[y]]],10])]+1]),1],{y,-24.9988,25,0.5},{x,-25+0.0012,25,0.5},{Method->FinestGrained}]
对话框报错:
FromDigits::nlst: 表达式 -Im[y]+Re[x] 不是一个由数字组成的列表,也不是由有效数字组成的字符串. >>
FromDigits::nlst: 表达式 Im[x]+Re[y] 不是一个由数字组成的列表,也不是由有效数字组成的字符串. >>
Table::iterb: 迭代器 {Method->FinestGrained} 没有适当的边界. >>
Table::iterb: 迭代器 {Method->FinestGrained} 没有适当的边界. >>